diff options
Diffstat (limited to 'docs/sqlglot')
39 files changed, 28109 insertions, 24753 deletions
diff --git a/docs/sqlglot/_version.html b/docs/sqlglot/_version.html index 9ad5d87..cbed5d3 100644 --- a/docs/sqlglot/_version.html +++ b/docs/sqlglot/_version.html @@ -76,8 +76,8 @@ </span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="n">__version_tuple__</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span> </span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="n">version_tuple</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span> </span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a> -</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'25.0.2'</span> -</span><span id="L-16"><a href="#L-16"><span class="linenos">16</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">25</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'25.0.3'</span> +</span><span id="L-16"><a href="#L-16"><span class="linenos">16</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">25</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> </span></pre></div> @@ -97,7 +97,7 @@ <section id="version"> <div class="attr variable"> <span class="name">version</span><span class="annotation">: str</span> = -<span class="default_value">'25.0.2'</span> +<span class="default_value">'25.0.3'</span> </div> @@ -109,7 +109,7 @@ <section id="version_tuple"> <div class="attr variable"> <span class="name">version_tuple</span><span class="annotation">: object</span> = -<span class="default_value">(25, 0, 2)</span> +<span class="default_value">(25, 0, 3)</span> </div> diff --git a/docs/sqlglot/dialects.html b/docs/sqlglot/dialects.html index 8de975b..316dca9 100644 --- a/docs/sqlglot/dialects.html +++ b/docs/sqlglot/dialects.html @@ -43,12 +43,14 @@ <li><a href="dialects/drill.html">drill</a></li> <li><a href="dialects/duckdb.html">duckdb</a></li> <li><a href="dialects/hive.html">hive</a></li> + <li><a href="dialects/materialize.html">materialize</a></li> <li><a href="dialects/mysql.html">mysql</a></li> <li><a href="dialects/oracle.html">oracle</a></li> <li><a href="dialects/postgres.html">postgres</a></li> <li><a href="dialects/presto.html">presto</a></li> <li><a href="dialects/prql.html">prql</a></li> <li><a href="dialects/redshift.html">redshift</a></li> + <li><a href="dialects/risingwave.html">risingwave</a></li> <li><a href="dialects/snowflake.html">snowflake</a></li> <li><a href="dialects/spark.html">spark</a></li> <li><a href="dialects/spark2.html">spark2</a></li> @@ -212,21 +214,23 @@ dialect implementations in order to understand how their various components can </span><span id="L-70"><a href="#L-70"><span class="linenos">70</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.drill</span> <span class="kn">import</span> <span class="n">Drill</span> </span><span id="L-71"><a href="#L-71"><span class="linenos">71</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.duckdb</span> <span class="kn">import</span> <span class="n">DuckDB</span> </span><span id="L-72"><a href="#L-72"><span class="linenos">72</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.hive</span> <span class="kn">import</span> <span class="n">Hive</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos">73</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.mysql</span> <span class="kn">import</span> <span class="n">MySQL</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos">74</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.oracle</span> <span class="kn">import</span> <span class="n">Oracle</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos">75</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.postgres</span> <span class="kn">import</span> <span class="n">Postgres</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos">76</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.presto</span> <span class="kn">import</span> <span class="n">Presto</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos">77</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.prql</span> <span class="kn">import</span> <span class="n">PRQL</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos">78</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.redshift</span> <span class="kn">import</span> <span class="n">Redshift</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos">79</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.snowflake</span> <span class="kn">import</span> <span class="n">Snowflake</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos">80</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.spark</span> <span class="kn">import</span> <span class="n">Spark</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos">81</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.spark2</span> <span class="kn">import</span> <span class="n">Spark2</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos">82</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.sqlite</span> <span class="kn">import</span> <span class="n">SQLite</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos">83</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.starrocks</span> <span class="kn">import</span> <span class="n">StarRocks</span> -</span><span id="L-84"><a href="#L-84"><span class="linenos">84</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.tableau</span> <span class="kn">import</span> <span class="n">Tableau</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos">85</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.teradata</span> <span class="kn">import</span> <span class="n">Teradata</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos">86</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.trino</span> <span class="kn">import</span> <span class="n">Trino</span> -</span><span id="L-87"><a href="#L-87"><span class="linenos">87</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.tsql</span> <span class="kn">import</span> <span class="n">TSQL</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos">73</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.materialize</span> <span class="kn">import</span> <span class="n">Materialize</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos">74</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.mysql</span> <span class="kn">import</span> <span class="n">MySQL</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos">75</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.oracle</span> <span class="kn">import</span> <span class="n">Oracle</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos">76</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.postgres</span> <span class="kn">import</span> <span class="n">Postgres</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos">77</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.presto</span> <span class="kn">import</span> <span class="n">Presto</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos">78</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.prql</span> <span class="kn">import</span> <span class="n">PRQL</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos">79</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.redshift</span> <span class="kn">import</span> <span class="n">Redshift</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos">80</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.risingwave</span> <span class="kn">import</span> <span class="n">RisingWave</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos">81</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.snowflake</span> <span class="kn">import</span> <span class="n">Snowflake</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos">82</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.spark</span> <span class="kn">import</span> <span class="n">Spark</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos">83</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.spark2</span> <span class="kn">import</span> <span class="n">Spark2</span> +</span><span id="L-84"><a href="#L-84"><span class="linenos">84</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.sqlite</span> <span class="kn">import</span> <span class="n">SQLite</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos">85</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.starrocks</span> <span class="kn">import</span> <span class="n">StarRocks</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos">86</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.tableau</span> <span class="kn">import</span> <span class="n">Tableau</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos">87</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.teradata</span> <span class="kn">import</span> <span class="n">Teradata</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos">88</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.trino</span> <span class="kn">import</span> <span class="n">Trino</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos">89</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.tsql</span> <span class="kn">import</span> <span class="n">TSQL</span> </span></pre></div> diff --git a/docs/sqlglot/dialects/athena.html b/docs/sqlglot/dialects/athena.html index e221ba8..410b2a4 100644 --- a/docs/sqlglot/dialects/athena.html +++ b/docs/sqlglot/dialects/athena.html @@ -605,7 +605,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Athena.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Athena.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Athena.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -657,6 +657,7 @@ Default: 3</li> <dd id="Athena.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="Athena.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Athena.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Athena.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Athena.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Athena.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Athena.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/bigquery.html b/docs/sqlglot/dialects/bigquery.html index c34fcc2..454048c 100644 --- a/docs/sqlglot/dialects/bigquery.html +++ b/docs/sqlglot/dialects/bigquery.html @@ -2178,7 +2178,7 @@ If empty, the corresponding trie will be constructed off of <code><a href="#BigQ <div id="BigQuery.PSEUDOCOLUMNS" class="classattr"> <div class="attr variable"> <span class="name">PSEUDOCOLUMNS</span><span class="annotation">: Set[str]</span> = -<span class="default_value">{'_PARTITIONTIME', '_PARTITIONDATE'}</span> +<span class="default_value">{'_PARTITIONDATE', '_PARTITIONTIME'}</span> </div> @@ -2687,7 +2687,7 @@ that it can analyze queries in the optimizer and successfully capture their sema <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="BigQuery.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.COMMAND: 'COMMAND'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'ANY TYPE': <TokenType.VARIANT: 'VARIANT'>, 'BEGIN TRANSACTION': <TokenType.BEGIN: 'BEGIN'>, 'BYTES': <TokenType.BINARY: 'BINARY'>, 'CURRENT_DATETIME': <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, 'DECLARE': <TokenType.COMMAND: 'COMMAND'>, 'ELSEIF': <TokenType.COMMAND: 'COMMAND'>, 'EXCEPTION': <TokenType.COMMAND: 'COMMAND'>, 'FLOAT64': <TokenType.DOUBLE: 'DOUBLE'>, 'FOR SYSTEM_TIME': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'MODEL': <TokenType.MODEL: 'MODEL'>, 'NOT DETERMINISTIC': <TokenType.VOLATILE: 'VOLATILE'>, 'RECORD': <TokenType.STRUCT: 'STRUCT'>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.COMMAND: 'COMMAND'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'ANY TYPE': <TokenType.VARIANT: 'VARIANT'>, 'BEGIN TRANSACTION': <TokenType.BEGIN: 'BEGIN'>, 'BYTES': <TokenType.BINARY: 'BINARY'>, 'CURRENT_DATETIME': <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, 'DECLARE': <TokenType.COMMAND: 'COMMAND'>, 'ELSEIF': <TokenType.COMMAND: 'COMMAND'>, 'EXCEPTION': <TokenType.COMMAND: 'COMMAND'>, 'FLOAT64': <TokenType.DOUBLE: 'DOUBLE'>, 'FOR SYSTEM_TIME': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'MODEL': <TokenType.MODEL: 'MODEL'>, 'NOT DETERMINISTIC': <TokenType.VOLATILE: 'VOLATILE'>, 'RECORD': <TokenType.STRUCT: 'STRUCT'>}</span> </div> @@ -3036,7 +3036,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="BigQuery.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_date>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'DATETIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_timestamp>, 'TIMESTAMP_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function _build_to_hex>, 'DIV': <function binary_from_function.<locals>.<lambda>>, 'FORMAT_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'GENERATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'PARSE_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'PARSE_TIMESTAMP': <function _build_parse_timestamp>, 'REGEXP_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHA256': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SHA512': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIME': <function _build_time>, 'TIMESTAMP_MICROS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_MILLIS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_SECONDS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TO_JSON_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_date>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'DATETIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_timestamp>, 'TIMESTAMP_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function _build_to_hex>, 'DIV': <function binary_from_function.<locals>.<lambda>>, 'FORMAT_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'GENERATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'PARSE_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'PARSE_TIMESTAMP': <function _build_parse_timestamp>, 'REGEXP_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHA256': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SHA512': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIME': <function _build_time>, 'TIMESTAMP_MICROS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_MILLIS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_SECONDS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TO_JSON_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>}</span> </div> @@ -3075,7 +3075,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">NESTED_TYPE_TOKENS</span> = <input id="BigQuery.Parser.NESTED_TYPE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.NESTED_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.MAP: 'MAP'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.NULLABLE: 'NULLABLE'>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.NESTED_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.LIST: 'LIST'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.NESTED: 'NESTED'>, <TokenType.MAP: 'MAP'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NULLABLE: 'NULLABLE'>}</span> </div> @@ -3164,7 +3164,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="BigQuery.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3214,6 +3214,7 @@ Default: 3</li> <dd id="BigQuery.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="BigQuery.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="BigQuery.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="BigQuery.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="BigQuery.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="BigQuery.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="BigQuery.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -4052,7 +4053,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="BigQuery.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'over', 'null', 'extract', 'preceding', 'rows', 'if', 'case', 'cube', 'distinct', 'outer', 'fetch', 'struct', 'groups', 'then', 'is', 'lookup', 'natural', 'recursive', 'when', 'desc', 'enum', 'select', 'end', 'respect', 'to', 'into', 'interval', 'from', 'using', 'all', 'assert_rows_modified', 'create', 'with', 'window', 'cross', 'merge', 'collate', 'exclude', 'escape', 'by', 'on', 'of', 'grouping', 'like', 'default', 'qualify', 'at', 'join', 'hash', 'define', 'else', 'order', 'nulls', 'group', 'inner', 'proto', 'as', 'current', 'no', 'not', 'contains', 'union', 'cast', 'rollup', 'exists', 'set', 'in', 'any', 'ignore', 'true', 'tablesample', 'intersect', 'and', 'array', 'within', 'or', 'for', 'lateral', 'unnest', 'treat', 'where', 'range', 'new', 'right', 'having', 'following', 'limit', 'full', 'unbounded', 'between', 'except', 'false', 'some', 'asc', 'left', 'partition'}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'range', 'groups', 'is', 'following', 'when', 'over', 'false', 'select', 'lookup', 'extract', 'treat', 'between', 'using', 'cast', 'for', 'rollup', 'rows', 'where', 'all', 'group', 'order', 'any', 'in', 'fetch', 'ignore', 'by', 'escape', 'end', 'inner', 'case', 'having', 'some', 'to', 'default', 'limit', 'right', 'cube', 'or', 'left', 'unnest', 'array', 'set', 'preceding', 'new', 'and', 'not', 'then', 'like', 'else', 'from', 'define', 'as', 'distinct', 'on', 'partition', 'collate', 'if', 'natural', 'cross', 'null', 'hash', 'proto', 'lateral', 'asc', 'union', 'window', 'of', 'exists', 'true', 'exclude', 'nulls', 'full', 'create', 'at', 'except', 'recursive', 'merge', 'contains', 'into', 'current', 'grouping', 'within', 'enum', 'unbounded', 'outer', 'desc', 'qualify', 'intersect', 'respect', 'assert_rows_modified', 'with', 'no', 'tablesample', 'interval', 'join', 'struct'}</span> </div> diff --git a/docs/sqlglot/dialects/clickhouse.html b/docs/sqlglot/dialects/clickhouse.html index 197f472..dca6058 100644 --- a/docs/sqlglot/dialects/clickhouse.html +++ b/docs/sqlglot/dialects/clickhouse.html @@ -2680,7 +2680,7 @@ Possible values: <code>True</code>, <code>False</code>, <code>None</code> (two a <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="ClickHouse.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'ATTACH': <TokenType.COMMAND: 'COMMAND'>, 'DATE32': <TokenType.DATE32: 'DATE32'>, 'DATETIME64': <TokenType.DATETIME64: 'DATETIME64'>, 'DICTIONARY': <TokenType.DICTIONARY: 'DICTIONARY'>, 'ENUM8': <TokenType.ENUM8: 'ENUM8'>, 'ENUM16': <TokenType.ENUM16: 'ENUM16'>, 'FINAL': <TokenType.FINAL: 'FINAL'>, 'FIXEDSTRING': <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, 'FLOAT32': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT64': <TokenType.DOUBLE: 'DOUBLE'>, 'GLOBAL': <TokenType.GLOBAL: 'GLOBAL'>, 'INT256': <TokenType.INT256: 'INT256'>, 'LOWCARDINALITY': <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, 'NESTED': <TokenType.NESTED: 'NESTED'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TUPLE': <TokenType.STRUCT: 'STRUCT'>, 'UINT128': <TokenType.UINT128: 'UINT128'>, 'UINT16': <TokenType.USMALLINT: 'USMALLINT'>, 'UINT256': <TokenType.UINT256: 'UINT256'>, 'UINT32': <TokenType.UINT: 'UINT'>, 'UINT64': <TokenType.UBIGINT: 'UBIGINT'>, 'UINT8': <TokenType.UTINYINT: 'UTINYINT'>, 'IPV4': <TokenType.IPV4: 'IPV4'>, 'IPV6': <TokenType.IPV6: 'IPV6'>, 'AGGREGATEFUNCTION': <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, 'SIMPLEAGGREGATEFUNCTION': <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, 'SYSTEM': <TokenType.COMMAND: 'COMMAND'>, 'PREWHERE': <TokenType.PREWHERE: 'PREWHERE'>}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'ATTACH': <TokenType.COMMAND: 'COMMAND'>, 'DATE32': <TokenType.DATE32: 'DATE32'>, 'DATETIME64': <TokenType.DATETIME64: 'DATETIME64'>, 'DICTIONARY': <TokenType.DICTIONARY: 'DICTIONARY'>, 'ENUM8': <TokenType.ENUM8: 'ENUM8'>, 'ENUM16': <TokenType.ENUM16: 'ENUM16'>, 'FINAL': <TokenType.FINAL: 'FINAL'>, 'FIXEDSTRING': <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, 'FLOAT32': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT64': <TokenType.DOUBLE: 'DOUBLE'>, 'GLOBAL': <TokenType.GLOBAL: 'GLOBAL'>, 'INT256': <TokenType.INT256: 'INT256'>, 'LOWCARDINALITY': <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, 'NESTED': <TokenType.NESTED: 'NESTED'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TUPLE': <TokenType.STRUCT: 'STRUCT'>, 'UINT128': <TokenType.UINT128: 'UINT128'>, 'UINT16': <TokenType.USMALLINT: 'USMALLINT'>, 'UINT256': <TokenType.UINT256: 'UINT256'>, 'UINT32': <TokenType.UINT: 'UINT'>, 'UINT64': <TokenType.UBIGINT: 'UBIGINT'>, 'UINT8': <TokenType.UTINYINT: 'UTINYINT'>, 'IPV4': <TokenType.IPV4: 'IPV4'>, 'IPV6': <TokenType.IPV6: 'IPV6'>, 'AGGREGATEFUNCTION': <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, 'SIMPLEAGGREGATEFUNCTION': <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, 'SYSTEM': <TokenType.COMMAND: 'COMMAND'>, 'PREWHERE': <TokenType.PREWHERE: 'PREWHERE'>}</span> </div> @@ -3302,7 +3302,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="ClickHouse.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <function _build_count_if>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATEDIFF': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATE_DIFF': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'ARRAYSUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'DATEADD': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATE_FORMAT': <function _build_date_format>, 'FORMATDATETIME': <function _build_date_format>, 'JSONEXTRACTSTRING': <function build_json_extract_path.<locals>._builder>, 'MATCH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'RANDCANONICAL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'TUPLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'UNIQ': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'SHA256': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'SHA512': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <function _build_count_if>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATEDIFF': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATE_DIFF': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'ARRAYSUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'DATEADD': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'DATE_FORMAT': <function _build_date_format>, 'FORMATDATETIME': <function _build_date_format>, 'JSONEXTRACTSTRING': <function build_json_extract_path.<locals>._builder>, 'MATCH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'RANDCANONICAL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'TUPLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'UNIQ': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'SHA256': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>, 'SHA512': <function <a href="#ClickHouse.Parser">ClickHouse.Parser</a>.<lambda>>}</span> </div> @@ -3315,7 +3315,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">AGG_FUNCTIONS</span> = <input id="ClickHouse.Parser.AGG_FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNCTIONS-view-value"></label><span class="default_value">{'groupBitOr', 'quantileTDigestWeighted', 'sequenceNextNode', 'studentTTest', 'quantileExactLow', 'categoricalInformationValue', 'sequenceMatch', 'max', 'maxMap', 'groupArray', 'sumWithOverflow', 'kurtSamp', 'groupBitmapXor', 'min', 'sequenceCount', 'theilsU', 'corr', 'stddevSamp', 'topKWeighted', 'quantilesExactWeighted', 'quantileExact', 'simpleLinearRegression', 'varPop', 'kurtPop', 'quantileBFloat16Weighted', 'quantilesBFloat16Weighted', 'quantilesTiming', 'windowFunnel', 'quantilesExactHigh', 'first_value', 'quantile', 'anyLast', 'stddevPop', 'uniq', 'quantilesTimingWeighted', 'anyHeavy', 'cramersV', 'quantileGK', 'topK', 'groupArrayInsertAt', 'quantilesTDigest', 'groupBitmap', 'sumMap', 'histogram', 'quantilesTDigestWeighted', 'uniqUpTo', 'groupArraySample', 'quantilesBFloat16', 'argMax', 'argMin', 'quantilesGK', 'uniqTheta', 'kolmogorovSmirnovTest', 'deltaSum', 'retention', 'exponentialTimeDecayedAvg', 'covarSamp', 'covarPop', 'count', 'last_value', 'contingency', 'quantileTDigest', 'groupArrayMovingSum', 'skewPop', 'uniqCombined', 'groupBitmapOr', 'maxIntersectionsPosition', 'quantilesInterpolatedWeighted', 'exponentialMovingAverage', 'welchTTest', 'quantileTiming', 'entropy', 'quantileExactHigh', 'any', 'boundingRatio', 'groupArrayLast', 'varSamp', 'sum', 'median', 'sumKahan', 'rankCorr', 'skewSamp', 'cramersVBiasCorrected', 'groupBitAnd', 'largestTriangleThreeBuckets', 'quantileBFloat16', 'stochasticLinearRegression', 'quantileTimingWeighted', 'avgWeighted', 'minMap', 'groupArrayMovingAvg', 'maxIntersections', 'quantiles', 'intervalLengthSum', 'groupBitXor', 'sumCount', 'stochasticLogisticRegression', 'quantilesDeterministic', 'mannWhitneyUTest', 'quantilesExact', 'sparkBar', 'uniqExact', 'uniqHLL12', 'quantileDeterministic', 'quantileExactWeighted', 'meanZTest', 'groupUniqArray', 'quantilesExactLow', 'avg', 'quantileInterpolatedWeighted', 'deltaSumTimestamp', 'uniqCombined64', 'groupBitmapAnd'}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNCTIONS-view-value"></label><span class="default_value">{'quantileTiming', 'quantileInterpolatedWeighted', 'theilsU', 'exponentialTimeDecayedAvg', 'cramersV', 'covarSamp', 'topKWeighted', 'quantilesBFloat16', 'sparkBar', 'min', 'windowFunnel', 'groupArrayMovingAvg', 'groupArray', 'uniqCombined64', 'groupBitmapXor', 'sequenceMatch', 'groupBitmapAnd', 'groupUniqArray', 'quantilesDeterministic', 'quantilesExactLow', 'contingency', 'avg', 'welchTTest', 'meanZTest', 'stddevSamp', 'kolmogorovSmirnovTest', 'groupArrayInsertAt', 'corr', 'groupBitAnd', 'sumWithOverflow', 'any', 'kurtSamp', 'quantilesInterpolatedWeighted', 'quantileGK', 'deltaSumTimestamp', 'simpleLinearRegression', 'quantilesTDigest', 'uniqUpTo', 'deltaSum', 'stddevPop', 'max', 'quantiles', 'median', 'varSamp', 'quantileBFloat16Weighted', 'quantilesExactHigh', 'quantilesBFloat16Weighted', 'quantileExactWeighted', 'intervalLengthSum', 'first_value', 'studentTTest', 'stochasticLogisticRegression', 'skewPop', 'sequenceNextNode', 'entropy', 'maxIntersections', 'quantileExactHigh', 'quantileExact', 'quantilesGK', 'uniqCombined', 'exponentialMovingAverage', 'sequenceCount', 'covarPop', 'retention', 'quantilesExactWeighted', 'uniq', 'argMax', 'topK', 'mannWhitneyUTest', 'cramersVBiasCorrected', 'histogram', 'sum', 'quantile', 'groupBitmap', 'anyHeavy', 'boundingRatio', 'groupBitOr', 'sumKahan', 'categoricalInformationValue', 'quantileTDigestWeighted', 'groupArrayMovingSum', 'groupArraySample', 'varPop', 'quantileTimingWeighted', 'avgWeighted', 'quantileExactLow', 'quantileDeterministic', 'stochasticLinearRegression', 'quantileBFloat16', 'last_value', 'sumCount', 'groupArrayLast', 'kurtPop', 'quantilesTiming', 'maxIntersectionsPosition', 'groupBitmapOr', 'rankCorr', 'argMin', 'largestTriangleThreeBuckets', 'groupBitXor', 'quantileTDigest', 'quantilesTDigestWeighted', 'sumMap', 'maxMap', 'skewSamp', 'anyLast', 'quantilesExact', 'uniqExact', 'count', 'quantilesTimingWeighted', 'uniqHLL12', 'uniqTheta', 'minMap'}</span> </div> @@ -3341,7 +3341,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNC_TOKENS</span> = <input id="ClickHouse.Parser.FUNC_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.ALL: 'ALL'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.UINT256: 'UINT256'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.INDEX: 'INDEX'>, <TokenType.LIKE: 'LIKE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.GLOB: 'GLOB'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.XML: 'XML'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.XOR: 'XOR'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.XOR: 'XOR'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.GLOB: 'GLOB'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.LEFT: 'LEFT'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.SOME: 'SOME'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.ROW: 'ROW'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.LIKE: 'LIKE'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3354,7 +3354,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">AGG_FUNC_MAPPING</span> = <input id="ClickHouse.Parser.AGG_FUNC_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNC_MAPPING-view-value"></label><span class="default_value">{'groupBitOrIf': ('groupBitOr', 'If'), 'quantileTDigestWeightedIf': ('quantileTDigestWeighted', 'If'), 'sequenceNextNodeIf': ('sequenceNextNode', 'If'), 'studentTTestIf': ('studentTTest', 'If'), 'quantileExactLowIf': ('quantileExactLow', 'If'), 'categoricalInformationValueIf': ('categoricalInformationValue', 'If'), 'sequenceMatchIf': ('sequenceMatch', 'If'), 'maxIf': ('max', 'If'), 'maxMapIf': ('maxMap', 'If'), 'groupArrayIf': ('groupArray', 'If'), 'sumWithOverflowIf': ('sumWithOverflow', 'If'), 'kurtSampIf': ('kurtSamp', 'If'), 'groupBitmapXorIf': ('groupBitmapXor', 'If'), 'minIf': ('min', 'If'), 'sequenceCountIf': ('sequenceCount', 'If'), 'theilsUIf': ('theilsU', 'If'), 'corrIf': ('corr', 'If'), 'stddevSampIf': ('stddevSamp', 'If'), 'topKWeightedIf': ('topKWeighted', 'If'), 'quantilesExactWeightedIf': ('quantilesExactWeighted', 'If'), 'quantileExactIf': ('quantileExact', 'If'), 'simpleLinearRegressionIf': ('simpleLinearRegression', 'If'), 'varPopIf': ('varPop', 'If'), 'kurtPopIf': ('kurtPop', 'If'), 'quantileBFloat16WeightedIf': ('quantileBFloat16Weighted', 'If'), 'quantilesBFloat16WeightedIf': ('quantilesBFloat16Weighted', 'If'), 'quantilesTimingIf': ('quantilesTiming', 'If'), 'windowFunnelIf': ('windowFunnel', 'If'), 'quantilesExactHighIf': ('quantilesExactHigh', 'If'), 'first_valueIf': ('first_value', 'If'), 'quantileIf': ('quantile', 'If'), 'anyLastIf': ('anyLast', 'If'), 'stddevPopIf': ('stddevPop', 'If'), 'uniqIf': ('uniq', 'If'), 'quantilesTimingWeightedIf': ('quantilesTimingWeighted', 'If'), 'anyHeavyIf': ('anyHeavy', 'If'), 'cramersVIf': ('cramersV', 'If'), 'quantileGKIf': ('quantileGK', 'If'), 'topKIf': ('topK', 'If'), 'groupArrayInsertAtIf': ('groupArrayInsertAt', 'If'), 'quantilesTDigestIf': ('quantilesTDigest', 'If'), 'groupBitmapIf': ('groupBitmap', 'If'), 'sumMapIf': ('sumMap', 'If'), 'histogramIf': ('histogram', 'If'), 'quantilesTDigestWeightedIf': ('quantilesTDigestWeighted', 'If'), 'uniqUpToIf': ('uniqUpTo', 'If'), 'groupArraySampleIf': ('groupArraySample', 'If'), 'quantilesBFloat16If': ('quantilesBFloat16', 'If'), 'argMaxIf': ('argMax', 'If'), 'argMinIf': ('argMin', 'If'), 'quantilesGKIf': ('quantilesGK', 'If'), 'uniqThetaIf': ('uniqTheta', 'If'), 'kolmogorovSmirnovTestIf': ('kolmogorovSmirnovTest', 'If'), 'deltaSumIf': ('deltaSum', 'If'), 'retentionIf': ('retention', 'If'), 'exponentialTimeDecayedAvgIf': ('exponentialTimeDecayedAvg', 'If'), 'covarSampIf': ('covarSamp', 'If'), 'covarPopIf': ('covarPop', 'If'), 'countIf': ('count', 'If'), 'last_valueIf': ('last_value', 'If'), 'contingencyIf': ('contingency', 'If'), 'quantileTDigestIf': ('quantileTDigest', 'If'), 'groupArrayMovingSumIf': ('groupArrayMovingSum', 'If'), 'skewPopIf': ('skewPop', 'If'), 'uniqCombinedIf': ('uniqCombined', 'If'), 'groupBitmapOrIf': ('groupBitmapOr', 'If'), 'maxIntersectionsPositionIf': ('maxIntersectionsPosition', 'If'), 'quantilesInterpolatedWeightedIf': ('quantilesInterpolatedWeighted', 'If'), 'exponentialMovingAverageIf': ('exponentialMovingAverage', 'If'), 'welchTTestIf': ('welchTTest', 'If'), 'quantileTimingIf': ('quantileTiming', 'If'), 'entropyIf': ('entropy', 'If'), 'quantileExactHighIf': ('quantileExactHigh', 'If'), 'anyIf': ('any', 'If'), 'boundingRatioIf': ('boundingRatio', 'If'), 'groupArrayLastIf': ('groupArrayLast', 'If'), 'varSampIf': ('varSamp', 'If'), 'sumIf': ('sum', 'If'), 'medianIf': ('median', 'If'), 'sumKahanIf': ('sumKahan', 'If'), 'rankCorrIf': ('rankCorr', 'If'), 'skewSampIf': ('skewSamp', 'If'), 'cramersVBiasCorrectedIf': ('cramersVBiasCorrected', 'If'), 'groupBitAndIf': ('groupBitAnd', 'If'), 'largestTriangleThreeBucketsIf': ('largestTriangleThreeBuckets', 'If'), 'quantileBFloat16If': ('quantileBFloat16', 'If'), 'stochasticLinearRegressionIf': ('stochasticLinearRegression', 'If'), 'quantileTimingWeightedIf': ('quantileTimingWeighted', 'If'), 'avgWeightedIf': ('avgWeighted', 'If'), 'minMapIf': ('minMap', 'If'), 'groupArrayMovingAvgIf': ('groupArrayMovingAvg', 'If'), 'maxIntersectionsIf': ('maxIntersections', 'If'), 'quantilesIf': ('quantiles', 'If'), 'intervalLengthSumIf': ('intervalLengthSum', 'If'), 'groupBitXorIf': ('groupBitXor', 'If'), 'sumCountIf': ('sumCount', 'If'), 'stochasticLogisticRegressionIf': ('stochasticLogisticRegression', 'If'), 'quantilesDeterministicIf': ('quantilesDeterministic', 'If'), 'mannWhitneyUTestIf': ('mannWhitneyUTest', 'If'), 'quantilesExactIf': ('quantilesExact', 'If'), 'sparkBarIf': ('sparkBar', 'If'), 'uniqExactIf': ('uniqExact', 'If'), 'uniqHLL12If': ('uniqHLL12', 'If'), 'quantileDeterministicIf': ('quantileDeterministic', 'If'), 'quantileExactWeightedIf': ('quantileExactWeighted', 'If'), 'meanZTestIf': ('meanZTest', 'If'), 'groupUniqArrayIf': ('groupUniqArray', 'If'), 'quantilesExactLowIf': ('quantilesExactLow', 'If'), 'avgIf': ('avg', 'If'), 'quantileInterpolatedWeightedIf': ('quantileInterpolatedWeighted', 'If'), 'deltaSumTimestampIf': ('deltaSumTimestamp', 'If'), 'uniqCombined64If': ('uniqCombined64', 'If'), 'groupBitmapAndIf': ('groupBitmapAnd', 'If'), 'groupBitOrArray': ('groupBitOr', 'Array'), 'quantileTDigestWeightedArray': ('quantileTDigestWeighted', 'Array'), 'sequenceNextNodeArray': ('sequenceNextNode', 'Array'), 'studentTTestArray': ('studentTTest', 'Array'), 'quantileExactLowArray': ('quantileExactLow', 'Array'), 'categoricalInformationValueArray': ('categoricalInformationValue', 'Array'), 'sequenceMatchArray': ('sequenceMatch', 'Array'), 'maxArray': ('max', 'Array'), 'maxMapArray': ('maxMap', 'Array'), 'groupArrayArray': ('groupArray', 'Array'), 'sumWithOverflowArray': ('sumWithOverflow', 'Array'), 'kurtSampArray': ('kurtSamp', 'Array'), 'groupBitmapXorArray': ('groupBitmapXor', 'Array'), 'minArray': ('min', 'Array'), 'sequenceCountArray': ('sequenceCount', 'Array'), 'theilsUArray': ('theilsU', 'Array'), 'corrArray': ('corr', 'Array'), 'stddevSampArray': ('stddevSamp', 'Array'), 'topKWeightedArray': ('topKWeighted', 'Array'), 'quantilesExactWeightedArray': ('quantilesExactWeighted', 'Array'), 'quantileExactArray': ('quantileExact', 'Array'), 'simpleLinearRegressionArray': ('simpleLinearRegression', 'Array'), 'varPopArray': ('varPop', 'Array'), 'kurtPopArray': ('kurtPop', 'Array'), 'quantileBFloat16WeightedArray': ('quantileBFloat16Weighted', 'Array'), 'quantilesBFloat16WeightedArray': ('quantilesBFloat16Weighted', 'Array'), 'quantilesTimingArray': ('quantilesTiming', 'Array'), 'windowFunnelArray': ('windowFunnel', 'Array'), 'quantilesExactHighArray': ('quantilesExactHigh', 'Array'), 'first_valueArray': ('first_value', 'Array'), 'quantileArray': ('quantile', 'Array'), 'anyLastArray': ('anyLast', 'Array'), 'stddevPopArray': ('stddevPop', 'Array'), 'uniqArray': ('uniq', 'Array'), 'quantilesTimingWeightedArray': ('quantilesTimingWeighted', 'Array'), 'anyHeavyArray': ('anyHeavy', 'Array'), 'cramersVArray': ('cramersV', 'Array'), 'quantileGKArray': ('quantileGK', 'Array'), 'topKArray': ('topK', 'Array'), 'groupArrayInsertAtArray': ('groupArrayInsertAt', 'Array'), 'quantilesTDigestArray': ('quantilesTDigest', 'Array'), 'groupBitmapArray': ('groupBitmap', 'Array'), 'sumMapArray': ('sumMap', 'Array'), 'histogramArray': ('histogram', 'Array'), 'quantilesTDigestWeightedArray': ('quantilesTDigestWeighted', 'Array'), 'uniqUpToArray': ('uniqUpTo', 'Array'), 'groupArraySampleArray': ('groupArraySample', 'Array'), 'quantilesBFloat16Array': ('quantilesBFloat16', 'Array'), 'argMaxArray': ('argMax', 'Array'), 'argMinArray': ('argMin', 'Array'), 'quantilesGKArray': ('quantilesGK', 'Array'), 'uniqThetaArray': ('uniqTheta', 'Array'), 'kolmogorovSmirnovTestArray': ('kolmogorovSmirnovTest', 'Array'), 'deltaSumArray': ('deltaSum', 'Array'), 'retentionArray': ('retention', 'Array'), 'exponentialTimeDecayedAvgArray': ('exponentialTimeDecayedAvg', 'Array'), 'covarSampArray': ('covarSamp', 'Array'), 'covarPopArray': ('covarPop', 'Array'), 'countArray': ('count', 'Array'), 'last_valueArray': ('last_value', 'Array'), 'contingencyArray': ('contingency', 'Array'), 'quantileTDigestArray': ('quantileTDigest', 'Array'), 'groupArrayMovingSumArray': ('groupArrayMovingSum', 'Array'), 'skewPopArray': ('skewPop', 'Array'), 'uniqCombinedArray': ('uniqCombined', 'Array'), 'groupBitmapOrArray': ('groupBitmapOr', 'Array'), 'maxIntersectionsPositionArray': ('maxIntersectionsPosition', 'Array'), 'quantilesInterpolatedWeightedArray': ('quantilesInterpolatedWeighted', 'Array'), 'exponentialMovingAverageArray': ('exponentialMovingAverage', 'Array'), 'welchTTestArray': ('welchTTest', 'Array'), 'quantileTimingArray': ('quantileTiming', 'Array'), 'entropyArray': ('entropy', 'Array'), 'quantileExactHighArray': ('quantileExactHigh', 'Array'), 'anyArray': ('any', 'Array'), 'boundingRatioArray': ('boundingRatio', 'Array'), 'groupArrayLastArray': ('groupArrayLast', 'Array'), 'varSampArray': ('varSamp', 'Array'), 'sumArray': ('sum', 'Array'), 'medianArray': ('median', 'Array'), 'sumKahanArray': ('sumKahan', 'Array'), 'rankCorrArray': ('rankCorr', 'Array'), 'skewSampArray': ('skewSamp', 'Array'), 'cramersVBiasCorrectedArray': ('cramersVBiasCorrected', 'Array'), 'groupBitAndArray': ('groupBitAnd', 'Array'), 'largestTriangleThreeBucketsArray': ('largestTriangleThreeBuckets', 'Array'), 'quantileBFloat16Array': ('quantileBFloat16', 'Array'), 'stochasticLinearRegressionArray': ('stochasticLinearRegression', 'Array'), 'quantileTimingWeightedArray': ('quantileTimingWeighted', 'Array'), 'avgWeightedArray': ('avgWeighted', 'Array'), 'minMapArray': ('minMap', 'Array'), 'groupArrayMovingAvgArray': ('groupArrayMovingAvg', 'Array'), 'maxIntersectionsArray': ('maxIntersections', 'Array'), 'quantilesArray': ('quantiles', 'Array'), 'intervalLengthSumArray': ('intervalLengthSum', 'Array'), 'groupBitXorArray': ('groupBitXor', 'Array'), 'sumCountArray': ('sumCount', 'Array'), 'stochasticLogisticRegressionArray': ('stochasticLogisticRegression', 'Array'), 'quantilesDeterministicArray': ('quantilesDeterministic', 'Array'), 'mannWhitneyUTestArray': ('mannWhitneyUTest', 'Array'), 'quantilesExactArray': ('quantilesExact', 'Array'), 'sparkBarArray': ('sparkBar', 'Array'), 'uniqExactArray': ('uniqExact', 'Array'), 'uniqHLL12Array': ('uniqHLL12', 'Array'), 'quantileDeterministicArray': ('quantileDeterministic', 'Array'), 'quantileExactWeightedArray': ('quantileExactWeighted', 'Array'), 'meanZTestArray': ('meanZTest', 'Array'), 'groupUniqArrayArray': ('groupUniqArray', 'Array'), 'quantilesExactLowArray': ('quantilesExactLow', 'Array'), 'avgArray': ('avg', 'Array'), 'quantileInterpolatedWeightedArray': ('quantileInterpolatedWeighted', 'Array'), 'deltaSumTimestampArray': ('deltaSumTimestamp', 'Array'), 'uniqCombined64Array': ('uniqCombined64', 'Array'), 'groupBitmapAndArray': ('groupBitmapAnd', 'Array'), 'groupBitOrArrayIf': ('groupBitOr', 'ArrayIf'), 'quantileTDigestWeightedArrayIf': ('quantileTDigestWeighted', 'ArrayIf'), 'sequenceNextNodeArrayIf': ('sequenceNextNode', 'ArrayIf'), 'studentTTestArrayIf': ('studentTTest', 'ArrayIf'), 'quantileExactLowArrayIf': ('quantileExactLow', 'ArrayIf'), 'categoricalInformationValueArrayIf': ('categoricalInformationValue', 'ArrayIf'), 'sequenceMatchArrayIf': ('sequenceMatch', 'ArrayIf'), 'maxArrayIf': ('max', 'ArrayIf'), 'maxMapArrayIf': ('maxMap', 'ArrayIf'), 'groupArrayArrayIf': ('groupArray', 'ArrayIf'), 'sumWithOverflowArrayIf': ('sumWithOverflow', 'ArrayIf'), 'kurtSampArrayIf': ('kurtSamp', 'ArrayIf'), 'groupBitmapXorArrayIf': ('groupBitmapXor', 'ArrayIf'), 'minArrayIf': ('min', 'ArrayIf'), 'sequenceCountArrayIf': ('sequenceCount', 'ArrayIf'), 'theilsUArrayIf': ('theilsU', 'ArrayIf'), 'corrArrayIf': ('corr', 'ArrayIf'), 'stddevSampArrayIf': ('stddevSamp', 'ArrayIf'), 'topKWeightedArrayIf': ('topKWeighted', 'ArrayIf'), 'quantilesExactWeightedArrayIf': ('quantilesExactWeighted', 'ArrayIf'), 'quantileExactArrayIf': ('quantileExact', 'ArrayIf'), 'simpleLinearRegressionArrayIf': ('simpleLinearRegression', 'ArrayIf'), 'varPopArrayIf': ('varPop', 'ArrayIf'), 'kurtPopArrayIf': ('kurtPop', 'ArrayIf'), 'quantileBFloat16WeightedArrayIf': ('quantileBFloat16Weighted', 'ArrayIf'), 'quantilesBFloat16WeightedArrayIf': ('quantilesBFloat16Weighted', 'ArrayIf'), 'quantilesTimingArrayIf': ('quantilesTiming', 'ArrayIf'), 'windowFunnelArrayIf': ('windowFunnel', 'ArrayIf'), 'quantilesExactHighArrayIf': ('quantilesExactHigh', 'ArrayIf'), 'first_valueArrayIf': ('first_value', 'ArrayIf'), 'quantileArrayIf': ('quantile', 'ArrayIf'), 'anyLastArrayIf': ('anyLast', 'ArrayIf'), 'stddevPopArrayIf': ('stddevPop', 'ArrayIf'), 'uniqArrayIf': ('uniq', 'ArrayIf'), 'quantilesTimingWeightedArrayIf': ('quantilesTimingWeighted', 'ArrayIf'), 'anyHeavyArrayIf': ('anyHeavy', 'ArrayIf'), 'cramersVArrayIf': ('cramersV', 'ArrayIf'), 'quantileGKArrayIf': ('quantileGK', 'ArrayIf'), 'topKArrayIf': ('topK', 'ArrayIf'), 'groupArrayInsertAtArrayIf': ('groupArrayInsertAt', 'ArrayIf'), 'quantilesTDigestArrayIf': ('quantilesTDigest', 'ArrayIf'), 'groupBitmapArrayIf': ('groupBitmap', 'ArrayIf'), 'sumMapArrayIf': ('sumMap', 'ArrayIf'), 'histogramArrayIf': ('histogram', 'ArrayIf'), 'quantilesTDigestWeightedArrayIf': ('quantilesTDigestWeighted', 'ArrayIf'), 'uniqUpToArrayIf': ('uniqUpTo', 'ArrayIf'), 'groupArraySampleArrayIf': ('groupArraySample', 'ArrayIf'), 'quantilesBFloat16ArrayIf': ('quantilesBFloat16', 'ArrayIf'), 'argMaxArrayIf': ('argMax', 'ArrayIf'), 'argMinArrayIf': ('argMin', 'ArrayIf'), 'quantilesGKArrayIf': ('quantilesGK', 'ArrayIf'), 'uniqThetaArrayIf': ('uniqTheta', 'ArrayIf'), 'kolmogorovSmirnovTestArrayIf': ('kolmogorovSmirnovTest', 'ArrayIf'), 'deltaSumArrayIf': ('deltaSum', 'ArrayIf'), 'retentionArrayIf': ('retention', 'ArrayIf'), 'exponentialTimeDecayedAvgArrayIf': ('exponentialTimeDecayedAvg', 'ArrayIf'), 'covarSampArrayIf': ('covarSamp', 'ArrayIf'), 'covarPopArrayIf': ('covarPop', 'ArrayIf'), 'countArrayIf': ('count', 'ArrayIf'), 'last_valueArrayIf': ('last_value', 'ArrayIf'), 'contingencyArrayIf': ('contingency', 'ArrayIf'), 'quantileTDigestArrayIf': ('quantileTDigest', 'ArrayIf'), 'groupArrayMovingSumArrayIf': ('groupArrayMovingSum', 'ArrayIf'), 'skewPopArrayIf': ('skewPop', 'ArrayIf'), 'uniqCombinedArrayIf': ('uniqCombined', 'ArrayIf'), 'groupBitmapOrArrayIf': ('groupBitmapOr', 'ArrayIf'), 'maxIntersectionsPositionArrayIf': ('maxIntersectionsPosition', 'ArrayIf'), 'quantilesInterpolatedWeightedArrayIf': ('quantilesInterpolatedWeighted', 'ArrayIf'), 'exponentialMovingAverageArrayIf': ('exponentialMovingAverage', 'ArrayIf'), 'welchTTestArrayIf': ('welchTTest', 'ArrayIf'), 'quantileTimingArrayIf': ('quantileTiming', 'ArrayIf'), 'entropyArrayIf': ('entropy', 'ArrayIf'), 'quantileExactHighArrayIf': ('quantileExactHigh', 'ArrayIf'), 'anyArrayIf': ('any', 'ArrayIf'), 'boundingRatioArrayIf': ('boundingRatio', 'ArrayIf'), 'groupArrayLastArrayIf': ('groupArrayLast', 'ArrayIf'), 'varSampArrayIf': ('varSamp', 'ArrayIf'), 'sumArrayIf': ('sum', 'ArrayIf'), 'medianArrayIf': ('median', 'ArrayIf'), 'sumKahanArrayIf': ('sumKahan', 'ArrayIf'), 'rankCorrArrayIf': ('rankCorr', 'ArrayIf'), 'skewSampArrayIf': ('skewSamp', 'ArrayIf'), 'cramersVBiasCorrectedArrayIf': ('cramersVBiasCorrected', 'ArrayIf'), 'groupBitAndArrayIf': ('groupBitAnd', 'ArrayIf'), 'largestTriangleThreeBucketsArrayIf': ('largestTriangleThreeBuckets', 'ArrayIf'), 'quantileBFloat16ArrayIf': ('quantileBFloat16', 'ArrayIf'), 'stochasticLinearRegressionArrayIf': ('stochasticLinearRegression', 'ArrayIf'), 'quantileTimingWeightedArrayIf': ('quantileTimingWeighted', 'ArrayIf'), 'avgWeightedArrayIf': ('avgWeighted', 'ArrayIf'), 'minMapArrayIf': ('minMap', 'ArrayIf'), 'groupArrayMovingAvgArrayIf': ('groupArrayMovingAvg', 'ArrayIf'), 'maxIntersectionsArrayIf': ('maxIntersections', 'ArrayIf'), 'quantilesArrayIf': ('quantiles', 'ArrayIf'), 'intervalLengthSumArrayIf': ('intervalLengthSum', 'ArrayIf'), 'groupBitXorArrayIf': ('groupBitXor', 'ArrayIf'), 'sumCountArrayIf': ('sumCount', 'ArrayIf'), 'stochasticLogisticRegressionArrayIf': ('stochasticLogisticRegression', 'ArrayIf'), 'quantilesDeterministicArrayIf': ('quantilesDeterministic', 'ArrayIf'), 'mannWhitneyUTestArrayIf': ('mannWhitneyUTest', 'ArrayIf'), 'quantilesExactArrayIf': ('quantilesExact', 'ArrayIf'), 'sparkBarArrayIf': ('sparkBar', 'ArrayIf'), 'uniqExactArrayIf': ('uniqExact', 'ArrayIf'), 'uniqHLL12ArrayIf': ('uniqHLL12', 'ArrayIf'), 'quantileDeterministicArrayIf': ('quantileDeterministic', 'ArrayIf'), 'quantileExactWeightedArrayIf': ('quantileExactWeighted', 'ArrayIf'), 'meanZTestArrayIf': ('meanZTest', 'ArrayIf'), 'groupUniqArrayArrayIf': ('groupUniqArray', 'ArrayIf'), 'quantilesExactLowArrayIf': ('quantilesExactLow', 'ArrayIf'), 'avgArrayIf': ('avg', 'ArrayIf'), 'quantileInterpolatedWeightedArrayIf': ('quantileInterpolatedWeighted', 'ArrayIf'), 'deltaSumTimestampArrayIf': ('deltaSumTimestamp', 'ArrayIf'), 'uniqCombined64ArrayIf': ('uniqCombined64', 'ArrayIf'), 'groupBitmapAndArrayIf': ('groupBitmapAnd', 'ArrayIf'), 'groupBitOrMap': ('groupBitOr', 'Map'), 'quantileTDigestWeightedMap': ('quantileTDigestWeighted', 'Map'), 'sequenceNextNodeMap': ('sequenceNextNode', 'Map'), 'studentTTestMap': ('studentTTest', 'Map'), 'quantileExactLowMap': ('quantileExactLow', 'Map'), 'categoricalInformationValueMap': ('categoricalInformationValue', 'Map'), 'sequenceMatchMap': ('sequenceMatch', 'Map'), 'maxMap': ('maxMap', ''), 'maxMapMap': ('maxMap', 'Map'), 'groupArrayMap': ('groupArray', 'Map'), 'sumWithOverflowMap': ('sumWithOverflow', 'Map'), 'kurtSampMap': ('kurtSamp', 'Map'), 'groupBitmapXorMap': ('groupBitmapXor', 'Map'), 'minMap': ('minMap', ''), 'sequenceCountMap': ('sequenceCount', 'Map'), 'theilsUMap': ('theilsU', 'Map'), 'corrMap': ('corr', 'Map'), 'stddevSampMap': ('stddevSamp', 'Map'), 'topKWeightedMap': ('topKWeighted', 'Map'), 'quantilesExactWeightedMap': ('quantilesExactWeighted', 'Map'), 'quantileExactMap': ('quantileExact', 'Map'), 'simpleLinearRegressionMap': ('simpleLinearRegression', 'Map'), 'varPopMap': ('varPop', 'Map'), 'kurtPopMap': ('kurtPop', 'Map'), 'quantileBFloat16WeightedMap': ('quantileBFloat16Weighted', 'Map'), 'quantilesBFloat16WeightedMap': ('quantilesBFloat16Weighted', 'Map'), 'quantilesTimingMap': ('quantilesTiming', 'Map'), 'windowFunnelMap': ('windowFunnel', 'Map'), 'quantilesExactHighMap': ('quantilesExactHigh', 'Map'), 'first_valueMap': ('first_value', 'Map'), 'quantileMap': ('quantile', 'Map'), 'anyLastMap': ('anyLast', 'Map'), 'stddevPopMap': ('stddevPop', 'Map'), 'uniqMap': ('uniq', 'Map'), 'quantilesTimingWeightedMap': ('quantilesTimingWeighted', 'Map'), 'anyHeavyMap': ('anyHeavy', 'Map'), 'cramersVMap': ('cramersV', 'Map'), 'quantileGKMap': ('quantileGK', 'Map'), 'topKMap': ('topK', 'Map'), 'groupArrayInsertAtMap': ('groupArrayInsertAt', 'Map'), 'quantilesTDigestMap': ('quantilesTDigest', 'Map'), 'groupBitmapMap': ('groupBitmap', 'Map'), 'sumMapMap': ('sumMap', 'Map'), 'histogramMap': ('histogram', 'Map'), 'quantilesTDigestWeightedMap': ('quantilesTDigestWeighted', 'Map'), 'uniqUpToMap': ('uniqUpTo', 'Map'), 'groupArraySampleMap': ('groupArraySample', 'Map'), 'quantilesBFloat16Map': ('quantilesBFloat16', 'Map'), 'argMaxMap': ('argMax', 'Map'), 'argMinMap': ('argMin', 'Map'), 'quantilesGKMap': ('quantilesGK', 'Map'), 'uniqThetaMap': ('uniqTheta', 'Map'), 'kolmogorovSmirnovTestMap': ('kolmogorovSmirnovTest', 'Map'), 'deltaSumMap': ('deltaSum', 'Map'), 'retentionMap': ('retention', 'Map'), 'exponentialTimeDecayedAvgMap': ('exponentialTimeDecayedAvg', 'Map'), 'covarSampMap': ('covarSamp', 'Map'), 'covarPopMap': ('covarPop', 'Map'), 'countMap': ('count', 'Map'), 'last_valueMap': ('last_value', 'Map'), 'contingencyMap': ('contingency', 'Map'), 'quantileTDigestMap': ('quantileTDigest', 'Map'), 'groupArrayMovingSumMap': ('groupArrayMovingSum', 'Map'), 'skewPopMap': ('skewPop', 'Map'), 'uniqCombinedMap': ('uniqCombined', 'Map'), 'groupBitmapOrMap': ('groupBitmapOr', 'Map'), 'maxIntersectionsPositionMap': ('maxIntersectionsPosition', 'Map'), 'quantilesInterpolatedWeightedMap': ('quantilesInterpolatedWeighted', 'Map'), 'exponentialMovingAverageMap': ('exponentialMovingAverage', 'Map'), 'welchTTestMap': ('welchTTest', 'Map'), 'quantileTimingMap': ('quantileTiming', 'Map'), 'entropyMap': ('entropy', 'Map'), 'quantileExactHighMap': ('quantileExactHigh', 'Map'), 'anyMap': ('any', 'Map'), 'boundingRatioMap': ('boundingRatio', 'Map'), 'groupArrayLastMap': ('groupArrayLast', 'Map'), 'varSampMap': ('varSamp', 'Map'), 'sumMap': ('sumMap', ''), 'medianMap': ('median', 'Map'), 'sumKahanMap': ('sumKahan', 'Map'), 'rankCorrMap': ('rankCorr', 'Map'), 'skewSampMap': ('skewSamp', 'Map'), 'cramersVBiasCorrectedMap': ('cramersVBiasCorrected', 'Map'), 'groupBitAndMap': ('groupBitAnd', 'Map'), 'largestTriangleThreeBucketsMap': ('largestTriangleThreeBuckets', 'Map'), 'quantileBFloat16Map': ('quantileBFloat16', 'Map'), 'stochasticLinearRegressionMap': ('stochasticLinearRegression', 'Map'), 'quantileTimingWeightedMap': ('quantileTimingWeighted', 'Map'), 'avgWeightedMap': ('avgWeighted', 'Map'), 'minMapMap': ('minMap', 'Map'), 'groupArrayMovingAvgMap': ('groupArrayMovingAvg', 'Map'), 'maxIntersectionsMap': ('maxIntersections', 'Map'), 'quantilesMap': ('quantiles', 'Map'), 'intervalLengthSumMap': ('intervalLengthSum', 'Map'), 'groupBitXorMap': ('groupBitXor', 'Map'), 'sumCountMap': ('sumCount', 'Map'), 'stochasticLogisticRegressionMap': ('stochasticLogisticRegression', 'Map'), 'quantilesDeterministicMap': ('quantilesDeterministic', 'Map'), 'mannWhitneyUTestMap': ('mannWhitneyUTest', 'Map'), 'quantilesExactMap': ('quantilesExact', 'Map'), 'sparkBarMap': ('sparkBar', 'Map'), 'uniqExactMap': ('uniqExact', 'Map'), 'uniqHLL12Map': ('uniqHLL12', 'Map'), 'quantileDeterministicMap': ('quantileDeterministic', 'Map'), 'quantileExactWeightedMap': ('quantileExactWeighted', 'Map'), 'meanZTestMap': ('meanZTest', 'Map'), 'groupUniqArrayMap': ('groupUniqArray', 'Map'), 'quantilesExactLowMap': ('quantilesExactLow', 'Map'), 'avgMap': ('avg', 'Map'), 'quantileInterpolatedWeightedMap': ('quantileInterpolatedWeighted', 'Map'), 'deltaSumTimestampMap': ('deltaSumTimestamp', 'Map'), 'uniqCombined64Map': ('uniqCombined64', 'Map'), 'groupBitmapAndMap': ('groupBitmapAnd', 'Map'), 'groupBitOrSimpleState': ('groupBitOr', 'SimpleState'), 'quantileTDigestWeightedSimpleState': ('quantileTDigestWeighted', 'SimpleState'), 'sequenceNextNodeSimpleState': ('sequenceNextNode', 'SimpleState'), 'studentTTestSimpleState': ('studentTTest', 'SimpleState'), 'quantileExactLowSimpleState': ('quantileExactLow', 'SimpleState'), 'categoricalInformationValueSimpleState': ('categoricalInformationValue', 'SimpleState'), 'sequenceMatchSimpleState': ('sequenceMatch', 'SimpleState'), 'maxSimpleState': ('max', 'SimpleState'), 'maxMapSimpleState': ('maxMap', 'SimpleState'), 'groupArraySimpleState': ('groupArray', 'SimpleState'), 'sumWithOverflowSimpleState': ('sumWithOverflow', 'SimpleState'), 'kurtSampSimpleState': ('kurtSamp', 'SimpleState'), 'groupBitmapXorSimpleState': ('groupBitmapXor', 'SimpleState'), 'minSimpleState': ('min', 'SimpleState'), 'sequenceCountSimpleState': ('sequenceCount', 'SimpleState'), 'theilsUSimpleState': ('theilsU', 'SimpleState'), 'corrSimpleState': ('corr', 'SimpleState'), 'stddevSampSimpleState': ('stddevSamp', 'SimpleState'), 'topKWeightedSimpleState': ('topKWeighted', 'SimpleState'), 'quantilesExactWeightedSimpleState': ('quantilesExactWeighted', 'SimpleState'), 'quantileExactSimpleState': ('quantileExact', 'SimpleState'), 'simpleLinearRegressionSimpleState': ('simpleLinearRegression', 'SimpleState'), 'varPopSimpleState': ('varPop', 'SimpleState'), 'kurtPopSimpleState': ('kurtPop', 'SimpleState'), 'quantileBFloat16WeightedSimpleState': ('quantileBFloat16Weighted', 'SimpleState'), 'quantilesBFloat16WeightedSimpleState': ('quantilesBFloat16Weighted', 'SimpleState'), 'quantilesTimingSimpleState': ('quantilesTiming', 'SimpleState'), 'windowFunnelSimpleState': ('windowFunnel', 'SimpleState'), 'quantilesExactHighSimpleState': ('quantilesExactHigh', 'SimpleState'), 'first_valueSimpleState': ('first_value', 'SimpleState'), 'quantileSimpleState': ('quantile', 'SimpleState'), 'anyLastSimpleState': ('anyLast', 'SimpleState'), 'stddevPopSimpleState': ('stddevPop', 'SimpleState'), 'uniqSimpleState': ('uniq', 'SimpleState'), 'quantilesTimingWeightedSimpleState': ('quantilesTimingWeighted', 'SimpleState'), 'anyHeavySimpleState': ('anyHeavy', 'SimpleState'), 'cramersVSimpleState': ('cramersV', 'SimpleState'), 'quantileGKSimpleState': ('quantileGK', 'SimpleState'), 'topKSimpleState': ('topK', 'SimpleState'), 'groupArrayInsertAtSimpleState': ('groupArrayInsertAt', 'SimpleState'), 'quantilesTDigestSimpleState': ('quantilesTDigest', 'SimpleState'), 'groupBitmapSimpleState': ('groupBitmap', 'SimpleState'), 'sumMapSimpleState': ('sumMap', 'SimpleState'), 'histogramSimpleState': ('histogram', 'SimpleState'), 'quantilesTDigestWeightedSimpleState': ('quantilesTDigestWeighted', 'SimpleState'), 'uniqUpToSimpleState': ('uniqUpTo', 'SimpleState'), 'groupArraySampleSimpleState': ('groupArraySample', 'SimpleState'), 'quantilesBFloat16SimpleState': ('quantilesBFloat16', 'SimpleState'), 'argMaxSimpleState': ('argMax', 'SimpleState'), 'argMinSimpleState': ('argMin', 'SimpleState'), 'quantilesGKSimpleState': ('quantilesGK', 'SimpleState'), 'uniqThetaSimpleState': ('uniqTheta', 'SimpleState'), 'kolmogorovSmirnovTestSimpleState': ('kolmogorovSmirnovTest', 'SimpleState'), 'deltaSumSimpleState': ('deltaSum', 'SimpleState'), 'retentionSimpleState': ('retention', 'SimpleState'), 'exponentialTimeDecayedAvgSimpleState': ('exponentialTimeDecayedAvg', 'SimpleState'), 'covarSampSimpleState': ('covarSamp', 'SimpleState'), 'covarPopSimpleState': ('covarPop', 'SimpleState'), 'countSimpleState': ('count', 'SimpleState'), 'last_valueSimpleState': ('last_value', 'SimpleState'), 'contingencySimpleState': ('contingency', 'SimpleState'), 'quantileTDigestSimpleState': ('quantileTDigest', 'SimpleState'), 'groupArrayMovingSumSimpleState': ('groupArrayMovingSum', 'SimpleState'), 'skewPopSimpleState': ('skewPop', 'SimpleState'), 'uniqCombinedSimpleState': ('uniqCombined', 'SimpleState'), 'groupBitmapOrSimpleState': ('groupBitmapOr', 'SimpleState'), 'maxIntersectionsPositionSimpleState': ('maxIntersectionsPosition', 'SimpleState'), 'quantilesInterpolatedWeightedSimpleState': ('quantilesInterpolatedWeighted', 'SimpleState'), 'exponentialMovingAverageSimpleState': ('exponentialMovingAverage', 'SimpleState'), 'welchTTestSimpleState': ('welchTTest', 'SimpleState'), 'quantileTimingSimpleState': ('quantileTiming', 'SimpleState'), 'entropySimpleState': ('entropy', 'SimpleState'), 'quantileExactHighSimpleState': ('quantileExactHigh', 'SimpleState'), 'anySimpleState': ('any', 'SimpleState'), 'boundingRatioSimpleState': ('boundingRatio', 'SimpleState'), 'groupArrayLastSimpleState': ('groupArrayLast', 'SimpleState'), 'varSampSimpleState': ('varSamp', 'SimpleState'), 'sumSimpleState': ('sum', 'SimpleState'), 'medianSimpleState': ('median', 'SimpleState'), 'sumKahanSimpleState': ('sumKahan', 'SimpleState'), 'rankCorrSimpleState': ('rankCorr', 'SimpleState'), 'skewSampSimpleState': ('skewSamp', 'SimpleState'), 'cramersVBiasCorrectedSimpleState': ('cramersVBiasCorrected', 'SimpleState'), 'groupBitAndSimpleState': ('groupBitAnd', 'SimpleState'), 'largestTriangleThreeBucketsSimpleState': ('largestTriangleThreeBuckets', 'SimpleState'), 'quantileBFloat16SimpleState': ('quantileBFloat16', 'SimpleState'), 'stochasticLinearRegressionSimpleState': ('stochasticLinearRegression', 'SimpleState'), 'quantileTimingWeightedSimpleState': ('quantileTimingWeighted', 'SimpleState'), 'avgWeightedSimpleState': ('avgWeighted', 'SimpleState'), 'minMapSimpleState': ('minMap', 'SimpleState'), 'groupArrayMovingAvgSimpleState': ('groupArrayMovingAvg', 'SimpleState'), 'maxIntersectionsSimpleState': ('maxIntersections', 'SimpleState'), 'quantilesSimpleState': ('quantiles', 'SimpleState'), 'intervalLengthSumSimpleState': ('intervalLengthSum', 'SimpleState'), 'groupBitXorSimpleState': ('groupBitXor', 'SimpleState'), 'sumCountSimpleState': ('sumCount', 'SimpleState'), 'stochasticLogisticRegressionSimpleState': ('stochasticLogisticRegression', 'SimpleState'), 'quantilesDeterministicSimpleState': ('quantilesDeterministic', 'SimpleState'), 'mannWhitneyUTestSimpleState': ('mannWhitneyUTest', 'SimpleState'), 'quantilesExactSimpleState': ('quantilesExact', 'SimpleState'), 'sparkBarSimpleState': ('sparkBar', 'SimpleState'), 'uniqExactSimpleState': ('uniqExact', 'SimpleState'), 'uniqHLL12SimpleState': ('uniqHLL12', 'SimpleState'), 'quantileDeterministicSimpleState': ('quantileDeterministic', 'SimpleState'), 'quantileExactWeightedSimpleState': ('quantileExactWeighted', 'SimpleState'), 'meanZTestSimpleState': ('meanZTest', 'SimpleState'), 'groupUniqArraySimpleState': ('groupUniqArray', 'SimpleState'), 'quantilesExactLowSimpleState': ('quantilesExactLow', 'SimpleState'), 'avgSimpleState': ('avg', 'SimpleState'), 'quantileInterpolatedWeightedSimpleState': ('quantileInterpolatedWeighted', 'SimpleState'), 'deltaSumTimestampSimpleState': ('deltaSumTimestamp', 'SimpleState'), 'uniqCombined64SimpleState': ('uniqCombined64', 'SimpleState'), 'groupBitmapAndSimpleState': ('groupBitmapAnd', 'SimpleState'), 'groupBitOrState': ('groupBitOr', 'State'), 'quantileTDigestWeightedState': ('quantileTDigestWeighted', 'State'), 'sequenceNextNodeState': ('sequenceNextNode', 'State'), 'studentTTestState': ('studentTTest', 'State'), 'quantileExactLowState': ('quantileExactLow', 'State'), 'categoricalInformationValueState': ('categoricalInformationValue', 'State'), 'sequenceMatchState': ('sequenceMatch', 'State'), 'maxState': ('max', 'State'), 'maxMapState': ('maxMap', 'State'), 'groupArrayState': ('groupArray', 'State'), 'sumWithOverflowState': ('sumWithOverflow', 'State'), 'kurtSampState': ('kurtSamp', 'State'), 'groupBitmapXorState': ('groupBitmapXor', 'State'), 'minState': ('min', 'State'), 'sequenceCountState': ('sequenceCount', 'State'), 'theilsUState': ('theilsU', 'State'), 'corrState': ('corr', 'State'), 'stddevSampState': ('stddevSamp', 'State'), 'topKWeightedState': ('topKWeighted', 'State'), 'quantilesExactWeightedState': ('quantilesExactWeighted', 'State'), 'quantileExactState': ('quantileExact', 'State'), 'simpleLinearRegressionState': ('simpleLinearRegression', 'State'), 'varPopState': ('varPop', 'State'), 'kurtPopState': ('kurtPop', 'State'), 'quantileBFloat16WeightedState': ('quantileBFloat16Weighted', 'State'), 'quantilesBFloat16WeightedState': ('quantilesBFloat16Weighted', 'State'), 'quantilesTimingState': ('quantilesTiming', 'State'), 'windowFunnelState': ('windowFunnel', 'State'), 'quantilesExactHighState': ('quantilesExactHigh', 'State'), 'first_valueState': ('first_value', 'State'), 'quantileState': ('quantile', 'State'), 'anyLastState': ('anyLast', 'State'), 'stddevPopState': ('stddevPop', 'State'), 'uniqState': ('uniq', 'State'), 'quantilesTimingWeightedState': ('quantilesTimingWeighted', 'State'), 'anyHeavyState': ('anyHeavy', 'State'), 'cramersVState': ('cramersV', 'State'), 'quantileGKState': ('quantileGK', 'State'), 'topKState': ('topK', 'State'), 'groupArrayInsertAtState': ('groupArrayInsertAt', 'State'), 'quantilesTDigestState': ('quantilesTDigest', 'State'), 'groupBitmapState': ('groupBitmap', 'State'), 'sumMapState': ('sumMap', 'State'), 'histogramState': ('histogram', 'State'), 'quantilesTDigestWeightedState': ('quantilesTDigestWeighted', 'State'), 'uniqUpToState': ('uniqUpTo', 'State'), 'groupArraySampleState': ('groupArraySample', 'State'), 'quantilesBFloat16State': ('quantilesBFloat16', 'State'), 'argMaxState': ('argMax', 'State'), 'argMinState': ('argMin', 'State'), 'quantilesGKState': ('quantilesGK', 'State'), 'uniqThetaState': ('uniqTheta', 'State'), 'kolmogorovSmirnovTestState': ('kolmogorovSmirnovTest', 'State'), 'deltaSumState': ('deltaSum', 'State'), 'retentionState': ('retention', 'State'), 'exponentialTimeDecayedAvgState': ('exponentialTimeDecayedAvg', 'State'), 'covarSampState': ('covarSamp', 'State'), 'covarPopState': ('covarPop', 'State'), 'countState': ('count', 'State'), 'last_valueState': ('last_value', 'State'), 'contingencyState': ('contingency', 'State'), 'quantileTDigestState': ('quantileTDigest', 'State'), 'groupArrayMovingSumState': ('groupArrayMovingSum', 'State'), 'skewPopState': ('skewPop', 'State'), 'uniqCombinedState': ('uniqCombined', 'State'), 'groupBitmapOrState': ('groupBitmapOr', 'State'), 'maxIntersectionsPositionState': ('maxIntersectionsPosition', 'State'), 'quantilesInterpolatedWeightedState': ('quantilesInterpolatedWeighted', 'State'), 'exponentialMovingAverageState': ('exponentialMovingAverage', 'State'), 'welchTTestState': ('welchTTest', 'State'), 'quantileTimingState': ('quantileTiming', 'State'), 'entropyState': ('entropy', 'State'), 'quantileExactHighState': ('quantileExactHigh', 'State'), 'anyState': ('any', 'State'), 'boundingRatioState': ('boundingRatio', 'State'), 'groupArrayLastState': ('groupArrayLast', 'State'), 'varSampState': ('varSamp', 'State'), 'sumState': ('sum', 'State'), 'medianState': ('median', 'State'), 'sumKahanState': ('sumKahan', 'State'), 'rankCorrState': ('rankCorr', 'State'), 'skewSampState': ('skewSamp', 'State'), 'cramersVBiasCorrectedState': ('cramersVBiasCorrected', 'State'), 'groupBitAndState': ('groupBitAnd', 'State'), 'largestTriangleThreeBucketsState': ('largestTriangleThreeBuckets', 'State'), 'quantileBFloat16State': ('quantileBFloat16', 'State'), 'stochasticLinearRegressionState': ('stochasticLinearRegression', 'State'), 'quantileTimingWeightedState': ('quantileTimingWeighted', 'State'), 'avgWeightedState': ('avgWeighted', 'State'), 'minMapState': ('minMap', 'State'), 'groupArrayMovingAvgState': ('groupArrayMovingAvg', 'State'), 'maxIntersectionsState': ('maxIntersections', 'State'), 'quantilesState': ('quantiles', 'State'), 'intervalLengthSumState': ('intervalLengthSum', 'State'), 'groupBitXorState': ('groupBitXor', 'State'), 'sumCountState': ('sumCount', 'State'), 'stochasticLogisticRegressionState': ('stochasticLogisticRegression', 'State'), 'quantilesDeterministicState': ('quantilesDeterministic', 'State'), 'mannWhitneyUTestState': ('mannWhitneyUTest', 'State'), 'quantilesExactState': ('quantilesExact', 'State'), 'sparkBarState': ('sparkBar', 'State'), 'uniqExactState': ('uniqExact', 'State'), 'uniqHLL12State': ('uniqHLL12', 'State'), 'quantileDeterministicState': ('quantileDeterministic', 'State'), 'quantileExactWeightedState': ('quantileExactWeighted', 'State'), 'meanZTestState': ('meanZTest', 'State'), 'groupUniqArrayState': ('groupUniqArray', 'State'), 'quantilesExactLowState': ('quantilesExactLow', 'State'), 'avgState': ('avg', 'State'), 'quantileInterpolatedWeightedState': ('quantileInterpolatedWeighted', 'State'), 'deltaSumTimestampState': ('deltaSumTimestamp', 'State'), 'uniqCombined64State': ('uniqCombined64', 'State'), 'groupBitmapAndState': ('groupBitmapAnd', 'State'), 'groupBitOrMerge': ('groupBitOr', 'Merge'), 'quantileTDigestWeightedMerge': ('quantileTDigestWeighted', 'Merge'), 'sequenceNextNodeMerge': ('sequenceNextNode', 'Merge'), 'studentTTestMerge': ('studentTTest', 'Merge'), 'quantileExactLowMerge': ('quantileExactLow', 'Merge'), 'categoricalInformationValueMerge': ('categoricalInformationValue', 'Merge'), 'sequenceMatchMerge': ('sequenceMatch', 'Merge'), 'maxMerge': ('max', 'Merge'), 'maxMapMerge': ('maxMap', 'Merge'), 'groupArrayMerge': ('groupArray', 'Merge'), 'sumWithOverflowMerge': ('sumWithOverflow', 'Merge'), 'kurtSampMerge': ('kurtSamp', 'Merge'), 'groupBitmapXorMerge': ('groupBitmapXor', 'Merge'), 'minMerge': ('min', 'Merge'), 'sequenceCountMerge': ('sequenceCount', 'Merge'), 'theilsUMerge': ('theilsU', 'Merge'), 'corrMerge': ('corr', 'Merge'), 'stddevSampMerge': ('stddevSamp', 'Merge'), 'topKWeightedMerge': ('topKWeighted', 'Merge'), 'quantilesExactWeightedMerge': ('quantilesExactWeighted', 'Merge'), 'quantileExactMerge': ('quantileExact', 'Merge'), 'simpleLinearRegressionMerge': ('simpleLinearRegression', 'Merge'), 'varPopMerge': ('varPop', 'Merge'), 'kurtPopMerge': ('kurtPop', 'Merge'), 'quantileBFloat16WeightedMerge': ('quantileBFloat16Weighted', 'Merge'), 'quantilesBFloat16WeightedMerge': ('quantilesBFloat16Weighted', 'Merge'), 'quantilesTimingMerge': ('quantilesTiming', 'Merge'), 'windowFunnelMerge': ('windowFunnel', 'Merge'), 'quantilesExactHighMerge': ('quantilesExactHigh', 'Merge'), 'first_valueMerge': ('first_value', 'Merge'), 'quantileMerge': ('quantile', 'Merge'), 'anyLastMerge': ('anyLast', 'Merge'), 'stddevPopMerge': ('stddevPop', 'Merge'), 'uniqMerge': ('uniq', 'Merge'), 'quantilesTimingWeightedMerge': ('quantilesTimingWeighted', 'Merge'), 'anyHeavyMerge': ('anyHeavy', 'Merge'), 'cramersVMerge': ('cramersV', 'Merge'), 'quantileGKMerge': ('quantileGK', 'Merge'), 'topKMerge': ('topK', 'Merge'), 'groupArrayInsertAtMerge': ('groupArrayInsertAt', 'Merge'), 'quantilesTDigestMerge': ('quantilesTDigest', 'Merge'), 'groupBitmapMerge': ('groupBitmap', 'Merge'), 'sumMapMerge': ('sumMap', 'Merge'), 'histogramMerge': ('histogram', 'Merge'), 'quantilesTDigestWeightedMerge': ('quantilesTDigestWeighted', 'Merge'), 'uniqUpToMerge': ('uniqUpTo', 'Merge'), 'groupArraySampleMerge': ('groupArraySample', 'Merge'), 'quantilesBFloat16Merge': ('quantilesBFloat16', 'Merge'), 'argMaxMerge': ('argMax', 'Merge'), 'argMinMerge': ('argMin', 'Merge'), 'quantilesGKMerge': ('quantilesGK', 'Merge'), 'uniqThetaMerge': ('uniqTheta', 'Merge'), 'kolmogorovSmirnovTestMerge': ('kolmogorovSmirnovTest', 'Merge'), 'deltaSumMerge': ('deltaSum', 'Merge'), 'retentionMerge': ('retention', 'Merge'), 'exponentialTimeDecayedAvgMerge': ('exponentialTimeDecayedAvg', 'Merge'), 'covarSampMerge': ('covarSamp', 'Merge'), 'covarPopMerge': ('covarPop', 'Merge'), 'countMerge': ('count', 'Merge'), 'last_valueMerge': ('last_value', 'Merge'), 'contingencyMerge': ('contingency', 'Merge'), 'quantileTDigestMerge': ('quantileTDigest', 'Merge'), 'groupArrayMovingSumMerge': ('groupArrayMovingSum', 'Merge'), 'skewPopMerge': ('skewPop', 'Merge'), 'uniqCombinedMerge': ('uniqCombined', 'Merge'), 'groupBitmapOrMerge': ('groupBitmapOr', 'Merge'), 'maxIntersectionsPositionMerge': ('maxIntersectionsPosition', 'Merge'), 'quantilesInterpolatedWeightedMerge': ('quantilesInterpolatedWeighted', 'Merge'), 'exponentialMovingAverageMerge': ('exponentialMovingAverage', 'Merge'), 'welchTTestMerge': ('welchTTest', 'Merge'), 'quantileTimingMerge': ('quantileTiming', 'Merge'), 'entropyMerge': ('entropy', 'Merge'), 'quantileExactHighMerge': ('quantileExactHigh', 'Merge'), 'anyMerge': ('any', 'Merge'), 'boundingRatioMerge': ('boundingRatio', 'Merge'), 'groupArrayLastMerge': ('groupArrayLast', 'Merge'), 'varSampMerge': ('varSamp', 'Merge'), 'sumMerge': ('sum', 'Merge'), 'medianMerge': ('median', 'Merge'), 'sumKahanMerge': ('sumKahan', 'Merge'), 'rankCorrMerge': ('rankCorr', 'Merge'), 'skewSampMerge': ('skewSamp', 'Merge'), 'cramersVBiasCorrectedMerge': ('cramersVBiasCorrected', 'Merge'), 'groupBitAndMerge': ('groupBitAnd', 'Merge'), 'largestTriangleThreeBucketsMerge': ('largestTriangleThreeBuckets', 'Merge'), 'quantileBFloat16Merge': ('quantileBFloat16', 'Merge'), 'stochasticLinearRegressionMerge': ('stochasticLinearRegression', 'Merge'), 'quantileTimingWeightedMerge': ('quantileTimingWeighted', 'Merge'), 'avgWeightedMerge': ('avgWeighted', 'Merge'), 'minMapMerge': ('minMap', 'Merge'), 'groupArrayMovingAvgMerge': ('groupArrayMovingAvg', 'Merge'), 'maxIntersectionsMerge': ('maxIntersections', 'Merge'), 'quantilesMerge': ('quantiles', 'Merge'), 'intervalLengthSumMerge': ('intervalLengthSum', 'Merge'), 'groupBitXorMerge': ('groupBitXor', 'Merge'), 'sumCountMerge': ('sumCount', 'Merge'), 'stochasticLogisticRegressionMerge': ('stochasticLogisticRegression', 'Merge'), 'quantilesDeterministicMerge': ('quantilesDeterministic', 'Merge'), 'mannWhitneyUTestMerge': ('mannWhitneyUTest', 'Merge'), 'quantilesExactMerge': ('quantilesExact', 'Merge'), 'sparkBarMerge': ('sparkBar', 'Merge'), 'uniqExactMerge': ('uniqExact', 'Merge'), 'uniqHLL12Merge': ('uniqHLL12', 'Merge'), 'quantileDeterministicMerge': ('quantileDeterministic', 'Merge'), 'quantileExactWeightedMerge': ('quantileExactWeighted', 'Merge'), 'meanZTestMerge': ('meanZTest', 'Merge'), 'groupUniqArrayMerge': ('groupUniqArray', 'Merge'), 'quantilesExactLowMerge': ('quantilesExactLow', 'Merge'), 'avgMerge': ('avg', 'Merge'), 'quantileInterpolatedWeightedMerge': ('quantileInterpolatedWeighted', 'Merge'), 'deltaSumTimestampMerge': ('deltaSumTimestamp', 'Merge'), 'uniqCombined64Merge': ('uniqCombined64', 'Merge'), 'groupBitmapAndMerge': ('groupBitmapAnd', 'Merge'), 'groupBitOrMergeState': ('groupBitOr', 'MergeState'), 'quantileTDigestWeightedMergeState': ('quantileTDigestWeighted', 'MergeState'), 'sequenceNextNodeMergeState': ('sequenceNextNode', 'MergeState'), 'studentTTestMergeState': ('studentTTest', 'MergeState'), 'quantileExactLowMergeState': ('quantileExactLow', 'MergeState'), 'categoricalInformationValueMergeState': ('categoricalInformationValue', 'MergeState'), 'sequenceMatchMergeState': ('sequenceMatch', 'MergeState'), 'maxMergeState': ('max', 'MergeState'), 'maxMapMergeState': ('maxMap', 'MergeState'), 'groupArrayMergeState': ('groupArray', 'MergeState'), 'sumWithOverflowMergeState': ('sumWithOverflow', 'MergeState'), 'kurtSampMergeState': ('kurtSamp', 'MergeState'), 'groupBitmapXorMergeState': ('groupBitmapXor', 'MergeState'), 'minMergeState': ('min', 'MergeState'), 'sequenceCountMergeState': ('sequenceCount', 'MergeState'), 'theilsUMergeState': ('theilsU', 'MergeState'), 'corrMergeState': ('corr', 'MergeState'), 'stddevSampMergeState': ('stddevSamp', 'MergeState'), 'topKWeightedMergeState': ('topKWeighted', 'MergeState'), 'quantilesExactWeightedMergeState': ('quantilesExactWeighted', 'MergeState'), 'quantileExactMergeState': ('quantileExact', 'MergeState'), 'simpleLinearRegressionMergeState': ('simpleLinearRegression', 'MergeState'), 'varPopMergeState': ('varPop', 'MergeState'), 'kurtPopMergeState': ('kurtPop', 'MergeState'), 'quantileBFloat16WeightedMergeState': ('quantileBFloat16Weighted', 'MergeState'), 'quantilesBFloat16WeightedMergeState': ('quantilesBFloat16Weighted', 'MergeState'), 'quantilesTimingMergeState': ('quantilesTiming', 'MergeState'), 'windowFunnelMergeState': ('windowFunnel', 'MergeState'), 'quantilesExactHighMergeState': ('quantilesExactHigh', 'MergeState'), 'first_valueMergeState': ('first_value', 'MergeState'), 'quantileMergeState': ('quantile', 'MergeState'), 'anyLastMergeState': ('anyLast', 'MergeState'), 'stddevPopMergeState': ('stddevPop', 'MergeState'), 'uniqMergeState': ('uniq', 'MergeState'), 'quantilesTimingWeightedMergeState': ('quantilesTimingWeighted', 'MergeState'), 'anyHeavyMergeState': ('anyHeavy', 'MergeState'), 'cramersVMergeState': ('cramersV', 'MergeState'), 'quantileGKMergeState': ('quantileGK', 'MergeState'), 'topKMergeState': ('topK', 'MergeState'), 'groupArrayInsertAtMergeState': ('groupArrayInsertAt', 'MergeState'), 'quantilesTDigestMergeState': ('quantilesTDigest', 'MergeState'), 'groupBitmapMergeState': ('groupBitmap', 'MergeState'), 'sumMapMergeState': ('sumMap', 'MergeState'), 'histogramMergeState': ('histogram', 'MergeState'), 'quantilesTDigestWeightedMergeState': ('quantilesTDigestWeighted', 'MergeState'), 'uniqUpToMergeState': ('uniqUpTo', 'MergeState'), 'groupArraySampleMergeState': ('groupArraySample', 'MergeState'), 'quantilesBFloat16MergeState': ('quantilesBFloat16', 'MergeState'), 'argMaxMergeState': ('argMax', 'MergeState'), 'argMinMergeState': ('argMin', 'MergeState'), 'quantilesGKMergeState': ('quantilesGK', 'MergeState'), 'uniqThetaMergeState': ('uniqTheta', 'MergeState'), 'kolmogorovSmirnovTestMergeState': ('kolmogorovSmirnovTest', 'MergeState'), 'deltaSumMergeState': ('deltaSum', 'MergeState'), 'retentionMergeState': ('retention', 'MergeState'), 'exponentialTimeDecayedAvgMergeState': ('exponentialTimeDecayedAvg', 'MergeState'), 'covarSampMergeState': ('covarSamp', 'MergeState'), 'covarPopMergeState': ('covarPop', 'MergeState'), 'countMergeState': ('count', 'MergeState'), 'last_valueMergeState': ('last_value', 'MergeState'), 'contingencyMergeState': ('contingency', 'MergeState'), 'quantileTDigestMergeState': ('quantileTDigest', 'MergeState'), 'groupArrayMovingSumMergeState': ('groupArrayMovingSum', 'MergeState'), 'skewPopMergeState': ('skewPop', 'MergeState'), 'uniqCombinedMergeState': ('uniqCombined', 'MergeState'), 'groupBitmapOrMergeState': ('groupBitmapOr', 'MergeState'), 'maxIntersectionsPositionMergeState': ('maxIntersectionsPosition', 'MergeState'), 'quantilesInterpolatedWeightedMergeState': ('quantilesInterpolatedWeighted', 'MergeState'), 'exponentialMovingAverageMergeState': ('exponentialMovingAverage', 'MergeState'), 'welchTTestMergeState': ('welchTTest', 'MergeState'), 'quantileTimingMergeState': ('quantileTiming', 'MergeState'), 'entropyMergeState': ('entropy', 'MergeState'), 'quantileExactHighMergeState': ('quantileExactHigh', 'MergeState'), 'anyMergeState': ('any', 'MergeState'), 'boundingRatioMergeState': ('boundingRatio', 'MergeState'), 'groupArrayLastMergeState': ('groupArrayLast', 'MergeState'), 'varSampMergeState': ('varSamp', 'MergeState'), 'sumMergeState': ('sum', 'MergeState'), 'medianMergeState': ('median', 'MergeState'), 'sumKahanMergeState': ('sumKahan', 'MergeState'), 'rankCorrMergeState': ('rankCorr', 'MergeState'), 'skewSampMergeState': ('skewSamp', 'MergeState'), 'cramersVBiasCorrectedMergeState': ('cramersVBiasCorrected', 'MergeState'), 'groupBitAndMergeState': ('groupBitAnd', 'MergeState'), 'largestTriangleThreeBucketsMergeState': ('largestTriangleThreeBuckets', 'MergeState'), 'quantileBFloat16MergeState': ('quantileBFloat16', 'MergeState'), 'stochasticLinearRegressionMergeState': ('stochasticLinearRegression', 'MergeState'), 'quantileTimingWeightedMergeState': ('quantileTimingWeighted', 'MergeState'), 'avgWeightedMergeState': ('avgWeighted', 'MergeState'), 'minMapMergeState': ('minMap', 'MergeState'), 'groupArrayMovingAvgMergeState': ('groupArrayMovingAvg', 'MergeState'), 'maxIntersectionsMergeState': ('maxIntersections', 'MergeState'), 'quantilesMergeState': ('quantiles', 'MergeState'), 'intervalLengthSumMergeState': ('intervalLengthSum', 'MergeState'), 'groupBitXorMergeState': ('groupBitXor', 'MergeState'), 'sumCountMergeState': ('sumCount', 'MergeState'), 'stochasticLogisticRegressionMergeState': ('stochasticLogisticRegression', 'MergeState'), 'quantilesDeterministicMergeState': ('quantilesDeterministic', 'MergeState'), 'mannWhitneyUTestMergeState': ('mannWhitneyUTest', 'MergeState'), 'quantilesExactMergeState': ('quantilesExact', 'MergeState'), 'sparkBarMergeState': ('sparkBar', 'MergeState'), 'uniqExactMergeState': ('uniqExact', 'MergeState'), 'uniqHLL12MergeState': ('uniqHLL12', 'MergeState'), 'quantileDeterministicMergeState': ('quantileDeterministic', 'MergeState'), 'quantileExactWeightedMergeState': ('quantileExactWeighted', 'MergeState'), 'meanZTestMergeState': ('meanZTest', 'MergeState'), 'groupUniqArrayMergeState': ('groupUniqArray', 'MergeState'), 'quantilesExactLowMergeState': ('quantilesExactLow', 'MergeState'), 'avgMergeState': ('avg', 'MergeState'), 'quantileInterpolatedWeightedMergeState': ('quantileInterpolatedWeighted', 'MergeState'), 'deltaSumTimestampMergeState': ('deltaSumTimestamp', 'MergeState'), 'uniqCombined64MergeState': ('uniqCombined64', 'MergeState'), 'groupBitmapAndMergeState': ('groupBitmapAnd', 'MergeState'), 'groupBitOrForEach': ('groupBitOr', 'ForEach'), 'quantileTDigestWeightedForEach': ('quantileTDigestWeighted', 'ForEach'), 'sequenceNextNodeForEach': ('sequenceNextNode', 'ForEach'), 'studentTTestForEach': ('studentTTest', 'ForEach'), 'quantileExactLowForEach': ('quantileExactLow', 'ForEach'), 'categoricalInformationValueForEach': ('categoricalInformationValue', 'ForEach'), 'sequenceMatchForEach': ('sequenceMatch', 'ForEach'), 'maxForEach': ('max', 'ForEach'), 'maxMapForEach': ('maxMap', 'ForEach'), 'groupArrayForEach': ('groupArray', 'ForEach'), 'sumWithOverflowForEach': ('sumWithOverflow', 'ForEach'), 'kurtSampForEach': ('kurtSamp', 'ForEach'), 'groupBitmapXorForEach': ('groupBitmapXor', 'ForEach'), 'minForEach': ('min', 'ForEach'), 'sequenceCountForEach': ('sequenceCount', 'ForEach'), 'theilsUForEach': ('theilsU', 'ForEach'), 'corrForEach': ('corr', 'ForEach'), 'stddevSampForEach': ('stddevSamp', 'ForEach'), 'topKWeightedForEach': ('topKWeighted', 'ForEach'), 'quantilesExactWeightedForEach': ('quantilesExactWeighted', 'ForEach'), 'quantileExactForEach': ('quantileExact', 'ForEach'), 'simpleLinearRegressionForEach': ('simpleLinearRegression', 'ForEach'), 'varPopForEach': ('varPop', 'ForEach'), 'kurtPopForEach': ('kurtPop', 'ForEach'), 'quantileBFloat16WeightedForEach': ('quantileBFloat16Weighted', 'ForEach'), 'quantilesBFloat16WeightedForEach': ('quantilesBFloat16Weighted', 'ForEach'), 'quantilesTimingForEach': ('quantilesTiming', 'ForEach'), 'windowFunnelForEach': ('windowFunnel', 'ForEach'), 'quantilesExactHighForEach': ('quantilesExactHigh', 'ForEach'), 'first_valueForEach': ('first_value', 'ForEach'), 'quantileForEach': ('quantile', 'ForEach'), 'anyLastForEach': ('anyLast', 'ForEach'), 'stddevPopForEach': ('stddevPop', 'ForEach'), 'uniqForEach': ('uniq', 'ForEach'), 'quantilesTimingWeightedForEach': ('quantilesTimingWeighted', 'ForEach'), 'anyHeavyForEach': ('anyHeavy', 'ForEach'), 'cramersVForEach': ('cramersV', 'ForEach'), 'quantileGKForEach': ('quantileGK', 'ForEach'), 'topKForEach': ('topK', 'ForEach'), 'groupArrayInsertAtForEach': ('groupArrayInsertAt', 'ForEach'), 'quantilesTDigestForEach': ('quantilesTDigest', 'ForEach'), 'groupBitmapForEach': ('groupBitmap', 'ForEach'), 'sumMapForEach': ('sumMap', 'ForEach'), 'histogramForEach': ('histogram', 'ForEach'), 'quantilesTDigestWeightedForEach': ('quantilesTDigestWeighted', 'ForEach'), 'uniqUpToForEach': ('uniqUpTo', 'ForEach'), 'groupArraySampleForEach': ('groupArraySample', 'ForEach'), 'quantilesBFloat16ForEach': ('quantilesBFloat16', 'ForEach'), 'argMaxForEach': ('argMax', 'ForEach'), 'argMinForEach': ('argMin', 'ForEach'), 'quantilesGKForEach': ('quantilesGK', 'ForEach'), 'uniqThetaForEach': ('uniqTheta', 'ForEach'), 'kolmogorovSmirnovTestForEach': ('kolmogorovSmirnovTest', 'ForEach'), 'deltaSumForEach': ('deltaSum', 'ForEach'), 'retentionForEach': ('retention', 'ForEach'), 'exponentialTimeDecayedAvgForEach': ('exponentialTimeDecayedAvg', 'ForEach'), 'covarSampForEach': ('covarSamp', 'ForEach'), 'covarPopForEach': ('covarPop', 'ForEach'), 'countForEach': ('count', 'ForEach'), 'last_valueForEach': ('last_value', 'ForEach'), 'contingencyForEach': ('contingency', 'ForEach'), 'quantileTDigestForEach': ('quantileTDigest', 'ForEach'), 'groupArrayMovingSumForEach': ('groupArrayMovingSum', 'ForEach'), 'skewPopForEach': ('skewPop', 'ForEach'), 'uniqCombinedForEach': ('uniqCombined', 'ForEach'), 'groupBitmapOrForEach': ('groupBitmapOr', 'ForEach'), 'maxIntersectionsPositionForEach': ('maxIntersectionsPosition', 'ForEach'), 'quantilesInterpolatedWeightedForEach': ('quantilesInterpolatedWeighted', 'ForEach'), 'exponentialMovingAverageForEach': ('exponentialMovingAverage', 'ForEach'), 'welchTTestForEach': ('welchTTest', 'ForEach'), 'quantileTimingForEach': ('quantileTiming', 'ForEach'), 'entropyForEach': ('entropy', 'ForEach'), 'quantileExactHighForEach': ('quantileExactHigh', 'ForEach'), 'anyForEach': ('any', 'ForEach'), 'boundingRatioForEach': ('boundingRatio', 'ForEach'), 'groupArrayLastForEach': ('groupArrayLast', 'ForEach'), 'varSampForEach': ('varSamp', 'ForEach'), 'sumForEach': ('sum', 'ForEach'), 'medianForEach': ('median', 'ForEach'), 'sumKahanForEach': ('sumKahan', 'ForEach'), 'rankCorrForEach': ('rankCorr', 'ForEach'), 'skewSampForEach': ('skewSamp', 'ForEach'), 'cramersVBiasCorrectedForEach': ('cramersVBiasCorrected', 'ForEach'), 'groupBitAndForEach': ('groupBitAnd', 'ForEach'), 'largestTriangleThreeBucketsForEach': ('largestTriangleThreeBuckets', 'ForEach'), 'quantileBFloat16ForEach': ('quantileBFloat16', 'ForEach'), 'stochasticLinearRegressionForEach': ('stochasticLinearRegression', 'ForEach'), 'quantileTimingWeightedForEach': ('quantileTimingWeighted', 'ForEach'), 'avgWeightedForEach': ('avgWeighted', 'ForEach'), 'minMapForEach': ('minMap', 'ForEach'), 'groupArrayMovingAvgForEach': ('groupArrayMovingAvg', 'ForEach'), 'maxIntersectionsForEach': ('maxIntersections', 'ForEach'), 'quantilesForEach': ('quantiles', 'ForEach'), 'intervalLengthSumForEach': ('intervalLengthSum', 'ForEach'), 'groupBitXorForEach': ('groupBitXor', 'ForEach'), 'sumCountForEach': ('sumCount', 'ForEach'), 'stochasticLogisticRegressionForEach': ('stochasticLogisticRegression', 'ForEach'), 'quantilesDeterministicForEach': ('quantilesDeterministic', 'ForEach'), 'mannWhitneyUTestForEach': ('mannWhitneyUTest', 'ForEach'), 'quantilesExactForEach': ('quantilesExact', 'ForEach'), 'sparkBarForEach': ('sparkBar', 'ForEach'), 'uniqExactForEach': ('uniqExact', 'ForEach'), 'uniqHLL12ForEach': ('uniqHLL12', 'ForEach'), 'quantileDeterministicForEach': ('quantileDeterministic', 'ForEach'), 'quantileExactWeightedForEach': ('quantileExactWeighted', 'ForEach'), 'meanZTestForEach': ('meanZTest', 'ForEach'), 'groupUniqArrayForEach': ('groupUniqArray', 'ForEach'), 'quantilesExactLowForEach': ('quantilesExactLow', 'ForEach'), 'avgForEach': ('avg', 'ForEach'), 'quantileInterpolatedWeightedForEach': ('quantileInterpolatedWeighted', 'ForEach'), 'deltaSumTimestampForEach': ('deltaSumTimestamp', 'ForEach'), 'uniqCombined64ForEach': ('uniqCombined64', 'ForEach'), 'groupBitmapAndForEach': ('groupBitmapAnd', 'ForEach'), 'groupBitOrDistinct': ('groupBitOr', 'Distinct'), 'quantileTDigestWeightedDistinct': ('quantileTDigestWeighted', 'Distinct'), 'sequenceNextNodeDistinct': ('sequenceNextNode', 'Distinct'), 'studentTTestDistinct': ('studentTTest', 'Distinct'), 'quantileExactLowDistinct': ('quantileExactLow', 'Distinct'), 'categoricalInformationValueDistinct': ('categoricalInformationValue', 'Distinct'), 'sequenceMatchDistinct': ('sequenceMatch', 'Distinct'), 'maxDistinct': ('max', 'Distinct'), 'maxMapDistinct': ('maxMap', 'Distinct'), 'groupArrayDistinct': ('groupArray', 'Distinct'), 'sumWithOverflowDistinct': ('sumWithOverflow', 'Distinct'), 'kurtSampDistinct': ('kurtSamp', 'Distinct'), 'groupBitmapXorDistinct': ('groupBitmapXor', 'Distinct'), 'minDistinct': ('min', 'Distinct'), 'sequenceCountDistinct': ('sequenceCount', 'Distinct'), 'theilsUDistinct': ('theilsU', 'Distinct'), 'corrDistinct': ('corr', 'Distinct'), 'stddevSampDistinct': ('stddevSamp', 'Distinct'), 'topKWeightedDistinct': ('topKWeighted', 'Distinct'), 'quantilesExactWeightedDistinct': ('quantilesExactWeighted', 'Distinct'), 'quantileExactDistinct': ('quantileExact', 'Distinct'), 'simpleLinearRegressionDistinct': ('simpleLinearRegression', 'Distinct'), 'varPopDistinct': ('varPop', 'Distinct'), 'kurtPopDistinct': ('kurtPop', 'Distinct'), 'quantileBFloat16WeightedDistinct': ('quantileBFloat16Weighted', 'Distinct'), 'quantilesBFloat16WeightedDistinct': ('quantilesBFloat16Weighted', 'Distinct'), 'quantilesTimingDistinct': ('quantilesTiming', 'Distinct'), 'windowFunnelDistinct': ('windowFunnel', 'Distinct'), 'quantilesExactHighDistinct': ('quantilesExactHigh', 'Distinct'), 'first_valueDistinct': ('first_value', 'Distinct'), 'quantileDistinct': ('quantile', 'Distinct'), 'anyLastDistinct': ('anyLast', 'Distinct'), 'stddevPopDistinct': ('stddevPop', 'Distinct'), 'uniqDistinct': ('uniq', 'Distinct'), 'quantilesTimingWeightedDistinct': ('quantilesTimingWeighted', 'Distinct'), 'anyHeavyDistinct': ('anyHeavy', 'Distinct'), 'cramersVDistinct': ('cramersV', 'Distinct'), 'quantileGKDistinct': ('quantileGK', 'Distinct'), 'topKDistinct': ('topK', 'Distinct'), 'groupArrayInsertAtDistinct': ('groupArrayInsertAt', 'Distinct'), 'quantilesTDigestDistinct': ('quantilesTDigest', 'Distinct'), 'groupBitmapDistinct': ('groupBitmap', 'Distinct'), 'sumMapDistinct': ('sumMap', 'Distinct'), 'histogramDistinct': ('histogram', 'Distinct'), 'quantilesTDigestWeightedDistinct': ('quantilesTDigestWeighted', 'Distinct'), 'uniqUpToDistinct': ('uniqUpTo', 'Distinct'), 'groupArraySampleDistinct': ('groupArraySample', 'Distinct'), 'quantilesBFloat16Distinct': ('quantilesBFloat16', 'Distinct'), 'argMaxDistinct': ('argMax', 'Distinct'), 'argMinDistinct': ('argMin', 'Distinct'), 'quantilesGKDistinct': ('quantilesGK', 'Distinct'), 'uniqThetaDistinct': ('uniqTheta', 'Distinct'), 'kolmogorovSmirnovTestDistinct': ('kolmogorovSmirnovTest', 'Distinct'), 'deltaSumDistinct': ('deltaSum', 'Distinct'), 'retentionDistinct': ('retention', 'Distinct'), 'exponentialTimeDecayedAvgDistinct': ('exponentialTimeDecayedAvg', 'Distinct'), 'covarSampDistinct': ('covarSamp', 'Distinct'), 'covarPopDistinct': ('covarPop', 'Distinct'), 'countDistinct': ('count', 'Distinct'), 'last_valueDistinct': ('last_value', 'Distinct'), 'contingencyDistinct': ('contingency', 'Distinct'), 'quantileTDigestDistinct': ('quantileTDigest', 'Distinct'), 'groupArrayMovingSumDistinct': ('groupArrayMovingSum', 'Distinct'), 'skewPopDistinct': ('skewPop', 'Distinct'), 'uniqCombinedDistinct': ('uniqCombined', 'Distinct'), 'groupBitmapOrDistinct': ('groupBitmapOr', 'Distinct'), 'maxIntersectionsPositionDistinct': ('maxIntersectionsPosition', 'Distinct'), 'quantilesInterpolatedWeightedDistinct': ('quantilesInterpolatedWeighted', 'Distinct'), 'exponentialMovingAverageDistinct': ('exponentialMovingAverage', 'Distinct'), 'welchTTestDistinct': ('welchTTest', 'Distinct'), 'quantileTimingDistinct': ('quantileTiming', 'Distinct'), 'entropyDistinct': ('entropy', 'Distinct'), 'quantileExactHighDistinct': ('quantileExactHigh', 'Distinct'), 'anyDistinct': ('any', 'Distinct'), 'boundingRatioDistinct': ('boundingRatio', 'Distinct'), 'groupArrayLastDistinct': ('groupArrayLast', 'Distinct'), 'varSampDistinct': ('varSamp', 'Distinct'), 'sumDistinct': ('sum', 'Distinct'), 'medianDistinct': ('median', 'Distinct'), 'sumKahanDistinct': ('sumKahan', 'Distinct'), 'rankCorrDistinct': ('rankCorr', 'Distinct'), 'skewSampDistinct': ('skewSamp', 'Distinct'), 'cramersVBiasCorrectedDistinct': ('cramersVBiasCorrected', 'Distinct'), 'groupBitAndDistinct': ('groupBitAnd', 'Distinct'), 'largestTriangleThreeBucketsDistinct': ('largestTriangleThreeBuckets', 'Distinct'), 'quantileBFloat16Distinct': ('quantileBFloat16', 'Distinct'), 'stochasticLinearRegressionDistinct': ('stochasticLinearRegression', 'Distinct'), 'quantileTimingWeightedDistinct': ('quantileTimingWeighted', 'Distinct'), 'avgWeightedDistinct': ('avgWeighted', 'Distinct'), 'minMapDistinct': ('minMap', 'Distinct'), 'groupArrayMovingAvgDistinct': ('groupArrayMovingAvg', 'Distinct'), 'maxIntersectionsDistinct': ('maxIntersections', 'Distinct'), 'quantilesDistinct': ('quantiles', 'Distinct'), 'intervalLengthSumDistinct': ('intervalLengthSum', 'Distinct'), 'groupBitXorDistinct': ('groupBitXor', 'Distinct'), 'sumCountDistinct': ('sumCount', 'Distinct'), 'stochasticLogisticRegressionDistinct': ('stochasticLogisticRegression', 'Distinct'), 'quantilesDeterministicDistinct': ('quantilesDeterministic', 'Distinct'), 'mannWhitneyUTestDistinct': ('mannWhitneyUTest', 'Distinct'), 'quantilesExactDistinct': ('quantilesExact', 'Distinct'), 'sparkBarDistinct': ('sparkBar', 'Distinct'), 'uniqExactDistinct': ('uniqExact', 'Distinct'), 'uniqHLL12Distinct': ('uniqHLL12', 'Distinct'), 'quantileDeterministicDistinct': ('quantileDeterministic', 'Distinct'), 'quantileExactWeightedDistinct': ('quantileExactWeighted', 'Distinct'), 'meanZTestDistinct': ('meanZTest', 'Distinct'), 'groupUniqArrayDistinct': ('groupUniqArray', 'Distinct'), 'quantilesExactLowDistinct': ('quantilesExactLow', 'Distinct'), 'avgDistinct': ('avg', 'Distinct'), 'quantileInterpolatedWeightedDistinct': ('quantileInterpolatedWeighted', 'Distinct'), 'deltaSumTimestampDistinct': ('deltaSumTimestamp', 'Distinct'), 'uniqCombined64Distinct': ('uniqCombined64', 'Distinct'), 'groupBitmapAndDistinct': ('groupBitmapAnd', 'Distinct'), 'groupBitOrOrDefault': ('groupBitOr', 'OrDefault'), 'quantileTDigestWeightedOrDefault': ('quantileTDigestWeighted', 'OrDefault'), 'sequenceNextNodeOrDefault': ('sequenceNextNode', 'OrDefault'), 'studentTTestOrDefault': ('studentTTest', 'OrDefault'), 'quantileExactLowOrDefault': ('quantileExactLow', 'OrDefault'), 'categoricalInformationValueOrDefault': ('categoricalInformationValue', 'OrDefault'), 'sequenceMatchOrDefault': ('sequenceMatch', 'OrDefault'), 'maxOrDefault': ('max', 'OrDefault'), 'maxMapOrDefault': ('maxMap', 'OrDefault'), 'groupArrayOrDefault': ('groupArray', 'OrDefault'), 'sumWithOverflowOrDefault': ('sumWithOverflow', 'OrDefault'), 'kurtSampOrDefault': ('kurtSamp', 'OrDefault'), 'groupBitmapXorOrDefault': ('groupBitmapXor', 'OrDefault'), 'minOrDefault': ('min', 'OrDefault'), 'sequenceCountOrDefault': ('sequenceCount', 'OrDefault'), 'theilsUOrDefault': ('theilsU', 'OrDefault'), 'corrOrDefault': ('corr', 'OrDefault'), 'stddevSampOrDefault': ('stddevSamp', 'OrDefault'), 'topKWeightedOrDefault': ('topKWeighted', 'OrDefault'), 'quantilesExactWeightedOrDefault': ('quantilesExactWeighted', 'OrDefault'), 'quantileExactOrDefault': ('quantileExact', 'OrDefault'), 'simpleLinearRegressionOrDefault': ('simpleLinearRegression', 'OrDefault'), 'varPopOrDefault': ('varPop', 'OrDefault'), 'kurtPopOrDefault': ('kurtPop', 'OrDefault'), 'quantileBFloat16WeightedOrDefault': ('quantileBFloat16Weighted', 'OrDefault'), 'quantilesBFloat16WeightedOrDefault': ('quantilesBFloat16Weighted', 'OrDefault'), 'quantilesTimingOrDefault': ('quantilesTiming', 'OrDefault'), 'windowFunnelOrDefault': ('windowFunnel', 'OrDefault'), 'quantilesExactHighOrDefault': ('quantilesExactHigh', 'OrDefault'), 'first_valueOrDefault': ('first_value', 'OrDefault'), 'quantileOrDefault': ('quantile', 'OrDefault'), 'anyLastOrDefault': ('anyLast', 'OrDefault'), 'stddevPopOrDefault': ('stddevPop', 'OrDefault'), 'uniqOrDefault': ('uniq', 'OrDefault'), 'quantilesTimingWeightedOrDefault': ('quantilesTimingWeighted', 'OrDefault'), 'anyHeavyOrDefault': ('anyHeavy', 'OrDefault'), 'cramersVOrDefault': ('cramersV', 'OrDefault'), 'quantileGKOrDefault': ('quantileGK', 'OrDefault'), 'topKOrDefault': ('topK', 'OrDefault'), 'groupArrayInsertAtOrDefault': ('groupArrayInsertAt', 'OrDefault'), 'quantilesTDigestOrDefault': ('quantilesTDigest', 'OrDefault'), 'groupBitmapOrDefault': ('groupBitmap', 'OrDefault'), 'sumMapOrDefault': ('sumMap', 'OrDefault'), 'histogramOrDefault': ('histogram', 'OrDefault'), 'quantilesTDigestWeightedOrDefault': ('quantilesTDigestWeighted', 'OrDefault'), 'uniqUpToOrDefault': ('uniqUpTo', 'OrDefault'), 'groupArraySampleOrDefault': ('groupArraySample', 'OrDefault'), 'quantilesBFloat16OrDefault': ('quantilesBFloat16', 'OrDefault'), 'argMaxOrDefault': ('argMax', 'OrDefault'), 'argMinOrDefault': ('argMin', 'OrDefault'), 'quantilesGKOrDefault': ('quantilesGK', 'OrDefault'), 'uniqThetaOrDefault': ('uniqTheta', 'OrDefault'), 'kolmogorovSmirnovTestOrDefault': ('kolmogorovSmirnovTest', 'OrDefault'), 'deltaSumOrDefault': ('deltaSum', 'OrDefault'), 'retentionOrDefault': ('retention', 'OrDefault'), 'exponentialTimeDecayedAvgOrDefault': ('exponentialTimeDecayedAvg', 'OrDefault'), 'covarSampOrDefault': ('covarSamp', 'OrDefault'), 'covarPopOrDefault': ('covarPop', 'OrDefault'), 'countOrDefault': ('count', 'OrDefault'), 'last_valueOrDefault': ('last_value', 'OrDefault'), 'contingencyOrDefault': ('contingency', 'OrDefault'), 'quantileTDigestOrDefault': ('quantileTDigest', 'OrDefault'), 'groupArrayMovingSumOrDefault': ('groupArrayMovingSum', 'OrDefault'), 'skewPopOrDefault': ('skewPop', 'OrDefault'), 'uniqCombinedOrDefault': ('uniqCombined', 'OrDefault'), 'groupBitmapOrOrDefault': ('groupBitmapOr', 'OrDefault'), 'maxIntersectionsPositionOrDefault': ('maxIntersectionsPosition', 'OrDefault'), 'quantilesInterpolatedWeightedOrDefault': ('quantilesInterpolatedWeighted', 'OrDefault'), 'exponentialMovingAverageOrDefault': ('exponentialMovingAverage', 'OrDefault'), 'welchTTestOrDefault': ('welchTTest', 'OrDefault'), 'quantileTimingOrDefault': ('quantileTiming', 'OrDefault'), 'entropyOrDefault': ('entropy', 'OrDefault'), 'quantileExactHighOrDefault': ('quantileExactHigh', 'OrDefault'), 'anyOrDefault': ('any', 'OrDefault'), 'boundingRatioOrDefault': ('boundingRatio', 'OrDefault'), 'groupArrayLastOrDefault': ('groupArrayLast', 'OrDefault'), 'varSampOrDefault': ('varSamp', 'OrDefault'), 'sumOrDefault': ('sum', 'OrDefault'), 'medianOrDefault': ('median', 'OrDefault'), 'sumKahanOrDefault': ('sumKahan', 'OrDefault'), 'rankCorrOrDefault': ('rankCorr', 'OrDefault'), 'skewSampOrDefault': ('skewSamp', 'OrDefault'), 'cramersVBiasCorrectedOrDefault': ('cramersVBiasCorrected', 'OrDefault'), 'groupBitAndOrDefault': ('groupBitAnd', 'OrDefault'), 'largestTriangleThreeBucketsOrDefault': ('largestTriangleThreeBuckets', 'OrDefault'), 'quantileBFloat16OrDefault': ('quantileBFloat16', 'OrDefault'), 'stochasticLinearRegressionOrDefault': ('stochasticLinearRegression', 'OrDefault'), 'quantileTimingWeightedOrDefault': ('quantileTimingWeighted', 'OrDefault'), 'avgWeightedOrDefault': ('avgWeighted', 'OrDefault'), 'minMapOrDefault': ('minMap', 'OrDefault'), 'groupArrayMovingAvgOrDefault': ('groupArrayMovingAvg', 'OrDefault'), 'maxIntersectionsOrDefault': ('maxIntersections', 'OrDefault'), 'quantilesOrDefault': ('quantiles', 'OrDefault'), 'intervalLengthSumOrDefault': ('intervalLengthSum', 'OrDefault'), 'groupBitXorOrDefault': ('groupBitXor', 'OrDefault'), 'sumCountOrDefault': ('sumCount', 'OrDefault'), 'stochasticLogisticRegressionOrDefault': ('stochasticLogisticRegression', 'OrDefault'), 'quantilesDeterministicOrDefault': ('quantilesDeterministic', 'OrDefault'), 'mannWhitneyUTestOrDefault': ('mannWhitneyUTest', 'OrDefault'), 'quantilesExactOrDefault': ('quantilesExact', 'OrDefault'), 'sparkBarOrDefault': ('sparkBar', 'OrDefault'), 'uniqExactOrDefault': ('uniqExact', 'OrDefault'), 'uniqHLL12OrDefault': ('uniqHLL12', 'OrDefault'), 'quantileDeterministicOrDefault': ('quantileDeterministic', 'OrDefault'), 'quantileExactWeightedOrDefault': ('quantileExactWeighted', 'OrDefault'), 'meanZTestOrDefault': ('meanZTest', 'OrDefault'), 'groupUniqArrayOrDefault': ('groupUniqArray', 'OrDefault'), 'quantilesExactLowOrDefault': ('quantilesExactLow', 'OrDefault'), 'avgOrDefault': ('avg', 'OrDefault'), 'quantileInterpolatedWeightedOrDefault': ('quantileInterpolatedWeighted', 'OrDefault'), 'deltaSumTimestampOrDefault': ('deltaSumTimestamp', 'OrDefault'), 'uniqCombined64OrDefault': ('uniqCombined64', 'OrDefault'), 'groupBitmapAndOrDefault': ('groupBitmapAnd', 'OrDefault'), 'groupBitOrOrNull': ('groupBitOr', 'OrNull'), 'quantileTDigestWeightedOrNull': ('quantileTDigestWeighted', 'OrNull'), 'sequenceNextNodeOrNull': ('sequenceNextNode', 'OrNull'), 'studentTTestOrNull': ('studentTTest', 'OrNull'), 'quantileExactLowOrNull': ('quantileExactLow', 'OrNull'), 'categoricalInformationValueOrNull': ('categoricalInformationValue', 'OrNull'), 'sequenceMatchOrNull': ('sequenceMatch', 'OrNull'), 'maxOrNull': ('max', 'OrNull'), 'maxMapOrNull': ('maxMap', 'OrNull'), 'groupArrayOrNull': ('groupArray', 'OrNull'), 'sumWithOverflowOrNull': ('sumWithOverflow', 'OrNull'), 'kurtSampOrNull': ('kurtSamp', 'OrNull'), 'groupBitmapXorOrNull': ('groupBitmapXor', 'OrNull'), 'minOrNull': ('min', 'OrNull'), 'sequenceCountOrNull': ('sequenceCount', 'OrNull'), 'theilsUOrNull': ('theilsU', 'OrNull'), 'corrOrNull': ('corr', 'OrNull'), 'stddevSampOrNull': ('stddevSamp', 'OrNull'), 'topKWeightedOrNull': ('topKWeighted', 'OrNull'), 'quantilesExactWeightedOrNull': ('quantilesExactWeighted', 'OrNull'), 'quantileExactOrNull': ('quantileExact', 'OrNull'), 'simpleLinearRegressionOrNull': ('simpleLinearRegression', 'OrNull'), 'varPopOrNull': ('varPop', 'OrNull'), 'kurtPopOrNull': ('kurtPop', 'OrNull'), 'quantileBFloat16WeightedOrNull': ('quantileBFloat16Weighted', 'OrNull'), 'quantilesBFloat16WeightedOrNull': ('quantilesBFloat16Weighted', 'OrNull'), 'quantilesTimingOrNull': ('quantilesTiming', 'OrNull'), 'windowFunnelOrNull': ('windowFunnel', 'OrNull'), 'quantilesExactHighOrNull': ('quantilesExactHigh', 'OrNull'), 'first_valueOrNull': ('first_value', 'OrNull'), 'quantileOrNull': ('quantile', 'OrNull'), 'anyLastOrNull': ('anyLast', 'OrNull'), 'stddevPopOrNull': ('stddevPop', 'OrNull'), 'uniqOrNull': ('uniq', 'OrNull'), 'quantilesTimingWeightedOrNull': ('quantilesTimingWeighted', 'OrNull'), 'anyHeavyOrNull': ('anyHeavy', 'OrNull'), 'cramersVOrNull': ('cramersV', 'OrNull'), 'quantileGKOrNull': ('quantileGK', 'OrNull'), 'topKOrNull': ('topK', 'OrNull'), 'groupArrayInsertAtOrNull': ('groupArrayInsertAt', 'OrNull'), 'quantilesTDigestOrNull': ('quantilesTDigest', 'OrNull'), 'groupBitmapOrNull': ('groupBitmap', 'OrNull'), 'sumMapOrNull': ('sumMap', 'OrNull'), 'histogramOrNull': ('histogram', 'OrNull'), 'quantilesTDigestWeightedOrNull': ('quantilesTDigestWeighted', 'OrNull'), 'uniqUpToOrNull': ('uniqUpTo', 'OrNull'), 'groupArraySampleOrNull': ('groupArraySample', 'OrNull'), 'quantilesBFloat16OrNull': ('quantilesBFloat16', 'OrNull'), 'argMaxOrNull': ('argMax', 'OrNull'), 'argMinOrNull': ('argMin', 'OrNull'), 'quantilesGKOrNull': ('quantilesGK', 'OrNull'), 'uniqThetaOrNull': ('uniqTheta', 'OrNull'), 'kolmogorovSmirnovTestOrNull': ('kolmogorovSmirnovTest', 'OrNull'), 'deltaSumOrNull': ('deltaSum', 'OrNull'), 'retentionOrNull': ('retention', 'OrNull'), 'exponentialTimeDecayedAvgOrNull': ('exponentialTimeDecayedAvg', 'OrNull'), 'covarSampOrNull': ('covarSamp', 'OrNull'), 'covarPopOrNull': ('covarPop', 'OrNull'), 'countOrNull': ('count', 'OrNull'), 'last_valueOrNull': ('last_value', 'OrNull'), 'contingencyOrNull': ('contingency', 'OrNull'), 'quantileTDigestOrNull': ('quantileTDigest', 'OrNull'), 'groupArrayMovingSumOrNull': ('groupArrayMovingSum', 'OrNull'), 'skewPopOrNull': ('skewPop', 'OrNull'), 'uniqCombinedOrNull': ('uniqCombined', 'OrNull'), 'groupBitmapOrOrNull': ('groupBitmapOr', 'OrNull'), 'maxIntersectionsPositionOrNull': ('maxIntersectionsPosition', 'OrNull'), 'quantilesInterpolatedWeightedOrNull': ('quantilesInterpolatedWeighted', 'OrNull'), 'exponentialMovingAverageOrNull': ('exponentialMovingAverage', 'OrNull'), 'welchTTestOrNull': ('welchTTest', 'OrNull'), 'quantileTimingOrNull': ('quantileTiming', 'OrNull'), 'entropyOrNull': ('entropy', 'OrNull'), 'quantileExactHighOrNull': ('quantileExactHigh', 'OrNull'), 'anyOrNull': ('any', 'OrNull'), 'boundingRatioOrNull': ('boundingRatio', 'OrNull'), 'groupArrayLastOrNull': ('groupArrayLast', 'OrNull'), 'varSampOrNull': ('varSamp', 'OrNull'), 'sumOrNull': ('sum', 'OrNull'), 'medianOrNull': ('median', 'OrNull'), 'sumKahanOrNull': ('sumKahan', 'OrNull'), 'rankCorrOrNull': ('rankCorr', 'OrNull'), 'skewSampOrNull': ('skewSamp', 'OrNull'), 'cramersVBiasCorrectedOrNull': ('cramersVBiasCorrected', 'OrNull'), 'groupBitAndOrNull': ('groupBitAnd', 'OrNull'), 'largestTriangleThreeBucketsOrNull': ('largestTriangleThreeBuckets', 'OrNull'), 'quantileBFloat16OrNull': ('quantileBFloat16', 'OrNull'), 'stochasticLinearRegressionOrNull': ('stochasticLinearRegression', 'OrNull'), 'quantileTimingWeightedOrNull': ('quantileTimingWeighted', 'OrNull'), 'avgWeightedOrNull': ('avgWeighted', 'OrNull'), 'minMapOrNull': ('minMap', 'OrNull'), 'groupArrayMovingAvgOrNull': ('groupArrayMovingAvg', 'OrNull'), 'maxIntersectionsOrNull': ('maxIntersections', 'OrNull'), 'quantilesOrNull': ('quantiles', 'OrNull'), 'intervalLengthSumOrNull': ('intervalLengthSum', 'OrNull'), 'groupBitXorOrNull': ('groupBitXor', 'OrNull'), 'sumCountOrNull': ('sumCount', 'OrNull'), 'stochasticLogisticRegressionOrNull': ('stochasticLogisticRegression', 'OrNull'), 'quantilesDeterministicOrNull': ('quantilesDeterministic', 'OrNull'), 'mannWhitneyUTestOrNull': ('mannWhitneyUTest', 'OrNull'), 'quantilesExactOrNull': ('quantilesExact', 'OrNull'), 'sparkBarOrNull': ('sparkBar', 'OrNull'), 'uniqExactOrNull': ('uniqExact', 'OrNull'), 'uniqHLL12OrNull': ('uniqHLL12', 'OrNull'), 'quantileDeterministicOrNull': ('quantileDeterministic', 'OrNull'), 'quantileExactWeightedOrNull': ('quantileExactWeighted', 'OrNull'), 'meanZTestOrNull': ('meanZTest', 'OrNull'), 'groupUniqArrayOrNull': ('groupUniqArray', 'OrNull'), 'quantilesExactLowOrNull': ('quantilesExactLow', 'OrNull'), 'avgOrNull': ('avg', 'OrNull'), 'quantileInterpolatedWeightedOrNull': ('quantileInterpolatedWeighted', 'OrNull'), 'deltaSumTimestampOrNull': ('deltaSumTimestamp', 'OrNull'), 'uniqCombined64OrNull': ('uniqCombined64', 'OrNull'), 'groupBitmapAndOrNull': ('groupBitmapAnd', 'OrNull'), 'groupBitOrResample': ('groupBitOr', 'Resample'), 'quantileTDigestWeightedResample': ('quantileTDigestWeighted', 'Resample'), 'sequenceNextNodeResample': ('sequenceNextNode', 'Resample'), 'studentTTestResample': ('studentTTest', 'Resample'), 'quantileExactLowResample': ('quantileExactLow', 'Resample'), 'categoricalInformationValueResample': ('categoricalInformationValue', 'Resample'), 'sequenceMatchResample': ('sequenceMatch', 'Resample'), 'maxResample': ('max', 'Resample'), 'maxMapResample': ('maxMap', 'Resample'), 'groupArrayResample': ('groupArray', 'Resample'), 'sumWithOverflowResample': ('sumWithOverflow', 'Resample'), 'kurtSampResample': ('kurtSamp', 'Resample'), 'groupBitmapXorResample': ('groupBitmapXor', 'Resample'), 'minResample': ('min', 'Resample'), 'sequenceCountResample': ('sequenceCount', 'Resample'), 'theilsUResample': ('theilsU', 'Resample'), 'corrResample': ('corr', 'Resample'), 'stddevSampResample': ('stddevSamp', 'Resample'), 'topKWeightedResample': ('topKWeighted', 'Resample'), 'quantilesExactWeightedResample': ('quantilesExactWeighted', 'Resample'), 'quantileExactResample': ('quantileExact', 'Resample'), 'simpleLinearRegressionResample': ('simpleLinearRegression', 'Resample'), 'varPopResample': ('varPop', 'Resample'), 'kurtPopResample': ('kurtPop', 'Resample'), 'quantileBFloat16WeightedResample': ('quantileBFloat16Weighted', 'Resample'), 'quantilesBFloat16WeightedResample': ('quantilesBFloat16Weighted', 'Resample'), 'quantilesTimingResample': ('quantilesTiming', 'Resample'), 'windowFunnelResample': ('windowFunnel', 'Resample'), 'quantilesExactHighResample': ('quantilesExactHigh', 'Resample'), 'first_valueResample': ('first_value', 'Resample'), 'quantileResample': ('quantile', 'Resample'), 'anyLastResample': ('anyLast', 'Resample'), 'stddevPopResample': ('stddevPop', 'Resample'), 'uniqResample': ('uniq', 'Resample'), 'quantilesTimingWeightedResample': ('quantilesTimingWeighted', 'Resample'), 'anyHeavyResample': ('anyHeavy', 'Resample'), 'cramersVResample': ('cramersV', 'Resample'), 'quantileGKResample': ('quantileGK', 'Resample'), 'topKResample': ('topK', 'Resample'), 'groupArrayInsertAtResample': ('groupArrayInsertAt', 'Resample'), 'quantilesTDigestResample': ('quantilesTDigest', 'Resample'), 'groupBitmapResample': ('groupBitmap', 'Resample'), 'sumMapResample': ('sumMap', 'Resample'), 'histogramResample': ('histogram', 'Resample'), 'quantilesTDigestWeightedResample': ('quantilesTDigestWeighted', 'Resample'), 'uniqUpToResample': ('uniqUpTo', 'Resample'), 'groupArraySampleResample': ('groupArraySample', 'Resample'), 'quantilesBFloat16Resample': ('quantilesBFloat16', 'Resample'), 'argMaxResample': ('argMax', 'Resample'), 'argMinResample': ('argMin', 'Resample'), 'quantilesGKResample': ('quantilesGK', 'Resample'), 'uniqThetaResample': ('uniqTheta', 'Resample'), 'kolmogorovSmirnovTestResample': ('kolmogorovSmirnovTest', 'Resample'), 'deltaSumResample': ('deltaSum', 'Resample'), 'retentionResample': ('retention', 'Resample'), 'exponentialTimeDecayedAvgResample': ('exponentialTimeDecayedAvg', 'Resample'), 'covarSampResample': ('covarSamp', 'Resample'), 'covarPopResample': ('covarPop', 'Resample'), 'countResample': ('count', 'Resample'), 'last_valueResample': ('last_value', 'Resample'), 'contingencyResample': ('contingency', 'Resample'), 'quantileTDigestResample': ('quantileTDigest', 'Resample'), 'groupArrayMovingSumResample': ('groupArrayMovingSum', 'Resample'), 'skewPopResample': ('skewPop', 'Resample'), 'uniqCombinedResample': ('uniqCombined', 'Resample'), 'groupBitmapOrResample': ('groupBitmapOr', 'Resample'), 'maxIntersectionsPositionResample': ('maxIntersectionsPosition', 'Resample'), 'quantilesInterpolatedWeightedResample': ('quantilesInterpolatedWeighted', 'Resample'), 'exponentialMovingAverageResample': ('exponentialMovingAverage', 'Resample'), 'welchTTestResample': ('welchTTest', 'Resample'), 'quantileTimingResample': ('quantileTiming', 'Resample'), 'entropyResample': ('entropy', 'Resample'), 'quantileExactHighResample': ('quantileExactHigh', 'Resample'), 'anyResample': ('any', 'Resample'), 'boundingRatioResample': ('boundingRatio', 'Resample'), 'groupArrayLastResample': ('groupArrayLast', 'Resample'), 'varSampResample': ('varSamp', 'Resample'), 'sumResample': ('sum', 'Resample'), 'medianResample': ('median', 'Resample'), 'sumKahanResample': ('sumKahan', 'Resample'), 'rankCorrResample': ('rankCorr', 'Resample'), 'skewSampResample': ('skewSamp', 'Resample'), 'cramersVBiasCorrectedResample': ('cramersVBiasCorrected', 'Resample'), 'groupBitAndResample': ('groupBitAnd', 'Resample'), 'largestTriangleThreeBucketsResample': ('largestTriangleThreeBuckets', 'Resample'), 'quantileBFloat16Resample': ('quantileBFloat16', 'Resample'), 'stochasticLinearRegressionResample': ('stochasticLinearRegression', 'Resample'), 'quantileTimingWeightedResample': ('quantileTimingWeighted', 'Resample'), 'avgWeightedResample': ('avgWeighted', 'Resample'), 'minMapResample': ('minMap', 'Resample'), 'groupArrayMovingAvgResample': ('groupArrayMovingAvg', 'Resample'), 'maxIntersectionsResample': ('maxIntersections', 'Resample'), 'quantilesResample': ('quantiles', 'Resample'), 'intervalLengthSumResample': ('intervalLengthSum', 'Resample'), 'groupBitXorResample': ('groupBitXor', 'Resample'), 'sumCountResample': ('sumCount', 'Resample'), 'stochasticLogisticRegressionResample': ('stochasticLogisticRegression', 'Resample'), 'quantilesDeterministicResample': ('quantilesDeterministic', 'Resample'), 'mannWhitneyUTestResample': ('mannWhitneyUTest', 'Resample'), 'quantilesExactResample': ('quantilesExact', 'Resample'), 'sparkBarResample': ('sparkBar', 'Resample'), 'uniqExactResample': ('uniqExact', 'Resample'), 'uniqHLL12Resample': ('uniqHLL12', 'Resample'), 'quantileDeterministicResample': ('quantileDeterministic', 'Resample'), 'quantileExactWeightedResample': ('quantileExactWeighted', 'Resample'), 'meanZTestResample': ('meanZTest', 'Resample'), 'groupUniqArrayResample': ('groupUniqArray', 'Resample'), 'quantilesExactLowResample': ('quantilesExactLow', 'Resample'), 'avgResample': ('avg', 'Resample'), 'quantileInterpolatedWeightedResample': ('quantileInterpolatedWeighted', 'Resample'), 'deltaSumTimestampResample': ('deltaSumTimestamp', 'Resample'), 'uniqCombined64Resample': ('uniqCombined64', 'Resample'), 'groupBitmapAndResample': ('groupBitmapAnd', 'Resample'), 'groupBitOrArgMin': ('groupBitOr', 'ArgMin'), 'quantileTDigestWeightedArgMin': ('quantileTDigestWeighted', 'ArgMin'), 'sequenceNextNodeArgMin': ('sequenceNextNode', 'ArgMin'), 'studentTTestArgMin': ('studentTTest', 'ArgMin'), 'quantileExactLowArgMin': ('quantileExactLow', 'ArgMin'), 'categoricalInformationValueArgMin': ('categoricalInformationValue', 'ArgMin'), 'sequenceMatchArgMin': ('sequenceMatch', 'ArgMin'), 'maxArgMin': ('max', 'ArgMin'), 'maxMapArgMin': ('maxMap', 'ArgMin'), 'groupArrayArgMin': ('groupArray', 'ArgMin'), 'sumWithOverflowArgMin': ('sumWithOverflow', 'ArgMin'), 'kurtSampArgMin': ('kurtSamp', 'ArgMin'), 'groupBitmapXorArgMin': ('groupBitmapXor', 'ArgMin'), 'minArgMin': ('min', 'ArgMin'), 'sequenceCountArgMin': ('sequenceCount', 'ArgMin'), 'theilsUArgMin': ('theilsU', 'ArgMin'), 'corrArgMin': ('corr', 'ArgMin'), 'stddevSampArgMin': ('stddevSamp', 'ArgMin'), 'topKWeightedArgMin': ('topKWeighted', 'ArgMin'), 'quantilesExactWeightedArgMin': ('quantilesExactWeighted', 'ArgMin'), 'quantileExactArgMin': ('quantileExact', 'ArgMin'), 'simpleLinearRegressionArgMin': ('simpleLinearRegression', 'ArgMin'), 'varPopArgMin': ('varPop', 'ArgMin'), 'kurtPopArgMin': ('kurtPop', 'ArgMin'), 'quantileBFloat16WeightedArgMin': ('quantileBFloat16Weighted', 'ArgMin'), 'quantilesBFloat16WeightedArgMin': ('quantilesBFloat16Weighted', 'ArgMin'), 'quantilesTimingArgMin': ('quantilesTiming', 'ArgMin'), 'windowFunnelArgMin': ('windowFunnel', 'ArgMin'), 'quantilesExactHighArgMin': ('quantilesExactHigh', 'ArgMin'), 'first_valueArgMin': ('first_value', 'ArgMin'), 'quantileArgMin': ('quantile', 'ArgMin'), 'anyLastArgMin': ('anyLast', 'ArgMin'), 'stddevPopArgMin': ('stddevPop', 'ArgMin'), 'uniqArgMin': ('uniq', 'ArgMin'), 'quantilesTimingWeightedArgMin': ('quantilesTimingWeighted', 'ArgMin'), 'anyHeavyArgMin': ('anyHeavy', 'ArgMin'), 'cramersVArgMin': ('cramersV', 'ArgMin'), 'quantileGKArgMin': ('quantileGK', 'ArgMin'), 'topKArgMin': ('topK', 'ArgMin'), 'groupArrayInsertAtArgMin': ('groupArrayInsertAt', 'ArgMin'), 'quantilesTDigestArgMin': ('quantilesTDigest', 'ArgMin'), 'groupBitmapArgMin': ('groupBitmap', 'ArgMin'), 'sumMapArgMin': ('sumMap', 'ArgMin'), 'histogramArgMin': ('histogram', 'ArgMin'), 'quantilesTDigestWeightedArgMin': ('quantilesTDigestWeighted', 'ArgMin'), 'uniqUpToArgMin': ('uniqUpTo', 'ArgMin'), 'groupArraySampleArgMin': ('groupArraySample', 'ArgMin'), 'quantilesBFloat16ArgMin': ('quantilesBFloat16', 'ArgMin'), 'argMaxArgMin': ('argMax', 'ArgMin'), 'argMinArgMin': ('argMin', 'ArgMin'), 'quantilesGKArgMin': ('quantilesGK', 'ArgMin'), 'uniqThetaArgMin': ('uniqTheta', 'ArgMin'), 'kolmogorovSmirnovTestArgMin': ('kolmogorovSmirnovTest', 'ArgMin'), 'deltaSumArgMin': ('deltaSum', 'ArgMin'), 'retentionArgMin': ('retention', 'ArgMin'), 'exponentialTimeDecayedAvgArgMin': ('exponentialTimeDecayedAvg', 'ArgMin'), 'covarSampArgMin': ('covarSamp', 'ArgMin'), 'covarPopArgMin': ('covarPop', 'ArgMin'), 'countArgMin': ('count', 'ArgMin'), 'last_valueArgMin': ('last_value', 'ArgMin'), 'contingencyArgMin': ('contingency', 'ArgMin'), 'quantileTDigestArgMin': ('quantileTDigest', 'ArgMin'), 'groupArrayMovingSumArgMin': ('groupArrayMovingSum', 'ArgMin'), 'skewPopArgMin': ('skewPop', 'ArgMin'), 'uniqCombinedArgMin': ('uniqCombined', 'ArgMin'), 'groupBitmapOrArgMin': ('groupBitmapOr', 'ArgMin'), 'maxIntersectionsPositionArgMin': ('maxIntersectionsPosition', 'ArgMin'), 'quantilesInterpolatedWeightedArgMin': ('quantilesInterpolatedWeighted', 'ArgMin'), 'exponentialMovingAverageArgMin': ('exponentialMovingAverage', 'ArgMin'), 'welchTTestArgMin': ('welchTTest', 'ArgMin'), 'quantileTimingArgMin': ('quantileTiming', 'ArgMin'), 'entropyArgMin': ('entropy', 'ArgMin'), 'quantileExactHighArgMin': ('quantileExactHigh', 'ArgMin'), 'anyArgMin': ('any', 'ArgMin'), 'boundingRatioArgMin': ('boundingRatio', 'ArgMin'), 'groupArrayLastArgMin': ('groupArrayLast', 'ArgMin'), 'varSampArgMin': ('varSamp', 'ArgMin'), 'sumArgMin': ('sum', 'ArgMin'), 'medianArgMin': ('median', 'ArgMin'), 'sumKahanArgMin': ('sumKahan', 'ArgMin'), 'rankCorrArgMin': ('rankCorr', 'ArgMin'), 'skewSampArgMin': ('skewSamp', 'ArgMin'), 'cramersVBiasCorrectedArgMin': ('cramersVBiasCorrected', 'ArgMin'), 'groupBitAndArgMin': ('groupBitAnd', 'ArgMin'), 'largestTriangleThreeBucketsArgMin': ('largestTriangleThreeBuckets', 'ArgMin'), 'quantileBFloat16ArgMin': ('quantileBFloat16', 'ArgMin'), 'stochasticLinearRegressionArgMin': ('stochasticLinearRegression', 'ArgMin'), 'quantileTimingWeightedArgMin': ('quantileTimingWeighted', 'ArgMin'), 'avgWeightedArgMin': ('avgWeighted', 'ArgMin'), 'minMapArgMin': ('minMap', 'ArgMin'), 'groupArrayMovingAvgArgMin': ('groupArrayMovingAvg', 'ArgMin'), 'maxIntersectionsArgMin': ('maxIntersections', 'ArgMin'), 'quantilesArgMin': ('quantiles', 'ArgMin'), 'intervalLengthSumArgMin': ('intervalLengthSum', 'ArgMin'), 'groupBitXorArgMin': ('groupBitXor', 'ArgMin'), 'sumCountArgMin': ('sumCount', 'ArgMin'), 'stochasticLogisticRegressionArgMin': ('stochasticLogisticRegression', 'ArgMin'), 'quantilesDeterministicArgMin': ('quantilesDeterministic', 'ArgMin'), 'mannWhitneyUTestArgMin': ('mannWhitneyUTest', 'ArgMin'), 'quantilesExactArgMin': ('quantilesExact', 'ArgMin'), 'sparkBarArgMin': ('sparkBar', 'ArgMin'), 'uniqExactArgMin': ('uniqExact', 'ArgMin'), 'uniqHLL12ArgMin': ('uniqHLL12', 'ArgMin'), 'quantileDeterministicArgMin': ('quantileDeterministic', 'ArgMin'), 'quantileExactWeightedArgMin': ('quantileExactWeighted', 'ArgMin'), 'meanZTestArgMin': ('meanZTest', 'ArgMin'), 'groupUniqArrayArgMin': ('groupUniqArray', 'ArgMin'), 'quantilesExactLowArgMin': ('quantilesExactLow', 'ArgMin'), 'avgArgMin': ('avg', 'ArgMin'), 'quantileInterpolatedWeightedArgMin': ('quantileInterpolatedWeighted', 'ArgMin'), 'deltaSumTimestampArgMin': ('deltaSumTimestamp', 'ArgMin'), 'uniqCombined64ArgMin': ('uniqCombined64', 'ArgMin'), 'groupBitmapAndArgMin': ('groupBitmapAnd', 'ArgMin'), 'groupBitOrArgMax': ('groupBitOr', 'ArgMax'), 'quantileTDigestWeightedArgMax': ('quantileTDigestWeighted', 'ArgMax'), 'sequenceNextNodeArgMax': ('sequenceNextNode', 'ArgMax'), 'studentTTestArgMax': ('studentTTest', 'ArgMax'), 'quantileExactLowArgMax': ('quantileExactLow', 'ArgMax'), 'categoricalInformationValueArgMax': ('categoricalInformationValue', 'ArgMax'), 'sequenceMatchArgMax': ('sequenceMatch', 'ArgMax'), 'maxArgMax': ('max', 'ArgMax'), 'maxMapArgMax': ('maxMap', 'ArgMax'), 'groupArrayArgMax': ('groupArray', 'ArgMax'), 'sumWithOverflowArgMax': ('sumWithOverflow', 'ArgMax'), 'kurtSampArgMax': ('kurtSamp', 'ArgMax'), 'groupBitmapXorArgMax': ('groupBitmapXor', 'ArgMax'), 'minArgMax': ('min', 'ArgMax'), 'sequenceCountArgMax': ('sequenceCount', 'ArgMax'), 'theilsUArgMax': ('theilsU', 'ArgMax'), 'corrArgMax': ('corr', 'ArgMax'), 'stddevSampArgMax': ('stddevSamp', 'ArgMax'), 'topKWeightedArgMax': ('topKWeighted', 'ArgMax'), 'quantilesExactWeightedArgMax': ('quantilesExactWeighted', 'ArgMax'), 'quantileExactArgMax': ('quantileExact', 'ArgMax'), 'simpleLinearRegressionArgMax': ('simpleLinearRegression', 'ArgMax'), 'varPopArgMax': ('varPop', 'ArgMax'), 'kurtPopArgMax': ('kurtPop', 'ArgMax'), 'quantileBFloat16WeightedArgMax': ('quantileBFloat16Weighted', 'ArgMax'), 'quantilesBFloat16WeightedArgMax': ('quantilesBFloat16Weighted', 'ArgMax'), 'quantilesTimingArgMax': ('quantilesTiming', 'ArgMax'), 'windowFunnelArgMax': ('windowFunnel', 'ArgMax'), 'quantilesExactHighArgMax': ('quantilesExactHigh', 'ArgMax'), 'first_valueArgMax': ('first_value', 'ArgMax'), 'quantileArgMax': ('quantile', 'ArgMax'), 'anyLastArgMax': ('anyLast', 'ArgMax'), 'stddevPopArgMax': ('stddevPop', 'ArgMax'), 'uniqArgMax': ('uniq', 'ArgMax'), 'quantilesTimingWeightedArgMax': ('quantilesTimingWeighted', 'ArgMax'), 'anyHeavyArgMax': ('anyHeavy', 'ArgMax'), 'cramersVArgMax': ('cramersV', 'ArgMax'), 'quantileGKArgMax': ('quantileGK', 'ArgMax'), 'topKArgMax': ('topK', 'ArgMax'), 'groupArrayInsertAtArgMax': ('groupArrayInsertAt', 'ArgMax'), 'quantilesTDigestArgMax': ('quantilesTDigest', 'ArgMax'), 'groupBitmapArgMax': ('groupBitmap', 'ArgMax'), 'sumMapArgMax': ('sumMap', 'ArgMax'), 'histogramArgMax': ('histogram', 'ArgMax'), 'quantilesTDigestWeightedArgMax': ('quantilesTDigestWeighted', 'ArgMax'), 'uniqUpToArgMax': ('uniqUpTo', 'ArgMax'), 'groupArraySampleArgMax': ('groupArraySample', 'ArgMax'), 'quantilesBFloat16ArgMax': ('quantilesBFloat16', 'ArgMax'), 'argMaxArgMax': ('argMax', 'ArgMax'), 'argMinArgMax': ('argMin', 'ArgMax'), 'quantilesGKArgMax': ('quantilesGK', 'ArgMax'), 'uniqThetaArgMax': ('uniqTheta', 'ArgMax'), 'kolmogorovSmirnovTestArgMax': ('kolmogorovSmirnovTest', 'ArgMax'), 'deltaSumArgMax': ('deltaSum', 'ArgMax'), 'retentionArgMax': ('retention', 'ArgMax'), 'exponentialTimeDecayedAvgArgMax': ('exponentialTimeDecayedAvg', 'ArgMax'), 'covarSampArgMax': ('covarSamp', 'ArgMax'), 'covarPopArgMax': ('covarPop', 'ArgMax'), 'countArgMax': ('count', 'ArgMax'), 'last_valueArgMax': ('last_value', 'ArgMax'), 'contingencyArgMax': ('contingency', 'ArgMax'), 'quantileTDigestArgMax': ('quantileTDigest', 'ArgMax'), 'groupArrayMovingSumArgMax': ('groupArrayMovingSum', 'ArgMax'), 'skewPopArgMax': ('skewPop', 'ArgMax'), 'uniqCombinedArgMax': ('uniqCombined', 'ArgMax'), 'groupBitmapOrArgMax': ('groupBitmapOr', 'ArgMax'), 'maxIntersectionsPositionArgMax': ('maxIntersectionsPosition', 'ArgMax'), 'quantilesInterpolatedWeightedArgMax': ('quantilesInterpolatedWeighted', 'ArgMax'), 'exponentialMovingAverageArgMax': ('exponentialMovingAverage', 'ArgMax'), 'welchTTestArgMax': ('welchTTest', 'ArgMax'), 'quantileTimingArgMax': ('quantileTiming', 'ArgMax'), 'entropyArgMax': ('entropy', 'ArgMax'), 'quantileExactHighArgMax': ('quantileExactHigh', 'ArgMax'), 'anyArgMax': ('any', 'ArgMax'), 'boundingRatioArgMax': ('boundingRatio', 'ArgMax'), 'groupArrayLastArgMax': ('groupArrayLast', 'ArgMax'), 'varSampArgMax': ('varSamp', 'ArgMax'), 'sumArgMax': ('sum', 'ArgMax'), 'medianArgMax': ('median', 'ArgMax'), 'sumKahanArgMax': ('sumKahan', 'ArgMax'), 'rankCorrArgMax': ('rankCorr', 'ArgMax'), 'skewSampArgMax': ('skewSamp', 'ArgMax'), 'cramersVBiasCorrectedArgMax': ('cramersVBiasCorrected', 'ArgMax'), 'groupBitAndArgMax': ('groupBitAnd', 'ArgMax'), 'largestTriangleThreeBucketsArgMax': ('largestTriangleThreeBuckets', 'ArgMax'), 'quantileBFloat16ArgMax': ('quantileBFloat16', 'ArgMax'), 'stochasticLinearRegressionArgMax': ('stochasticLinearRegression', 'ArgMax'), 'quantileTimingWeightedArgMax': ('quantileTimingWeighted', 'ArgMax'), 'avgWeightedArgMax': ('avgWeighted', 'ArgMax'), 'minMapArgMax': ('minMap', 'ArgMax'), 'groupArrayMovingAvgArgMax': ('groupArrayMovingAvg', 'ArgMax'), 'maxIntersectionsArgMax': ('maxIntersections', 'ArgMax'), 'quantilesArgMax': ('quantiles', 'ArgMax'), 'intervalLengthSumArgMax': ('intervalLengthSum', 'ArgMax'), 'groupBitXorArgMax': ('groupBitXor', 'ArgMax'), 'sumCountArgMax': ('sumCount', 'ArgMax'), 'stochasticLogisticRegressionArgMax': ('stochasticLogisticRegression', 'ArgMax'), 'quantilesDeterministicArgMax': ('quantilesDeterministic', 'ArgMax'), 'mannWhitneyUTestArgMax': ('mannWhitneyUTest', 'ArgMax'), 'quantilesExactArgMax': ('quantilesExact', 'ArgMax'), 'sparkBarArgMax': ('sparkBar', 'ArgMax'), 'uniqExactArgMax': ('uniqExact', 'ArgMax'), 'uniqHLL12ArgMax': ('uniqHLL12', 'ArgMax'), 'quantileDeterministicArgMax': ('quantileDeterministic', 'ArgMax'), 'quantileExactWeightedArgMax': ('quantileExactWeighted', 'ArgMax'), 'meanZTestArgMax': ('meanZTest', 'ArgMax'), 'groupUniqArrayArgMax': ('groupUniqArray', 'ArgMax'), 'quantilesExactLowArgMax': ('quantilesExactLow', 'ArgMax'), 'avgArgMax': ('avg', 'ArgMax'), 'quantileInterpolatedWeightedArgMax': ('quantileInterpolatedWeighted', 'ArgMax'), 'deltaSumTimestampArgMax': ('deltaSumTimestamp', 'ArgMax'), 'uniqCombined64ArgMax': ('uniqCombined64', 'ArgMax'), 'groupBitmapAndArgMax': ('groupBitmapAnd', 'ArgMax'), 'groupBitOr': ('groupBitOr', ''), 'quantileTDigestWeighted': ('quantileTDigestWeighted', ''), 'sequenceNextNode': ('sequenceNextNode', ''), 'studentTTest': ('studentTTest', ''), 'quantileExactLow': ('quantileExactLow', ''), 'categoricalInformationValue': ('categoricalInformationValue', ''), 'sequenceMatch': ('sequenceMatch', ''), 'max': ('max', ''), 'groupArray': ('groupArray', ''), 'sumWithOverflow': ('sumWithOverflow', ''), 'kurtSamp': ('kurtSamp', ''), 'groupBitmapXor': ('groupBitmapXor', ''), 'min': ('min', ''), 'sequenceCount': ('sequenceCount', ''), 'theilsU': ('theilsU', ''), 'corr': ('corr', ''), 'stddevSamp': ('stddevSamp', ''), 'topKWeighted': ('topKWeighted', ''), 'quantilesExactWeighted': ('quantilesExactWeighted', ''), 'quantileExact': ('quantileExact', ''), 'simpleLinearRegression': ('simpleLinearRegression', ''), 'varPop': ('varPop', ''), 'kurtPop': ('kurtPop', ''), 'quantileBFloat16Weighted': ('quantileBFloat16Weighted', ''), 'quantilesBFloat16Weighted': ('quantilesBFloat16Weighted', ''), 'quantilesTiming': ('quantilesTiming', ''), 'windowFunnel': ('windowFunnel', ''), 'quantilesExactHigh': ('quantilesExactHigh', ''), 'first_value': ('first_value', ''), 'quantile': ('quantile', ''), 'anyLast': ('anyLast', ''), 'stddevPop': ('stddevPop', ''), 'uniq': ('uniq', ''), 'quantilesTimingWeighted': ('quantilesTimingWeighted', ''), 'anyHeavy': ('anyHeavy', ''), 'cramersV': ('cramersV', ''), 'quantileGK': ('quantileGK', ''), 'topK': ('topK', ''), 'groupArrayInsertAt': ('groupArrayInsertAt', ''), 'quantilesTDigest': ('quantilesTDigest', ''), 'groupBitmap': ('groupBitmap', ''), 'histogram': ('histogram', ''), 'quantilesTDigestWeighted': ('quantilesTDigestWeighted', ''), 'uniqUpTo': ('uniqUpTo', ''), 'groupArraySample': ('groupArraySample', ''), 'quantilesBFloat16': ('quantilesBFloat16', ''), 'argMax': ('argMax', ''), 'argMin': ('argMin', ''), 'quantilesGK': ('quantilesGK', ''), 'uniqTheta': ('uniqTheta', ''), 'kolmogorovSmirnovTest': ('kolmogorovSmirnovTest', ''), 'deltaSum': ('deltaSum', ''), 'retention': ('retention', ''), 'exponentialTimeDecayedAvg': ('exponentialTimeDecayedAvg', ''), 'covarSamp': ('covarSamp', ''), 'covarPop': ('covarPop', ''), 'count': ('count', ''), 'last_value': ('last_value', ''), 'contingency': ('contingency', ''), 'quantileTDigest': ('quantileTDigest', ''), 'groupArrayMovingSum': ('groupArrayMovingSum', ''), 'skewPop': ('skewPop', ''), 'uniqCombined': ('uniqCombined', ''), 'groupBitmapOr': ('groupBitmapOr', ''), 'maxIntersectionsPosition': ('maxIntersectionsPosition', ''), 'quantilesInterpolatedWeighted': ('quantilesInterpolatedWeighted', ''), 'exponentialMovingAverage': ('exponentialMovingAverage', ''), 'welchTTest': ('welchTTest', ''), 'quantileTiming': ('quantileTiming', ''), 'entropy': ('entropy', ''), 'quantileExactHigh': ('quantileExactHigh', ''), 'any': ('any', ''), 'boundingRatio': ('boundingRatio', ''), 'groupArrayLast': ('groupArrayLast', ''), 'varSamp': ('varSamp', ''), 'sum': ('sum', ''), 'median': ('median', ''), 'sumKahan': ('sumKahan', ''), 'rankCorr': ('rankCorr', ''), 'skewSamp': ('skewSamp', ''), 'cramersVBiasCorrected': ('cramersVBiasCorrected', ''), 'groupBitAnd': ('groupBitAnd', ''), 'largestTriangleThreeBuckets': ('largestTriangleThreeBuckets', ''), 'quantileBFloat16': ('quantileBFloat16', ''), 'stochasticLinearRegression': ('stochasticLinearRegression', ''), 'quantileTimingWeighted': ('quantileTimingWeighted', ''), 'avgWeighted': ('avgWeighted', ''), 'groupArrayMovingAvg': ('groupArrayMovingAvg', ''), 'maxIntersections': ('maxIntersections', ''), 'quantiles': ('quantiles', ''), 'intervalLengthSum': ('intervalLengthSum', ''), 'groupBitXor': ('groupBitXor', ''), 'sumCount': ('sumCount', ''), 'stochasticLogisticRegression': ('stochasticLogisticRegression', ''), 'quantilesDeterministic': ('quantilesDeterministic', ''), 'mannWhitneyUTest': ('mannWhitneyUTest', ''), 'quantilesExact': ('quantilesExact', ''), 'sparkBar': ('sparkBar', ''), 'uniqExact': ('uniqExact', ''), 'uniqHLL12': ('uniqHLL12', ''), 'quantileDeterministic': ('quantileDeterministic', ''), 'quantileExactWeighted': ('quantileExactWeighted', ''), 'meanZTest': ('meanZTest', ''), 'groupUniqArray': ('groupUniqArray', ''), 'quantilesExactLow': ('quantilesExactLow', ''), 'avg': ('avg', ''), 'quantileInterpolatedWeighted': ('quantileInterpolatedWeighted', ''), 'deltaSumTimestamp': ('deltaSumTimestamp', ''), 'uniqCombined64': ('uniqCombined64', ''), 'groupBitmapAnd': ('groupBitmapAnd', '')}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.AGG_FUNC_MAPPING-view-value"></label><span class="default_value">{'quantileTimingIf': ('quantileTiming', 'If'), 'quantileInterpolatedWeightedIf': ('quantileInterpolatedWeighted', 'If'), 'theilsUIf': ('theilsU', 'If'), 'exponentialTimeDecayedAvgIf': ('exponentialTimeDecayedAvg', 'If'), 'cramersVIf': ('cramersV', 'If'), 'covarSampIf': ('covarSamp', 'If'), 'topKWeightedIf': ('topKWeighted', 'If'), 'quantilesBFloat16If': ('quantilesBFloat16', 'If'), 'sparkBarIf': ('sparkBar', 'If'), 'minIf': ('min', 'If'), 'windowFunnelIf': ('windowFunnel', 'If'), 'groupArrayMovingAvgIf': ('groupArrayMovingAvg', 'If'), 'groupArrayIf': ('groupArray', 'If'), 'uniqCombined64If': ('uniqCombined64', 'If'), 'groupBitmapXorIf': ('groupBitmapXor', 'If'), 'sequenceMatchIf': ('sequenceMatch', 'If'), 'groupBitmapAndIf': ('groupBitmapAnd', 'If'), 'groupUniqArrayIf': ('groupUniqArray', 'If'), 'quantilesDeterministicIf': ('quantilesDeterministic', 'If'), 'quantilesExactLowIf': ('quantilesExactLow', 'If'), 'contingencyIf': ('contingency', 'If'), 'avgIf': ('avg', 'If'), 'welchTTestIf': ('welchTTest', 'If'), 'meanZTestIf': ('meanZTest', 'If'), 'stddevSampIf': ('stddevSamp', 'If'), 'kolmogorovSmirnovTestIf': ('kolmogorovSmirnovTest', 'If'), 'groupArrayInsertAtIf': ('groupArrayInsertAt', 'If'), 'corrIf': ('corr', 'If'), 'groupBitAndIf': ('groupBitAnd', 'If'), 'sumWithOverflowIf': ('sumWithOverflow', 'If'), 'anyIf': ('any', 'If'), 'kurtSampIf': ('kurtSamp', 'If'), 'quantilesInterpolatedWeightedIf': ('quantilesInterpolatedWeighted', 'If'), 'quantileGKIf': ('quantileGK', 'If'), 'deltaSumTimestampIf': ('deltaSumTimestamp', 'If'), 'simpleLinearRegressionIf': ('simpleLinearRegression', 'If'), 'quantilesTDigestIf': ('quantilesTDigest', 'If'), 'uniqUpToIf': ('uniqUpTo', 'If'), 'deltaSumIf': ('deltaSum', 'If'), 'stddevPopIf': ('stddevPop', 'If'), 'maxIf': ('max', 'If'), 'quantilesIf': ('quantiles', 'If'), 'medianIf': ('median', 'If'), 'varSampIf': ('varSamp', 'If'), 'quantileBFloat16WeightedIf': ('quantileBFloat16Weighted', 'If'), 'quantilesExactHighIf': ('quantilesExactHigh', 'If'), 'quantilesBFloat16WeightedIf': ('quantilesBFloat16Weighted', 'If'), 'quantileExactWeightedIf': ('quantileExactWeighted', 'If'), 'intervalLengthSumIf': ('intervalLengthSum', 'If'), 'first_valueIf': ('first_value', 'If'), 'studentTTestIf': ('studentTTest', 'If'), 'stochasticLogisticRegressionIf': ('stochasticLogisticRegression', 'If'), 'skewPopIf': ('skewPop', 'If'), 'sequenceNextNodeIf': ('sequenceNextNode', 'If'), 'entropyIf': ('entropy', 'If'), 'maxIntersectionsIf': ('maxIntersections', 'If'), 'quantileExactHighIf': ('quantileExactHigh', 'If'), 'quantileExactIf': ('quantileExact', 'If'), 'quantilesGKIf': ('quantilesGK', 'If'), 'uniqCombinedIf': ('uniqCombined', 'If'), 'exponentialMovingAverageIf': ('exponentialMovingAverage', 'If'), 'sequenceCountIf': ('sequenceCount', 'If'), 'covarPopIf': ('covarPop', 'If'), 'retentionIf': ('retention', 'If'), 'quantilesExactWeightedIf': ('quantilesExactWeighted', 'If'), 'uniqIf': ('uniq', 'If'), 'argMaxIf': ('argMax', 'If'), 'topKIf': ('topK', 'If'), 'mannWhitneyUTestIf': ('mannWhitneyUTest', 'If'), 'cramersVBiasCorrectedIf': ('cramersVBiasCorrected', 'If'), 'histogramIf': ('histogram', 'If'), 'sumIf': ('sum', 'If'), 'quantileIf': ('quantile', 'If'), 'groupBitmapIf': ('groupBitmap', 'If'), 'anyHeavyIf': ('anyHeavy', 'If'), 'boundingRatioIf': ('boundingRatio', 'If'), 'groupBitOrIf': ('groupBitOr', 'If'), 'sumKahanIf': ('sumKahan', 'If'), 'categoricalInformationValueIf': ('categoricalInformationValue', 'If'), 'quantileTDigestWeightedIf': ('quantileTDigestWeighted', 'If'), 'groupArrayMovingSumIf': ('groupArrayMovingSum', 'If'), 'groupArraySampleIf': ('groupArraySample', 'If'), 'varPopIf': ('varPop', 'If'), 'quantileTimingWeightedIf': ('quantileTimingWeighted', 'If'), 'avgWeightedIf': ('avgWeighted', 'If'), 'quantileExactLowIf': ('quantileExactLow', 'If'), 'quantileDeterministicIf': ('quantileDeterministic', 'If'), 'stochasticLinearRegressionIf': ('stochasticLinearRegression', 'If'), 'quantileBFloat16If': ('quantileBFloat16', 'If'), 'last_valueIf': ('last_value', 'If'), 'sumCountIf': ('sumCount', 'If'), 'groupArrayLastIf': ('groupArrayLast', 'If'), 'kurtPopIf': ('kurtPop', 'If'), 'quantilesTimingIf': ('quantilesTiming', 'If'), 'maxIntersectionsPositionIf': ('maxIntersectionsPosition', 'If'), 'groupBitmapOrIf': ('groupBitmapOr', 'If'), 'rankCorrIf': ('rankCorr', 'If'), 'argMinIf': ('argMin', 'If'), 'largestTriangleThreeBucketsIf': ('largestTriangleThreeBuckets', 'If'), 'groupBitXorIf': ('groupBitXor', 'If'), 'quantileTDigestIf': ('quantileTDigest', 'If'), 'quantilesTDigestWeightedIf': ('quantilesTDigestWeighted', 'If'), 'sumMapIf': ('sumMap', 'If'), 'maxMapIf': ('maxMap', 'If'), 'skewSampIf': ('skewSamp', 'If'), 'anyLastIf': ('anyLast', 'If'), 'quantilesExactIf': ('quantilesExact', 'If'), 'uniqExactIf': ('uniqExact', 'If'), 'countIf': ('count', 'If'), 'quantilesTimingWeightedIf': ('quantilesTimingWeighted', 'If'), 'uniqHLL12If': ('uniqHLL12', 'If'), 'uniqThetaIf': ('uniqTheta', 'If'), 'minMapIf': ('minMap', 'If'), 'quantileTimingArray': ('quantileTiming', 'Array'), 'quantileInterpolatedWeightedArray': ('quantileInterpolatedWeighted', 'Array'), 'theilsUArray': ('theilsU', 'Array'), 'exponentialTimeDecayedAvgArray': ('exponentialTimeDecayedAvg', 'Array'), 'cramersVArray': ('cramersV', 'Array'), 'covarSampArray': ('covarSamp', 'Array'), 'topKWeightedArray': ('topKWeighted', 'Array'), 'quantilesBFloat16Array': ('quantilesBFloat16', 'Array'), 'sparkBarArray': ('sparkBar', 'Array'), 'minArray': ('min', 'Array'), 'windowFunnelArray': ('windowFunnel', 'Array'), 'groupArrayMovingAvgArray': ('groupArrayMovingAvg', 'Array'), 'groupArrayArray': ('groupArray', 'Array'), 'uniqCombined64Array': ('uniqCombined64', 'Array'), 'groupBitmapXorArray': ('groupBitmapXor', 'Array'), 'sequenceMatchArray': ('sequenceMatch', 'Array'), 'groupBitmapAndArray': ('groupBitmapAnd', 'Array'), 'groupUniqArrayArray': ('groupUniqArray', 'Array'), 'quantilesDeterministicArray': ('quantilesDeterministic', 'Array'), 'quantilesExactLowArray': ('quantilesExactLow', 'Array'), 'contingencyArray': ('contingency', 'Array'), 'avgArray': ('avg', 'Array'), 'welchTTestArray': ('welchTTest', 'Array'), 'meanZTestArray': ('meanZTest', 'Array'), 'stddevSampArray': ('stddevSamp', 'Array'), 'kolmogorovSmirnovTestArray': ('kolmogorovSmirnovTest', 'Array'), 'groupArrayInsertAtArray': ('groupArrayInsertAt', 'Array'), 'corrArray': ('corr', 'Array'), 'groupBitAndArray': ('groupBitAnd', 'Array'), 'sumWithOverflowArray': ('sumWithOverflow', 'Array'), 'anyArray': ('any', 'Array'), 'kurtSampArray': ('kurtSamp', 'Array'), 'quantilesInterpolatedWeightedArray': ('quantilesInterpolatedWeighted', 'Array'), 'quantileGKArray': ('quantileGK', 'Array'), 'deltaSumTimestampArray': ('deltaSumTimestamp', 'Array'), 'simpleLinearRegressionArray': ('simpleLinearRegression', 'Array'), 'quantilesTDigestArray': ('quantilesTDigest', 'Array'), 'uniqUpToArray': ('uniqUpTo', 'Array'), 'deltaSumArray': ('deltaSum', 'Array'), 'stddevPopArray': ('stddevPop', 'Array'), 'maxArray': ('max', 'Array'), 'quantilesArray': ('quantiles', 'Array'), 'medianArray': ('median', 'Array'), 'varSampArray': ('varSamp', 'Array'), 'quantileBFloat16WeightedArray': ('quantileBFloat16Weighted', 'Array'), 'quantilesExactHighArray': ('quantilesExactHigh', 'Array'), 'quantilesBFloat16WeightedArray': ('quantilesBFloat16Weighted', 'Array'), 'quantileExactWeightedArray': ('quantileExactWeighted', 'Array'), 'intervalLengthSumArray': ('intervalLengthSum', 'Array'), 'first_valueArray': ('first_value', 'Array'), 'studentTTestArray': ('studentTTest', 'Array'), 'stochasticLogisticRegressionArray': ('stochasticLogisticRegression', 'Array'), 'skewPopArray': ('skewPop', 'Array'), 'sequenceNextNodeArray': ('sequenceNextNode', 'Array'), 'entropyArray': ('entropy', 'Array'), 'maxIntersectionsArray': ('maxIntersections', 'Array'), 'quantileExactHighArray': ('quantileExactHigh', 'Array'), 'quantileExactArray': ('quantileExact', 'Array'), 'quantilesGKArray': ('quantilesGK', 'Array'), 'uniqCombinedArray': ('uniqCombined', 'Array'), 'exponentialMovingAverageArray': ('exponentialMovingAverage', 'Array'), 'sequenceCountArray': ('sequenceCount', 'Array'), 'covarPopArray': ('covarPop', 'Array'), 'retentionArray': ('retention', 'Array'), 'quantilesExactWeightedArray': ('quantilesExactWeighted', 'Array'), 'uniqArray': ('uniq', 'Array'), 'argMaxArray': ('argMax', 'Array'), 'topKArray': ('topK', 'Array'), 'mannWhitneyUTestArray': ('mannWhitneyUTest', 'Array'), 'cramersVBiasCorrectedArray': ('cramersVBiasCorrected', 'Array'), 'histogramArray': ('histogram', 'Array'), 'sumArray': ('sum', 'Array'), 'quantileArray': ('quantile', 'Array'), 'groupBitmapArray': ('groupBitmap', 'Array'), 'anyHeavyArray': ('anyHeavy', 'Array'), 'boundingRatioArray': ('boundingRatio', 'Array'), 'groupBitOrArray': ('groupBitOr', 'Array'), 'sumKahanArray': ('sumKahan', 'Array'), 'categoricalInformationValueArray': ('categoricalInformationValue', 'Array'), 'quantileTDigestWeightedArray': ('quantileTDigestWeighted', 'Array'), 'groupArrayMovingSumArray': ('groupArrayMovingSum', 'Array'), 'groupArraySampleArray': ('groupArraySample', 'Array'), 'varPopArray': ('varPop', 'Array'), 'quantileTimingWeightedArray': ('quantileTimingWeighted', 'Array'), 'avgWeightedArray': ('avgWeighted', 'Array'), 'quantileExactLowArray': ('quantileExactLow', 'Array'), 'quantileDeterministicArray': ('quantileDeterministic', 'Array'), 'stochasticLinearRegressionArray': ('stochasticLinearRegression', 'Array'), 'quantileBFloat16Array': ('quantileBFloat16', 'Array'), 'last_valueArray': ('last_value', 'Array'), 'sumCountArray': ('sumCount', 'Array'), 'groupArrayLastArray': ('groupArrayLast', 'Array'), 'kurtPopArray': ('kurtPop', 'Array'), 'quantilesTimingArray': ('quantilesTiming', 'Array'), 'maxIntersectionsPositionArray': ('maxIntersectionsPosition', 'Array'), 'groupBitmapOrArray': ('groupBitmapOr', 'Array'), 'rankCorrArray': ('rankCorr', 'Array'), 'argMinArray': ('argMin', 'Array'), 'largestTriangleThreeBucketsArray': ('largestTriangleThreeBuckets', 'Array'), 'groupBitXorArray': ('groupBitXor', 'Array'), 'quantileTDigestArray': ('quantileTDigest', 'Array'), 'quantilesTDigestWeightedArray': ('quantilesTDigestWeighted', 'Array'), 'sumMapArray': ('sumMap', 'Array'), 'maxMapArray': ('maxMap', 'Array'), 'skewSampArray': ('skewSamp', 'Array'), 'anyLastArray': ('anyLast', 'Array'), 'quantilesExactArray': ('quantilesExact', 'Array'), 'uniqExactArray': ('uniqExact', 'Array'), 'countArray': ('count', 'Array'), 'quantilesTimingWeightedArray': ('quantilesTimingWeighted', 'Array'), 'uniqHLL12Array': ('uniqHLL12', 'Array'), 'uniqThetaArray': ('uniqTheta', 'Array'), 'minMapArray': ('minMap', 'Array'), 'quantileTimingArrayIf': ('quantileTiming', 'ArrayIf'), 'quantileInterpolatedWeightedArrayIf': ('quantileInterpolatedWeighted', 'ArrayIf'), 'theilsUArrayIf': ('theilsU', 'ArrayIf'), 'exponentialTimeDecayedAvgArrayIf': ('exponentialTimeDecayedAvg', 'ArrayIf'), 'cramersVArrayIf': ('cramersV', 'ArrayIf'), 'covarSampArrayIf': ('covarSamp', 'ArrayIf'), 'topKWeightedArrayIf': ('topKWeighted', 'ArrayIf'), 'quantilesBFloat16ArrayIf': ('quantilesBFloat16', 'ArrayIf'), 'sparkBarArrayIf': ('sparkBar', 'ArrayIf'), 'minArrayIf': ('min', 'ArrayIf'), 'windowFunnelArrayIf': ('windowFunnel', 'ArrayIf'), 'groupArrayMovingAvgArrayIf': ('groupArrayMovingAvg', 'ArrayIf'), 'groupArrayArrayIf': ('groupArray', 'ArrayIf'), 'uniqCombined64ArrayIf': ('uniqCombined64', 'ArrayIf'), 'groupBitmapXorArrayIf': ('groupBitmapXor', 'ArrayIf'), 'sequenceMatchArrayIf': ('sequenceMatch', 'ArrayIf'), 'groupBitmapAndArrayIf': ('groupBitmapAnd', 'ArrayIf'), 'groupUniqArrayArrayIf': ('groupUniqArray', 'ArrayIf'), 'quantilesDeterministicArrayIf': ('quantilesDeterministic', 'ArrayIf'), 'quantilesExactLowArrayIf': ('quantilesExactLow', 'ArrayIf'), 'contingencyArrayIf': ('contingency', 'ArrayIf'), 'avgArrayIf': ('avg', 'ArrayIf'), 'welchTTestArrayIf': ('welchTTest', 'ArrayIf'), 'meanZTestArrayIf': ('meanZTest', 'ArrayIf'), 'stddevSampArrayIf': ('stddevSamp', 'ArrayIf'), 'kolmogorovSmirnovTestArrayIf': ('kolmogorovSmirnovTest', 'ArrayIf'), 'groupArrayInsertAtArrayIf': ('groupArrayInsertAt', 'ArrayIf'), 'corrArrayIf': ('corr', 'ArrayIf'), 'groupBitAndArrayIf': ('groupBitAnd', 'ArrayIf'), 'sumWithOverflowArrayIf': ('sumWithOverflow', 'ArrayIf'), 'anyArrayIf': ('any', 'ArrayIf'), 'kurtSampArrayIf': ('kurtSamp', 'ArrayIf'), 'quantilesInterpolatedWeightedArrayIf': ('quantilesInterpolatedWeighted', 'ArrayIf'), 'quantileGKArrayIf': ('quantileGK', 'ArrayIf'), 'deltaSumTimestampArrayIf': ('deltaSumTimestamp', 'ArrayIf'), 'simpleLinearRegressionArrayIf': ('simpleLinearRegression', 'ArrayIf'), 'quantilesTDigestArrayIf': ('quantilesTDigest', 'ArrayIf'), 'uniqUpToArrayIf': ('uniqUpTo', 'ArrayIf'), 'deltaSumArrayIf': ('deltaSum', 'ArrayIf'), 'stddevPopArrayIf': ('stddevPop', 'ArrayIf'), 'maxArrayIf': ('max', 'ArrayIf'), 'quantilesArrayIf': ('quantiles', 'ArrayIf'), 'medianArrayIf': ('median', 'ArrayIf'), 'varSampArrayIf': ('varSamp', 'ArrayIf'), 'quantileBFloat16WeightedArrayIf': ('quantileBFloat16Weighted', 'ArrayIf'), 'quantilesExactHighArrayIf': ('quantilesExactHigh', 'ArrayIf'), 'quantilesBFloat16WeightedArrayIf': ('quantilesBFloat16Weighted', 'ArrayIf'), 'quantileExactWeightedArrayIf': ('quantileExactWeighted', 'ArrayIf'), 'intervalLengthSumArrayIf': ('intervalLengthSum', 'ArrayIf'), 'first_valueArrayIf': ('first_value', 'ArrayIf'), 'studentTTestArrayIf': ('studentTTest', 'ArrayIf'), 'stochasticLogisticRegressionArrayIf': ('stochasticLogisticRegression', 'ArrayIf'), 'skewPopArrayIf': ('skewPop', 'ArrayIf'), 'sequenceNextNodeArrayIf': ('sequenceNextNode', 'ArrayIf'), 'entropyArrayIf': ('entropy', 'ArrayIf'), 'maxIntersectionsArrayIf': ('maxIntersections', 'ArrayIf'), 'quantileExactHighArrayIf': ('quantileExactHigh', 'ArrayIf'), 'quantileExactArrayIf': ('quantileExact', 'ArrayIf'), 'quantilesGKArrayIf': ('quantilesGK', 'ArrayIf'), 'uniqCombinedArrayIf': ('uniqCombined', 'ArrayIf'), 'exponentialMovingAverageArrayIf': ('exponentialMovingAverage', 'ArrayIf'), 'sequenceCountArrayIf': ('sequenceCount', 'ArrayIf'), 'covarPopArrayIf': ('covarPop', 'ArrayIf'), 'retentionArrayIf': ('retention', 'ArrayIf'), 'quantilesExactWeightedArrayIf': ('quantilesExactWeighted', 'ArrayIf'), 'uniqArrayIf': ('uniq', 'ArrayIf'), 'argMaxArrayIf': ('argMax', 'ArrayIf'), 'topKArrayIf': ('topK', 'ArrayIf'), 'mannWhitneyUTestArrayIf': ('mannWhitneyUTest', 'ArrayIf'), 'cramersVBiasCorrectedArrayIf': ('cramersVBiasCorrected', 'ArrayIf'), 'histogramArrayIf': ('histogram', 'ArrayIf'), 'sumArrayIf': ('sum', 'ArrayIf'), 'quantileArrayIf': ('quantile', 'ArrayIf'), 'groupBitmapArrayIf': ('groupBitmap', 'ArrayIf'), 'anyHeavyArrayIf': ('anyHeavy', 'ArrayIf'), 'boundingRatioArrayIf': ('boundingRatio', 'ArrayIf'), 'groupBitOrArrayIf': ('groupBitOr', 'ArrayIf'), 'sumKahanArrayIf': ('sumKahan', 'ArrayIf'), 'categoricalInformationValueArrayIf': ('categoricalInformationValue', 'ArrayIf'), 'quantileTDigestWeightedArrayIf': ('quantileTDigestWeighted', 'ArrayIf'), 'groupArrayMovingSumArrayIf': ('groupArrayMovingSum', 'ArrayIf'), 'groupArraySampleArrayIf': ('groupArraySample', 'ArrayIf'), 'varPopArrayIf': ('varPop', 'ArrayIf'), 'quantileTimingWeightedArrayIf': ('quantileTimingWeighted', 'ArrayIf'), 'avgWeightedArrayIf': ('avgWeighted', 'ArrayIf'), 'quantileExactLowArrayIf': ('quantileExactLow', 'ArrayIf'), 'quantileDeterministicArrayIf': ('quantileDeterministic', 'ArrayIf'), 'stochasticLinearRegressionArrayIf': ('stochasticLinearRegression', 'ArrayIf'), 'quantileBFloat16ArrayIf': ('quantileBFloat16', 'ArrayIf'), 'last_valueArrayIf': ('last_value', 'ArrayIf'), 'sumCountArrayIf': ('sumCount', 'ArrayIf'), 'groupArrayLastArrayIf': ('groupArrayLast', 'ArrayIf'), 'kurtPopArrayIf': ('kurtPop', 'ArrayIf'), 'quantilesTimingArrayIf': ('quantilesTiming', 'ArrayIf'), 'maxIntersectionsPositionArrayIf': ('maxIntersectionsPosition', 'ArrayIf'), 'groupBitmapOrArrayIf': ('groupBitmapOr', 'ArrayIf'), 'rankCorrArrayIf': ('rankCorr', 'ArrayIf'), 'argMinArrayIf': ('argMin', 'ArrayIf'), 'largestTriangleThreeBucketsArrayIf': ('largestTriangleThreeBuckets', 'ArrayIf'), 'groupBitXorArrayIf': ('groupBitXor', 'ArrayIf'), 'quantileTDigestArrayIf': ('quantileTDigest', 'ArrayIf'), 'quantilesTDigestWeightedArrayIf': ('quantilesTDigestWeighted', 'ArrayIf'), 'sumMapArrayIf': ('sumMap', 'ArrayIf'), 'maxMapArrayIf': ('maxMap', 'ArrayIf'), 'skewSampArrayIf': ('skewSamp', 'ArrayIf'), 'anyLastArrayIf': ('anyLast', 'ArrayIf'), 'quantilesExactArrayIf': ('quantilesExact', 'ArrayIf'), 'uniqExactArrayIf': ('uniqExact', 'ArrayIf'), 'countArrayIf': ('count', 'ArrayIf'), 'quantilesTimingWeightedArrayIf': ('quantilesTimingWeighted', 'ArrayIf'), 'uniqHLL12ArrayIf': ('uniqHLL12', 'ArrayIf'), 'uniqThetaArrayIf': ('uniqTheta', 'ArrayIf'), 'minMapArrayIf': ('minMap', 'ArrayIf'), 'quantileTimingMap': ('quantileTiming', 'Map'), 'quantileInterpolatedWeightedMap': ('quantileInterpolatedWeighted', 'Map'), 'theilsUMap': ('theilsU', 'Map'), 'exponentialTimeDecayedAvgMap': ('exponentialTimeDecayedAvg', 'Map'), 'cramersVMap': ('cramersV', 'Map'), 'covarSampMap': ('covarSamp', 'Map'), 'topKWeightedMap': ('topKWeighted', 'Map'), 'quantilesBFloat16Map': ('quantilesBFloat16', 'Map'), 'sparkBarMap': ('sparkBar', 'Map'), 'minMap': ('minMap', ''), 'windowFunnelMap': ('windowFunnel', 'Map'), 'groupArrayMovingAvgMap': ('groupArrayMovingAvg', 'Map'), 'groupArrayMap': ('groupArray', 'Map'), 'uniqCombined64Map': ('uniqCombined64', 'Map'), 'groupBitmapXorMap': ('groupBitmapXor', 'Map'), 'sequenceMatchMap': ('sequenceMatch', 'Map'), 'groupBitmapAndMap': ('groupBitmapAnd', 'Map'), 'groupUniqArrayMap': ('groupUniqArray', 'Map'), 'quantilesDeterministicMap': ('quantilesDeterministic', 'Map'), 'quantilesExactLowMap': ('quantilesExactLow', 'Map'), 'contingencyMap': ('contingency', 'Map'), 'avgMap': ('avg', 'Map'), 'welchTTestMap': ('welchTTest', 'Map'), 'meanZTestMap': ('meanZTest', 'Map'), 'stddevSampMap': ('stddevSamp', 'Map'), 'kolmogorovSmirnovTestMap': ('kolmogorovSmirnovTest', 'Map'), 'groupArrayInsertAtMap': ('groupArrayInsertAt', 'Map'), 'corrMap': ('corr', 'Map'), 'groupBitAndMap': ('groupBitAnd', 'Map'), 'sumWithOverflowMap': ('sumWithOverflow', 'Map'), 'anyMap': ('any', 'Map'), 'kurtSampMap': ('kurtSamp', 'Map'), 'quantilesInterpolatedWeightedMap': ('quantilesInterpolatedWeighted', 'Map'), 'quantileGKMap': ('quantileGK', 'Map'), 'deltaSumTimestampMap': ('deltaSumTimestamp', 'Map'), 'simpleLinearRegressionMap': ('simpleLinearRegression', 'Map'), 'quantilesTDigestMap': ('quantilesTDigest', 'Map'), 'uniqUpToMap': ('uniqUpTo', 'Map'), 'deltaSumMap': ('deltaSum', 'Map'), 'stddevPopMap': ('stddevPop', 'Map'), 'maxMap': ('maxMap', ''), 'quantilesMap': ('quantiles', 'Map'), 'medianMap': ('median', 'Map'), 'varSampMap': ('varSamp', 'Map'), 'quantileBFloat16WeightedMap': ('quantileBFloat16Weighted', 'Map'), 'quantilesExactHighMap': ('quantilesExactHigh', 'Map'), 'quantilesBFloat16WeightedMap': ('quantilesBFloat16Weighted', 'Map'), 'quantileExactWeightedMap': ('quantileExactWeighted', 'Map'), 'intervalLengthSumMap': ('intervalLengthSum', 'Map'), 'first_valueMap': ('first_value', 'Map'), 'studentTTestMap': ('studentTTest', 'Map'), 'stochasticLogisticRegressionMap': ('stochasticLogisticRegression', 'Map'), 'skewPopMap': ('skewPop', 'Map'), 'sequenceNextNodeMap': ('sequenceNextNode', 'Map'), 'entropyMap': ('entropy', 'Map'), 'maxIntersectionsMap': ('maxIntersections', 'Map'), 'quantileExactHighMap': ('quantileExactHigh', 'Map'), 'quantileExactMap': ('quantileExact', 'Map'), 'quantilesGKMap': ('quantilesGK', 'Map'), 'uniqCombinedMap': ('uniqCombined', 'Map'), 'exponentialMovingAverageMap': ('exponentialMovingAverage', 'Map'), 'sequenceCountMap': ('sequenceCount', 'Map'), 'covarPopMap': ('covarPop', 'Map'), 'retentionMap': ('retention', 'Map'), 'quantilesExactWeightedMap': ('quantilesExactWeighted', 'Map'), 'uniqMap': ('uniq', 'Map'), 'argMaxMap': ('argMax', 'Map'), 'topKMap': ('topK', 'Map'), 'mannWhitneyUTestMap': ('mannWhitneyUTest', 'Map'), 'cramersVBiasCorrectedMap': ('cramersVBiasCorrected', 'Map'), 'histogramMap': ('histogram', 'Map'), 'sumMap': ('sumMap', ''), 'quantileMap': ('quantile', 'Map'), 'groupBitmapMap': ('groupBitmap', 'Map'), 'anyHeavyMap': ('anyHeavy', 'Map'), 'boundingRatioMap': ('boundingRatio', 'Map'), 'groupBitOrMap': ('groupBitOr', 'Map'), 'sumKahanMap': ('sumKahan', 'Map'), 'categoricalInformationValueMap': ('categoricalInformationValue', 'Map'), 'quantileTDigestWeightedMap': ('quantileTDigestWeighted', 'Map'), 'groupArrayMovingSumMap': ('groupArrayMovingSum', 'Map'), 'groupArraySampleMap': ('groupArraySample', 'Map'), 'varPopMap': ('varPop', 'Map'), 'quantileTimingWeightedMap': ('quantileTimingWeighted', 'Map'), 'avgWeightedMap': ('avgWeighted', 'Map'), 'quantileExactLowMap': ('quantileExactLow', 'Map'), 'quantileDeterministicMap': ('quantileDeterministic', 'Map'), 'stochasticLinearRegressionMap': ('stochasticLinearRegression', 'Map'), 'quantileBFloat16Map': ('quantileBFloat16', 'Map'), 'last_valueMap': ('last_value', 'Map'), 'sumCountMap': ('sumCount', 'Map'), 'groupArrayLastMap': ('groupArrayLast', 'Map'), 'kurtPopMap': ('kurtPop', 'Map'), 'quantilesTimingMap': ('quantilesTiming', 'Map'), 'maxIntersectionsPositionMap': ('maxIntersectionsPosition', 'Map'), 'groupBitmapOrMap': ('groupBitmapOr', 'Map'), 'rankCorrMap': ('rankCorr', 'Map'), 'argMinMap': ('argMin', 'Map'), 'largestTriangleThreeBucketsMap': ('largestTriangleThreeBuckets', 'Map'), 'groupBitXorMap': ('groupBitXor', 'Map'), 'quantileTDigestMap': ('quantileTDigest', 'Map'), 'quantilesTDigestWeightedMap': ('quantilesTDigestWeighted', 'Map'), 'sumMapMap': ('sumMap', 'Map'), 'maxMapMap': ('maxMap', 'Map'), 'skewSampMap': ('skewSamp', 'Map'), 'anyLastMap': ('anyLast', 'Map'), 'quantilesExactMap': ('quantilesExact', 'Map'), 'uniqExactMap': ('uniqExact', 'Map'), 'countMap': ('count', 'Map'), 'quantilesTimingWeightedMap': ('quantilesTimingWeighted', 'Map'), 'uniqHLL12Map': ('uniqHLL12', 'Map'), 'uniqThetaMap': ('uniqTheta', 'Map'), 'minMapMap': ('minMap', 'Map'), 'quantileTimingSimpleState': ('quantileTiming', 'SimpleState'), 'quantileInterpolatedWeightedSimpleState': ('quantileInterpolatedWeighted', 'SimpleState'), 'theilsUSimpleState': ('theilsU', 'SimpleState'), 'exponentialTimeDecayedAvgSimpleState': ('exponentialTimeDecayedAvg', 'SimpleState'), 'cramersVSimpleState': ('cramersV', 'SimpleState'), 'covarSampSimpleState': ('covarSamp', 'SimpleState'), 'topKWeightedSimpleState': ('topKWeighted', 'SimpleState'), 'quantilesBFloat16SimpleState': ('quantilesBFloat16', 'SimpleState'), 'sparkBarSimpleState': ('sparkBar', 'SimpleState'), 'minSimpleState': ('min', 'SimpleState'), 'windowFunnelSimpleState': ('windowFunnel', 'SimpleState'), 'groupArrayMovingAvgSimpleState': ('groupArrayMovingAvg', 'SimpleState'), 'groupArraySimpleState': ('groupArray', 'SimpleState'), 'uniqCombined64SimpleState': ('uniqCombined64', 'SimpleState'), 'groupBitmapXorSimpleState': ('groupBitmapXor', 'SimpleState'), 'sequenceMatchSimpleState': ('sequenceMatch', 'SimpleState'), 'groupBitmapAndSimpleState': ('groupBitmapAnd', 'SimpleState'), 'groupUniqArraySimpleState': ('groupUniqArray', 'SimpleState'), 'quantilesDeterministicSimpleState': ('quantilesDeterministic', 'SimpleState'), 'quantilesExactLowSimpleState': ('quantilesExactLow', 'SimpleState'), 'contingencySimpleState': ('contingency', 'SimpleState'), 'avgSimpleState': ('avg', 'SimpleState'), 'welchTTestSimpleState': ('welchTTest', 'SimpleState'), 'meanZTestSimpleState': ('meanZTest', 'SimpleState'), 'stddevSampSimpleState': ('stddevSamp', 'SimpleState'), 'kolmogorovSmirnovTestSimpleState': ('kolmogorovSmirnovTest', 'SimpleState'), 'groupArrayInsertAtSimpleState': ('groupArrayInsertAt', 'SimpleState'), 'corrSimpleState': ('corr', 'SimpleState'), 'groupBitAndSimpleState': ('groupBitAnd', 'SimpleState'), 'sumWithOverflowSimpleState': ('sumWithOverflow', 'SimpleState'), 'anySimpleState': ('any', 'SimpleState'), 'kurtSampSimpleState': ('kurtSamp', 'SimpleState'), 'quantilesInterpolatedWeightedSimpleState': ('quantilesInterpolatedWeighted', 'SimpleState'), 'quantileGKSimpleState': ('quantileGK', 'SimpleState'), 'deltaSumTimestampSimpleState': ('deltaSumTimestamp', 'SimpleState'), 'simpleLinearRegressionSimpleState': ('simpleLinearRegression', 'SimpleState'), 'quantilesTDigestSimpleState': ('quantilesTDigest', 'SimpleState'), 'uniqUpToSimpleState': ('uniqUpTo', 'SimpleState'), 'deltaSumSimpleState': ('deltaSum', 'SimpleState'), 'stddevPopSimpleState': ('stddevPop', 'SimpleState'), 'maxSimpleState': ('max', 'SimpleState'), 'quantilesSimpleState': ('quantiles', 'SimpleState'), 'medianSimpleState': ('median', 'SimpleState'), 'varSampSimpleState': ('varSamp', 'SimpleState'), 'quantileBFloat16WeightedSimpleState': ('quantileBFloat16Weighted', 'SimpleState'), 'quantilesExactHighSimpleState': ('quantilesExactHigh', 'SimpleState'), 'quantilesBFloat16WeightedSimpleState': ('quantilesBFloat16Weighted', 'SimpleState'), 'quantileExactWeightedSimpleState': ('quantileExactWeighted', 'SimpleState'), 'intervalLengthSumSimpleState': ('intervalLengthSum', 'SimpleState'), 'first_valueSimpleState': ('first_value', 'SimpleState'), 'studentTTestSimpleState': ('studentTTest', 'SimpleState'), 'stochasticLogisticRegressionSimpleState': ('stochasticLogisticRegression', 'SimpleState'), 'skewPopSimpleState': ('skewPop', 'SimpleState'), 'sequenceNextNodeSimpleState': ('sequenceNextNode', 'SimpleState'), 'entropySimpleState': ('entropy', 'SimpleState'), 'maxIntersectionsSimpleState': ('maxIntersections', 'SimpleState'), 'quantileExactHighSimpleState': ('quantileExactHigh', 'SimpleState'), 'quantileExactSimpleState': ('quantileExact', 'SimpleState'), 'quantilesGKSimpleState': ('quantilesGK', 'SimpleState'), 'uniqCombinedSimpleState': ('uniqCombined', 'SimpleState'), 'exponentialMovingAverageSimpleState': ('exponentialMovingAverage', 'SimpleState'), 'sequenceCountSimpleState': ('sequenceCount', 'SimpleState'), 'covarPopSimpleState': ('covarPop', 'SimpleState'), 'retentionSimpleState': ('retention', 'SimpleState'), 'quantilesExactWeightedSimpleState': ('quantilesExactWeighted', 'SimpleState'), 'uniqSimpleState': ('uniq', 'SimpleState'), 'argMaxSimpleState': ('argMax', 'SimpleState'), 'topKSimpleState': ('topK', 'SimpleState'), 'mannWhitneyUTestSimpleState': ('mannWhitneyUTest', 'SimpleState'), 'cramersVBiasCorrectedSimpleState': ('cramersVBiasCorrected', 'SimpleState'), 'histogramSimpleState': ('histogram', 'SimpleState'), 'sumSimpleState': ('sum', 'SimpleState'), 'quantileSimpleState': ('quantile', 'SimpleState'), 'groupBitmapSimpleState': ('groupBitmap', 'SimpleState'), 'anyHeavySimpleState': ('anyHeavy', 'SimpleState'), 'boundingRatioSimpleState': ('boundingRatio', 'SimpleState'), 'groupBitOrSimpleState': ('groupBitOr', 'SimpleState'), 'sumKahanSimpleState': ('sumKahan', 'SimpleState'), 'categoricalInformationValueSimpleState': ('categoricalInformationValue', 'SimpleState'), 'quantileTDigestWeightedSimpleState': ('quantileTDigestWeighted', 'SimpleState'), 'groupArrayMovingSumSimpleState': ('groupArrayMovingSum', 'SimpleState'), 'groupArraySampleSimpleState': ('groupArraySample', 'SimpleState'), 'varPopSimpleState': ('varPop', 'SimpleState'), 'quantileTimingWeightedSimpleState': ('quantileTimingWeighted', 'SimpleState'), 'avgWeightedSimpleState': ('avgWeighted', 'SimpleState'), 'quantileExactLowSimpleState': ('quantileExactLow', 'SimpleState'), 'quantileDeterministicSimpleState': ('quantileDeterministic', 'SimpleState'), 'stochasticLinearRegressionSimpleState': ('stochasticLinearRegression', 'SimpleState'), 'quantileBFloat16SimpleState': ('quantileBFloat16', 'SimpleState'), 'last_valueSimpleState': ('last_value', 'SimpleState'), 'sumCountSimpleState': ('sumCount', 'SimpleState'), 'groupArrayLastSimpleState': ('groupArrayLast', 'SimpleState'), 'kurtPopSimpleState': ('kurtPop', 'SimpleState'), 'quantilesTimingSimpleState': ('quantilesTiming', 'SimpleState'), 'maxIntersectionsPositionSimpleState': ('maxIntersectionsPosition', 'SimpleState'), 'groupBitmapOrSimpleState': ('groupBitmapOr', 'SimpleState'), 'rankCorrSimpleState': ('rankCorr', 'SimpleState'), 'argMinSimpleState': ('argMin', 'SimpleState'), 'largestTriangleThreeBucketsSimpleState': ('largestTriangleThreeBuckets', 'SimpleState'), 'groupBitXorSimpleState': ('groupBitXor', 'SimpleState'), 'quantileTDigestSimpleState': ('quantileTDigest', 'SimpleState'), 'quantilesTDigestWeightedSimpleState': ('quantilesTDigestWeighted', 'SimpleState'), 'sumMapSimpleState': ('sumMap', 'SimpleState'), 'maxMapSimpleState': ('maxMap', 'SimpleState'), 'skewSampSimpleState': ('skewSamp', 'SimpleState'), 'anyLastSimpleState': ('anyLast', 'SimpleState'), 'quantilesExactSimpleState': ('quantilesExact', 'SimpleState'), 'uniqExactSimpleState': ('uniqExact', 'SimpleState'), 'countSimpleState': ('count', 'SimpleState'), 'quantilesTimingWeightedSimpleState': ('quantilesTimingWeighted', 'SimpleState'), 'uniqHLL12SimpleState': ('uniqHLL12', 'SimpleState'), 'uniqThetaSimpleState': ('uniqTheta', 'SimpleState'), 'minMapSimpleState': ('minMap', 'SimpleState'), 'quantileTimingState': ('quantileTiming', 'State'), 'quantileInterpolatedWeightedState': ('quantileInterpolatedWeighted', 'State'), 'theilsUState': ('theilsU', 'State'), 'exponentialTimeDecayedAvgState': ('exponentialTimeDecayedAvg', 'State'), 'cramersVState': ('cramersV', 'State'), 'covarSampState': ('covarSamp', 'State'), 'topKWeightedState': ('topKWeighted', 'State'), 'quantilesBFloat16State': ('quantilesBFloat16', 'State'), 'sparkBarState': ('sparkBar', 'State'), 'minState': ('min', 'State'), 'windowFunnelState': ('windowFunnel', 'State'), 'groupArrayMovingAvgState': ('groupArrayMovingAvg', 'State'), 'groupArrayState': ('groupArray', 'State'), 'uniqCombined64State': ('uniqCombined64', 'State'), 'groupBitmapXorState': ('groupBitmapXor', 'State'), 'sequenceMatchState': ('sequenceMatch', 'State'), 'groupBitmapAndState': ('groupBitmapAnd', 'State'), 'groupUniqArrayState': ('groupUniqArray', 'State'), 'quantilesDeterministicState': ('quantilesDeterministic', 'State'), 'quantilesExactLowState': ('quantilesExactLow', 'State'), 'contingencyState': ('contingency', 'State'), 'avgState': ('avg', 'State'), 'welchTTestState': ('welchTTest', 'State'), 'meanZTestState': ('meanZTest', 'State'), 'stddevSampState': ('stddevSamp', 'State'), 'kolmogorovSmirnovTestState': ('kolmogorovSmirnovTest', 'State'), 'groupArrayInsertAtState': ('groupArrayInsertAt', 'State'), 'corrState': ('corr', 'State'), 'groupBitAndState': ('groupBitAnd', 'State'), 'sumWithOverflowState': ('sumWithOverflow', 'State'), 'anyState': ('any', 'State'), 'kurtSampState': ('kurtSamp', 'State'), 'quantilesInterpolatedWeightedState': ('quantilesInterpolatedWeighted', 'State'), 'quantileGKState': ('quantileGK', 'State'), 'deltaSumTimestampState': ('deltaSumTimestamp', 'State'), 'simpleLinearRegressionState': ('simpleLinearRegression', 'State'), 'quantilesTDigestState': ('quantilesTDigest', 'State'), 'uniqUpToState': ('uniqUpTo', 'State'), 'deltaSumState': ('deltaSum', 'State'), 'stddevPopState': ('stddevPop', 'State'), 'maxState': ('max', 'State'), 'quantilesState': ('quantiles', 'State'), 'medianState': ('median', 'State'), 'varSampState': ('varSamp', 'State'), 'quantileBFloat16WeightedState': ('quantileBFloat16Weighted', 'State'), 'quantilesExactHighState': ('quantilesExactHigh', 'State'), 'quantilesBFloat16WeightedState': ('quantilesBFloat16Weighted', 'State'), 'quantileExactWeightedState': ('quantileExactWeighted', 'State'), 'intervalLengthSumState': ('intervalLengthSum', 'State'), 'first_valueState': ('first_value', 'State'), 'studentTTestState': ('studentTTest', 'State'), 'stochasticLogisticRegressionState': ('stochasticLogisticRegression', 'State'), 'skewPopState': ('skewPop', 'State'), 'sequenceNextNodeState': ('sequenceNextNode', 'State'), 'entropyState': ('entropy', 'State'), 'maxIntersectionsState': ('maxIntersections', 'State'), 'quantileExactHighState': ('quantileExactHigh', 'State'), 'quantileExactState': ('quantileExact', 'State'), 'quantilesGKState': ('quantilesGK', 'State'), 'uniqCombinedState': ('uniqCombined', 'State'), 'exponentialMovingAverageState': ('exponentialMovingAverage', 'State'), 'sequenceCountState': ('sequenceCount', 'State'), 'covarPopState': ('covarPop', 'State'), 'retentionState': ('retention', 'State'), 'quantilesExactWeightedState': ('quantilesExactWeighted', 'State'), 'uniqState': ('uniq', 'State'), 'argMaxState': ('argMax', 'State'), 'topKState': ('topK', 'State'), 'mannWhitneyUTestState': ('mannWhitneyUTest', 'State'), 'cramersVBiasCorrectedState': ('cramersVBiasCorrected', 'State'), 'histogramState': ('histogram', 'State'), 'sumState': ('sum', 'State'), 'quantileState': ('quantile', 'State'), 'groupBitmapState': ('groupBitmap', 'State'), 'anyHeavyState': ('anyHeavy', 'State'), 'boundingRatioState': ('boundingRatio', 'State'), 'groupBitOrState': ('groupBitOr', 'State'), 'sumKahanState': ('sumKahan', 'State'), 'categoricalInformationValueState': ('categoricalInformationValue', 'State'), 'quantileTDigestWeightedState': ('quantileTDigestWeighted', 'State'), 'groupArrayMovingSumState': ('groupArrayMovingSum', 'State'), 'groupArraySampleState': ('groupArraySample', 'State'), 'varPopState': ('varPop', 'State'), 'quantileTimingWeightedState': ('quantileTimingWeighted', 'State'), 'avgWeightedState': ('avgWeighted', 'State'), 'quantileExactLowState': ('quantileExactLow', 'State'), 'quantileDeterministicState': ('quantileDeterministic', 'State'), 'stochasticLinearRegressionState': ('stochasticLinearRegression', 'State'), 'quantileBFloat16State': ('quantileBFloat16', 'State'), 'last_valueState': ('last_value', 'State'), 'sumCountState': ('sumCount', 'State'), 'groupArrayLastState': ('groupArrayLast', 'State'), 'kurtPopState': ('kurtPop', 'State'), 'quantilesTimingState': ('quantilesTiming', 'State'), 'maxIntersectionsPositionState': ('maxIntersectionsPosition', 'State'), 'groupBitmapOrState': ('groupBitmapOr', 'State'), 'rankCorrState': ('rankCorr', 'State'), 'argMinState': ('argMin', 'State'), 'largestTriangleThreeBucketsState': ('largestTriangleThreeBuckets', 'State'), 'groupBitXorState': ('groupBitXor', 'State'), 'quantileTDigestState': ('quantileTDigest', 'State'), 'quantilesTDigestWeightedState': ('quantilesTDigestWeighted', 'State'), 'sumMapState': ('sumMap', 'State'), 'maxMapState': ('maxMap', 'State'), 'skewSampState': ('skewSamp', 'State'), 'anyLastState': ('anyLast', 'State'), 'quantilesExactState': ('quantilesExact', 'State'), 'uniqExactState': ('uniqExact', 'State'), 'countState': ('count', 'State'), 'quantilesTimingWeightedState': ('quantilesTimingWeighted', 'State'), 'uniqHLL12State': ('uniqHLL12', 'State'), 'uniqThetaState': ('uniqTheta', 'State'), 'minMapState': ('minMap', 'State'), 'quantileTimingMerge': ('quantileTiming', 'Merge'), 'quantileInterpolatedWeightedMerge': ('quantileInterpolatedWeighted', 'Merge'), 'theilsUMerge': ('theilsU', 'Merge'), 'exponentialTimeDecayedAvgMerge': ('exponentialTimeDecayedAvg', 'Merge'), 'cramersVMerge': ('cramersV', 'Merge'), 'covarSampMerge': ('covarSamp', 'Merge'), 'topKWeightedMerge': ('topKWeighted', 'Merge'), 'quantilesBFloat16Merge': ('quantilesBFloat16', 'Merge'), 'sparkBarMerge': ('sparkBar', 'Merge'), 'minMerge': ('min', 'Merge'), 'windowFunnelMerge': ('windowFunnel', 'Merge'), 'groupArrayMovingAvgMerge': ('groupArrayMovingAvg', 'Merge'), 'groupArrayMerge': ('groupArray', 'Merge'), 'uniqCombined64Merge': ('uniqCombined64', 'Merge'), 'groupBitmapXorMerge': ('groupBitmapXor', 'Merge'), 'sequenceMatchMerge': ('sequenceMatch', 'Merge'), 'groupBitmapAndMerge': ('groupBitmapAnd', 'Merge'), 'groupUniqArrayMerge': ('groupUniqArray', 'Merge'), 'quantilesDeterministicMerge': ('quantilesDeterministic', 'Merge'), 'quantilesExactLowMerge': ('quantilesExactLow', 'Merge'), 'contingencyMerge': ('contingency', 'Merge'), 'avgMerge': ('avg', 'Merge'), 'welchTTestMerge': ('welchTTest', 'Merge'), 'meanZTestMerge': ('meanZTest', 'Merge'), 'stddevSampMerge': ('stddevSamp', 'Merge'), 'kolmogorovSmirnovTestMerge': ('kolmogorovSmirnovTest', 'Merge'), 'groupArrayInsertAtMerge': ('groupArrayInsertAt', 'Merge'), 'corrMerge': ('corr', 'Merge'), 'groupBitAndMerge': ('groupBitAnd', 'Merge'), 'sumWithOverflowMerge': ('sumWithOverflow', 'Merge'), 'anyMerge': ('any', 'Merge'), 'kurtSampMerge': ('kurtSamp', 'Merge'), 'quantilesInterpolatedWeightedMerge': ('quantilesInterpolatedWeighted', 'Merge'), 'quantileGKMerge': ('quantileGK', 'Merge'), 'deltaSumTimestampMerge': ('deltaSumTimestamp', 'Merge'), 'simpleLinearRegressionMerge': ('simpleLinearRegression', 'Merge'), 'quantilesTDigestMerge': ('quantilesTDigest', 'Merge'), 'uniqUpToMerge': ('uniqUpTo', 'Merge'), 'deltaSumMerge': ('deltaSum', 'Merge'), 'stddevPopMerge': ('stddevPop', 'Merge'), 'maxMerge': ('max', 'Merge'), 'quantilesMerge': ('quantiles', 'Merge'), 'medianMerge': ('median', 'Merge'), 'varSampMerge': ('varSamp', 'Merge'), 'quantileBFloat16WeightedMerge': ('quantileBFloat16Weighted', 'Merge'), 'quantilesExactHighMerge': ('quantilesExactHigh', 'Merge'), 'quantilesBFloat16WeightedMerge': ('quantilesBFloat16Weighted', 'Merge'), 'quantileExactWeightedMerge': ('quantileExactWeighted', 'Merge'), 'intervalLengthSumMerge': ('intervalLengthSum', 'Merge'), 'first_valueMerge': ('first_value', 'Merge'), 'studentTTestMerge': ('studentTTest', 'Merge'), 'stochasticLogisticRegressionMerge': ('stochasticLogisticRegression', 'Merge'), 'skewPopMerge': ('skewPop', 'Merge'), 'sequenceNextNodeMerge': ('sequenceNextNode', 'Merge'), 'entropyMerge': ('entropy', 'Merge'), 'maxIntersectionsMerge': ('maxIntersections', 'Merge'), 'quantileExactHighMerge': ('quantileExactHigh', 'Merge'), 'quantileExactMerge': ('quantileExact', 'Merge'), 'quantilesGKMerge': ('quantilesGK', 'Merge'), 'uniqCombinedMerge': ('uniqCombined', 'Merge'), 'exponentialMovingAverageMerge': ('exponentialMovingAverage', 'Merge'), 'sequenceCountMerge': ('sequenceCount', 'Merge'), 'covarPopMerge': ('covarPop', 'Merge'), 'retentionMerge': ('retention', 'Merge'), 'quantilesExactWeightedMerge': ('quantilesExactWeighted', 'Merge'), 'uniqMerge': ('uniq', 'Merge'), 'argMaxMerge': ('argMax', 'Merge'), 'topKMerge': ('topK', 'Merge'), 'mannWhitneyUTestMerge': ('mannWhitneyUTest', 'Merge'), 'cramersVBiasCorrectedMerge': ('cramersVBiasCorrected', 'Merge'), 'histogramMerge': ('histogram', 'Merge'), 'sumMerge': ('sum', 'Merge'), 'quantileMerge': ('quantile', 'Merge'), 'groupBitmapMerge': ('groupBitmap', 'Merge'), 'anyHeavyMerge': ('anyHeavy', 'Merge'), 'boundingRatioMerge': ('boundingRatio', 'Merge'), 'groupBitOrMerge': ('groupBitOr', 'Merge'), 'sumKahanMerge': ('sumKahan', 'Merge'), 'categoricalInformationValueMerge': ('categoricalInformationValue', 'Merge'), 'quantileTDigestWeightedMerge': ('quantileTDigestWeighted', 'Merge'), 'groupArrayMovingSumMerge': ('groupArrayMovingSum', 'Merge'), 'groupArraySampleMerge': ('groupArraySample', 'Merge'), 'varPopMerge': ('varPop', 'Merge'), 'quantileTimingWeightedMerge': ('quantileTimingWeighted', 'Merge'), 'avgWeightedMerge': ('avgWeighted', 'Merge'), 'quantileExactLowMerge': ('quantileExactLow', 'Merge'), 'quantileDeterministicMerge': ('quantileDeterministic', 'Merge'), 'stochasticLinearRegressionMerge': ('stochasticLinearRegression', 'Merge'), 'quantileBFloat16Merge': ('quantileBFloat16', 'Merge'), 'last_valueMerge': ('last_value', 'Merge'), 'sumCountMerge': ('sumCount', 'Merge'), 'groupArrayLastMerge': ('groupArrayLast', 'Merge'), 'kurtPopMerge': ('kurtPop', 'Merge'), 'quantilesTimingMerge': ('quantilesTiming', 'Merge'), 'maxIntersectionsPositionMerge': ('maxIntersectionsPosition', 'Merge'), 'groupBitmapOrMerge': ('groupBitmapOr', 'Merge'), 'rankCorrMerge': ('rankCorr', 'Merge'), 'argMinMerge': ('argMin', 'Merge'), 'largestTriangleThreeBucketsMerge': ('largestTriangleThreeBuckets', 'Merge'), 'groupBitXorMerge': ('groupBitXor', 'Merge'), 'quantileTDigestMerge': ('quantileTDigest', 'Merge'), 'quantilesTDigestWeightedMerge': ('quantilesTDigestWeighted', 'Merge'), 'sumMapMerge': ('sumMap', 'Merge'), 'maxMapMerge': ('maxMap', 'Merge'), 'skewSampMerge': ('skewSamp', 'Merge'), 'anyLastMerge': ('anyLast', 'Merge'), 'quantilesExactMerge': ('quantilesExact', 'Merge'), 'uniqExactMerge': ('uniqExact', 'Merge'), 'countMerge': ('count', 'Merge'), 'quantilesTimingWeightedMerge': ('quantilesTimingWeighted', 'Merge'), 'uniqHLL12Merge': ('uniqHLL12', 'Merge'), 'uniqThetaMerge': ('uniqTheta', 'Merge'), 'minMapMerge': ('minMap', 'Merge'), 'quantileTimingMergeState': ('quantileTiming', 'MergeState'), 'quantileInterpolatedWeightedMergeState': ('quantileInterpolatedWeighted', 'MergeState'), 'theilsUMergeState': ('theilsU', 'MergeState'), 'exponentialTimeDecayedAvgMergeState': ('exponentialTimeDecayedAvg', 'MergeState'), 'cramersVMergeState': ('cramersV', 'MergeState'), 'covarSampMergeState': ('covarSamp', 'MergeState'), 'topKWeightedMergeState': ('topKWeighted', 'MergeState'), 'quantilesBFloat16MergeState': ('quantilesBFloat16', 'MergeState'), 'sparkBarMergeState': ('sparkBar', 'MergeState'), 'minMergeState': ('min', 'MergeState'), 'windowFunnelMergeState': ('windowFunnel', 'MergeState'), 'groupArrayMovingAvgMergeState': ('groupArrayMovingAvg', 'MergeState'), 'groupArrayMergeState': ('groupArray', 'MergeState'), 'uniqCombined64MergeState': ('uniqCombined64', 'MergeState'), 'groupBitmapXorMergeState': ('groupBitmapXor', 'MergeState'), 'sequenceMatchMergeState': ('sequenceMatch', 'MergeState'), 'groupBitmapAndMergeState': ('groupBitmapAnd', 'MergeState'), 'groupUniqArrayMergeState': ('groupUniqArray', 'MergeState'), 'quantilesDeterministicMergeState': ('quantilesDeterministic', 'MergeState'), 'quantilesExactLowMergeState': ('quantilesExactLow', 'MergeState'), 'contingencyMergeState': ('contingency', 'MergeState'), 'avgMergeState': ('avg', 'MergeState'), 'welchTTestMergeState': ('welchTTest', 'MergeState'), 'meanZTestMergeState': ('meanZTest', 'MergeState'), 'stddevSampMergeState': ('stddevSamp', 'MergeState'), 'kolmogorovSmirnovTestMergeState': ('kolmogorovSmirnovTest', 'MergeState'), 'groupArrayInsertAtMergeState': ('groupArrayInsertAt', 'MergeState'), 'corrMergeState': ('corr', 'MergeState'), 'groupBitAndMergeState': ('groupBitAnd', 'MergeState'), 'sumWithOverflowMergeState': ('sumWithOverflow', 'MergeState'), 'anyMergeState': ('any', 'MergeState'), 'kurtSampMergeState': ('kurtSamp', 'MergeState'), 'quantilesInterpolatedWeightedMergeState': ('quantilesInterpolatedWeighted', 'MergeState'), 'quantileGKMergeState': ('quantileGK', 'MergeState'), 'deltaSumTimestampMergeState': ('deltaSumTimestamp', 'MergeState'), 'simpleLinearRegressionMergeState': ('simpleLinearRegression', 'MergeState'), 'quantilesTDigestMergeState': ('quantilesTDigest', 'MergeState'), 'uniqUpToMergeState': ('uniqUpTo', 'MergeState'), 'deltaSumMergeState': ('deltaSum', 'MergeState'), 'stddevPopMergeState': ('stddevPop', 'MergeState'), 'maxMergeState': ('max', 'MergeState'), 'quantilesMergeState': ('quantiles', 'MergeState'), 'medianMergeState': ('median', 'MergeState'), 'varSampMergeState': ('varSamp', 'MergeState'), 'quantileBFloat16WeightedMergeState': ('quantileBFloat16Weighted', 'MergeState'), 'quantilesExactHighMergeState': ('quantilesExactHigh', 'MergeState'), 'quantilesBFloat16WeightedMergeState': ('quantilesBFloat16Weighted', 'MergeState'), 'quantileExactWeightedMergeState': ('quantileExactWeighted', 'MergeState'), 'intervalLengthSumMergeState': ('intervalLengthSum', 'MergeState'), 'first_valueMergeState': ('first_value', 'MergeState'), 'studentTTestMergeState': ('studentTTest', 'MergeState'), 'stochasticLogisticRegressionMergeState': ('stochasticLogisticRegression', 'MergeState'), 'skewPopMergeState': ('skewPop', 'MergeState'), 'sequenceNextNodeMergeState': ('sequenceNextNode', 'MergeState'), 'entropyMergeState': ('entropy', 'MergeState'), 'maxIntersectionsMergeState': ('maxIntersections', 'MergeState'), 'quantileExactHighMergeState': ('quantileExactHigh', 'MergeState'), 'quantileExactMergeState': ('quantileExact', 'MergeState'), 'quantilesGKMergeState': ('quantilesGK', 'MergeState'), 'uniqCombinedMergeState': ('uniqCombined', 'MergeState'), 'exponentialMovingAverageMergeState': ('exponentialMovingAverage', 'MergeState'), 'sequenceCountMergeState': ('sequenceCount', 'MergeState'), 'covarPopMergeState': ('covarPop', 'MergeState'), 'retentionMergeState': ('retention', 'MergeState'), 'quantilesExactWeightedMergeState': ('quantilesExactWeighted', 'MergeState'), 'uniqMergeState': ('uniq', 'MergeState'), 'argMaxMergeState': ('argMax', 'MergeState'), 'topKMergeState': ('topK', 'MergeState'), 'mannWhitneyUTestMergeState': ('mannWhitneyUTest', 'MergeState'), 'cramersVBiasCorrectedMergeState': ('cramersVBiasCorrected', 'MergeState'), 'histogramMergeState': ('histogram', 'MergeState'), 'sumMergeState': ('sum', 'MergeState'), 'quantileMergeState': ('quantile', 'MergeState'), 'groupBitmapMergeState': ('groupBitmap', 'MergeState'), 'anyHeavyMergeState': ('anyHeavy', 'MergeState'), 'boundingRatioMergeState': ('boundingRatio', 'MergeState'), 'groupBitOrMergeState': ('groupBitOr', 'MergeState'), 'sumKahanMergeState': ('sumKahan', 'MergeState'), 'categoricalInformationValueMergeState': ('categoricalInformationValue', 'MergeState'), 'quantileTDigestWeightedMergeState': ('quantileTDigestWeighted', 'MergeState'), 'groupArrayMovingSumMergeState': ('groupArrayMovingSum', 'MergeState'), 'groupArraySampleMergeState': ('groupArraySample', 'MergeState'), 'varPopMergeState': ('varPop', 'MergeState'), 'quantileTimingWeightedMergeState': ('quantileTimingWeighted', 'MergeState'), 'avgWeightedMergeState': ('avgWeighted', 'MergeState'), 'quantileExactLowMergeState': ('quantileExactLow', 'MergeState'), 'quantileDeterministicMergeState': ('quantileDeterministic', 'MergeState'), 'stochasticLinearRegressionMergeState': ('stochasticLinearRegression', 'MergeState'), 'quantileBFloat16MergeState': ('quantileBFloat16', 'MergeState'), 'last_valueMergeState': ('last_value', 'MergeState'), 'sumCountMergeState': ('sumCount', 'MergeState'), 'groupArrayLastMergeState': ('groupArrayLast', 'MergeState'), 'kurtPopMergeState': ('kurtPop', 'MergeState'), 'quantilesTimingMergeState': ('quantilesTiming', 'MergeState'), 'maxIntersectionsPositionMergeState': ('maxIntersectionsPosition', 'MergeState'), 'groupBitmapOrMergeState': ('groupBitmapOr', 'MergeState'), 'rankCorrMergeState': ('rankCorr', 'MergeState'), 'argMinMergeState': ('argMin', 'MergeState'), 'largestTriangleThreeBucketsMergeState': ('largestTriangleThreeBuckets', 'MergeState'), 'groupBitXorMergeState': ('groupBitXor', 'MergeState'), 'quantileTDigestMergeState': ('quantileTDigest', 'MergeState'), 'quantilesTDigestWeightedMergeState': ('quantilesTDigestWeighted', 'MergeState'), 'sumMapMergeState': ('sumMap', 'MergeState'), 'maxMapMergeState': ('maxMap', 'MergeState'), 'skewSampMergeState': ('skewSamp', 'MergeState'), 'anyLastMergeState': ('anyLast', 'MergeState'), 'quantilesExactMergeState': ('quantilesExact', 'MergeState'), 'uniqExactMergeState': ('uniqExact', 'MergeState'), 'countMergeState': ('count', 'MergeState'), 'quantilesTimingWeightedMergeState': ('quantilesTimingWeighted', 'MergeState'), 'uniqHLL12MergeState': ('uniqHLL12', 'MergeState'), 'uniqThetaMergeState': ('uniqTheta', 'MergeState'), 'minMapMergeState': ('minMap', 'MergeState'), 'quantileTimingForEach': ('quantileTiming', 'ForEach'), 'quantileInterpolatedWeightedForEach': ('quantileInterpolatedWeighted', 'ForEach'), 'theilsUForEach': ('theilsU', 'ForEach'), 'exponentialTimeDecayedAvgForEach': ('exponentialTimeDecayedAvg', 'ForEach'), 'cramersVForEach': ('cramersV', 'ForEach'), 'covarSampForEach': ('covarSamp', 'ForEach'), 'topKWeightedForEach': ('topKWeighted', 'ForEach'), 'quantilesBFloat16ForEach': ('quantilesBFloat16', 'ForEach'), 'sparkBarForEach': ('sparkBar', 'ForEach'), 'minForEach': ('min', 'ForEach'), 'windowFunnelForEach': ('windowFunnel', 'ForEach'), 'groupArrayMovingAvgForEach': ('groupArrayMovingAvg', 'ForEach'), 'groupArrayForEach': ('groupArray', 'ForEach'), 'uniqCombined64ForEach': ('uniqCombined64', 'ForEach'), 'groupBitmapXorForEach': ('groupBitmapXor', 'ForEach'), 'sequenceMatchForEach': ('sequenceMatch', 'ForEach'), 'groupBitmapAndForEach': ('groupBitmapAnd', 'ForEach'), 'groupUniqArrayForEach': ('groupUniqArray', 'ForEach'), 'quantilesDeterministicForEach': ('quantilesDeterministic', 'ForEach'), 'quantilesExactLowForEach': ('quantilesExactLow', 'ForEach'), 'contingencyForEach': ('contingency', 'ForEach'), 'avgForEach': ('avg', 'ForEach'), 'welchTTestForEach': ('welchTTest', 'ForEach'), 'meanZTestForEach': ('meanZTest', 'ForEach'), 'stddevSampForEach': ('stddevSamp', 'ForEach'), 'kolmogorovSmirnovTestForEach': ('kolmogorovSmirnovTest', 'ForEach'), 'groupArrayInsertAtForEach': ('groupArrayInsertAt', 'ForEach'), 'corrForEach': ('corr', 'ForEach'), 'groupBitAndForEach': ('groupBitAnd', 'ForEach'), 'sumWithOverflowForEach': ('sumWithOverflow', 'ForEach'), 'anyForEach': ('any', 'ForEach'), 'kurtSampForEach': ('kurtSamp', 'ForEach'), 'quantilesInterpolatedWeightedForEach': ('quantilesInterpolatedWeighted', 'ForEach'), 'quantileGKForEach': ('quantileGK', 'ForEach'), 'deltaSumTimestampForEach': ('deltaSumTimestamp', 'ForEach'), 'simpleLinearRegressionForEach': ('simpleLinearRegression', 'ForEach'), 'quantilesTDigestForEach': ('quantilesTDigest', 'ForEach'), 'uniqUpToForEach': ('uniqUpTo', 'ForEach'), 'deltaSumForEach': ('deltaSum', 'ForEach'), 'stddevPopForEach': ('stddevPop', 'ForEach'), 'maxForEach': ('max', 'ForEach'), 'quantilesForEach': ('quantiles', 'ForEach'), 'medianForEach': ('median', 'ForEach'), 'varSampForEach': ('varSamp', 'ForEach'), 'quantileBFloat16WeightedForEach': ('quantileBFloat16Weighted', 'ForEach'), 'quantilesExactHighForEach': ('quantilesExactHigh', 'ForEach'), 'quantilesBFloat16WeightedForEach': ('quantilesBFloat16Weighted', 'ForEach'), 'quantileExactWeightedForEach': ('quantileExactWeighted', 'ForEach'), 'intervalLengthSumForEach': ('intervalLengthSum', 'ForEach'), 'first_valueForEach': ('first_value', 'ForEach'), 'studentTTestForEach': ('studentTTest', 'ForEach'), 'stochasticLogisticRegressionForEach': ('stochasticLogisticRegression', 'ForEach'), 'skewPopForEach': ('skewPop', 'ForEach'), 'sequenceNextNodeForEach': ('sequenceNextNode', 'ForEach'), 'entropyForEach': ('entropy', 'ForEach'), 'maxIntersectionsForEach': ('maxIntersections', 'ForEach'), 'quantileExactHighForEach': ('quantileExactHigh', 'ForEach'), 'quantileExactForEach': ('quantileExact', 'ForEach'), 'quantilesGKForEach': ('quantilesGK', 'ForEach'), 'uniqCombinedForEach': ('uniqCombined', 'ForEach'), 'exponentialMovingAverageForEach': ('exponentialMovingAverage', 'ForEach'), 'sequenceCountForEach': ('sequenceCount', 'ForEach'), 'covarPopForEach': ('covarPop', 'ForEach'), 'retentionForEach': ('retention', 'ForEach'), 'quantilesExactWeightedForEach': ('quantilesExactWeighted', 'ForEach'), 'uniqForEach': ('uniq', 'ForEach'), 'argMaxForEach': ('argMax', 'ForEach'), 'topKForEach': ('topK', 'ForEach'), 'mannWhitneyUTestForEach': ('mannWhitneyUTest', 'ForEach'), 'cramersVBiasCorrectedForEach': ('cramersVBiasCorrected', 'ForEach'), 'histogramForEach': ('histogram', 'ForEach'), 'sumForEach': ('sum', 'ForEach'), 'quantileForEach': ('quantile', 'ForEach'), 'groupBitmapForEach': ('groupBitmap', 'ForEach'), 'anyHeavyForEach': ('anyHeavy', 'ForEach'), 'boundingRatioForEach': ('boundingRatio', 'ForEach'), 'groupBitOrForEach': ('groupBitOr', 'ForEach'), 'sumKahanForEach': ('sumKahan', 'ForEach'), 'categoricalInformationValueForEach': ('categoricalInformationValue', 'ForEach'), 'quantileTDigestWeightedForEach': ('quantileTDigestWeighted', 'ForEach'), 'groupArrayMovingSumForEach': ('groupArrayMovingSum', 'ForEach'), 'groupArraySampleForEach': ('groupArraySample', 'ForEach'), 'varPopForEach': ('varPop', 'ForEach'), 'quantileTimingWeightedForEach': ('quantileTimingWeighted', 'ForEach'), 'avgWeightedForEach': ('avgWeighted', 'ForEach'), 'quantileExactLowForEach': ('quantileExactLow', 'ForEach'), 'quantileDeterministicForEach': ('quantileDeterministic', 'ForEach'), 'stochasticLinearRegressionForEach': ('stochasticLinearRegression', 'ForEach'), 'quantileBFloat16ForEach': ('quantileBFloat16', 'ForEach'), 'last_valueForEach': ('last_value', 'ForEach'), 'sumCountForEach': ('sumCount', 'ForEach'), 'groupArrayLastForEach': ('groupArrayLast', 'ForEach'), 'kurtPopForEach': ('kurtPop', 'ForEach'), 'quantilesTimingForEach': ('quantilesTiming', 'ForEach'), 'maxIntersectionsPositionForEach': ('maxIntersectionsPosition', 'ForEach'), 'groupBitmapOrForEach': ('groupBitmapOr', 'ForEach'), 'rankCorrForEach': ('rankCorr', 'ForEach'), 'argMinForEach': ('argMin', 'ForEach'), 'largestTriangleThreeBucketsForEach': ('largestTriangleThreeBuckets', 'ForEach'), 'groupBitXorForEach': ('groupBitXor', 'ForEach'), 'quantileTDigestForEach': ('quantileTDigest', 'ForEach'), 'quantilesTDigestWeightedForEach': ('quantilesTDigestWeighted', 'ForEach'), 'sumMapForEach': ('sumMap', 'ForEach'), 'maxMapForEach': ('maxMap', 'ForEach'), 'skewSampForEach': ('skewSamp', 'ForEach'), 'anyLastForEach': ('anyLast', 'ForEach'), 'quantilesExactForEach': ('quantilesExact', 'ForEach'), 'uniqExactForEach': ('uniqExact', 'ForEach'), 'countForEach': ('count', 'ForEach'), 'quantilesTimingWeightedForEach': ('quantilesTimingWeighted', 'ForEach'), 'uniqHLL12ForEach': ('uniqHLL12', 'ForEach'), 'uniqThetaForEach': ('uniqTheta', 'ForEach'), 'minMapForEach': ('minMap', 'ForEach'), 'quantileTimingDistinct': ('quantileTiming', 'Distinct'), 'quantileInterpolatedWeightedDistinct': ('quantileInterpolatedWeighted', 'Distinct'), 'theilsUDistinct': ('theilsU', 'Distinct'), 'exponentialTimeDecayedAvgDistinct': ('exponentialTimeDecayedAvg', 'Distinct'), 'cramersVDistinct': ('cramersV', 'Distinct'), 'covarSampDistinct': ('covarSamp', 'Distinct'), 'topKWeightedDistinct': ('topKWeighted', 'Distinct'), 'quantilesBFloat16Distinct': ('quantilesBFloat16', 'Distinct'), 'sparkBarDistinct': ('sparkBar', 'Distinct'), 'minDistinct': ('min', 'Distinct'), 'windowFunnelDistinct': ('windowFunnel', 'Distinct'), 'groupArrayMovingAvgDistinct': ('groupArrayMovingAvg', 'Distinct'), 'groupArrayDistinct': ('groupArray', 'Distinct'), 'uniqCombined64Distinct': ('uniqCombined64', 'Distinct'), 'groupBitmapXorDistinct': ('groupBitmapXor', 'Distinct'), 'sequenceMatchDistinct': ('sequenceMatch', 'Distinct'), 'groupBitmapAndDistinct': ('groupBitmapAnd', 'Distinct'), 'groupUniqArrayDistinct': ('groupUniqArray', 'Distinct'), 'quantilesDeterministicDistinct': ('quantilesDeterministic', 'Distinct'), 'quantilesExactLowDistinct': ('quantilesExactLow', 'Distinct'), 'contingencyDistinct': ('contingency', 'Distinct'), 'avgDistinct': ('avg', 'Distinct'), 'welchTTestDistinct': ('welchTTest', 'Distinct'), 'meanZTestDistinct': ('meanZTest', 'Distinct'), 'stddevSampDistinct': ('stddevSamp', 'Distinct'), 'kolmogorovSmirnovTestDistinct': ('kolmogorovSmirnovTest', 'Distinct'), 'groupArrayInsertAtDistinct': ('groupArrayInsertAt', 'Distinct'), 'corrDistinct': ('corr', 'Distinct'), 'groupBitAndDistinct': ('groupBitAnd', 'Distinct'), 'sumWithOverflowDistinct': ('sumWithOverflow', 'Distinct'), 'anyDistinct': ('any', 'Distinct'), 'kurtSampDistinct': ('kurtSamp', 'Distinct'), 'quantilesInterpolatedWeightedDistinct': ('quantilesInterpolatedWeighted', 'Distinct'), 'quantileGKDistinct': ('quantileGK', 'Distinct'), 'deltaSumTimestampDistinct': ('deltaSumTimestamp', 'Distinct'), 'simpleLinearRegressionDistinct': ('simpleLinearRegression', 'Distinct'), 'quantilesTDigestDistinct': ('quantilesTDigest', 'Distinct'), 'uniqUpToDistinct': ('uniqUpTo', 'Distinct'), 'deltaSumDistinct': ('deltaSum', 'Distinct'), 'stddevPopDistinct': ('stddevPop', 'Distinct'), 'maxDistinct': ('max', 'Distinct'), 'quantilesDistinct': ('quantiles', 'Distinct'), 'medianDistinct': ('median', 'Distinct'), 'varSampDistinct': ('varSamp', 'Distinct'), 'quantileBFloat16WeightedDistinct': ('quantileBFloat16Weighted', 'Distinct'), 'quantilesExactHighDistinct': ('quantilesExactHigh', 'Distinct'), 'quantilesBFloat16WeightedDistinct': ('quantilesBFloat16Weighted', 'Distinct'), 'quantileExactWeightedDistinct': ('quantileExactWeighted', 'Distinct'), 'intervalLengthSumDistinct': ('intervalLengthSum', 'Distinct'), 'first_valueDistinct': ('first_value', 'Distinct'), 'studentTTestDistinct': ('studentTTest', 'Distinct'), 'stochasticLogisticRegressionDistinct': ('stochasticLogisticRegression', 'Distinct'), 'skewPopDistinct': ('skewPop', 'Distinct'), 'sequenceNextNodeDistinct': ('sequenceNextNode', 'Distinct'), 'entropyDistinct': ('entropy', 'Distinct'), 'maxIntersectionsDistinct': ('maxIntersections', 'Distinct'), 'quantileExactHighDistinct': ('quantileExactHigh', 'Distinct'), 'quantileExactDistinct': ('quantileExact', 'Distinct'), 'quantilesGKDistinct': ('quantilesGK', 'Distinct'), 'uniqCombinedDistinct': ('uniqCombined', 'Distinct'), 'exponentialMovingAverageDistinct': ('exponentialMovingAverage', 'Distinct'), 'sequenceCountDistinct': ('sequenceCount', 'Distinct'), 'covarPopDistinct': ('covarPop', 'Distinct'), 'retentionDistinct': ('retention', 'Distinct'), 'quantilesExactWeightedDistinct': ('quantilesExactWeighted', 'Distinct'), 'uniqDistinct': ('uniq', 'Distinct'), 'argMaxDistinct': ('argMax', 'Distinct'), 'topKDistinct': ('topK', 'Distinct'), 'mannWhitneyUTestDistinct': ('mannWhitneyUTest', 'Distinct'), 'cramersVBiasCorrectedDistinct': ('cramersVBiasCorrected', 'Distinct'), 'histogramDistinct': ('histogram', 'Distinct'), 'sumDistinct': ('sum', 'Distinct'), 'quantileDistinct': ('quantile', 'Distinct'), 'groupBitmapDistinct': ('groupBitmap', 'Distinct'), 'anyHeavyDistinct': ('anyHeavy', 'Distinct'), 'boundingRatioDistinct': ('boundingRatio', 'Distinct'), 'groupBitOrDistinct': ('groupBitOr', 'Distinct'), 'sumKahanDistinct': ('sumKahan', 'Distinct'), 'categoricalInformationValueDistinct': ('categoricalInformationValue', 'Distinct'), 'quantileTDigestWeightedDistinct': ('quantileTDigestWeighted', 'Distinct'), 'groupArrayMovingSumDistinct': ('groupArrayMovingSum', 'Distinct'), 'groupArraySampleDistinct': ('groupArraySample', 'Distinct'), 'varPopDistinct': ('varPop', 'Distinct'), 'quantileTimingWeightedDistinct': ('quantileTimingWeighted', 'Distinct'), 'avgWeightedDistinct': ('avgWeighted', 'Distinct'), 'quantileExactLowDistinct': ('quantileExactLow', 'Distinct'), 'quantileDeterministicDistinct': ('quantileDeterministic', 'Distinct'), 'stochasticLinearRegressionDistinct': ('stochasticLinearRegression', 'Distinct'), 'quantileBFloat16Distinct': ('quantileBFloat16', 'Distinct'), 'last_valueDistinct': ('last_value', 'Distinct'), 'sumCountDistinct': ('sumCount', 'Distinct'), 'groupArrayLastDistinct': ('groupArrayLast', 'Distinct'), 'kurtPopDistinct': ('kurtPop', 'Distinct'), 'quantilesTimingDistinct': ('quantilesTiming', 'Distinct'), 'maxIntersectionsPositionDistinct': ('maxIntersectionsPosition', 'Distinct'), 'groupBitmapOrDistinct': ('groupBitmapOr', 'Distinct'), 'rankCorrDistinct': ('rankCorr', 'Distinct'), 'argMinDistinct': ('argMin', 'Distinct'), 'largestTriangleThreeBucketsDistinct': ('largestTriangleThreeBuckets', 'Distinct'), 'groupBitXorDistinct': ('groupBitXor', 'Distinct'), 'quantileTDigestDistinct': ('quantileTDigest', 'Distinct'), 'quantilesTDigestWeightedDistinct': ('quantilesTDigestWeighted', 'Distinct'), 'sumMapDistinct': ('sumMap', 'Distinct'), 'maxMapDistinct': ('maxMap', 'Distinct'), 'skewSampDistinct': ('skewSamp', 'Distinct'), 'anyLastDistinct': ('anyLast', 'Distinct'), 'quantilesExactDistinct': ('quantilesExact', 'Distinct'), 'uniqExactDistinct': ('uniqExact', 'Distinct'), 'countDistinct': ('count', 'Distinct'), 'quantilesTimingWeightedDistinct': ('quantilesTimingWeighted', 'Distinct'), 'uniqHLL12Distinct': ('uniqHLL12', 'Distinct'), 'uniqThetaDistinct': ('uniqTheta', 'Distinct'), 'minMapDistinct': ('minMap', 'Distinct'), 'quantileTimingOrDefault': ('quantileTiming', 'OrDefault'), 'quantileInterpolatedWeightedOrDefault': ('quantileInterpolatedWeighted', 'OrDefault'), 'theilsUOrDefault': ('theilsU', 'OrDefault'), 'exponentialTimeDecayedAvgOrDefault': ('exponentialTimeDecayedAvg', 'OrDefault'), 'cramersVOrDefault': ('cramersV', 'OrDefault'), 'covarSampOrDefault': ('covarSamp', 'OrDefault'), 'topKWeightedOrDefault': ('topKWeighted', 'OrDefault'), 'quantilesBFloat16OrDefault': ('quantilesBFloat16', 'OrDefault'), 'sparkBarOrDefault': ('sparkBar', 'OrDefault'), 'minOrDefault': ('min', 'OrDefault'), 'windowFunnelOrDefault': ('windowFunnel', 'OrDefault'), 'groupArrayMovingAvgOrDefault': ('groupArrayMovingAvg', 'OrDefault'), 'groupArrayOrDefault': ('groupArray', 'OrDefault'), 'uniqCombined64OrDefault': ('uniqCombined64', 'OrDefault'), 'groupBitmapXorOrDefault': ('groupBitmapXor', 'OrDefault'), 'sequenceMatchOrDefault': ('sequenceMatch', 'OrDefault'), 'groupBitmapAndOrDefault': ('groupBitmapAnd', 'OrDefault'), 'groupUniqArrayOrDefault': ('groupUniqArray', 'OrDefault'), 'quantilesDeterministicOrDefault': ('quantilesDeterministic', 'OrDefault'), 'quantilesExactLowOrDefault': ('quantilesExactLow', 'OrDefault'), 'contingencyOrDefault': ('contingency', 'OrDefault'), 'avgOrDefault': ('avg', 'OrDefault'), 'welchTTestOrDefault': ('welchTTest', 'OrDefault'), 'meanZTestOrDefault': ('meanZTest', 'OrDefault'), 'stddevSampOrDefault': ('stddevSamp', 'OrDefault'), 'kolmogorovSmirnovTestOrDefault': ('kolmogorovSmirnovTest', 'OrDefault'), 'groupArrayInsertAtOrDefault': ('groupArrayInsertAt', 'OrDefault'), 'corrOrDefault': ('corr', 'OrDefault'), 'groupBitAndOrDefault': ('groupBitAnd', 'OrDefault'), 'sumWithOverflowOrDefault': ('sumWithOverflow', 'OrDefault'), 'anyOrDefault': ('any', 'OrDefault'), 'kurtSampOrDefault': ('kurtSamp', 'OrDefault'), 'quantilesInterpolatedWeightedOrDefault': ('quantilesInterpolatedWeighted', 'OrDefault'), 'quantileGKOrDefault': ('quantileGK', 'OrDefault'), 'deltaSumTimestampOrDefault': ('deltaSumTimestamp', 'OrDefault'), 'simpleLinearRegressionOrDefault': ('simpleLinearRegression', 'OrDefault'), 'quantilesTDigestOrDefault': ('quantilesTDigest', 'OrDefault'), 'uniqUpToOrDefault': ('uniqUpTo', 'OrDefault'), 'deltaSumOrDefault': ('deltaSum', 'OrDefault'), 'stddevPopOrDefault': ('stddevPop', 'OrDefault'), 'maxOrDefault': ('max', 'OrDefault'), 'quantilesOrDefault': ('quantiles', 'OrDefault'), 'medianOrDefault': ('median', 'OrDefault'), 'varSampOrDefault': ('varSamp', 'OrDefault'), 'quantileBFloat16WeightedOrDefault': ('quantileBFloat16Weighted', 'OrDefault'), 'quantilesExactHighOrDefault': ('quantilesExactHigh', 'OrDefault'), 'quantilesBFloat16WeightedOrDefault': ('quantilesBFloat16Weighted', 'OrDefault'), 'quantileExactWeightedOrDefault': ('quantileExactWeighted', 'OrDefault'), 'intervalLengthSumOrDefault': ('intervalLengthSum', 'OrDefault'), 'first_valueOrDefault': ('first_value', 'OrDefault'), 'studentTTestOrDefault': ('studentTTest', 'OrDefault'), 'stochasticLogisticRegressionOrDefault': ('stochasticLogisticRegression', 'OrDefault'), 'skewPopOrDefault': ('skewPop', 'OrDefault'), 'sequenceNextNodeOrDefault': ('sequenceNextNode', 'OrDefault'), 'entropyOrDefault': ('entropy', 'OrDefault'), 'maxIntersectionsOrDefault': ('maxIntersections', 'OrDefault'), 'quantileExactHighOrDefault': ('quantileExactHigh', 'OrDefault'), 'quantileExactOrDefault': ('quantileExact', 'OrDefault'), 'quantilesGKOrDefault': ('quantilesGK', 'OrDefault'), 'uniqCombinedOrDefault': ('uniqCombined', 'OrDefault'), 'exponentialMovingAverageOrDefault': ('exponentialMovingAverage', 'OrDefault'), 'sequenceCountOrDefault': ('sequenceCount', 'OrDefault'), 'covarPopOrDefault': ('covarPop', 'OrDefault'), 'retentionOrDefault': ('retention', 'OrDefault'), 'quantilesExactWeightedOrDefault': ('quantilesExactWeighted', 'OrDefault'), 'uniqOrDefault': ('uniq', 'OrDefault'), 'argMaxOrDefault': ('argMax', 'OrDefault'), 'topKOrDefault': ('topK', 'OrDefault'), 'mannWhitneyUTestOrDefault': ('mannWhitneyUTest', 'OrDefault'), 'cramersVBiasCorrectedOrDefault': ('cramersVBiasCorrected', 'OrDefault'), 'histogramOrDefault': ('histogram', 'OrDefault'), 'sumOrDefault': ('sum', 'OrDefault'), 'quantileOrDefault': ('quantile', 'OrDefault'), 'groupBitmapOrDefault': ('groupBitmap', 'OrDefault'), 'anyHeavyOrDefault': ('anyHeavy', 'OrDefault'), 'boundingRatioOrDefault': ('boundingRatio', 'OrDefault'), 'groupBitOrOrDefault': ('groupBitOr', 'OrDefault'), 'sumKahanOrDefault': ('sumKahan', 'OrDefault'), 'categoricalInformationValueOrDefault': ('categoricalInformationValue', 'OrDefault'), 'quantileTDigestWeightedOrDefault': ('quantileTDigestWeighted', 'OrDefault'), 'groupArrayMovingSumOrDefault': ('groupArrayMovingSum', 'OrDefault'), 'groupArraySampleOrDefault': ('groupArraySample', 'OrDefault'), 'varPopOrDefault': ('varPop', 'OrDefault'), 'quantileTimingWeightedOrDefault': ('quantileTimingWeighted', 'OrDefault'), 'avgWeightedOrDefault': ('avgWeighted', 'OrDefault'), 'quantileExactLowOrDefault': ('quantileExactLow', 'OrDefault'), 'quantileDeterministicOrDefault': ('quantileDeterministic', 'OrDefault'), 'stochasticLinearRegressionOrDefault': ('stochasticLinearRegression', 'OrDefault'), 'quantileBFloat16OrDefault': ('quantileBFloat16', 'OrDefault'), 'last_valueOrDefault': ('last_value', 'OrDefault'), 'sumCountOrDefault': ('sumCount', 'OrDefault'), 'groupArrayLastOrDefault': ('groupArrayLast', 'OrDefault'), 'kurtPopOrDefault': ('kurtPop', 'OrDefault'), 'quantilesTimingOrDefault': ('quantilesTiming', 'OrDefault'), 'maxIntersectionsPositionOrDefault': ('maxIntersectionsPosition', 'OrDefault'), 'groupBitmapOrOrDefault': ('groupBitmapOr', 'OrDefault'), 'rankCorrOrDefault': ('rankCorr', 'OrDefault'), 'argMinOrDefault': ('argMin', 'OrDefault'), 'largestTriangleThreeBucketsOrDefault': ('largestTriangleThreeBuckets', 'OrDefault'), 'groupBitXorOrDefault': ('groupBitXor', 'OrDefault'), 'quantileTDigestOrDefault': ('quantileTDigest', 'OrDefault'), 'quantilesTDigestWeightedOrDefault': ('quantilesTDigestWeighted', 'OrDefault'), 'sumMapOrDefault': ('sumMap', 'OrDefault'), 'maxMapOrDefault': ('maxMap', 'OrDefault'), 'skewSampOrDefault': ('skewSamp', 'OrDefault'), 'anyLastOrDefault': ('anyLast', 'OrDefault'), 'quantilesExactOrDefault': ('quantilesExact', 'OrDefault'), 'uniqExactOrDefault': ('uniqExact', 'OrDefault'), 'countOrDefault': ('count', 'OrDefault'), 'quantilesTimingWeightedOrDefault': ('quantilesTimingWeighted', 'OrDefault'), 'uniqHLL12OrDefault': ('uniqHLL12', 'OrDefault'), 'uniqThetaOrDefault': ('uniqTheta', 'OrDefault'), 'minMapOrDefault': ('minMap', 'OrDefault'), 'quantileTimingOrNull': ('quantileTiming', 'OrNull'), 'quantileInterpolatedWeightedOrNull': ('quantileInterpolatedWeighted', 'OrNull'), 'theilsUOrNull': ('theilsU', 'OrNull'), 'exponentialTimeDecayedAvgOrNull': ('exponentialTimeDecayedAvg', 'OrNull'), 'cramersVOrNull': ('cramersV', 'OrNull'), 'covarSampOrNull': ('covarSamp', 'OrNull'), 'topKWeightedOrNull': ('topKWeighted', 'OrNull'), 'quantilesBFloat16OrNull': ('quantilesBFloat16', 'OrNull'), 'sparkBarOrNull': ('sparkBar', 'OrNull'), 'minOrNull': ('min', 'OrNull'), 'windowFunnelOrNull': ('windowFunnel', 'OrNull'), 'groupArrayMovingAvgOrNull': ('groupArrayMovingAvg', 'OrNull'), 'groupArrayOrNull': ('groupArray', 'OrNull'), 'uniqCombined64OrNull': ('uniqCombined64', 'OrNull'), 'groupBitmapXorOrNull': ('groupBitmapXor', 'OrNull'), 'sequenceMatchOrNull': ('sequenceMatch', 'OrNull'), 'groupBitmapAndOrNull': ('groupBitmapAnd', 'OrNull'), 'groupUniqArrayOrNull': ('groupUniqArray', 'OrNull'), 'quantilesDeterministicOrNull': ('quantilesDeterministic', 'OrNull'), 'quantilesExactLowOrNull': ('quantilesExactLow', 'OrNull'), 'contingencyOrNull': ('contingency', 'OrNull'), 'avgOrNull': ('avg', 'OrNull'), 'welchTTestOrNull': ('welchTTest', 'OrNull'), 'meanZTestOrNull': ('meanZTest', 'OrNull'), 'stddevSampOrNull': ('stddevSamp', 'OrNull'), 'kolmogorovSmirnovTestOrNull': ('kolmogorovSmirnovTest', 'OrNull'), 'groupArrayInsertAtOrNull': ('groupArrayInsertAt', 'OrNull'), 'corrOrNull': ('corr', 'OrNull'), 'groupBitAndOrNull': ('groupBitAnd', 'OrNull'), 'sumWithOverflowOrNull': ('sumWithOverflow', 'OrNull'), 'anyOrNull': ('any', 'OrNull'), 'kurtSampOrNull': ('kurtSamp', 'OrNull'), 'quantilesInterpolatedWeightedOrNull': ('quantilesInterpolatedWeighted', 'OrNull'), 'quantileGKOrNull': ('quantileGK', 'OrNull'), 'deltaSumTimestampOrNull': ('deltaSumTimestamp', 'OrNull'), 'simpleLinearRegressionOrNull': ('simpleLinearRegression', 'OrNull'), 'quantilesTDigestOrNull': ('quantilesTDigest', 'OrNull'), 'uniqUpToOrNull': ('uniqUpTo', 'OrNull'), 'deltaSumOrNull': ('deltaSum', 'OrNull'), 'stddevPopOrNull': ('stddevPop', 'OrNull'), 'maxOrNull': ('max', 'OrNull'), 'quantilesOrNull': ('quantiles', 'OrNull'), 'medianOrNull': ('median', 'OrNull'), 'varSampOrNull': ('varSamp', 'OrNull'), 'quantileBFloat16WeightedOrNull': ('quantileBFloat16Weighted', 'OrNull'), 'quantilesExactHighOrNull': ('quantilesExactHigh', 'OrNull'), 'quantilesBFloat16WeightedOrNull': ('quantilesBFloat16Weighted', 'OrNull'), 'quantileExactWeightedOrNull': ('quantileExactWeighted', 'OrNull'), 'intervalLengthSumOrNull': ('intervalLengthSum', 'OrNull'), 'first_valueOrNull': ('first_value', 'OrNull'), 'studentTTestOrNull': ('studentTTest', 'OrNull'), 'stochasticLogisticRegressionOrNull': ('stochasticLogisticRegression', 'OrNull'), 'skewPopOrNull': ('skewPop', 'OrNull'), 'sequenceNextNodeOrNull': ('sequenceNextNode', 'OrNull'), 'entropyOrNull': ('entropy', 'OrNull'), 'maxIntersectionsOrNull': ('maxIntersections', 'OrNull'), 'quantileExactHighOrNull': ('quantileExactHigh', 'OrNull'), 'quantileExactOrNull': ('quantileExact', 'OrNull'), 'quantilesGKOrNull': ('quantilesGK', 'OrNull'), 'uniqCombinedOrNull': ('uniqCombined', 'OrNull'), 'exponentialMovingAverageOrNull': ('exponentialMovingAverage', 'OrNull'), 'sequenceCountOrNull': ('sequenceCount', 'OrNull'), 'covarPopOrNull': ('covarPop', 'OrNull'), 'retentionOrNull': ('retention', 'OrNull'), 'quantilesExactWeightedOrNull': ('quantilesExactWeighted', 'OrNull'), 'uniqOrNull': ('uniq', 'OrNull'), 'argMaxOrNull': ('argMax', 'OrNull'), 'topKOrNull': ('topK', 'OrNull'), 'mannWhitneyUTestOrNull': ('mannWhitneyUTest', 'OrNull'), 'cramersVBiasCorrectedOrNull': ('cramersVBiasCorrected', 'OrNull'), 'histogramOrNull': ('histogram', 'OrNull'), 'sumOrNull': ('sum', 'OrNull'), 'quantileOrNull': ('quantile', 'OrNull'), 'groupBitmapOrNull': ('groupBitmap', 'OrNull'), 'anyHeavyOrNull': ('anyHeavy', 'OrNull'), 'boundingRatioOrNull': ('boundingRatio', 'OrNull'), 'groupBitOrOrNull': ('groupBitOr', 'OrNull'), 'sumKahanOrNull': ('sumKahan', 'OrNull'), 'categoricalInformationValueOrNull': ('categoricalInformationValue', 'OrNull'), 'quantileTDigestWeightedOrNull': ('quantileTDigestWeighted', 'OrNull'), 'groupArrayMovingSumOrNull': ('groupArrayMovingSum', 'OrNull'), 'groupArraySampleOrNull': ('groupArraySample', 'OrNull'), 'varPopOrNull': ('varPop', 'OrNull'), 'quantileTimingWeightedOrNull': ('quantileTimingWeighted', 'OrNull'), 'avgWeightedOrNull': ('avgWeighted', 'OrNull'), 'quantileExactLowOrNull': ('quantileExactLow', 'OrNull'), 'quantileDeterministicOrNull': ('quantileDeterministic', 'OrNull'), 'stochasticLinearRegressionOrNull': ('stochasticLinearRegression', 'OrNull'), 'quantileBFloat16OrNull': ('quantileBFloat16', 'OrNull'), 'last_valueOrNull': ('last_value', 'OrNull'), 'sumCountOrNull': ('sumCount', 'OrNull'), 'groupArrayLastOrNull': ('groupArrayLast', 'OrNull'), 'kurtPopOrNull': ('kurtPop', 'OrNull'), 'quantilesTimingOrNull': ('quantilesTiming', 'OrNull'), 'maxIntersectionsPositionOrNull': ('maxIntersectionsPosition', 'OrNull'), 'groupBitmapOrOrNull': ('groupBitmapOr', 'OrNull'), 'rankCorrOrNull': ('rankCorr', 'OrNull'), 'argMinOrNull': ('argMin', 'OrNull'), 'largestTriangleThreeBucketsOrNull': ('largestTriangleThreeBuckets', 'OrNull'), 'groupBitXorOrNull': ('groupBitXor', 'OrNull'), 'quantileTDigestOrNull': ('quantileTDigest', 'OrNull'), 'quantilesTDigestWeightedOrNull': ('quantilesTDigestWeighted', 'OrNull'), 'sumMapOrNull': ('sumMap', 'OrNull'), 'maxMapOrNull': ('maxMap', 'OrNull'), 'skewSampOrNull': ('skewSamp', 'OrNull'), 'anyLastOrNull': ('anyLast', 'OrNull'), 'quantilesExactOrNull': ('quantilesExact', 'OrNull'), 'uniqExactOrNull': ('uniqExact', 'OrNull'), 'countOrNull': ('count', 'OrNull'), 'quantilesTimingWeightedOrNull': ('quantilesTimingWeighted', 'OrNull'), 'uniqHLL12OrNull': ('uniqHLL12', 'OrNull'), 'uniqThetaOrNull': ('uniqTheta', 'OrNull'), 'minMapOrNull': ('minMap', 'OrNull'), 'quantileTimingResample': ('quantileTiming', 'Resample'), 'quantileInterpolatedWeightedResample': ('quantileInterpolatedWeighted', 'Resample'), 'theilsUResample': ('theilsU', 'Resample'), 'exponentialTimeDecayedAvgResample': ('exponentialTimeDecayedAvg', 'Resample'), 'cramersVResample': ('cramersV', 'Resample'), 'covarSampResample': ('covarSamp', 'Resample'), 'topKWeightedResample': ('topKWeighted', 'Resample'), 'quantilesBFloat16Resample': ('quantilesBFloat16', 'Resample'), 'sparkBarResample': ('sparkBar', 'Resample'), 'minResample': ('min', 'Resample'), 'windowFunnelResample': ('windowFunnel', 'Resample'), 'groupArrayMovingAvgResample': ('groupArrayMovingAvg', 'Resample'), 'groupArrayResample': ('groupArray', 'Resample'), 'uniqCombined64Resample': ('uniqCombined64', 'Resample'), 'groupBitmapXorResample': ('groupBitmapXor', 'Resample'), 'sequenceMatchResample': ('sequenceMatch', 'Resample'), 'groupBitmapAndResample': ('groupBitmapAnd', 'Resample'), 'groupUniqArrayResample': ('groupUniqArray', 'Resample'), 'quantilesDeterministicResample': ('quantilesDeterministic', 'Resample'), 'quantilesExactLowResample': ('quantilesExactLow', 'Resample'), 'contingencyResample': ('contingency', 'Resample'), 'avgResample': ('avg', 'Resample'), 'welchTTestResample': ('welchTTest', 'Resample'), 'meanZTestResample': ('meanZTest', 'Resample'), 'stddevSampResample': ('stddevSamp', 'Resample'), 'kolmogorovSmirnovTestResample': ('kolmogorovSmirnovTest', 'Resample'), 'groupArrayInsertAtResample': ('groupArrayInsertAt', 'Resample'), 'corrResample': ('corr', 'Resample'), 'groupBitAndResample': ('groupBitAnd', 'Resample'), 'sumWithOverflowResample': ('sumWithOverflow', 'Resample'), 'anyResample': ('any', 'Resample'), 'kurtSampResample': ('kurtSamp', 'Resample'), 'quantilesInterpolatedWeightedResample': ('quantilesInterpolatedWeighted', 'Resample'), 'quantileGKResample': ('quantileGK', 'Resample'), 'deltaSumTimestampResample': ('deltaSumTimestamp', 'Resample'), 'simpleLinearRegressionResample': ('simpleLinearRegression', 'Resample'), 'quantilesTDigestResample': ('quantilesTDigest', 'Resample'), 'uniqUpToResample': ('uniqUpTo', 'Resample'), 'deltaSumResample': ('deltaSum', 'Resample'), 'stddevPopResample': ('stddevPop', 'Resample'), 'maxResample': ('max', 'Resample'), 'quantilesResample': ('quantiles', 'Resample'), 'medianResample': ('median', 'Resample'), 'varSampResample': ('varSamp', 'Resample'), 'quantileBFloat16WeightedResample': ('quantileBFloat16Weighted', 'Resample'), 'quantilesExactHighResample': ('quantilesExactHigh', 'Resample'), 'quantilesBFloat16WeightedResample': ('quantilesBFloat16Weighted', 'Resample'), 'quantileExactWeightedResample': ('quantileExactWeighted', 'Resample'), 'intervalLengthSumResample': ('intervalLengthSum', 'Resample'), 'first_valueResample': ('first_value', 'Resample'), 'studentTTestResample': ('studentTTest', 'Resample'), 'stochasticLogisticRegressionResample': ('stochasticLogisticRegression', 'Resample'), 'skewPopResample': ('skewPop', 'Resample'), 'sequenceNextNodeResample': ('sequenceNextNode', 'Resample'), 'entropyResample': ('entropy', 'Resample'), 'maxIntersectionsResample': ('maxIntersections', 'Resample'), 'quantileExactHighResample': ('quantileExactHigh', 'Resample'), 'quantileExactResample': ('quantileExact', 'Resample'), 'quantilesGKResample': ('quantilesGK', 'Resample'), 'uniqCombinedResample': ('uniqCombined', 'Resample'), 'exponentialMovingAverageResample': ('exponentialMovingAverage', 'Resample'), 'sequenceCountResample': ('sequenceCount', 'Resample'), 'covarPopResample': ('covarPop', 'Resample'), 'retentionResample': ('retention', 'Resample'), 'quantilesExactWeightedResample': ('quantilesExactWeighted', 'Resample'), 'uniqResample': ('uniq', 'Resample'), 'argMaxResample': ('argMax', 'Resample'), 'topKResample': ('topK', 'Resample'), 'mannWhitneyUTestResample': ('mannWhitneyUTest', 'Resample'), 'cramersVBiasCorrectedResample': ('cramersVBiasCorrected', 'Resample'), 'histogramResample': ('histogram', 'Resample'), 'sumResample': ('sum', 'Resample'), 'quantileResample': ('quantile', 'Resample'), 'groupBitmapResample': ('groupBitmap', 'Resample'), 'anyHeavyResample': ('anyHeavy', 'Resample'), 'boundingRatioResample': ('boundingRatio', 'Resample'), 'groupBitOrResample': ('groupBitOr', 'Resample'), 'sumKahanResample': ('sumKahan', 'Resample'), 'categoricalInformationValueResample': ('categoricalInformationValue', 'Resample'), 'quantileTDigestWeightedResample': ('quantileTDigestWeighted', 'Resample'), 'groupArrayMovingSumResample': ('groupArrayMovingSum', 'Resample'), 'groupArraySampleResample': ('groupArraySample', 'Resample'), 'varPopResample': ('varPop', 'Resample'), 'quantileTimingWeightedResample': ('quantileTimingWeighted', 'Resample'), 'avgWeightedResample': ('avgWeighted', 'Resample'), 'quantileExactLowResample': ('quantileExactLow', 'Resample'), 'quantileDeterministicResample': ('quantileDeterministic', 'Resample'), 'stochasticLinearRegressionResample': ('stochasticLinearRegression', 'Resample'), 'quantileBFloat16Resample': ('quantileBFloat16', 'Resample'), 'last_valueResample': ('last_value', 'Resample'), 'sumCountResample': ('sumCount', 'Resample'), 'groupArrayLastResample': ('groupArrayLast', 'Resample'), 'kurtPopResample': ('kurtPop', 'Resample'), 'quantilesTimingResample': ('quantilesTiming', 'Resample'), 'maxIntersectionsPositionResample': ('maxIntersectionsPosition', 'Resample'), 'groupBitmapOrResample': ('groupBitmapOr', 'Resample'), 'rankCorrResample': ('rankCorr', 'Resample'), 'argMinResample': ('argMin', 'Resample'), 'largestTriangleThreeBucketsResample': ('largestTriangleThreeBuckets', 'Resample'), 'groupBitXorResample': ('groupBitXor', 'Resample'), 'quantileTDigestResample': ('quantileTDigest', 'Resample'), 'quantilesTDigestWeightedResample': ('quantilesTDigestWeighted', 'Resample'), 'sumMapResample': ('sumMap', 'Resample'), 'maxMapResample': ('maxMap', 'Resample'), 'skewSampResample': ('skewSamp', 'Resample'), 'anyLastResample': ('anyLast', 'Resample'), 'quantilesExactResample': ('quantilesExact', 'Resample'), 'uniqExactResample': ('uniqExact', 'Resample'), 'countResample': ('count', 'Resample'), 'quantilesTimingWeightedResample': ('quantilesTimingWeighted', 'Resample'), 'uniqHLL12Resample': ('uniqHLL12', 'Resample'), 'uniqThetaResample': ('uniqTheta', 'Resample'), 'minMapResample': ('minMap', 'Resample'), 'quantileTimingArgMin': ('quantileTiming', 'ArgMin'), 'quantileInterpolatedWeightedArgMin': ('quantileInterpolatedWeighted', 'ArgMin'), 'theilsUArgMin': ('theilsU', 'ArgMin'), 'exponentialTimeDecayedAvgArgMin': ('exponentialTimeDecayedAvg', 'ArgMin'), 'cramersVArgMin': ('cramersV', 'ArgMin'), 'covarSampArgMin': ('covarSamp', 'ArgMin'), 'topKWeightedArgMin': ('topKWeighted', 'ArgMin'), 'quantilesBFloat16ArgMin': ('quantilesBFloat16', 'ArgMin'), 'sparkBarArgMin': ('sparkBar', 'ArgMin'), 'minArgMin': ('min', 'ArgMin'), 'windowFunnelArgMin': ('windowFunnel', 'ArgMin'), 'groupArrayMovingAvgArgMin': ('groupArrayMovingAvg', 'ArgMin'), 'groupArrayArgMin': ('groupArray', 'ArgMin'), 'uniqCombined64ArgMin': ('uniqCombined64', 'ArgMin'), 'groupBitmapXorArgMin': ('groupBitmapXor', 'ArgMin'), 'sequenceMatchArgMin': ('sequenceMatch', 'ArgMin'), 'groupBitmapAndArgMin': ('groupBitmapAnd', 'ArgMin'), 'groupUniqArrayArgMin': ('groupUniqArray', 'ArgMin'), 'quantilesDeterministicArgMin': ('quantilesDeterministic', 'ArgMin'), 'quantilesExactLowArgMin': ('quantilesExactLow', 'ArgMin'), 'contingencyArgMin': ('contingency', 'ArgMin'), 'avgArgMin': ('avg', 'ArgMin'), 'welchTTestArgMin': ('welchTTest', 'ArgMin'), 'meanZTestArgMin': ('meanZTest', 'ArgMin'), 'stddevSampArgMin': ('stddevSamp', 'ArgMin'), 'kolmogorovSmirnovTestArgMin': ('kolmogorovSmirnovTest', 'ArgMin'), 'groupArrayInsertAtArgMin': ('groupArrayInsertAt', 'ArgMin'), 'corrArgMin': ('corr', 'ArgMin'), 'groupBitAndArgMin': ('groupBitAnd', 'ArgMin'), 'sumWithOverflowArgMin': ('sumWithOverflow', 'ArgMin'), 'anyArgMin': ('any', 'ArgMin'), 'kurtSampArgMin': ('kurtSamp', 'ArgMin'), 'quantilesInterpolatedWeightedArgMin': ('quantilesInterpolatedWeighted', 'ArgMin'), 'quantileGKArgMin': ('quantileGK', 'ArgMin'), 'deltaSumTimestampArgMin': ('deltaSumTimestamp', 'ArgMin'), 'simpleLinearRegressionArgMin': ('simpleLinearRegression', 'ArgMin'), 'quantilesTDigestArgMin': ('quantilesTDigest', 'ArgMin'), 'uniqUpToArgMin': ('uniqUpTo', 'ArgMin'), 'deltaSumArgMin': ('deltaSum', 'ArgMin'), 'stddevPopArgMin': ('stddevPop', 'ArgMin'), 'maxArgMin': ('max', 'ArgMin'), 'quantilesArgMin': ('quantiles', 'ArgMin'), 'medianArgMin': ('median', 'ArgMin'), 'varSampArgMin': ('varSamp', 'ArgMin'), 'quantileBFloat16WeightedArgMin': ('quantileBFloat16Weighted', 'ArgMin'), 'quantilesExactHighArgMin': ('quantilesExactHigh', 'ArgMin'), 'quantilesBFloat16WeightedArgMin': ('quantilesBFloat16Weighted', 'ArgMin'), 'quantileExactWeightedArgMin': ('quantileExactWeighted', 'ArgMin'), 'intervalLengthSumArgMin': ('intervalLengthSum', 'ArgMin'), 'first_valueArgMin': ('first_value', 'ArgMin'), 'studentTTestArgMin': ('studentTTest', 'ArgMin'), 'stochasticLogisticRegressionArgMin': ('stochasticLogisticRegression', 'ArgMin'), 'skewPopArgMin': ('skewPop', 'ArgMin'), 'sequenceNextNodeArgMin': ('sequenceNextNode', 'ArgMin'), 'entropyArgMin': ('entropy', 'ArgMin'), 'maxIntersectionsArgMin': ('maxIntersections', 'ArgMin'), 'quantileExactHighArgMin': ('quantileExactHigh', 'ArgMin'), 'quantileExactArgMin': ('quantileExact', 'ArgMin'), 'quantilesGKArgMin': ('quantilesGK', 'ArgMin'), 'uniqCombinedArgMin': ('uniqCombined', 'ArgMin'), 'exponentialMovingAverageArgMin': ('exponentialMovingAverage', 'ArgMin'), 'sequenceCountArgMin': ('sequenceCount', 'ArgMin'), 'covarPopArgMin': ('covarPop', 'ArgMin'), 'retentionArgMin': ('retention', 'ArgMin'), 'quantilesExactWeightedArgMin': ('quantilesExactWeighted', 'ArgMin'), 'uniqArgMin': ('uniq', 'ArgMin'), 'argMaxArgMin': ('argMax', 'ArgMin'), 'topKArgMin': ('topK', 'ArgMin'), 'mannWhitneyUTestArgMin': ('mannWhitneyUTest', 'ArgMin'), 'cramersVBiasCorrectedArgMin': ('cramersVBiasCorrected', 'ArgMin'), 'histogramArgMin': ('histogram', 'ArgMin'), 'sumArgMin': ('sum', 'ArgMin'), 'quantileArgMin': ('quantile', 'ArgMin'), 'groupBitmapArgMin': ('groupBitmap', 'ArgMin'), 'anyHeavyArgMin': ('anyHeavy', 'ArgMin'), 'boundingRatioArgMin': ('boundingRatio', 'ArgMin'), 'groupBitOrArgMin': ('groupBitOr', 'ArgMin'), 'sumKahanArgMin': ('sumKahan', 'ArgMin'), 'categoricalInformationValueArgMin': ('categoricalInformationValue', 'ArgMin'), 'quantileTDigestWeightedArgMin': ('quantileTDigestWeighted', 'ArgMin'), 'groupArrayMovingSumArgMin': ('groupArrayMovingSum', 'ArgMin'), 'groupArraySampleArgMin': ('groupArraySample', 'ArgMin'), 'varPopArgMin': ('varPop', 'ArgMin'), 'quantileTimingWeightedArgMin': ('quantileTimingWeighted', 'ArgMin'), 'avgWeightedArgMin': ('avgWeighted', 'ArgMin'), 'quantileExactLowArgMin': ('quantileExactLow', 'ArgMin'), 'quantileDeterministicArgMin': ('quantileDeterministic', 'ArgMin'), 'stochasticLinearRegressionArgMin': ('stochasticLinearRegression', 'ArgMin'), 'quantileBFloat16ArgMin': ('quantileBFloat16', 'ArgMin'), 'last_valueArgMin': ('last_value', 'ArgMin'), 'sumCountArgMin': ('sumCount', 'ArgMin'), 'groupArrayLastArgMin': ('groupArrayLast', 'ArgMin'), 'kurtPopArgMin': ('kurtPop', 'ArgMin'), 'quantilesTimingArgMin': ('quantilesTiming', 'ArgMin'), 'maxIntersectionsPositionArgMin': ('maxIntersectionsPosition', 'ArgMin'), 'groupBitmapOrArgMin': ('groupBitmapOr', 'ArgMin'), 'rankCorrArgMin': ('rankCorr', 'ArgMin'), 'argMinArgMin': ('argMin', 'ArgMin'), 'largestTriangleThreeBucketsArgMin': ('largestTriangleThreeBuckets', 'ArgMin'), 'groupBitXorArgMin': ('groupBitXor', 'ArgMin'), 'quantileTDigestArgMin': ('quantileTDigest', 'ArgMin'), 'quantilesTDigestWeightedArgMin': ('quantilesTDigestWeighted', 'ArgMin'), 'sumMapArgMin': ('sumMap', 'ArgMin'), 'maxMapArgMin': ('maxMap', 'ArgMin'), 'skewSampArgMin': ('skewSamp', 'ArgMin'), 'anyLastArgMin': ('anyLast', 'ArgMin'), 'quantilesExactArgMin': ('quantilesExact', 'ArgMin'), 'uniqExactArgMin': ('uniqExact', 'ArgMin'), 'countArgMin': ('count', 'ArgMin'), 'quantilesTimingWeightedArgMin': ('quantilesTimingWeighted', 'ArgMin'), 'uniqHLL12ArgMin': ('uniqHLL12', 'ArgMin'), 'uniqThetaArgMin': ('uniqTheta', 'ArgMin'), 'minMapArgMin': ('minMap', 'ArgMin'), 'quantileTimingArgMax': ('quantileTiming', 'ArgMax'), 'quantileInterpolatedWeightedArgMax': ('quantileInterpolatedWeighted', 'ArgMax'), 'theilsUArgMax': ('theilsU', 'ArgMax'), 'exponentialTimeDecayedAvgArgMax': ('exponentialTimeDecayedAvg', 'ArgMax'), 'cramersVArgMax': ('cramersV', 'ArgMax'), 'covarSampArgMax': ('covarSamp', 'ArgMax'), 'topKWeightedArgMax': ('topKWeighted', 'ArgMax'), 'quantilesBFloat16ArgMax': ('quantilesBFloat16', 'ArgMax'), 'sparkBarArgMax': ('sparkBar', 'ArgMax'), 'minArgMax': ('min', 'ArgMax'), 'windowFunnelArgMax': ('windowFunnel', 'ArgMax'), 'groupArrayMovingAvgArgMax': ('groupArrayMovingAvg', 'ArgMax'), 'groupArrayArgMax': ('groupArray', 'ArgMax'), 'uniqCombined64ArgMax': ('uniqCombined64', 'ArgMax'), 'groupBitmapXorArgMax': ('groupBitmapXor', 'ArgMax'), 'sequenceMatchArgMax': ('sequenceMatch', 'ArgMax'), 'groupBitmapAndArgMax': ('groupBitmapAnd', 'ArgMax'), 'groupUniqArrayArgMax': ('groupUniqArray', 'ArgMax'), 'quantilesDeterministicArgMax': ('quantilesDeterministic', 'ArgMax'), 'quantilesExactLowArgMax': ('quantilesExactLow', 'ArgMax'), 'contingencyArgMax': ('contingency', 'ArgMax'), 'avgArgMax': ('avg', 'ArgMax'), 'welchTTestArgMax': ('welchTTest', 'ArgMax'), 'meanZTestArgMax': ('meanZTest', 'ArgMax'), 'stddevSampArgMax': ('stddevSamp', 'ArgMax'), 'kolmogorovSmirnovTestArgMax': ('kolmogorovSmirnovTest', 'ArgMax'), 'groupArrayInsertAtArgMax': ('groupArrayInsertAt', 'ArgMax'), 'corrArgMax': ('corr', 'ArgMax'), 'groupBitAndArgMax': ('groupBitAnd', 'ArgMax'), 'sumWithOverflowArgMax': ('sumWithOverflow', 'ArgMax'), 'anyArgMax': ('any', 'ArgMax'), 'kurtSampArgMax': ('kurtSamp', 'ArgMax'), 'quantilesInterpolatedWeightedArgMax': ('quantilesInterpolatedWeighted', 'ArgMax'), 'quantileGKArgMax': ('quantileGK', 'ArgMax'), 'deltaSumTimestampArgMax': ('deltaSumTimestamp', 'ArgMax'), 'simpleLinearRegressionArgMax': ('simpleLinearRegression', 'ArgMax'), 'quantilesTDigestArgMax': ('quantilesTDigest', 'ArgMax'), 'uniqUpToArgMax': ('uniqUpTo', 'ArgMax'), 'deltaSumArgMax': ('deltaSum', 'ArgMax'), 'stddevPopArgMax': ('stddevPop', 'ArgMax'), 'maxArgMax': ('max', 'ArgMax'), 'quantilesArgMax': ('quantiles', 'ArgMax'), 'medianArgMax': ('median', 'ArgMax'), 'varSampArgMax': ('varSamp', 'ArgMax'), 'quantileBFloat16WeightedArgMax': ('quantileBFloat16Weighted', 'ArgMax'), 'quantilesExactHighArgMax': ('quantilesExactHigh', 'ArgMax'), 'quantilesBFloat16WeightedArgMax': ('quantilesBFloat16Weighted', 'ArgMax'), 'quantileExactWeightedArgMax': ('quantileExactWeighted', 'ArgMax'), 'intervalLengthSumArgMax': ('intervalLengthSum', 'ArgMax'), 'first_valueArgMax': ('first_value', 'ArgMax'), 'studentTTestArgMax': ('studentTTest', 'ArgMax'), 'stochasticLogisticRegressionArgMax': ('stochasticLogisticRegression', 'ArgMax'), 'skewPopArgMax': ('skewPop', 'ArgMax'), 'sequenceNextNodeArgMax': ('sequenceNextNode', 'ArgMax'), 'entropyArgMax': ('entropy', 'ArgMax'), 'maxIntersectionsArgMax': ('maxIntersections', 'ArgMax'), 'quantileExactHighArgMax': ('quantileExactHigh', 'ArgMax'), 'quantileExactArgMax': ('quantileExact', 'ArgMax'), 'quantilesGKArgMax': ('quantilesGK', 'ArgMax'), 'uniqCombinedArgMax': ('uniqCombined', 'ArgMax'), 'exponentialMovingAverageArgMax': ('exponentialMovingAverage', 'ArgMax'), 'sequenceCountArgMax': ('sequenceCount', 'ArgMax'), 'covarPopArgMax': ('covarPop', 'ArgMax'), 'retentionArgMax': ('retention', 'ArgMax'), 'quantilesExactWeightedArgMax': ('quantilesExactWeighted', 'ArgMax'), 'uniqArgMax': ('uniq', 'ArgMax'), 'argMaxArgMax': ('argMax', 'ArgMax'), 'topKArgMax': ('topK', 'ArgMax'), 'mannWhitneyUTestArgMax': ('mannWhitneyUTest', 'ArgMax'), 'cramersVBiasCorrectedArgMax': ('cramersVBiasCorrected', 'ArgMax'), 'histogramArgMax': ('histogram', 'ArgMax'), 'sumArgMax': ('sum', 'ArgMax'), 'quantileArgMax': ('quantile', 'ArgMax'), 'groupBitmapArgMax': ('groupBitmap', 'ArgMax'), 'anyHeavyArgMax': ('anyHeavy', 'ArgMax'), 'boundingRatioArgMax': ('boundingRatio', 'ArgMax'), 'groupBitOrArgMax': ('groupBitOr', 'ArgMax'), 'sumKahanArgMax': ('sumKahan', 'ArgMax'), 'categoricalInformationValueArgMax': ('categoricalInformationValue', 'ArgMax'), 'quantileTDigestWeightedArgMax': ('quantileTDigestWeighted', 'ArgMax'), 'groupArrayMovingSumArgMax': ('groupArrayMovingSum', 'ArgMax'), 'groupArraySampleArgMax': ('groupArraySample', 'ArgMax'), 'varPopArgMax': ('varPop', 'ArgMax'), 'quantileTimingWeightedArgMax': ('quantileTimingWeighted', 'ArgMax'), 'avgWeightedArgMax': ('avgWeighted', 'ArgMax'), 'quantileExactLowArgMax': ('quantileExactLow', 'ArgMax'), 'quantileDeterministicArgMax': ('quantileDeterministic', 'ArgMax'), 'stochasticLinearRegressionArgMax': ('stochasticLinearRegression', 'ArgMax'), 'quantileBFloat16ArgMax': ('quantileBFloat16', 'ArgMax'), 'last_valueArgMax': ('last_value', 'ArgMax'), 'sumCountArgMax': ('sumCount', 'ArgMax'), 'groupArrayLastArgMax': ('groupArrayLast', 'ArgMax'), 'kurtPopArgMax': ('kurtPop', 'ArgMax'), 'quantilesTimingArgMax': ('quantilesTiming', 'ArgMax'), 'maxIntersectionsPositionArgMax': ('maxIntersectionsPosition', 'ArgMax'), 'groupBitmapOrArgMax': ('groupBitmapOr', 'ArgMax'), 'rankCorrArgMax': ('rankCorr', 'ArgMax'), 'argMinArgMax': ('argMin', 'ArgMax'), 'largestTriangleThreeBucketsArgMax': ('largestTriangleThreeBuckets', 'ArgMax'), 'groupBitXorArgMax': ('groupBitXor', 'ArgMax'), 'quantileTDigestArgMax': ('quantileTDigest', 'ArgMax'), 'quantilesTDigestWeightedArgMax': ('quantilesTDigestWeighted', 'ArgMax'), 'sumMapArgMax': ('sumMap', 'ArgMax'), 'maxMapArgMax': ('maxMap', 'ArgMax'), 'skewSampArgMax': ('skewSamp', 'ArgMax'), 'anyLastArgMax': ('anyLast', 'ArgMax'), 'quantilesExactArgMax': ('quantilesExact', 'ArgMax'), 'uniqExactArgMax': ('uniqExact', 'ArgMax'), 'countArgMax': ('count', 'ArgMax'), 'quantilesTimingWeightedArgMax': ('quantilesTimingWeighted', 'ArgMax'), 'uniqHLL12ArgMax': ('uniqHLL12', 'ArgMax'), 'uniqThetaArgMax': ('uniqTheta', 'ArgMax'), 'minMapArgMax': ('minMap', 'ArgMax'), 'quantileTiming': ('quantileTiming', ''), 'quantileInterpolatedWeighted': ('quantileInterpolatedWeighted', ''), 'theilsU': ('theilsU', ''), 'exponentialTimeDecayedAvg': ('exponentialTimeDecayedAvg', ''), 'cramersV': ('cramersV', ''), 'covarSamp': ('covarSamp', ''), 'topKWeighted': ('topKWeighted', ''), 'quantilesBFloat16': ('quantilesBFloat16', ''), 'sparkBar': ('sparkBar', ''), 'min': ('min', ''), 'windowFunnel': ('windowFunnel', ''), 'groupArrayMovingAvg': ('groupArrayMovingAvg', ''), 'groupArray': ('groupArray', ''), 'uniqCombined64': ('uniqCombined64', ''), 'groupBitmapXor': ('groupBitmapXor', ''), 'sequenceMatch': ('sequenceMatch', ''), 'groupBitmapAnd': ('groupBitmapAnd', ''), 'groupUniqArray': ('groupUniqArray', ''), 'quantilesDeterministic': ('quantilesDeterministic', ''), 'quantilesExactLow': ('quantilesExactLow', ''), 'contingency': ('contingency', ''), 'avg': ('avg', ''), 'welchTTest': ('welchTTest', ''), 'meanZTest': ('meanZTest', ''), 'stddevSamp': ('stddevSamp', ''), 'kolmogorovSmirnovTest': ('kolmogorovSmirnovTest', ''), 'groupArrayInsertAt': ('groupArrayInsertAt', ''), 'corr': ('corr', ''), 'groupBitAnd': ('groupBitAnd', ''), 'sumWithOverflow': ('sumWithOverflow', ''), 'any': ('any', ''), 'kurtSamp': ('kurtSamp', ''), 'quantilesInterpolatedWeighted': ('quantilesInterpolatedWeighted', ''), 'quantileGK': ('quantileGK', ''), 'deltaSumTimestamp': ('deltaSumTimestamp', ''), 'simpleLinearRegression': ('simpleLinearRegression', ''), 'quantilesTDigest': ('quantilesTDigest', ''), 'uniqUpTo': ('uniqUpTo', ''), 'deltaSum': ('deltaSum', ''), 'stddevPop': ('stddevPop', ''), 'max': ('max', ''), 'quantiles': ('quantiles', ''), 'median': ('median', ''), 'varSamp': ('varSamp', ''), 'quantileBFloat16Weighted': ('quantileBFloat16Weighted', ''), 'quantilesExactHigh': ('quantilesExactHigh', ''), 'quantilesBFloat16Weighted': ('quantilesBFloat16Weighted', ''), 'quantileExactWeighted': ('quantileExactWeighted', ''), 'intervalLengthSum': ('intervalLengthSum', ''), 'first_value': ('first_value', ''), 'studentTTest': ('studentTTest', ''), 'stochasticLogisticRegression': ('stochasticLogisticRegression', ''), 'skewPop': ('skewPop', ''), 'sequenceNextNode': ('sequenceNextNode', ''), 'entropy': ('entropy', ''), 'maxIntersections': ('maxIntersections', ''), 'quantileExactHigh': ('quantileExactHigh', ''), 'quantileExact': ('quantileExact', ''), 'quantilesGK': ('quantilesGK', ''), 'uniqCombined': ('uniqCombined', ''), 'exponentialMovingAverage': ('exponentialMovingAverage', ''), 'sequenceCount': ('sequenceCount', ''), 'covarPop': ('covarPop', ''), 'retention': ('retention', ''), 'quantilesExactWeighted': ('quantilesExactWeighted', ''), 'uniq': ('uniq', ''), 'argMax': ('argMax', ''), 'topK': ('topK', ''), 'mannWhitneyUTest': ('mannWhitneyUTest', ''), 'cramersVBiasCorrected': ('cramersVBiasCorrected', ''), 'histogram': ('histogram', ''), 'sum': ('sum', ''), 'quantile': ('quantile', ''), 'groupBitmap': ('groupBitmap', ''), 'anyHeavy': ('anyHeavy', ''), 'boundingRatio': ('boundingRatio', ''), 'groupBitOr': ('groupBitOr', ''), 'sumKahan': ('sumKahan', ''), 'categoricalInformationValue': ('categoricalInformationValue', ''), 'quantileTDigestWeighted': ('quantileTDigestWeighted', ''), 'groupArrayMovingSum': ('groupArrayMovingSum', ''), 'groupArraySample': ('groupArraySample', ''), 'varPop': ('varPop', ''), 'quantileTimingWeighted': ('quantileTimingWeighted', ''), 'avgWeighted': ('avgWeighted', ''), 'quantileExactLow': ('quantileExactLow', ''), 'quantileDeterministic': ('quantileDeterministic', ''), 'stochasticLinearRegression': ('stochasticLinearRegression', ''), 'quantileBFloat16': ('quantileBFloat16', ''), 'last_value': ('last_value', ''), 'sumCount': ('sumCount', ''), 'groupArrayLast': ('groupArrayLast', ''), 'kurtPop': ('kurtPop', ''), 'quantilesTiming': ('quantilesTiming', ''), 'maxIntersectionsPosition': ('maxIntersectionsPosition', ''), 'groupBitmapOr': ('groupBitmapOr', ''), 'rankCorr': ('rankCorr', ''), 'argMin': ('argMin', ''), 'largestTriangleThreeBuckets': ('largestTriangleThreeBuckets', ''), 'groupBitXor': ('groupBitXor', ''), 'quantileTDigest': ('quantileTDigest', ''), 'quantilesTDigestWeighted': ('quantilesTDigestWeighted', ''), 'skewSamp': ('skewSamp', ''), 'anyLast': ('anyLast', ''), 'quantilesExact': ('quantilesExact', ''), 'uniqExact': ('uniqExact', ''), 'count': ('count', ''), 'quantilesTimingWeighted': ('quantilesTimingWeighted', ''), 'uniqHLL12': ('uniqHLL12', ''), 'uniqTheta': ('uniqTheta', '')}</span> </div> @@ -3431,7 +3431,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">JOIN_KINDS</span> = <input id="ClickHouse.Parser.JOIN_KINDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.JOIN_KINDS-view-value"></label><span class="default_value">{<TokenType.ARRAY: 'ARRAY'>, <TokenType.CROSS: 'CROSS'>, <TokenType.ASOF: 'ASOF'>, <TokenType.OUTER: 'OUTER'>, <TokenType.INNER: 'INNER'>, <TokenType.SEMI: 'SEMI'>, <TokenType.ANTI: 'ANTI'>, <TokenType.ANY: 'ANY'>}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.JOIN_KINDS-view-value"></label><span class="default_value">{<TokenType.ASOF: 'ASOF'>, <TokenType.INNER: 'INNER'>, <TokenType.OUTER: 'OUTER'>, <TokenType.CROSS: 'CROSS'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.ANTI: 'ANTI'>, <TokenType.SEMI: 'SEMI'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3444,7 +3444,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="ClickHouse.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>}</span> </div> @@ -3457,7 +3457,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">ALIAS_TOKENS</span> = <input id="ClickHouse.Parser.ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ClickHouse.Parser.ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="ClickHouse.Parser.ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3520,7 +3520,7 @@ Default: 3</li> <div id="ClickHouse.Parser.SCHEMA_UNNAMED_CONSTRAINTS" class="classattr"> <div class="attr variable"> <span class="name">SCHEMA_UNNAMED_CONSTRAINTS</span> = -<span class="default_value">{'LIKE', 'CHECK', 'UNIQUE', 'INDEX', 'EXCLUDE', 'PRIMARY KEY', 'PERIOD', 'FOREIGN KEY'}</span> +<span class="default_value">{'PERIOD', 'PRIMARY KEY', 'FOREIGN KEY', 'UNIQUE', 'EXCLUDE', 'CHECK', 'LIKE', 'INDEX'}</span> </div> @@ -3571,6 +3571,7 @@ Default: 3</li> <dd id="ClickHouse.Parser.CREATABLES" class="variable"><a href="../parser.html#Parser.CREATABLES">CREATABLES</a></dd> <dd id="ClickHouse.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="ClickHouse.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> + <dd id="ClickHouse.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="ClickHouse.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="ClickHouse.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="ClickHouse.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -4231,7 +4232,7 @@ Default: True</li> <div id="ClickHouse.Generator.ON_CLUSTER_TARGETS" class="classattr"> <div class="attr variable"> <span class="name">ON_CLUSTER_TARGETS</span> = -<span class="default_value">{'TABLE', 'VIEW', 'INDEX', 'DICTIONARY', 'FUNCTION', 'NAMED COLLECTION', 'DATABASE'}</span> +<span class="default_value">{'VIEW', 'DATABASE', 'DICTIONARY', 'NAMED COLLECTION', 'FUNCTION', 'TABLE', 'INDEX'}</span> </div> diff --git a/docs/sqlglot/dialects/databricks.html b/docs/sqlglot/dialects/databricks.html index a23226b..6c4f9ed 100644 --- a/docs/sqlglot/dialects/databricks.html +++ b/docs/sqlglot/dialects/databricks.html @@ -798,7 +798,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Databricks.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Databricks.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_as_cast.<locals>.<lambda>>, 'DATE_ADD': <function build_date_delta.<locals>._builder>, 'DATEDIFF': <function build_date_delta.<locals>._builder>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function Hive.Parser.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function Spark2.Parser.<lambda>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function Hive.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function Spark2.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function Spark2.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function Spark2.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function Hive.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function Hive.Parser.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function Hive.Parser.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function Spark2.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function Hive.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function Hive.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <function Spark2.Parser.<lambda>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function Hive.Parser.<lambda>>, 'AGGREGATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'BOOLEAN': <function _build_as_cast.<locals>.<lambda>>, 'DOUBLE': <function _build_as_cast.<locals>.<lambda>>, 'FLOAT': <function _build_as_cast.<locals>.<lambda>>, 'FROM_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'INT': <function _build_as_cast.<locals>.<lambda>>, 'MAP_FROM_ARRAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHIFTLEFT': <function binary_from_function.<locals>.<lambda>>, 'SHIFTRIGHT': <function binary_from_function.<locals>.<lambda>>, 'STRING': <function _build_as_cast.<locals>.<lambda>>, 'TO_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TO_UNIX_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'TO_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TIMESTAMP_LTZ': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_NTZ': <function _build_as_cast.<locals>.<lambda>>, 'TRY_ELEMENT_AT': <function Spark.Parser.<lambda>>, 'DATEADD': <function build_date_delta.<locals>._builder>}</span> + <label class="view-value-button pdoc-button" for="Databricks.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_as_cast.<locals>.<lambda>>, 'DATE_ADD': <function build_date_delta.<locals>._builder>, 'DATEDIFF': <function build_date_delta.<locals>._builder>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function Hive.Parser.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function Spark2.Parser.<lambda>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function Hive.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function Spark2.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function Spark2.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function Spark2.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function Hive.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function Hive.Parser.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function Hive.Parser.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function Spark2.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function Hive.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function Hive.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <function Spark2.Parser.<lambda>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function Hive.Parser.<lambda>>, 'AGGREGATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'BOOLEAN': <function _build_as_cast.<locals>.<lambda>>, 'DOUBLE': <function _build_as_cast.<locals>.<lambda>>, 'FLOAT': <function _build_as_cast.<locals>.<lambda>>, 'FROM_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'INT': <function _build_as_cast.<locals>.<lambda>>, 'MAP_FROM_ARRAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHIFTLEFT': <function binary_from_function.<locals>.<lambda>>, 'SHIFTRIGHT': <function binary_from_function.<locals>.<lambda>>, 'STRING': <function _build_as_cast.<locals>.<lambda>>, 'TO_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TO_UNIX_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'TO_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TIMESTAMP_LTZ': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_NTZ': <function _build_as_cast.<locals>.<lambda>>, 'TRY_ELEMENT_AT': <function Spark.Parser.<lambda>>, 'DATEADD': <function build_date_delta.<locals>._builder>}</span> </div> @@ -864,6 +864,7 @@ Default: 3</li> <dd id="Databricks.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Databricks.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Databricks.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Databricks.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Databricks.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Databricks.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Databricks.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/dialect.html b/docs/sqlglot/dialects/dialect.html index 138c944..73c6c1f 100644 --- a/docs/sqlglot/dialects/dialect.html +++ b/docs/sqlglot/dialects/dialect.html @@ -76,6 +76,9 @@ <a class="variable" href="#Dialects.HIVE">HIVE</a> </li> <li> + <a class="variable" href="#Dialects.MATERIALIZE">MATERIALIZE</a> + </li> + <li> <a class="variable" href="#Dialects.MYSQL">MYSQL</a> </li> <li> @@ -94,6 +97,9 @@ <a class="variable" href="#Dialects.REDSHIFT">REDSHIFT</a> </li> <li> + <a class="variable" href="#Dialects.RISINGWAVE">RISINGWAVE</a> + </li> + <li> <a class="variable" href="#Dialects.SNOWFLAKE">SNOWFLAKE</a> </li> <li> @@ -603,1132 +609,1134 @@ </span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">DRILL</span> <span class="o">=</span> <span class="s2">"drill"</span> </span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">DUCKDB</span> <span class="o">=</span> <span class="s2">"duckdb"</span> </span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">HIVE</span> <span class="o">=</span> <span class="s2">"hive"</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">MYSQL</span> <span class="o">=</span> <span class="s2">"mysql"</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">ORACLE</span> <span class="o">=</span> <span class="s2">"oracle"</span> -</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">POSTGRES</span> <span class="o">=</span> <span class="s2">"postgres"</span> -</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">PRESTO</span> <span class="o">=</span> <span class="s2">"presto"</span> -</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">PRQL</span> <span class="o">=</span> <span class="s2">"prql"</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">REDSHIFT</span> <span class="o">=</span> <span class="s2">"redshift"</span> -</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="n">SNOWFLAKE</span> <span class="o">=</span> <span class="s2">"snowflake"</span> -</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="n">SPARK</span> <span class="o">=</span> <span class="s2">"spark"</span> -</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="n">SPARK2</span> <span class="o">=</span> <span class="s2">"spark2"</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="n">SQLITE</span> <span class="o">=</span> <span class="s2">"sqlite"</span> -</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="n">STARROCKS</span> <span class="o">=</span> <span class="s2">"starrocks"</span> -</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="n">TABLEAU</span> <span class="o">=</span> <span class="s2">"tableau"</span> -</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="n">TERADATA</span> <span class="o">=</span> <span class="s2">"teradata"</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="n">TRINO</span> <span class="o">=</span> <span class="s2">"trino"</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="n">TSQL</span> <span class="o">=</span> <span class="s2">"tsql"</span> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="k">class</span> <span class="nc">NormalizationStrategy</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">AutoName</span><span class="p">):</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">LOWERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are lowercased."""</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">UPPERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are uppercased."""</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">CASE_SENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="w"> </span><span class="sd">"""Always case-sensitive, regardless of quotes."""</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">CASE_INSENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a><span class="w"> </span><span class="sd">"""Always case-insensitive, regardless of quotes."""</span> -</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><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a><span class="k">class</span> <span class="nc">_Dialect</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">classes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> -</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">other</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">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">other</span><span class="p">:</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">return</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> -</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="k">return</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">MATERIALIZE</span> <span class="o">=</span> <span class="s2">"materialize"</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">MYSQL</span> <span class="o">=</span> <span class="s2">"mysql"</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">ORACLE</span> <span class="o">=</span> <span class="s2">"oracle"</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">POSTGRES</span> <span class="o">=</span> <span class="s2">"postgres"</span> +</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">PRESTO</span> <span class="o">=</span> <span class="s2">"presto"</span> +</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">PRQL</span> <span class="o">=</span> <span class="s2">"prql"</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="n">REDSHIFT</span> <span class="o">=</span> <span class="s2">"redshift"</span> +</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="n">RISINGWAVE</span> <span class="o">=</span> <span class="s2">"risingwave"</span> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="n">SNOWFLAKE</span> <span class="o">=</span> <span class="s2">"snowflake"</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="n">SPARK</span> <span class="o">=</span> <span class="s2">"spark"</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="n">SPARK2</span> <span class="o">=</span> <span class="s2">"spark2"</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="n">SQLITE</span> <span class="o">=</span> <span class="s2">"sqlite"</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="n">STARROCKS</span> <span class="o">=</span> <span class="s2">"starrocks"</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="n">TABLEAU</span> <span class="o">=</span> <span class="s2">"tableau"</span> +</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="n">TERADATA</span> <span class="o">=</span> <span class="s2">"teradata"</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="n">TRINO</span> <span class="o">=</span> <span class="s2">"trino"</span> +</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">TSQL</span> <span class="o">=</span> <span class="s2">"tsql"</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> +</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> +</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a><span class="k">class</span> <span class="nc">NormalizationStrategy</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">AutoName</span><span class="p">):</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">LOWERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are lowercased."""</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">UPPERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are uppercased."""</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">CASE_SENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a><span class="w"> </span><span class="sd">"""Always case-sensitive, regardless of quotes."""</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> +</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">CASE_INSENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a><span class="w"> </span><span class="sd">"""Always case-insensitive, regardless of quotes."""</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> +</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="k">class</span> <span class="nc">_Dialect</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">classes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> +</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">other</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">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">other</span><span class="p">:</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="k">return</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">return</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> </span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> -</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> <span class="nd">@classmethod</span> -</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]:</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> -</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="nd">@classmethod</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span> -</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</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">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a> <span class="p">)</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">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]]:</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</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="n">default</span><span class="p">)</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a> -</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a> <span class="n">enum</span> <span class="o">=</span> <span class="n">Dialects</span><span class="o">.</span><span class="n">__members__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">clsname</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">[</span><span class="n">enum</span><span class="o">.</span><span class="n">value</span> <span class="k">if</span> <span class="n">enum</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">clsname</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span> <span class="o">=</span> <span class="n">klass</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> -</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">TIME_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">)</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">FORMAT_TRIE</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> <span class="n">new_trie</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span><span class="p">)</span> <span class="k">if</span> <span class="n">klass</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span> <span class="k">else</span> <span class="n">klass</span><span class="o">.</span><span class="n">TIME_TRIE</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="p">)</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">INVERSE_TIME_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span><span class="p">)</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> -</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="n">base</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">bases</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="n">base_tokenizer</span> <span class="o">=</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s2">"tokenizer_class"</span><span class="p">,</span> <span class="n">Tokenizer</span><span class="p">),)</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="n">base_parser</span> <span class="o">=</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s2">"parser_class"</span><span class="p">,</span> <span class="n">Parser</span><span class="p">),)</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="n">base_generator</span> <span class="o">=</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s2">"generator_class"</span><span class="p">,</span> <span class="n">Generator</span><span class="p">),)</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> -</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="s2">"Tokenizer"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="s2">"Tokenizer"</span><span class="p">,</span> <span class="n">base_tokenizer</span><span class="p">,</span> <span class="p">{})</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="p">)</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">parser_class</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"Parser"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="s2">"Parser"</span><span class="p">,</span> <span class="n">base_parser</span><span class="p">,</span> <span class="p">{}))</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="s2">"Generator"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="s2">"Generator"</span><span class="p">,</span> <span class="n">base_generator</span><span class="p">,</span> <span class="p">{})</span> -</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><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">QUOTE_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">QUOTE_END</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">items</span><span class="p">())[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_END</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="p">)[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> -</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="k">def</span> <span class="nf">get_start_end</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="p">(</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="k">if</span> <span class="n">t</span> <span class="o">==</span> <span class="n">token_type</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="p">),</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="p">)</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> -</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">BIT_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BIT_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">)</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">HEX_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">HEX_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">)</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">BYTE_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BYTE_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">)</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">UNICODE_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">UNICODE_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">)</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> -</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="k">if</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">STRING_ESCAPES</span><span class="p">:</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</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="o">**</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="o">**</span><span class="n">klass</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="p">}</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> -</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">ESCAPED_SEQUENCES</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> +</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span> +</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a> +</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="nd">@classmethod</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Type</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">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> +</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> <span class="nd">@classmethod</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</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">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a> <span class="p">)</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">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">]]:</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</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="n">default</span><span class="p">)</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a> +</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a> <span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="n">enum</span> <span class="o">=</span> <span class="n">Dialects</span><span class="o">.</span><span class="n">__members__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">clsname</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">[</span><span class="n">enum</span><span class="o">.</span><span class="n">value</span> <span class="k">if</span> <span class="n">enum</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">clsname</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span> <span class="o">=</span> <span class="n">klass</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> +</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">TIME_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">)</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">FORMAT_TRIE</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="n">new_trie</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span><span class="p">)</span> <span class="k">if</span> <span class="n">klass</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span> <span class="k">else</span> <span class="n">klass</span><span class="o">.</span><span class="n">TIME_TRIE</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="p">)</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">INVERSE_TIME_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">INVERSE_TIME_MAPPING</span><span class="p">)</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> +</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="n">base</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">bases</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="n">base_tokenizer</span> <span class="o">=</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s2">"tokenizer_class"</span><span class="p">,</span> <span class="n">Tokenizer</span><span class="p">),)</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> <span class="n">base_parser</span> <span class="o">=</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s2">"parser_class"</span><span class="p">,</span> <span class="n">Parser</span><span class="p">),)</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">base_generator</span> <span class="o">=</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s2">"generator_class"</span><span class="p">,</span> <span class="n">Generator</span><span class="p">),)</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> +</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="s2">"Tokenizer"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="s2">"Tokenizer"</span><span class="p">,</span> <span class="n">base_tokenizer</span><span class="p">,</span> <span class="p">{})</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="p">)</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">parser_class</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"Parser"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="s2">"Parser"</span><span class="p">,</span> <span class="n">base_parser</span><span class="p">,</span> <span class="p">{}))</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="s2">"Generator"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="s2">"Generator"</span><span class="p">,</span> <span class="n">base_generator</span><span class="p">,</span> <span class="p">{})</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="p">)</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> +</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">QUOTE_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">QUOTE_END</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">items</span><span class="p">())[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_END</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="p">)[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> +</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="k">def</span> <span class="nf">get_start_end</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="p">(</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="k">if</span> <span class="n">t</span> <span class="o">==</span> <span class="n">token_type</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="p">),</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="p">)</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> +</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">BIT_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BIT_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">)</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">HEX_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">HEX_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">)</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">BYTE_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BYTE_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">)</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">UNICODE_START</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">UNICODE_END</span> <span class="o">=</span> <span class="n">get_start_end</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">)</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> +</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> <span class="k">if</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="o">.</span><span class="n">STRING_ESCAPES</span><span class="p">:</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="o">**</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="o">**</span><span class="n">klass</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="p">}</span> </span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> -</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="k">if</span> <span class="n">enum</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"bigquery"</span><span class="p">):</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">SELECT_KINDS</span> <span class="o">=</span> <span class="p">()</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> -</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="k">if</span> <span class="n">enum</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"athena"</span><span class="p">,</span> <span class="s2">"presto"</span><span class="p">,</span> <span class="s2">"trino"</span><span class="p">):</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">TRY_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> -</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="k">if</span> <span class="n">enum</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"databricks"</span><span class="p">,</span> <span class="s2">"hive"</span><span class="p">,</span> <span class="s2">"spark"</span><span class="p">,</span> <span class="s2">"spark2"</span><span class="p">):</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="n">modifier_transforms</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">AFTER_HAVING_MODIFIER_TRANSFORMS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="k">for</span> <span class="n">modifier</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"cluster"</span><span class="p">,</span> <span class="s2">"distribute"</span><span class="p">,</span> <span class="s2">"sort"</span><span class="p">):</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">modifier_transforms</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">modifier</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> -</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">AFTER_HAVING_MODIFIER_TRANSFORMS</span> <span class="o">=</span> <span class="n">modifier_transforms</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">ESCAPED_SEQUENCES</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> +</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="k">if</span> <span class="n">enum</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"bigquery"</span><span class="p">):</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">SELECT_KINDS</span> <span class="o">=</span> <span class="p">()</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> +</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="k">if</span> <span class="n">enum</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"athena"</span><span class="p">,</span> <span class="s2">"presto"</span><span class="p">,</span> <span class="s2">"trino"</span><span class="p">):</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">TRY_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> +</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="k">if</span> <span class="n">enum</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"databricks"</span><span class="p">,</span> <span class="s2">"hive"</span><span class="p">,</span> <span class="s2">"spark"</span><span class="p">,</span> <span class="s2">"spark2"</span><span class="p">):</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">modifier_transforms</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">AFTER_HAVING_MODIFIER_TRANSFORMS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="k">for</span> <span class="n">modifier</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"cluster"</span><span class="p">,</span> <span class="s2">"distribute"</span><span class="p">,</span> <span class="s2">"sort"</span><span class="p">):</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">modifier_transforms</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">modifier</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> </span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> -</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">klass</span><span class="o">.</span><span class="n">SUPPORTS_SEMI_ANTI_JOIN</span><span class="p">:</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">|</span> <span class="p">{</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="p">}</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> -</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="k">return</span> <span class="n">klass</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">generator_class</span><span class="o">.</span><span class="n">AFTER_HAVING_MODIFIER_TRANSFORMS</span> <span class="o">=</span> <span class="n">modifier_transforms</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> +</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">klass</span><span class="o">.</span><span class="n">SUPPORTS_SEMI_ANTI_JOIN</span><span class="p">:</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">klass</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">|</span> <span class="p">{</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="p">}</span> </span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> -</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> -</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a><span class="k">class</span> <span class="nc">Dialect</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Dialect</span><span class="p">):</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a><span class="w"> </span><span class="sd">"""The base index offset for arrays."""</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> -</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="n">WEEK_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a><span class="w"> </span><span class="sd">"""First day of the week in DATE_TRUNC(week). Defaults to 0 (Monday). -1 would be Sunday."""</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> -</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="n">UNNEST_COLUMN_ONLY</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a><span class="w"> </span><span class="sd">"""Whether `UNNEST` table aliases are treated as column aliases."""</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> -</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a><span class="w"> </span><span class="sd">"""Whether the table alias comes after tablesample."""</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> -</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a><span class="w"> </span><span class="sd">"""Whether a size in the table sample clause represents percentage."""</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> -</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">NORMALIZATION_STRATEGY</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">LOWERCASE</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> -</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a><span class="w"> </span><span class="sd">"""Whether an unquoted identifier can start with a digit."""</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> -</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a><span class="w"> </span><span class="sd">"""Whether the DPIPE token (`||`) is a string concatenation operator."""</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> -</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="n">STRICT_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a><span class="w"> </span><span class="sd">"""Whether `CONCAT`'s arguments must be strings."""</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> -</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a><span class="w"> </span><span class="sd">"""Whether user-defined data types are supported."""</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> -</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">SUPPORTS_SEMI_ANTI_JOIN</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a><span class="w"> </span><span class="sd">"""Whether `SEMI` or `ANTI` joins are supported."""</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> -</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"upper"</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a><span class="sd"> Determines how function names are going to be normalized.</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a><span class="sd"> Possible values:</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a><span class="sd"> "upper" or True: Convert names to uppercase.</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a><span class="sd"> "lower": Convert names to lowercase.</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a><span class="sd"> False: Disables function name normalization.</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a><span class="sd"> """</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> -</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">LOG_BASE_FIRST</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><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a><span class="sd"> Whether the base comes first in the `LOG` function.</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a><span class="sd"> Possible values: `True`, `False`, `None` (two arguments are not supported by `LOG`)</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a><span class="sd"> """</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">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_small"</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a><span class="sd"> Default `NULL` ordering method to use if not explicitly set.</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a><span class="sd"> Possible values: `"nulls_are_small"`, `"nulls_are_large"`, `"nulls_are_last"`</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a><span class="sd"> """</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> -</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a><span class="sd"> Whether the behavior of `a / b` depends on the types of `a` and `b`.</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a><span class="sd"> False means `a / b` is always float division.</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a><span class="sd"> True means `a / b` is integer division if both `a` and `b` are integers.</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a><span class="sd"> """</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> -</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">SAFE_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a><span class="w"> </span><span class="sd">"""Whether division by zero throws an error (`False`) or returns NULL (`True`)."""</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> -</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a><span class="w"> </span><span class="sd">"""A `NULL` arg in `CONCAT` yields `NULL` by default, but in some dialects it yields an empty string."""</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> -</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">HEX_LOWERCASE</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a><span class="w"> </span><span class="sd">"""Whether the `HEX` function returns a lowercase hexadecimal string."""</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> -</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2">'"</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y%m</span><span class="si">%d</span><span class="s2">'"</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S'"</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> -</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a><span class="w"> </span><span class="sd">"""Associates this dialect's time formats with their equivalent Python `strftime` formats."""</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> -</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_model_rules_date_time</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="c1"># https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Data-Type-Conversions/Character-to-DATE-Conversion/Forcing-a-FORMAT-on-CAST-for-Converting-Character-to-DATE</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">FORMAT_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a><span class="sd"> Helper which is used for parsing the special syntax `CAST(x AS DATE FORMAT 'yyyy')`.</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a><span class="sd"> If empty, the corresponding trie will be constructed off of `TIME_MAPPING`.</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a><span class="sd"> """</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> -</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">UNESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a><span class="w"> </span><span class="sd">"""Mapping of an escaped sequence (`\\n`) to its unescaped version (`\n`)."""</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> -</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">PSEUDOCOLUMNS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a><span class="sd"> Columns that are auto-generated by the engine corresponding to this dialect.</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a><span class="sd"> For example, such columns may be excluded from `SELECT *` queries.</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a><span class="sd"> """</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> -</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="n">PREFER_CTE_ALIAS_COLUMN</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a><span class="sd"> Some dialects, such as Snowflake, allow you to reference a CTE column alias in the</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a><span class="sd"> HAVING clause of the CTE. This flag will cause the CTE alias columns to override</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a><span class="sd"> any projection aliases in the subquery.</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> -</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a><span class="sd"> For example,</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a><span class="sd"> WITH y(c) AS (</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a><span class="sd"> SELECT SUM(a) FROM (SELECT 1 a) AS x HAVING c > 0</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a><span class="sd"> ) SELECT c FROM y;</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> -</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a><span class="sd"> will be rewritten as</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="k">return</span> <span class="n">klass</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> +</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="k">class</span> <span class="nc">Dialect</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Dialect</span><span class="p">):</span> +</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a><span class="w"> </span><span class="sd">"""The base index offset for arrays."""</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">WEEK_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a><span class="w"> </span><span class="sd">"""First day of the week in DATE_TRUNC(week). Defaults to 0 (Monday). -1 would be Sunday."""</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> +</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">UNNEST_COLUMN_ONLY</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a><span class="w"> </span><span class="sd">"""Whether `UNNEST` table aliases are treated as column aliases."""</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="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a><span class="w"> </span><span class="sd">"""Whether the table alias comes after tablesample."""</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> +</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a><span class="w"> </span><span class="sd">"""Whether a size in the table sample clause represents percentage."""</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> +</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">NORMALIZATION_STRATEGY</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">LOWERCASE</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> +</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a><span class="w"> </span><span class="sd">"""Whether an unquoted identifier can start with a digit."""</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> +</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a><span class="w"> </span><span class="sd">"""Whether the DPIPE token (`||`) is a string concatenation operator."""</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="n">STRICT_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a><span class="w"> </span><span class="sd">"""Whether `CONCAT`'s arguments must be strings."""</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> +</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a><span class="w"> </span><span class="sd">"""Whether user-defined data types are supported."""</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> +</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">SUPPORTS_SEMI_ANTI_JOIN</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a><span class="w"> </span><span class="sd">"""Whether `SEMI` or `ANTI` joins are supported."""</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">NORMALIZE_FUNCTIONS</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"upper"</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a><span class="sd"> Determines how function names are going to be normalized.</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a><span class="sd"> Possible values:</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a><span class="sd"> "upper" or True: Convert names to uppercase.</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a><span class="sd"> "lower": Convert names to lowercase.</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a><span class="sd"> False: Disables function name normalization.</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a><span class="sd"> """</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> +</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">LOG_BASE_FIRST</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><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a><span class="sd"> Whether the base comes first in the `LOG` function.</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a><span class="sd"> Possible values: `True`, `False`, `None` (two arguments are not supported by `LOG`)</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a><span class="sd"> """</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> +</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_small"</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a><span class="sd"> Default `NULL` ordering method to use if not explicitly set.</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a><span class="sd"> Possible values: `"nulls_are_small"`, `"nulls_are_large"`, `"nulls_are_last"`</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a><span class="sd"> """</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> +</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a><span class="sd"> Whether the behavior of `a / b` depends on the types of `a` and `b`.</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a><span class="sd"> False means `a / b` is always float division.</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a><span class="sd"> True means `a / b` is integer division if both `a` and `b` are integers.</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a><span class="sd"> """</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> +</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">SAFE_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a><span class="w"> </span><span class="sd">"""Whether division by zero throws an error (`False`) or returns NULL (`True`)."""</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> +</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a><span class="w"> </span><span class="sd">"""A `NULL` arg in `CONCAT` yields `NULL` by default, but in some dialects it yields an empty string."""</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> +</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">HEX_LOWERCASE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a><span class="w"> </span><span class="sd">"""Whether the `HEX` function returns a lowercase hexadecimal string."""</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> +</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2">'"</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y%m</span><span class="si">%d</span><span class="s2">'"</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S'"</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> +</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a><span class="w"> </span><span class="sd">"""Associates this dialect's time formats with their equivalent Python `strftime` formats."""</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> +</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_model_rules_date_time</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="c1"># https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Data-Type-Conversions/Character-to-DATE-Conversion/Forcing-a-FORMAT-on-CAST-for-Converting-Character-to-DATE</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">FORMAT_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a><span class="sd"> Helper which is used for parsing the special syntax `CAST(x AS DATE FORMAT 'yyyy')`.</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a><span class="sd"> If empty, the corresponding trie will be constructed off of `TIME_MAPPING`.</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a><span class="sd"> """</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> +</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">UNESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a><span class="w"> </span><span class="sd">"""Mapping of an escaped sequence (`\\n`) to its unescaped version (`\n`)."""</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> +</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">PSEUDOCOLUMNS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a><span class="sd"> Columns that are auto-generated by the engine corresponding to this dialect.</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a><span class="sd"> For example, such columns may be excluded from `SELECT *` queries.</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a><span class="sd"> """</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> +</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">PREFER_CTE_ALIAS_COLUMN</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a><span class="sd"> Some dialects, such as Snowflake, allow you to reference a CTE column alias in the</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a><span class="sd"> HAVING clause of the CTE. This flag will cause the CTE alias columns to override</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a><span class="sd"> any projection aliases in the subquery.</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> +</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a><span class="sd"> For example,</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a><span class="sd"> WITH y(c) AS (</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a><span class="sd"> SELECT SUM(a) FROM (SELECT 1 a) AS x HAVING c > 0</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a><span class="sd"> ) SELECT c FROM y;</span> </span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> -</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a><span class="sd"> WITH y(c) AS (</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a><span class="sd"> SELECT SUM(a) AS c FROM (SELECT 1 AS a) AS x HAVING c > 0</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a><span class="sd"> ) SELECT c FROM y;</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a><span class="sd"> """</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="c1"># --- Autofilled ---</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a><span class="sd"> will be rewritten as</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a><span class="sd"> WITH y(c) AS (</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a><span class="sd"> SELECT SUM(a) AS c FROM (SELECT 1 AS a) AS x HAVING c > 0</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a><span class="sd"> ) SELECT c FROM y;</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a><span class="sd"> """</span> </span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> -</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">tokenizer_class</span> <span class="o">=</span> <span class="n">Tokenizer</span> -</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">parser_class</span> <span class="o">=</span> <span class="n">Parser</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">generator_class</span> <span class="o">=</span> <span class="n">Generator</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="c1"># A trie of the time_mapping keys</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="n">TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="n">FORMAT_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="n">INVERSE_TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">INVERSE_TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> -</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="n">ESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="c1"># --- Autofilled ---</span> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> +</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">tokenizer_class</span> <span class="o">=</span> <span class="n">Tokenizer</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">parser_class</span> <span class="o">=</span> <span class="n">Parser</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">generator_class</span> <span class="o">=</span> <span class="n">Generator</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> +</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="c1"># A trie of the time_mapping keys</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="n">TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="n">FORMAT_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> +</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="n">INVERSE_TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="n">INVERSE_TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> -</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="c1"># Delimiters for string literals and identifiers</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">QUOTE_START</span> <span class="o">=</span> <span class="s2">"'"</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">QUOTE_END</span> <span class="o">=</span> <span class="s2">"'"</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">IDENTIFIER_START</span> <span class="o">=</span> <span class="s1">'"'</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">IDENTIFIER_END</span> <span class="o">=</span> <span class="s1">'"'</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="c1"># Delimiters for bit, hex, byte and unicode literals</span> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="n">BIT_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">BIT_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">HEX_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">HEX_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">BYTE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="n">BYTE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="n">UNICODE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">UNICODE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="c1"># Separator of COPY statement parameters</span> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">COPY_PARAMS_ARE_CSV</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> -</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="nd">@classmethod</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="k">def</span> <span class="nf">get_or_raise</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dialect</span><span class="p">:</span> -</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a><span class="sd"> Look up a dialect in the global dialect registry and return it if it exists.</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> -</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a><span class="sd"> Args:</span> -</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a><span class="sd"> dialect: The target dialect. If this is a string, it can be optionally followed by</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a><span class="sd"> additional key-value pairs that are separated by commas and are used to specify</span> -</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a><span class="sd"> dialect settings, such as whether the dialect's identifiers are case-sensitive.</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> -</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a><span class="sd"> Example:</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a><span class="sd"> >>> dialect = dialect_class = get_or_raise("duckdb")</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a><span class="sd"> >>> dialect = get_or_raise("mysql, normalization_strategy = case_sensitive")</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a><span class="sd"> Returns:</span> -</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a><span class="sd"> The corresponding Dialect instance.</span> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a><span class="sd"> """</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> -</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dialect</span><span class="p">:</span> -</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">()</span> -</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">_Dialect</span><span class="p">):</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="p">()</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="k">return</span> <span class="n">dialect</span> -</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">dialect_name</span><span class="p">,</span> <span class="o">*</span><span class="n">kv_pairs</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">kv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> <span class="k">for</span> <span class="n">kv</span> <span class="ow">in</span> <span class="n">kv_pairs</span><span class="p">)}</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="sa">f</span><span class="s2">"Invalid dialect format: '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">'. "</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="s2">"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'."</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="p">)</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">result</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dialect_name</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="kn">from</span> <span class="nn">difflib</span> <span class="kn">import</span> <span class="n">get_close_matches</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">get_close_matches</span><span class="p">(</span><span class="n">dialect_name</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="k">if</span> <span class="n">similar</span><span class="p">:</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" Did you mean </span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">?"</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown dialect '</span><span class="si">{</span><span class="n">dialect_name</span><span class="si">}</span><span class="s2">'.</span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">ESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> +</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="c1"># Delimiters for string literals and identifiers</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">QUOTE_START</span> <span class="o">=</span> <span class="s2">"'"</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">QUOTE_END</span> <span class="o">=</span> <span class="s2">"'"</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">IDENTIFIER_START</span> <span class="o">=</span> <span class="s1">'"'</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="n">IDENTIFIER_END</span> <span class="o">=</span> <span class="s1">'"'</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="c1"># Delimiters for bit, hex, byte and unicode literals</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">BIT_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">BIT_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">HEX_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="n">HEX_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="n">BYTE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">BYTE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">UNICODE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">UNICODE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="c1"># Separator of COPY statement parameters</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="n">COPY_PARAMS_ARE_CSV</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="nd">@classmethod</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="k">def</span> <span class="nf">get_or_raise</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dialect</span><span class="p">:</span> +</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a><span class="sd"> Look up a dialect in the global dialect registry and return it if it exists.</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> +</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a><span class="sd"> Args:</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a><span class="sd"> dialect: The target dialect. If this is a string, it can be optionally followed by</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a><span class="sd"> additional key-value pairs that are separated by commas and are used to specify</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a><span class="sd"> dialect settings, such as whether the dialect's identifiers are case-sensitive.</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a><span class="sd"> Example:</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a><span class="sd"> >>> dialect = dialect_class = get_or_raise("duckdb")</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a><span class="sd"> >>> dialect = get_or_raise("mysql, normalization_strategy = case_sensitive")</span> +</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a><span class="sd"> Returns:</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a><span class="sd"> The corresponding Dialect instance.</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a><span class="sd"> """</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dialect</span><span class="p">:</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">()</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">_Dialect</span><span class="p">):</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="p">()</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="k">return</span> <span class="n">dialect</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="n">dialect_name</span><span class="p">,</span> <span class="o">*</span><span class="n">kv_pairs</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">kv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> <span class="k">for</span> <span class="n">kv</span> <span class="ow">in</span> <span class="n">kv_pairs</span><span class="p">)}</span> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="sa">f</span><span class="s2">"Invalid dialect format: '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">'. "</span> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="s2">"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'."</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="p">)</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="n">result</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dialect_name</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="kn">from</span> <span class="nn">difflib</span> <span class="kn">import</span> <span class="n">get_close_matches</span> +</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> +</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">get_close_matches</span><span class="p">(</span><span class="n">dialect_name</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="k">if</span> <span class="n">similar</span><span class="p">:</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" Did you mean </span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">?"</span> </span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="k">return</span> <span class="n">result</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown dialect '</span><span class="si">{</span><span class="n">dialect_name</span><span class="si">}</span><span class="s2">'.</span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid dialect type for '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">': '</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="k">return</span> <span class="n">result</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> -</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="nd">@classmethod</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span> -</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a><span class="w"> </span><span class="sd">"""Converts a time format in this dialect to its equivalent Python `strftime` format."""</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="c1"># the time formats are quoted</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">)</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="p">)</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> -</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">))</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid dialect type for '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">': '</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> +</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="nd">@classmethod</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a><span class="w"> </span><span class="sd">"""Converts a time format in this dialect to its equivalent Python `strftime` format."""</span> +</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="c1"># the time formats are quoted</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">)</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="p">)</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">))</span> </span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"normalization_strategy"</span><span class="p">)</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> -</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="k">if</span> <span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NORMALIZATION_STRATEGY</span> -</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="k">else</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">normalization_strategy</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="p">(</span><span class="n">normalization_strategy</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> -</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</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">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="c1"># Does not currently take dialect state into account</span> -</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</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 class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="c1"># Does not currently take dialect state into account</span> -</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> -</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">def</span> <span class="nf">normalize_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a><span class="sd"> Transforms an identifier in a way that resembles how it'd be resolved by this dialect.</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> -</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a><span class="sd"> For example, an identifier like `FoO` would be resolved as `foo` in Postgres, because it</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a><span class="sd"> lowercases all unquoted identifiers. On the other hand, Snowflake uppercases them, so</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a><span class="sd"> it would resolve it as `FOO`. If it was quoted, it'd need to be treated as case-sensitive,</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a><span class="sd"> and so any normalization would be prohibited in order to avoid "breaking" the identifier.</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a><span class="sd"> There are also dialects like Spark, which are case-insensitive even when quotes are</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a><span class="sd"> present, and dialects like MySQL, whose resolution rules match those employed by the</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a><span class="sd"> underlying operating system, for example they may always be case-sensitive in Linux.</span> -</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> -</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a><span class="sd"> Finally, the normalization behavior of some engines can even be controlled through flags,</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a><span class="sd"> like in Redshift's case, where users can explicitly set enable_case_sensitive_identifier.</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a><span class="sd"> SQLGlot aims to understand and handle all of these different behaviors gracefully, so</span> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a><span class="sd"> that it can analyze queries in the optimizer and successfully capture their semantics.</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a><span class="sd"> """</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">quoted</span> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="p">)</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="p">):</span> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="s2">"this"</span><span class="p">,</span> -</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="p">(</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="k">else</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="p">),</span> -</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="p">)</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> -</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> +</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"normalization_strategy"</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="k">if</span> <span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="kc">None</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">normalization_strategy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NORMALIZATION_STRATEGY</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="p">(</span><span class="n">normalization_strategy</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> +</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</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">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="c1"># Does not currently take dialect state into account</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span> +</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="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="c1"># Does not currently take dialect state into account</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> +</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="k">def</span> <span class="nf">normalize_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a><span class="sd"> Transforms an identifier in a way that resembles how it'd be resolved by this dialect.</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> +</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a><span class="sd"> For example, an identifier like `FoO` would be resolved as `foo` in Postgres, because it</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a><span class="sd"> lowercases all unquoted identifiers. On the other hand, Snowflake uppercases them, so</span> +</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a><span class="sd"> it would resolve it as `FOO`. If it was quoted, it'd need to be treated as case-sensitive,</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a><span class="sd"> and so any normalization would be prohibited in order to avoid "breaking" the identifier.</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> +</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a><span class="sd"> There are also dialects like Spark, which are case-insensitive even when quotes are</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a><span class="sd"> present, and dialects like MySQL, whose resolution rules match those employed by the</span> +</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a><span class="sd"> underlying operating system, for example they may always be case-sensitive in Linux.</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> +</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a><span class="sd"> Finally, the normalization behavior of some engines can even be controlled through flags,</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a><span class="sd"> like in Redshift's case, where users can explicitly set enable_case_sensitive_identifier.</span> +</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="sd"> SQLGlot aims to understand and handle all of these different behaviors gracefully, so</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a><span class="sd"> that it can analyze queries in the optimizer and successfully capture their semantics.</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a><span class="sd"> """</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">quoted</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="p">)</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="p">):</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="s2">"this"</span><span class="p">,</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="p">(</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="k">else</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="p">),</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="p">)</span> </span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="k">def</span> <span class="nf">case_sensitive</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a><span class="w"> </span><span class="sd">"""Checks if text contains any case sensitive characters, based on the dialect's rules."""</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span><span class="p">:</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="k">return</span> <span class="kc">False</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 class="n">unsafe</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="nb">str</span><span class="o">.</span><span class="n">islower</span> -</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="k">else</span> <span class="nb">str</span><span class="o">.</span><span class="n">isupper</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="p">)</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">unsafe</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> -</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">self</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">"safe"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a><span class="w"> </span><span class="sd">"""Checks if text can be identified given an identify option.</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> -</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a><span class="sd"> Args:</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a><span class="sd"> text: The text to check.</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a><span class="sd"> identify:</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a><span class="sd"> `"always"` or `True`: Always returns `True`.</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a><span class="sd"> `"safe"`: Only returns `True` if the identifier is case-insensitive.</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> -</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a><span class="sd"> Returns:</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a><span class="sd"> Whether the given text can be identified.</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a><span class="sd"> """</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</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">"always"</span><span class="p">:</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">"safe"</span><span class="p">:</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</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="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="k">def</span> <span class="nf">case_sensitive</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a><span class="w"> </span><span class="sd">"""Checks if text contains any case sensitive characters, based on the dialect's rules."""</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span><span class="p">:</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="k">return</span> <span class="kc">False</span> +</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="n">unsafe</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="nb">str</span><span class="o">.</span><span class="n">islower</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="k">else</span> <span class="nb">str</span><span class="o">.</span><span class="n">isupper</span> +</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="p">)</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">unsafe</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</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">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">self</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">"safe"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a><span class="w"> </span><span class="sd">"""Checks if text can be identified given an identify option.</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a><span class="sd"> Args:</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a><span class="sd"> text: The text to check.</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a><span class="sd"> identify:</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a><span class="sd"> `"always"` or `True`: Always returns `True`.</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a><span class="sd"> `"safe"`: Only returns `True` if the identifier is case-insensitive.</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="sd"> Returns:</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a><span class="sd"> Whether the given text can be identified.</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a><span class="sd"> """</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</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">"always"</span><span class="p">:</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> +</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">"safe"</span><span class="p">:</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</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="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="k">def</span> <span class="nf">quote_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a><span class="sd"> Adds quotes to a given identifier.</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a><span class="sd"> Args:</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a><span class="sd"> expression: The expression of interest. If it's not an `Identifier`, this method is a no-op.</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a><span class="sd"> identify: If set to `False`, the quotes will only be added if the identifier is deemed</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a><span class="sd"> "unsafe", with respect to its characters and this dialect's normalization strategy.</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a><span class="sd"> """</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</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="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="s2">"quoted"</span><span class="p">,</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="n">identify</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="p">)</span> -</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">return</span> <span class="n">expression</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="k">def</span> <span class="nf">quote_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a><span class="sd"> Adds quotes to a given identifier.</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a><span class="sd"> Args:</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a><span class="sd"> expression: The expression of interest. If it's not an `Identifier`, this method is a no-op.</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a><span class="sd"> identify: If set to `False`, the quotes will only be added if the identifier is deemed</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a><span class="sd"> "unsafe", with respect to its characters and this dialect's normalization strategy.</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a><span class="sd"> """</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="s2">"quoted"</span><span class="p">,</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">identify</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="p">)</span> </span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="k">def</span> <span class="nf">to_json_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">path_text</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="k">return</span> <span class="n">parse_json_path</span><span class="p">(</span><span class="n">path_text</span><span class="p">)</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid JSON path syntax. </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="k">return</span> <span class="n">path</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="k">def</span> <span class="nf">to_json_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">path_text</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="k">return</span> <span class="n">parse_json_path</span><span class="p">(</span><span class="n">path_text</span><span class="p">)</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid JSON path syntax. </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression_type</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">expression_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</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="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</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="bp">self</span><span class="o">.</span><span class="n">generator</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="p">]</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="nd">@property</span> -</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="k">def</span> <span class="nf">tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tokenizer</span><span class="p">:</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_tokenizer"</span><span class="p">):</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="k">def</span> <span class="nf">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Parser</span><span class="p">:</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">:</span> -</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> -</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> -</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a><span class="n">DialectType</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="k">return</span> <span class="n">path</span> +</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> +</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression_type</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">expression_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="p">]</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> +</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="nd">@property</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="k">def</span> <span class="nf">tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tokenizer</span><span class="p">:</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_tokenizer"</span><span class="p">):</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> +</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="k">def</span> <span class="nf">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Parser</span><span class="p">:</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> +</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">:</span> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> </span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a><span class="k">def</span> <span class="nf">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">flatten</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a><span class="k">def</span> <span class="nf">approx_count_distinct_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"accuracy"</span><span class="p">):</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT does not support accuracy"</span><span class="p">)</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> -</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a><span class="k">def</span> <span class="nf">if_sql</span><span class="p">(</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"IF"</span><span class="p">,</span> <span class="n">false_value</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="k">def</span> <span class="nf">_if_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">name</span><span class="p">,</span> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"true"</span><span class="p">),</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"false"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">false_value</span><span class="p">,</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="p">)</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="k">return</span> <span class="n">_if_sql</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a><span class="n">DialectType</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Dialect</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a><span class="k">def</span> <span class="nf">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">flatten</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> +</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a><span class="k">def</span> <span class="nf">approx_count_distinct_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"accuracy"</span><span class="p">):</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT does not support accuracy"</span><span class="p">)</span> +</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a><span class="k">def</span> <span class="nf">if_sql</span><span class="p">(</span> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"IF"</span><span class="p">,</span> <span class="n">false_value</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="k">def</span> <span class="nf">_if_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">name</span><span class="p">,</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"true"</span><span class="p">),</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"false"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">false_value</span><span class="p">,</span> +</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="p">)</span> </span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> -</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a><span class="k">def</span> <span class="nf">arrow_json_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"->"</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"->>"</span><span class="p">)</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="k">return</span> <span class="n">_if_sql</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> +</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> +</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a><span class="k">def</span> <span class="nf">arrow_json_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> </span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> -</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> -</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a><span class="k">def</span> <span class="nf">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">dynamic</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> -</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a><span class="k">def</span> <span class="nf">inline_array_unless_query</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="n">elem</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">elem</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">elem</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">elem</span><span class="p">)</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a><span class="k">def</span> <span class="nf">no_ilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">like_sql</span><span class="p">(</span> -</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">(</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="p">)</span> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="p">)</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a><span class="k">def</span> <span class="nf">no_paren_current_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">zone</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a><span class="k">def</span> <span class="nf">no_recursive_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"recursive"</span><span class="p">):</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Recursive CTEs are unsupported"</span><span class="p">)</span> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"recursive"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> -</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> -</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a><span class="k">def</span> <span class="nf">no_safe_divide_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="n">n</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="n">d</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IF((</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">) <> 0, (</span><span class="si">{</span><span class="n">n</span><span class="si">}</span><span class="s2">) / (</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">), NULL)"</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> -</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a><span class="k">def</span> <span class="nf">no_tablesample_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"TABLESAMPLE unsupported"</span><span class="p">)</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> -</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a><span class="k">def</span> <span class="nf">no_pivot_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"PIVOT unsupported"</span><span class="p">)</span> -</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a><span class="k">def</span> <span class="nf">no_trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a><span class="k">def</span> <span class="nf">no_comment_column_constraint_sql</span><span class="p">(</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"CommentColumnConstraint unsupported"</span><span class="p">)</span> -</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a><span class="k">def</span> <span class="nf">no_map_from_entries_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"MAP_FROM_ENTRIES unsupported"</span><span class="p">)</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a><span class="k">def</span> <span class="nf">str_position_sql</span><span class="p">(</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">generate_instance</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="n">substr</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">expression</span><span class="p">,</span> <span class="s2">"substr"</span><span class="p">)</span> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="n">position</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"instance"</span><span class="p">)</span> <span class="k">if</span> <span class="n">generate_instance</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="k">if</span> <span class="n">position</span><span class="p">:</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="c1"># Normalize third 'pos' argument into 'SUBSTR(..) + offset' across dialects</span> -</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"SUBSTR"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="p">)</span> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" + </span><span class="si">{</span><span class="n">position</span><span class="si">}</span><span class="s2"> - 1"</span> -</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> -</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPOS"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">substr</span><span class="p">,</span> <span class="n">instance</span><span class="p">)</span> <span class="o">+</span> <span class="n">position_offset</span> +</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"->"</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"->>"</span><span class="p">)</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a><span class="k">def</span> <span class="nf">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">dynamic</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a><span class="k">def</span> <span class="nf">inline_array_unless_query</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">elem</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">elem</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">elem</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> +</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">elem</span><span class="p">)</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a><span class="k">def</span> <span class="nf">no_ilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">like_sql</span><span class="p">(</span> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">(</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="p">)</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="p">)</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a><span class="k">def</span> <span class="nf">no_paren_current_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">zone</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> +</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> +</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a><span class="k">def</span> <span class="nf">no_recursive_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"recursive"</span><span class="p">):</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Recursive CTEs are unsupported"</span><span class="p">)</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"recursive"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a><span class="k">def</span> <span class="nf">no_safe_divide_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="n">n</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="n">d</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IF((</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">) <> 0, (</span><span class="si">{</span><span class="n">n</span><span class="si">}</span><span class="s2">) / (</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">), NULL)"</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> +</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a><span class="k">def</span> <span class="nf">no_tablesample_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"TABLESAMPLE unsupported"</span><span class="p">)</span> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> +</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> +</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a><span class="k">def</span> <span class="nf">no_pivot_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"PIVOT unsupported"</span><span class="p">)</span> +</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> +</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a><span class="k">def</span> <span class="nf">no_trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> +</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> +</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a><span class="k">def</span> <span class="nf">no_comment_column_constraint_sql</span><span class="p">(</span> +</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span> +</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"CommentColumnConstraint unsupported"</span><span class="p">)</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a><span class="k">def</span> <span class="nf">no_map_from_entries_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"MAP_FROM_ENTRIES unsupported"</span><span class="p">)</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a><span class="k">def</span> <span class="nf">str_position_sql</span><span class="p">(</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">generate_instance</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="n">substr</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">expression</span><span class="p">,</span> <span class="s2">"substr"</span><span class="p">)</span> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="n">position</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"instance"</span><span class="p">)</span> <span class="k">if</span> <span class="n">generate_instance</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> +</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="k">if</span> <span class="n">position</span><span class="p">:</span> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="c1"># Normalize third 'pos' argument into 'SUBSTR(..) + offset' across dialects</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"SUBSTR"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="p">)</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" + </span><span class="si">{</span><span class="n">position</span><span class="si">}</span><span class="s2"> - 1"</span> </span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a><span class="k">def</span> <span class="nf">struct_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="p">)</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> -</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a><span class="k">def</span> <span class="nf">var_map_sql</span><span class="p">(</span> -</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">,</span> <span class="n">map_func_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MAP"</span> -</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span> -</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> -</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keys</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Cannot convert array columns into map."</span><span class="p">)</span> -</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="n">keys</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> -</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> -</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">keys</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> -</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPOS"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">substr</span><span class="p">,</span> <span class="n">instance</span><span class="p">)</span> <span class="o">+</span> <span class="n">position_offset</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> +</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a><span class="k">def</span> <span class="nf">struct_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="p">)</span> +</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> +</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> +</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a><span class="k">def</span> <span class="nf">var_map_sql</span><span class="p">(</span> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">,</span> <span class="n">map_func_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MAP"</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keys</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Cannot convert array columns into map."</span><span class="p">)</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="n">keys</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> +</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">keys</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> </span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a><span class="k">def</span> <span class="nf">build_formatted_time</span><span class="p">(</span> -</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a><span class="w"> </span><span class="sd">"""Helper used for time expressions.</span> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a><span class="sd"> Args:</span> -</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> -</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a><span class="sd"> dialect: target sql dialect.</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a><span class="sd"> default: the default format, True being time.</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a><span class="sd"> Returns:</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a><span class="sd"> A callable that can be used to return the appropriately formatted time expression.</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a><span class="sd"> """</span> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">):</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">TIME_FORMAT</span> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="kc">True</span> <span class="k">else</span> <span class="n">default</span> <span class="ow">or</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="p">),</span> -</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="p">)</span> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> +</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a><span class="k">def</span> <span class="nf">build_formatted_time</span><span class="p">(</span> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a><span class="w"> </span><span class="sd">"""Helper used for time expressions.</span> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a><span class="sd"> Args:</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a><span class="sd"> dialect: target sql dialect.</span> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a><span class="sd"> default: the default format, True being time.</span> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a><span class="sd"> Returns:</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a><span class="sd"> A callable that can be used to return the appropriately formatted time expression.</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a><span class="sd"> """</span> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">):</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">TIME_FORMAT</span> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="kc">True</span> <span class="k">else</span> <span class="n">default</span> <span class="ow">or</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="p">),</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="p">)</span> </span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a><span class="k">def</span> <span class="nf">time_format</span><span class="p">(</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</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-715"><a href="#L-715"><span class="linenos"> 715</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="k">def</span> <span class="nf">_time_format</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">)</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="nb">str</span><span class="p">]:</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a><span class="sd"> Returns the time format for a given expression, unless it's equivalent</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a><span class="sd"> to the default time format of the dialect of interest.</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a><span class="sd"> """</span> -</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="k">return</span> <span class="n">time_format</span> <span class="k">if</span> <span class="n">time_format</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">TIME_FORMAT</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="k">return</span> <span class="n">_time_format</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a><span class="k">def</span> <span class="nf">time_format</span><span class="p">(</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</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-717"><a href="#L-717"><span class="linenos"> 717</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="k">def</span> <span class="nf">_time_format</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">)</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="nb">str</span><span class="p">]:</span> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a><span class="sd"> Returns the time format for a given expression, unless it's equivalent</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a><span class="sd"> to the default time format of the dialect of interest.</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a><span class="sd"> """</span> +</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="k">return</span> <span class="n">time_format</span> <span class="k">if</span> <span class="n">time_format</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">TIME_FORMAT</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a><span class="k">def</span> <span class="nf">build_date_delta</span><span class="p">(</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">unit_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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="n">unit_based</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"DAY"</span><span class="p">)</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">unit_mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> <span class="k">if</span> <span class="n">unit_mapping</span> <span class="k">else</span> <span class="n">unit</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="k">return</span> <span class="n">_time_format</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a><span class="k">def</span> <span class="nf">build_date_delta</span><span class="p">(</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">unit_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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="n">unit_based</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"DAY"</span><span class="p">)</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">unit_mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> <span class="k">if</span> <span class="n">unit_mapping</span> <span class="k">else</span> <span class="n">unit</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> </span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> -</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a><span class="k">def</span> <span class="nf">build_date_delta_with_interval</span><span class="p">(</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="n">expression_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">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">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]]:</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]:</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> +</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> +</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a><span class="k">def</span> <span class="nf">build_date_delta_with_interval</span><span class="p">(</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="n">expression_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">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">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]]:</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]:</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> -</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">):</span> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"INTERVAL expression expected but got '</span><span class="si">{</span><span class="n">interval</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> -</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="k">return</span> <span class="n">expression_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">interval</span><span class="p">))</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">):</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"INTERVAL expression expected but got '</span><span class="si">{</span><span class="n">interval</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> -</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="k">return</span> <span class="n">expression_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">interval</span><span class="p">))</span> </span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> -</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a><span class="k">def</span> <span class="nf">date_trunc_to_time</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> -</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> -</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"date"</span><span class="p">):</span> -</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span><span class="p">(</span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a><span class="k">def</span> <span class="nf">date_add_interval_sql</span><span class="p">(</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="k">return</span> <span class="n">func</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> +</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> +</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a><span class="k">def</span> <span class="nf">date_trunc_to_time</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> +</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"date"</span><span class="p">):</span> +</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span><span class="p">(</span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a><span class="k">def</span> <span class="nf">date_add_interval_sql</span><span class="p">(</span> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a><span class="k">def</span> <span class="nf">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="k">def</span> <span class="nf">_timestamptrunc_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">]</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="k">if</span> <span class="n">zone</span><span class="p">:</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> -</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> -</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="k">return</span> <span class="n">_timestamptrunc_sql</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="k">return</span> <span class="n">func</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> +</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a><span class="k">def</span> <span class="nf">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="k">def</span> <span class="nf">_timestamptrunc_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">]</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="k">if</span> <span class="n">zone</span><span class="p">:</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> </span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> -</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a><span class="k">def</span> <span class="nf">no_timestamp_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span> -</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> -</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="n">target_type</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">target_type</span><span class="p">))</span> -</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">TIMEZONES</span><span class="p">:</span> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">(</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">),</span> -</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="n">zone</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="p">)</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="p">)</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> -</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> -</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="p">)</span> -</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> -</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="p">)</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> -</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="p">)</span> -</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="p">)</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> -</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="p">)</span> -</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="p">)</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> -</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">))</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> -</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> -</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> -</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a><span class="c1"># Used for Presto and Duckdb which use functions that don't support charset, and assume utf-8</span> -</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> -</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="k">return</span> <span class="n">_timestamptrunc_sql</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> +</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> +</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a><span class="k">def</span> <span class="nf">no_timestamp_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span> +</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> +</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="n">target_type</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">target_type</span><span class="p">))</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">TIMEZONES</span><span class="p">:</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">(</span> +</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">),</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="n">zone</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="p">)</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="p">)</span> +</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> +</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="p">)</span> +</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="p">)</span> +</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="p">)</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="p">)</span> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="p">)</span> +</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="p">)</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">))</span> +</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> +</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> +</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> +</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a><span class="c1"># Used for Presto and Duckdb which use functions that don't support charset, and assume utf-8</span> +</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> </span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> -</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span> -</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> +</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span> +</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span> </span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> -</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="n">target</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="n">trim_type</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="n">remove_chars</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">collation</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">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span> -</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> -</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span> -</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> -</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">reduce</span><span class="p">(</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="n">rest_args</span><span class="p">,</span> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="p">)</span> -</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="p">)</span> -</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span> -</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> -</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="p">)</span> -</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> -</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"modifiers"</span><span class="p">)))</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> -</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span> -</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="p">)</span> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> -</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></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-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> -</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span> -</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a><span class="sd"> """</span> -</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="k">else</span> <span class="n">node</span> -</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="p">)</span> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="p">)</span> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</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">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> -</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="k">return</span> <span class="n">names</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="n">target</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">trim_type</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="n">remove_chars</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="n">collation</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">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span> +</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> +</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span> +</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> +</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="n">reduce</span><span class="p">(</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="n">rest_args</span><span class="p">,</span> +</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="p">)</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="p">)</span> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> +</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> +</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span> +</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="p">)</span> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> +</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"modifiers"</span><span class="p">)))</span> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> +</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span> +</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="p">)</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> +</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></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-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span> +</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span> +</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span> +</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a><span class="sd"> """</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="k">else</span> <span class="n">node</span> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="p">)</span> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="p">)</span> +</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</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">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span> </span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> -</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> -</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span> -</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> -</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a><span class="c1"># Used to represent DATE_TRUNC in Doris, Postgres and Starrocks dialects</span> -</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a><span class="k">def</span> <span class="nf">build_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> -</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="n">a</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">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span> -</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="n">b</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">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> -</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a><span class="k">def</span> <span class="nf">is_parse_json</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span> -</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="p">)</span> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> -</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> -</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a><span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="n">start</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">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> -</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="n">increment</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">expression</span><span class="p">,</span> <span class="s2">"increment"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IDENTITY(</span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> -</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a><span class="k">def</span> <span class="nf">arg_max_or_min_no_count</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="k">def</span> <span class="nf">_arg_max_or_min_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"count"</span><span class="p">):</span> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Only two arguments are supported in function </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">return</span> <span class="n">names</span> +</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> +</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span> +</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> +</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> +</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a><span class="c1"># Used to represent DATE_TRUNC in Doris, Postgres and Starrocks dialects</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a><span class="k">def</span> <span class="nf">build_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> +</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">a</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">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">b</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">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span> +</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a><span class="k">def</span> <span class="nf">is_parse_json</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="p">)</span> +</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> +</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span> +</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a><span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> +</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="n">start</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">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="n">increment</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">expression</span><span class="p">,</span> <span class="s2">"increment"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IDENTITY(</span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a><span class="k">def</span> <span class="nf">arg_max_or_min_no_count</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="k">def</span> <span class="nf">_arg_max_or_min_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"count"</span><span class="p">):</span> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Only two arguments are supported in function </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> </span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="k">return</span> <span class="n">_arg_max_or_min_sql</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> </span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a><span class="k">def</span> <span class="nf">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">return_type</span> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="k">if</span> <span class="n">return_type</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">):</span> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="c1"># If we need to cast to a DATE, we cast to TIMESTAMP first to make sure we</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="c1"># can truncate timestamp strings, because some dialects can't cast them to DATE</span> -</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">)</span> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">return_type</span><span class="p">))</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> -</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a><span class="k">def</span> <span class="nf">date_delta_sql</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="n">cast</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="k">def</span> <span class="nf">_delta_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="k">if</span> <span class="n">cast</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">):</span> -</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">name</span><span class="p">,</span> -</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="p">)</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="k">return</span> <span class="n">_delta_sql</span> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">return</span> <span class="n">_arg_max_or_min_sql</span> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> +</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a><span class="k">def</span> <span class="nf">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">return_type</span> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="k">if</span> <span class="n">return_type</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">):</span> +</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="c1"># If we need to cast to a DATE, we cast to TIMESTAMP first to make sure we</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="c1"># can truncate timestamp strings, because some dialects can't cast them to DATE</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">)</span> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">return_type</span><span class="p">))</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> +</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> +</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a><span class="k">def</span> <span class="nf">date_delta_sql</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="n">cast</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="k">def</span> <span class="nf">_delta_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="k">if</span> <span class="n">cast</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">):</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> +</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">name</span><span class="p">,</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="p">)</span> </span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a><span class="k">def</span> <span class="nf">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">):</span> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="k">return</span> <span class="n">unit</span> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a><span class="k">def</span> <span class="nf">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)):</span> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="k">return</span> <span class="n">unit</span> -</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a><span class="k">def</span> <span class="nf">no_last_day_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="n">trunc_curr_date</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_trunc"</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">plus_one_month</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_add"</span><span class="p">,</span> <span class="n">trunc_curr_date</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">)</span> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">minus_one_day</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_sub"</span><span class="p">,</span> <span class="n">plus_one_month</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">)</span> -</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">minus_one_day</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="k">return</span> <span class="n">_delta_sql</span> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a><span class="k">def</span> <span class="nf">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">):</span> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="k">return</span> <span class="n">unit</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a><span class="k">def</span> <span class="nf">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)):</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="k">return</span> <span class="n">unit</span> +</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a><span class="k">def</span> <span class="nf">no_last_day_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">trunc_curr_date</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_trunc"</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="n">plus_one_month</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_add"</span><span class="p">,</span> <span class="n">trunc_curr_date</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">)</span> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="n">minus_one_day</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_sub"</span><span class="p">,</span> <span class="n">plus_one_month</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">)</span> </span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> -</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a><span class="k">def</span> <span class="nf">merge_without_target_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a><span class="w"> </span><span class="sd">"""Remove table refs from columns in when statements."""</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">identifier</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">])</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="nb">str</span><span class="p">]:</span> -</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</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 class="k">if</span> <span class="n">identifier</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> -</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="n">targets</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)}</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">minus_one_day</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> +</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a><span class="k">def</span> <span class="nf">merge_without_target_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a><span class="w"> </span><span class="sd">"""Remove table refs from columns in when statements."""</span> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> +</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">identifier</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">])</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="nb">str</span><span class="p">]:</span> +</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</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 class="k">if</span> <span class="n">identifier</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">targets</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">))</span> -</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> -</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="k">for</span> <span class="n">when</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">when</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="n">normalize</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">))</span> <span class="ow">in</span> <span class="n">targets</span> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="k">else</span> <span class="n">node</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="p">),</span> -</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="p">)</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> -</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">merge_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">targets</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)}</span> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> +</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="n">targets</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">))</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="k">for</span> <span class="n">when</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">when</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="n">normalize</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">))</span> <span class="ow">in</span> <span class="n">targets</span> +</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="k">else</span> <span class="n">node</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="p">),</span> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="p">)</span> </span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> -</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> -</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a><span class="k">def</span> <span class="nf">build_json_extract_path</span><span class="p">(</span> -</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">F</span><span class="p">],</span> <span class="n">zero_based_indexing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">F</span><span class="p">]:</span> -</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">F</span><span class="p">:</span> -</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="n">segments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span> -</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> -</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="c1"># We use the fallback parser because we can't really transpile non-literals safely</span> -</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> -</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">arg</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">text</span><span class="p">):</span> -</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="n">index</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">index</span> <span class="k">if</span> <span class="n">zero_based_indexing</span> <span class="k">else</span> <span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="p">)</span> -</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">))</span> -</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> -</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="c1"># This is done to avoid failing in the expression validator due to the arg count</span> -</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="k">del</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> -</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span> -</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">segments</span><span class="p">),</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="n">arrow_req_json_type</span><span class="p">,</span> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="p">)</span> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">merge_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> +</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> +</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a><span class="k">def</span> <span class="nf">build_json_extract_path</span><span class="p">(</span> +</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">F</span><span class="p">],</span> <span class="n">zero_based_indexing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">F</span><span class="p">]:</span> +</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">F</span><span class="p">:</span> +</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="n">segments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> +</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="c1"># We use the fallback parser because we can't really transpile non-literals safely</span> +</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> +</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">arg</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">text</span><span class="p">):</span> +</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="n">index</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">index</span> <span class="k">if</span> <span class="n">zero_based_indexing</span> <span class="k">else</span> <span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="p">)</span> +</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">))</span> +</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> +</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="c1"># This is done to avoid failing in the expression validator due to the arg count</span> +</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="k">del</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">segments</span><span class="p">),</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="n">arrow_req_json_type</span><span class="p">,</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="p">)</span> </span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a><span class="k">def</span> <span class="nf">json_extract_segments</span><span class="p">(</span> -</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">quoted_index</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="k">def</span> <span class="nf">_json_extract_segments</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">):</span> -</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> -</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="n">path</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">segment</span><span class="p">)</span> -</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> -</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">quoted_index</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> -</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="p">):</span> -</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_START</span><span class="si">}{</span><span class="n">path</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_END</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> -</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a><span class="k">def</span> <span class="nf">json_extract_segments</span><span class="p">(</span> +</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">quoted_index</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="k">def</span> <span class="nf">_json_extract_segments</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">):</span> +</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> +</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="n">path</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">segment</span><span class="p">)</span> +</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> +</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="n">quoted_index</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> +</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> <span class="p">):</span> +</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_START</span><span class="si">}{</span><span class="n">path</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_END</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> -</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> -</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="o">*</span><span class="n">segments</span><span class="p">])</span> -</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">segments</span><span class="p">)</span> -</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> -</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">return</span> <span class="n">_json_extract_segments</span> +</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> +</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> +</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> +</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="o">*</span><span class="n">segments</span><span class="p">])</span> +</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">segments</span><span class="p">)</span> </span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> -</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> -</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a><span class="k">def</span> <span class="nf">json_path_key_only_name</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">):</span> -</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported wildcard in JSONPathKey expression"</span><span class="p">)</span> -</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> -</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="k">return</span> <span class="n">_json_extract_segments</span> +</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> +</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> +</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a><span class="k">def</span> <span class="nf">json_path_key_only_name</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">):</span> +</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported wildcard in JSONPathKey expression"</span><span class="p">)</span> </span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> -</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> -</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a><span class="k">def</span> <span class="nf">filter_array_using_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">"_u"</span> -</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported filter condition"</span><span class="p">)</span> -</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> -</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> -</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="n">filtered</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">alias</span><span class="p">]))</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">cond</span><span class="p">)</span> -</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">filtered</span><span class="p">]))</span> -</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> -</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> -</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a><span class="k">def</span> <span class="nf">to_number_with_nls_param</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToNumber</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="s2">"TO_NUMBER"</span><span class="p">,</span> -</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"format"</span><span class="p">),</span> -</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nlsparam"</span><span class="p">),</span> -</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="p">)</span> -</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> -</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> -</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a><span class="k">def</span> <span class="nf">build_default_decimal_type</span><span class="p">(</span> -</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="n">precision</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">scale</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]:</span> -</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">dtype</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</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="n">dtype</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">precision</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">return</span> <span class="n">dtype</span> -</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> -</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">precision</span><span class="si">}{</span><span class="sa">f</span><span class="s1">', </span><span class="si">{</span><span class="n">scale</span><span class="si">}</span><span class="s1">'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">scale</span><span class="w"> </span><span class="ow">is</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="kc">None</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="k">return</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="sa">f</span><span class="s2">"DECIMAL(</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> -</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> -</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> +</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> +</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a><span class="k">def</span> <span class="nf">filter_array_using_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">"_u"</span> +</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported filter condition"</span><span class="p">)</span> +</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> +</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> +</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="n">filtered</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">alias</span><span class="p">]))</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">cond</span><span class="p">)</span> +</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">filtered</span><span class="p">]))</span> +</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> +</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> +</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a><span class="k">def</span> <span class="nf">to_number_with_nls_param</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToNumber</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="s2">"TO_NUMBER"</span><span class="p">,</span> +</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"format"</span><span class="p">),</span> +</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nlsparam"</span><span class="p">),</span> +</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="p">)</span> +</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</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">def</span> <span class="nf">build_default_decimal_type</span><span class="p">(</span> +</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="n">precision</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">scale</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]:</span> +</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">dtype</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> +</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">precision</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="k">return</span> <span class="n">dtype</span> +</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> +</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">precision</span><span class="si">}{</span><span class="sa">f</span><span class="s1">', </span><span class="si">{</span><span class="n">scale</span><span class="si">}</span><span class="s1">'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">scale</span><span class="w"> </span><span class="ow">is</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="kc">None</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">return</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="sa">f</span><span class="s2">"DECIMAL(</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> +</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> +</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">return</span> <span class="n">_builder</span> </span></pre></div> @@ -1820,21 +1828,23 @@ </span><span id="Dialects-51"><a href="#Dialects-51"><span class="linenos">51</span></a> <span class="n">DRILL</span> <span class="o">=</span> <span class="s2">"drill"</span> </span><span id="Dialects-52"><a href="#Dialects-52"><span class="linenos">52</span></a> <span class="n">DUCKDB</span> <span class="o">=</span> <span class="s2">"duckdb"</span> </span><span id="Dialects-53"><a href="#Dialects-53"><span class="linenos">53</span></a> <span class="n">HIVE</span> <span class="o">=</span> <span class="s2">"hive"</span> -</span><span id="Dialects-54"><a href="#Dialects-54"><span class="linenos">54</span></a> <span class="n">MYSQL</span> <span class="o">=</span> <span class="s2">"mysql"</span> -</span><span id="Dialects-55"><a href="#Dialects-55"><span class="linenos">55</span></a> <span class="n">ORACLE</span> <span class="o">=</span> <span class="s2">"oracle"</span> -</span><span id="Dialects-56"><a href="#Dialects-56"><span class="linenos">56</span></a> <span class="n">POSTGRES</span> <span class="o">=</span> <span class="s2">"postgres"</span> -</span><span id="Dialects-57"><a href="#Dialects-57"><span class="linenos">57</span></a> <span class="n">PRESTO</span> <span class="o">=</span> <span class="s2">"presto"</span> -</span><span id="Dialects-58"><a href="#Dialects-58"><span class="linenos">58</span></a> <span class="n">PRQL</span> <span class="o">=</span> <span class="s2">"prql"</span> -</span><span id="Dialects-59"><a href="#Dialects-59"><span class="linenos">59</span></a> <span class="n">REDSHIFT</span> <span class="o">=</span> <span class="s2">"redshift"</span> -</span><span id="Dialects-60"><a href="#Dialects-60"><span class="linenos">60</span></a> <span class="n">SNOWFLAKE</span> <span class="o">=</span> <span class="s2">"snowflake"</span> -</span><span id="Dialects-61"><a href="#Dialects-61"><span class="linenos">61</span></a> <span class="n">SPARK</span> <span class="o">=</span> <span class="s2">"spark"</span> -</span><span id="Dialects-62"><a href="#Dialects-62"><span class="linenos">62</span></a> <span class="n">SPARK2</span> <span class="o">=</span> <span class="s2">"spark2"</span> -</span><span id="Dialects-63"><a href="#Dialects-63"><span class="linenos">63</span></a> <span class="n">SQLITE</span> <span class="o">=</span> <span class="s2">"sqlite"</span> -</span><span id="Dialects-64"><a href="#Dialects-64"><span class="linenos">64</span></a> <span class="n">STARROCKS</span> <span class="o">=</span> <span class="s2">"starrocks"</span> -</span><span id="Dialects-65"><a href="#Dialects-65"><span class="linenos">65</span></a> <span class="n">TABLEAU</span> <span class="o">=</span> <span class="s2">"tableau"</span> -</span><span id="Dialects-66"><a href="#Dialects-66"><span class="linenos">66</span></a> <span class="n">TERADATA</span> <span class="o">=</span> <span class="s2">"teradata"</span> -</span><span id="Dialects-67"><a href="#Dialects-67"><span class="linenos">67</span></a> <span class="n">TRINO</span> <span class="o">=</span> <span class="s2">"trino"</span> -</span><span id="Dialects-68"><a href="#Dialects-68"><span class="linenos">68</span></a> <span class="n">TSQL</span> <span class="o">=</span> <span class="s2">"tsql"</span> +</span><span id="Dialects-54"><a href="#Dialects-54"><span class="linenos">54</span></a> <span class="n">MATERIALIZE</span> <span class="o">=</span> <span class="s2">"materialize"</span> +</span><span id="Dialects-55"><a href="#Dialects-55"><span class="linenos">55</span></a> <span class="n">MYSQL</span> <span class="o">=</span> <span class="s2">"mysql"</span> +</span><span id="Dialects-56"><a href="#Dialects-56"><span class="linenos">56</span></a> <span class="n">ORACLE</span> <span class="o">=</span> <span class="s2">"oracle"</span> +</span><span id="Dialects-57"><a href="#Dialects-57"><span class="linenos">57</span></a> <span class="n">POSTGRES</span> <span class="o">=</span> <span class="s2">"postgres"</span> +</span><span id="Dialects-58"><a href="#Dialects-58"><span class="linenos">58</span></a> <span class="n">PRESTO</span> <span class="o">=</span> <span class="s2">"presto"</span> +</span><span id="Dialects-59"><a href="#Dialects-59"><span class="linenos">59</span></a> <span class="n">PRQL</span> <span class="o">=</span> <span class="s2">"prql"</span> +</span><span id="Dialects-60"><a href="#Dialects-60"><span class="linenos">60</span></a> <span class="n">REDSHIFT</span> <span class="o">=</span> <span class="s2">"redshift"</span> +</span><span id="Dialects-61"><a href="#Dialects-61"><span class="linenos">61</span></a> <span class="n">RISINGWAVE</span> <span class="o">=</span> <span class="s2">"risingwave"</span> +</span><span id="Dialects-62"><a href="#Dialects-62"><span class="linenos">62</span></a> <span class="n">SNOWFLAKE</span> <span class="o">=</span> <span class="s2">"snowflake"</span> +</span><span id="Dialects-63"><a href="#Dialects-63"><span class="linenos">63</span></a> <span class="n">SPARK</span> <span class="o">=</span> <span class="s2">"spark"</span> +</span><span id="Dialects-64"><a href="#Dialects-64"><span class="linenos">64</span></a> <span class="n">SPARK2</span> <span class="o">=</span> <span class="s2">"spark2"</span> +</span><span id="Dialects-65"><a href="#Dialects-65"><span class="linenos">65</span></a> <span class="n">SQLITE</span> <span class="o">=</span> <span class="s2">"sqlite"</span> +</span><span id="Dialects-66"><a href="#Dialects-66"><span class="linenos">66</span></a> <span class="n">STARROCKS</span> <span class="o">=</span> <span class="s2">"starrocks"</span> +</span><span id="Dialects-67"><a href="#Dialects-67"><span class="linenos">67</span></a> <span class="n">TABLEAU</span> <span class="o">=</span> <span class="s2">"tableau"</span> +</span><span id="Dialects-68"><a href="#Dialects-68"><span class="linenos">68</span></a> <span class="n">TERADATA</span> <span class="o">=</span> <span class="s2">"teradata"</span> +</span><span id="Dialects-69"><a href="#Dialects-69"><span class="linenos">69</span></a> <span class="n">TRINO</span> <span class="o">=</span> <span class="s2">"trino"</span> +</span><span id="Dialects-70"><a href="#Dialects-70"><span class="linenos">70</span></a> <span class="n">TSQL</span> <span class="o">=</span> <span class="s2">"tsql"</span> </span></pre></div> @@ -1950,6 +1960,18 @@ </div> + <div id="Dialects.MATERIALIZE" class="classattr"> + <div class="attr variable"> + <span class="name">MATERIALIZE</span> = +<span class="default_value"><<a href="#Dialects.MATERIALIZE">Dialects.MATERIALIZE</a>: 'materialize'></span> + + + </div> + <a class="headerlink" href="#Dialects.MATERIALIZE"></a> + + + + </div> <div id="Dialects.MYSQL" class="classattr"> <div class="attr variable"> <span class="name">MYSQL</span> = @@ -2022,6 +2044,18 @@ </div> + <div id="Dialects.RISINGWAVE" class="classattr"> + <div class="attr variable"> + <span class="name">RISINGWAVE</span> = +<span class="default_value"><<a href="#Dialects.RISINGWAVE">Dialects.RISINGWAVE</a>: 'risingwave'></span> + + + </div> + <a class="headerlink" href="#Dialects.RISINGWAVE"></a> + + + + </div> <div id="Dialects.SNOWFLAKE" class="classattr"> <div class="attr variable"> <span class="name">SNOWFLAKE</span> = @@ -2202,20 +2236,20 @@ </div> <a class="headerlink" href="#NormalizationStrategy"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NormalizationStrategy-71"><a href="#NormalizationStrategy-71"><span class="linenos">71</span></a><span class="k">class</span> <span class="nc">NormalizationStrategy</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">AutoName</span><span class="p">):</span> -</span><span id="NormalizationStrategy-72"><a href="#NormalizationStrategy-72"><span class="linenos">72</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> -</span><span id="NormalizationStrategy-73"><a href="#NormalizationStrategy-73"><span class="linenos">73</span></a> -</span><span id="NormalizationStrategy-74"><a href="#NormalizationStrategy-74"><span class="linenos">74</span></a> <span class="n">LOWERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="NormalizationStrategy-75"><a href="#NormalizationStrategy-75"><span class="linenos">75</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are lowercased."""</span> -</span><span id="NormalizationStrategy-76"><a href="#NormalizationStrategy-76"><span class="linenos">76</span></a> -</span><span id="NormalizationStrategy-77"><a href="#NormalizationStrategy-77"><span class="linenos">77</span></a> <span class="n">UPPERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="NormalizationStrategy-78"><a href="#NormalizationStrategy-78"><span class="linenos">78</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are uppercased."""</span> -</span><span id="NormalizationStrategy-79"><a href="#NormalizationStrategy-79"><span class="linenos">79</span></a> -</span><span id="NormalizationStrategy-80"><a href="#NormalizationStrategy-80"><span class="linenos">80</span></a> <span class="n">CASE_SENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="NormalizationStrategy-81"><a href="#NormalizationStrategy-81"><span class="linenos">81</span></a><span class="w"> </span><span class="sd">"""Always case-sensitive, regardless of quotes."""</span> -</span><span id="NormalizationStrategy-82"><a href="#NormalizationStrategy-82"><span class="linenos">82</span></a> -</span><span id="NormalizationStrategy-83"><a href="#NormalizationStrategy-83"><span class="linenos">83</span></a> <span class="n">CASE_INSENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="NormalizationStrategy-84"><a href="#NormalizationStrategy-84"><span class="linenos">84</span></a><span class="w"> </span><span class="sd">"""Always case-insensitive, regardless of quotes."""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NormalizationStrategy-73"><a href="#NormalizationStrategy-73"><span class="linenos">73</span></a><span class="k">class</span> <span class="nc">NormalizationStrategy</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">AutoName</span><span class="p">):</span> +</span><span id="NormalizationStrategy-74"><a href="#NormalizationStrategy-74"><span class="linenos">74</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> +</span><span id="NormalizationStrategy-75"><a href="#NormalizationStrategy-75"><span class="linenos">75</span></a> +</span><span id="NormalizationStrategy-76"><a href="#NormalizationStrategy-76"><span class="linenos">76</span></a> <span class="n">LOWERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="NormalizationStrategy-77"><a href="#NormalizationStrategy-77"><span class="linenos">77</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are lowercased."""</span> +</span><span id="NormalizationStrategy-78"><a href="#NormalizationStrategy-78"><span class="linenos">78</span></a> +</span><span id="NormalizationStrategy-79"><a href="#NormalizationStrategy-79"><span class="linenos">79</span></a> <span class="n">UPPERCASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="NormalizationStrategy-80"><a href="#NormalizationStrategy-80"><span class="linenos">80</span></a><span class="w"> </span><span class="sd">"""Unquoted identifiers are uppercased."""</span> +</span><span id="NormalizationStrategy-81"><a href="#NormalizationStrategy-81"><span class="linenos">81</span></a> +</span><span id="NormalizationStrategy-82"><a href="#NormalizationStrategy-82"><span class="linenos">82</span></a> <span class="n">CASE_SENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="NormalizationStrategy-83"><a href="#NormalizationStrategy-83"><span class="linenos">83</span></a><span class="w"> </span><span class="sd">"""Always case-sensitive, regardless of quotes."""</span> +</span><span id="NormalizationStrategy-84"><a href="#NormalizationStrategy-84"><span class="linenos">84</span></a> +</span><span id="NormalizationStrategy-85"><a href="#NormalizationStrategy-85"><span class="linenos">85</span></a> <span class="n">CASE_INSENSITIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="NormalizationStrategy-86"><a href="#NormalizationStrategy-86"><span class="linenos">86</span></a><span class="w"> </span><span class="sd">"""Always case-insensitive, regardless of quotes."""</span> </span></pre></div> @@ -2351,365 +2385,365 @@ </div> <a class="headerlink" href="#Dialect"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect-188"><a href="#Dialect-188"><span class="linenos">188</span></a><span class="k">class</span> <span class="nc">Dialect</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Dialect</span><span class="p">):</span> -</span><span id="Dialect-189"><a href="#Dialect-189"><span class="linenos">189</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Dialect-190"><a href="#Dialect-190"><span class="linenos">190</span></a><span class="w"> </span><span class="sd">"""The base index offset for arrays."""</span> -</span><span id="Dialect-191"><a href="#Dialect-191"><span class="linenos">191</span></a> -</span><span id="Dialect-192"><a href="#Dialect-192"><span class="linenos">192</span></a> <span class="n">WEEK_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Dialect-193"><a href="#Dialect-193"><span class="linenos">193</span></a><span class="w"> </span><span class="sd">"""First day of the week in DATE_TRUNC(week). Defaults to 0 (Monday). -1 would be Sunday."""</span> -</span><span id="Dialect-194"><a href="#Dialect-194"><span class="linenos">194</span></a> -</span><span id="Dialect-195"><a href="#Dialect-195"><span class="linenos">195</span></a> <span class="n">UNNEST_COLUMN_ONLY</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-196"><a href="#Dialect-196"><span class="linenos">196</span></a><span class="w"> </span><span class="sd">"""Whether `UNNEST` table aliases are treated as column aliases."""</span> -</span><span id="Dialect-197"><a href="#Dialect-197"><span class="linenos">197</span></a> -</span><span id="Dialect-198"><a href="#Dialect-198"><span class="linenos">198</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-199"><a href="#Dialect-199"><span class="linenos">199</span></a><span class="w"> </span><span class="sd">"""Whether the table alias comes after tablesample."""</span> -</span><span id="Dialect-200"><a href="#Dialect-200"><span class="linenos">200</span></a> -</span><span id="Dialect-201"><a href="#Dialect-201"><span class="linenos">201</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-202"><a href="#Dialect-202"><span class="linenos">202</span></a><span class="w"> </span><span class="sd">"""Whether a size in the table sample clause represents percentage."""</span> -</span><span id="Dialect-203"><a href="#Dialect-203"><span class="linenos">203</span></a> -</span><span id="Dialect-204"><a href="#Dialect-204"><span class="linenos">204</span></a> <span class="n">NORMALIZATION_STRATEGY</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">LOWERCASE</span> -</span><span id="Dialect-205"><a href="#Dialect-205"><span class="linenos">205</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> -</span><span id="Dialect-206"><a href="#Dialect-206"><span class="linenos">206</span></a> -</span><span id="Dialect-207"><a href="#Dialect-207"><span class="linenos">207</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-208"><a href="#Dialect-208"><span class="linenos">208</span></a><span class="w"> </span><span class="sd">"""Whether an unquoted identifier can start with a digit."""</span> -</span><span id="Dialect-209"><a href="#Dialect-209"><span class="linenos">209</span></a> -</span><span id="Dialect-210"><a href="#Dialect-210"><span class="linenos">210</span></a> <span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Dialect-211"><a href="#Dialect-211"><span class="linenos">211</span></a><span class="w"> </span><span class="sd">"""Whether the DPIPE token (`||`) is a string concatenation operator."""</span> -</span><span id="Dialect-212"><a href="#Dialect-212"><span class="linenos">212</span></a> -</span><span id="Dialect-213"><a href="#Dialect-213"><span class="linenos">213</span></a> <span class="n">STRICT_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-214"><a href="#Dialect-214"><span class="linenos">214</span></a><span class="w"> </span><span class="sd">"""Whether `CONCAT`'s arguments must be strings."""</span> -</span><span id="Dialect-215"><a href="#Dialect-215"><span class="linenos">215</span></a> -</span><span id="Dialect-216"><a href="#Dialect-216"><span class="linenos">216</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Dialect-217"><a href="#Dialect-217"><span class="linenos">217</span></a><span class="w"> </span><span class="sd">"""Whether user-defined data types are supported."""</span> -</span><span id="Dialect-218"><a href="#Dialect-218"><span class="linenos">218</span></a> -</span><span id="Dialect-219"><a href="#Dialect-219"><span class="linenos">219</span></a> <span class="n">SUPPORTS_SEMI_ANTI_JOIN</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Dialect-220"><a href="#Dialect-220"><span class="linenos">220</span></a><span class="w"> </span><span class="sd">"""Whether `SEMI` or `ANTI` joins are supported."""</span> -</span><span id="Dialect-221"><a href="#Dialect-221"><span class="linenos">221</span></a> -</span><span id="Dialect-222"><a href="#Dialect-222"><span class="linenos">222</span></a> <span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"upper"</span> -</span><span id="Dialect-223"><a href="#Dialect-223"><span class="linenos">223</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-224"><a href="#Dialect-224"><span class="linenos">224</span></a><span class="sd"> Determines how function names are going to be normalized.</span> -</span><span id="Dialect-225"><a href="#Dialect-225"><span class="linenos">225</span></a><span class="sd"> Possible values:</span> -</span><span id="Dialect-226"><a href="#Dialect-226"><span class="linenos">226</span></a><span class="sd"> "upper" or True: Convert names to uppercase.</span> -</span><span id="Dialect-227"><a href="#Dialect-227"><span class="linenos">227</span></a><span class="sd"> "lower": Convert names to lowercase.</span> -</span><span id="Dialect-228"><a href="#Dialect-228"><span class="linenos">228</span></a><span class="sd"> False: Disables function name normalization.</span> -</span><span id="Dialect-229"><a href="#Dialect-229"><span class="linenos">229</span></a><span class="sd"> """</span> -</span><span id="Dialect-230"><a href="#Dialect-230"><span class="linenos">230</span></a> -</span><span id="Dialect-231"><a href="#Dialect-231"><span class="linenos">231</span></a> <span class="n">LOG_BASE_FIRST</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><span id="Dialect-232"><a href="#Dialect-232"><span class="linenos">232</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-233"><a href="#Dialect-233"><span class="linenos">233</span></a><span class="sd"> Whether the base comes first in the `LOG` function.</span> -</span><span id="Dialect-234"><a href="#Dialect-234"><span class="linenos">234</span></a><span class="sd"> Possible values: `True`, `False`, `None` (two arguments are not supported by `LOG`)</span> -</span><span id="Dialect-235"><a href="#Dialect-235"><span class="linenos">235</span></a><span class="sd"> """</span> -</span><span id="Dialect-236"><a href="#Dialect-236"><span class="linenos">236</span></a> -</span><span id="Dialect-237"><a href="#Dialect-237"><span class="linenos">237</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_small"</span> -</span><span id="Dialect-238"><a href="#Dialect-238"><span class="linenos">238</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-239"><a href="#Dialect-239"><span class="linenos">239</span></a><span class="sd"> Default `NULL` ordering method to use if not explicitly set.</span> -</span><span id="Dialect-240"><a href="#Dialect-240"><span class="linenos">240</span></a><span class="sd"> Possible values: `"nulls_are_small"`, `"nulls_are_large"`, `"nulls_are_last"`</span> -</span><span id="Dialect-241"><a href="#Dialect-241"><span class="linenos">241</span></a><span class="sd"> """</span> -</span><span id="Dialect-242"><a href="#Dialect-242"><span class="linenos">242</span></a> -</span><span id="Dialect-243"><a href="#Dialect-243"><span class="linenos">243</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-244"><a href="#Dialect-244"><span class="linenos">244</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-245"><a href="#Dialect-245"><span class="linenos">245</span></a><span class="sd"> Whether the behavior of `a / b` depends on the types of `a` and `b`.</span> -</span><span id="Dialect-246"><a href="#Dialect-246"><span class="linenos">246</span></a><span class="sd"> False means `a / b` is always float division.</span> -</span><span id="Dialect-247"><a href="#Dialect-247"><span class="linenos">247</span></a><span class="sd"> True means `a / b` is integer division if both `a` and `b` are integers.</span> -</span><span id="Dialect-248"><a href="#Dialect-248"><span class="linenos">248</span></a><span class="sd"> """</span> -</span><span id="Dialect-249"><a href="#Dialect-249"><span class="linenos">249</span></a> -</span><span id="Dialect-250"><a href="#Dialect-250"><span class="linenos">250</span></a> <span class="n">SAFE_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-251"><a href="#Dialect-251"><span class="linenos">251</span></a><span class="w"> </span><span class="sd">"""Whether division by zero throws an error (`False`) or returns NULL (`True`)."""</span> -</span><span id="Dialect-252"><a href="#Dialect-252"><span class="linenos">252</span></a> -</span><span id="Dialect-253"><a href="#Dialect-253"><span class="linenos">253</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-254"><a href="#Dialect-254"><span class="linenos">254</span></a><span class="w"> </span><span class="sd">"""A `NULL` arg in `CONCAT` yields `NULL` by default, but in some dialects it yields an empty string."""</span> -</span><span id="Dialect-255"><a href="#Dialect-255"><span class="linenos">255</span></a> -</span><span id="Dialect-256"><a href="#Dialect-256"><span class="linenos">256</span></a> <span class="n">HEX_LOWERCASE</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-257"><a href="#Dialect-257"><span class="linenos">257</span></a><span class="w"> </span><span class="sd">"""Whether the `HEX` function returns a lowercase hexadecimal string."""</span> -</span><span id="Dialect-258"><a href="#Dialect-258"><span class="linenos">258</span></a> -</span><span id="Dialect-259"><a href="#Dialect-259"><span class="linenos">259</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2">'"</span> -</span><span id="Dialect-260"><a href="#Dialect-260"><span class="linenos">260</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y%m</span><span class="si">%d</span><span class="s2">'"</span> -</span><span id="Dialect-261"><a href="#Dialect-261"><span class="linenos">261</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S'"</span> -</span><span id="Dialect-262"><a href="#Dialect-262"><span class="linenos">262</span></a> -</span><span id="Dialect-263"><a href="#Dialect-263"><span class="linenos">263</span></a> <span class="n">TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-264"><a href="#Dialect-264"><span class="linenos">264</span></a><span class="w"> </span><span class="sd">"""Associates this dialect's time formats with their equivalent Python `strftime` formats."""</span> -</span><span id="Dialect-265"><a href="#Dialect-265"><span class="linenos">265</span></a> -</span><span id="Dialect-266"><a href="#Dialect-266"><span class="linenos">266</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_model_rules_date_time</span> -</span><span id="Dialect-267"><a href="#Dialect-267"><span class="linenos">267</span></a> <span class="c1"># https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Data-Type-Conversions/Character-to-DATE-Conversion/Forcing-a-FORMAT-on-CAST-for-Converting-Character-to-DATE</span> -</span><span id="Dialect-268"><a href="#Dialect-268"><span class="linenos">268</span></a> <span class="n">FORMAT_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-269"><a href="#Dialect-269"><span class="linenos">269</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-270"><a href="#Dialect-270"><span class="linenos">270</span></a><span class="sd"> Helper which is used for parsing the special syntax `CAST(x AS DATE FORMAT 'yyyy')`.</span> -</span><span id="Dialect-271"><a href="#Dialect-271"><span class="linenos">271</span></a><span class="sd"> If empty, the corresponding trie will be constructed off of `TIME_MAPPING`.</span> -</span><span id="Dialect-272"><a href="#Dialect-272"><span class="linenos">272</span></a><span class="sd"> """</span> -</span><span id="Dialect-273"><a href="#Dialect-273"><span class="linenos">273</span></a> -</span><span id="Dialect-274"><a href="#Dialect-274"><span class="linenos">274</span></a> <span class="n">UNESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-275"><a href="#Dialect-275"><span class="linenos">275</span></a><span class="w"> </span><span class="sd">"""Mapping of an escaped sequence (`\\n`) to its unescaped version (`\n`)."""</span> -</span><span id="Dialect-276"><a href="#Dialect-276"><span class="linenos">276</span></a> -</span><span id="Dialect-277"><a href="#Dialect-277"><span class="linenos">277</span></a> <span class="n">PSEUDOCOLUMNS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Dialect-278"><a href="#Dialect-278"><span class="linenos">278</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-279"><a href="#Dialect-279"><span class="linenos">279</span></a><span class="sd"> Columns that are auto-generated by the engine corresponding to this dialect.</span> -</span><span id="Dialect-280"><a href="#Dialect-280"><span class="linenos">280</span></a><span class="sd"> For example, such columns may be excluded from `SELECT *` queries.</span> -</span><span id="Dialect-281"><a href="#Dialect-281"><span class="linenos">281</span></a><span class="sd"> """</span> -</span><span id="Dialect-282"><a href="#Dialect-282"><span class="linenos">282</span></a> -</span><span id="Dialect-283"><a href="#Dialect-283"><span class="linenos">283</span></a> <span class="n">PREFER_CTE_ALIAS_COLUMN</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Dialect-284"><a href="#Dialect-284"><span class="linenos">284</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-285"><a href="#Dialect-285"><span class="linenos">285</span></a><span class="sd"> Some dialects, such as Snowflake, allow you to reference a CTE column alias in the</span> -</span><span id="Dialect-286"><a href="#Dialect-286"><span class="linenos">286</span></a><span class="sd"> HAVING clause of the CTE. This flag will cause the CTE alias columns to override</span> -</span><span id="Dialect-287"><a href="#Dialect-287"><span class="linenos">287</span></a><span class="sd"> any projection aliases in the subquery.</span> -</span><span id="Dialect-288"><a href="#Dialect-288"><span class="linenos">288</span></a> -</span><span id="Dialect-289"><a href="#Dialect-289"><span class="linenos">289</span></a><span class="sd"> For example,</span> -</span><span id="Dialect-290"><a href="#Dialect-290"><span class="linenos">290</span></a><span class="sd"> WITH y(c) AS (</span> -</span><span id="Dialect-291"><a href="#Dialect-291"><span class="linenos">291</span></a><span class="sd"> SELECT SUM(a) FROM (SELECT 1 a) AS x HAVING c > 0</span> -</span><span id="Dialect-292"><a href="#Dialect-292"><span class="linenos">292</span></a><span class="sd"> ) SELECT c FROM y;</span> -</span><span id="Dialect-293"><a href="#Dialect-293"><span class="linenos">293</span></a> -</span><span id="Dialect-294"><a href="#Dialect-294"><span class="linenos">294</span></a><span class="sd"> will be rewritten as</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect-190"><a href="#Dialect-190"><span class="linenos">190</span></a><span class="k">class</span> <span class="nc">Dialect</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Dialect</span><span class="p">):</span> +</span><span id="Dialect-191"><a href="#Dialect-191"><span class="linenos">191</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Dialect-192"><a href="#Dialect-192"><span class="linenos">192</span></a><span class="w"> </span><span class="sd">"""The base index offset for arrays."""</span> +</span><span id="Dialect-193"><a href="#Dialect-193"><span class="linenos">193</span></a> +</span><span id="Dialect-194"><a href="#Dialect-194"><span class="linenos">194</span></a> <span class="n">WEEK_OFFSET</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Dialect-195"><a href="#Dialect-195"><span class="linenos">195</span></a><span class="w"> </span><span class="sd">"""First day of the week in DATE_TRUNC(week). Defaults to 0 (Monday). -1 would be Sunday."""</span> +</span><span id="Dialect-196"><a href="#Dialect-196"><span class="linenos">196</span></a> +</span><span id="Dialect-197"><a href="#Dialect-197"><span class="linenos">197</span></a> <span class="n">UNNEST_COLUMN_ONLY</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-198"><a href="#Dialect-198"><span class="linenos">198</span></a><span class="w"> </span><span class="sd">"""Whether `UNNEST` table aliases are treated as column aliases."""</span> +</span><span id="Dialect-199"><a href="#Dialect-199"><span class="linenos">199</span></a> +</span><span id="Dialect-200"><a href="#Dialect-200"><span class="linenos">200</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-201"><a href="#Dialect-201"><span class="linenos">201</span></a><span class="w"> </span><span class="sd">"""Whether the table alias comes after tablesample."""</span> +</span><span id="Dialect-202"><a href="#Dialect-202"><span class="linenos">202</span></a> +</span><span id="Dialect-203"><a href="#Dialect-203"><span class="linenos">203</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-204"><a href="#Dialect-204"><span class="linenos">204</span></a><span class="w"> </span><span class="sd">"""Whether a size in the table sample clause represents percentage."""</span> +</span><span id="Dialect-205"><a href="#Dialect-205"><span class="linenos">205</span></a> +</span><span id="Dialect-206"><a href="#Dialect-206"><span class="linenos">206</span></a> <span class="n">NORMALIZATION_STRATEGY</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">LOWERCASE</span> +</span><span id="Dialect-207"><a href="#Dialect-207"><span class="linenos">207</span></a><span class="w"> </span><span class="sd">"""Specifies the strategy according to which identifiers should be normalized."""</span> +</span><span id="Dialect-208"><a href="#Dialect-208"><span class="linenos">208</span></a> +</span><span id="Dialect-209"><a href="#Dialect-209"><span class="linenos">209</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-210"><a href="#Dialect-210"><span class="linenos">210</span></a><span class="w"> </span><span class="sd">"""Whether an unquoted identifier can start with a digit."""</span> +</span><span id="Dialect-211"><a href="#Dialect-211"><span class="linenos">211</span></a> +</span><span id="Dialect-212"><a href="#Dialect-212"><span class="linenos">212</span></a> <span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Dialect-213"><a href="#Dialect-213"><span class="linenos">213</span></a><span class="w"> </span><span class="sd">"""Whether the DPIPE token (`||`) is a string concatenation operator."""</span> +</span><span id="Dialect-214"><a href="#Dialect-214"><span class="linenos">214</span></a> +</span><span id="Dialect-215"><a href="#Dialect-215"><span class="linenos">215</span></a> <span class="n">STRICT_STRING_CONCAT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-216"><a href="#Dialect-216"><span class="linenos">216</span></a><span class="w"> </span><span class="sd">"""Whether `CONCAT`'s arguments must be strings."""</span> +</span><span id="Dialect-217"><a href="#Dialect-217"><span class="linenos">217</span></a> +</span><span id="Dialect-218"><a href="#Dialect-218"><span class="linenos">218</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Dialect-219"><a href="#Dialect-219"><span class="linenos">219</span></a><span class="w"> </span><span class="sd">"""Whether user-defined data types are supported."""</span> +</span><span id="Dialect-220"><a href="#Dialect-220"><span class="linenos">220</span></a> +</span><span id="Dialect-221"><a href="#Dialect-221"><span class="linenos">221</span></a> <span class="n">SUPPORTS_SEMI_ANTI_JOIN</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Dialect-222"><a href="#Dialect-222"><span class="linenos">222</span></a><span class="w"> </span><span class="sd">"""Whether `SEMI` or `ANTI` joins are supported."""</span> +</span><span id="Dialect-223"><a href="#Dialect-223"><span class="linenos">223</span></a> +</span><span id="Dialect-224"><a href="#Dialect-224"><span class="linenos">224</span></a> <span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"upper"</span> +</span><span id="Dialect-225"><a href="#Dialect-225"><span class="linenos">225</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-226"><a href="#Dialect-226"><span class="linenos">226</span></a><span class="sd"> Determines how function names are going to be normalized.</span> +</span><span id="Dialect-227"><a href="#Dialect-227"><span class="linenos">227</span></a><span class="sd"> Possible values:</span> +</span><span id="Dialect-228"><a href="#Dialect-228"><span class="linenos">228</span></a><span class="sd"> "upper" or True: Convert names to uppercase.</span> +</span><span id="Dialect-229"><a href="#Dialect-229"><span class="linenos">229</span></a><span class="sd"> "lower": Convert names to lowercase.</span> +</span><span id="Dialect-230"><a href="#Dialect-230"><span class="linenos">230</span></a><span class="sd"> False: Disables function name normalization.</span> +</span><span id="Dialect-231"><a href="#Dialect-231"><span class="linenos">231</span></a><span class="sd"> """</span> +</span><span id="Dialect-232"><a href="#Dialect-232"><span class="linenos">232</span></a> +</span><span id="Dialect-233"><a href="#Dialect-233"><span class="linenos">233</span></a> <span class="n">LOG_BASE_FIRST</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><span id="Dialect-234"><a href="#Dialect-234"><span class="linenos">234</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-235"><a href="#Dialect-235"><span class="linenos">235</span></a><span class="sd"> Whether the base comes first in the `LOG` function.</span> +</span><span id="Dialect-236"><a href="#Dialect-236"><span class="linenos">236</span></a><span class="sd"> Possible values: `True`, `False`, `None` (two arguments are not supported by `LOG`)</span> +</span><span id="Dialect-237"><a href="#Dialect-237"><span class="linenos">237</span></a><span class="sd"> """</span> +</span><span id="Dialect-238"><a href="#Dialect-238"><span class="linenos">238</span></a> +</span><span id="Dialect-239"><a href="#Dialect-239"><span class="linenos">239</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_small"</span> +</span><span id="Dialect-240"><a href="#Dialect-240"><span class="linenos">240</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-241"><a href="#Dialect-241"><span class="linenos">241</span></a><span class="sd"> Default `NULL` ordering method to use if not explicitly set.</span> +</span><span id="Dialect-242"><a href="#Dialect-242"><span class="linenos">242</span></a><span class="sd"> Possible values: `"nulls_are_small"`, `"nulls_are_large"`, `"nulls_are_last"`</span> +</span><span id="Dialect-243"><a href="#Dialect-243"><span class="linenos">243</span></a><span class="sd"> """</span> +</span><span id="Dialect-244"><a href="#Dialect-244"><span class="linenos">244</span></a> +</span><span id="Dialect-245"><a href="#Dialect-245"><span class="linenos">245</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-246"><a href="#Dialect-246"><span class="linenos">246</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-247"><a href="#Dialect-247"><span class="linenos">247</span></a><span class="sd"> Whether the behavior of `a / b` depends on the types of `a` and `b`.</span> +</span><span id="Dialect-248"><a href="#Dialect-248"><span class="linenos">248</span></a><span class="sd"> False means `a / b` is always float division.</span> +</span><span id="Dialect-249"><a href="#Dialect-249"><span class="linenos">249</span></a><span class="sd"> True means `a / b` is integer division if both `a` and `b` are integers.</span> +</span><span id="Dialect-250"><a href="#Dialect-250"><span class="linenos">250</span></a><span class="sd"> """</span> +</span><span id="Dialect-251"><a href="#Dialect-251"><span class="linenos">251</span></a> +</span><span id="Dialect-252"><a href="#Dialect-252"><span class="linenos">252</span></a> <span class="n">SAFE_DIVISION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-253"><a href="#Dialect-253"><span class="linenos">253</span></a><span class="w"> </span><span class="sd">"""Whether division by zero throws an error (`False`) or returns NULL (`True`)."""</span> +</span><span id="Dialect-254"><a href="#Dialect-254"><span class="linenos">254</span></a> +</span><span id="Dialect-255"><a href="#Dialect-255"><span class="linenos">255</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-256"><a href="#Dialect-256"><span class="linenos">256</span></a><span class="w"> </span><span class="sd">"""A `NULL` arg in `CONCAT` yields `NULL` by default, but in some dialects it yields an empty string."""</span> +</span><span id="Dialect-257"><a href="#Dialect-257"><span class="linenos">257</span></a> +</span><span id="Dialect-258"><a href="#Dialect-258"><span class="linenos">258</span></a> <span class="n">HEX_LOWERCASE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-259"><a href="#Dialect-259"><span class="linenos">259</span></a><span class="w"> </span><span class="sd">"""Whether the `HEX` function returns a lowercase hexadecimal string."""</span> +</span><span id="Dialect-260"><a href="#Dialect-260"><span class="linenos">260</span></a> +</span><span id="Dialect-261"><a href="#Dialect-261"><span class="linenos">261</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2">'"</span> +</span><span id="Dialect-262"><a href="#Dialect-262"><span class="linenos">262</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y%m</span><span class="si">%d</span><span class="s2">'"</span> +</span><span id="Dialect-263"><a href="#Dialect-263"><span class="linenos">263</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S'"</span> +</span><span id="Dialect-264"><a href="#Dialect-264"><span class="linenos">264</span></a> +</span><span id="Dialect-265"><a href="#Dialect-265"><span class="linenos">265</span></a> <span class="n">TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-266"><a href="#Dialect-266"><span class="linenos">266</span></a><span class="w"> </span><span class="sd">"""Associates this dialect's time formats with their equivalent Python `strftime` formats."""</span> +</span><span id="Dialect-267"><a href="#Dialect-267"><span class="linenos">267</span></a> +</span><span id="Dialect-268"><a href="#Dialect-268"><span class="linenos">268</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_model_rules_date_time</span> +</span><span id="Dialect-269"><a href="#Dialect-269"><span class="linenos">269</span></a> <span class="c1"># https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Data-Type-Conversions/Character-to-DATE-Conversion/Forcing-a-FORMAT-on-CAST-for-Converting-Character-to-DATE</span> +</span><span id="Dialect-270"><a href="#Dialect-270"><span class="linenos">270</span></a> <span class="n">FORMAT_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-271"><a href="#Dialect-271"><span class="linenos">271</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-272"><a href="#Dialect-272"><span class="linenos">272</span></a><span class="sd"> Helper which is used for parsing the special syntax `CAST(x AS DATE FORMAT 'yyyy')`.</span> +</span><span id="Dialect-273"><a href="#Dialect-273"><span class="linenos">273</span></a><span class="sd"> If empty, the corresponding trie will be constructed off of `TIME_MAPPING`.</span> +</span><span id="Dialect-274"><a href="#Dialect-274"><span class="linenos">274</span></a><span class="sd"> """</span> +</span><span id="Dialect-275"><a href="#Dialect-275"><span class="linenos">275</span></a> +</span><span id="Dialect-276"><a href="#Dialect-276"><span class="linenos">276</span></a> <span class="n">UNESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-277"><a href="#Dialect-277"><span class="linenos">277</span></a><span class="w"> </span><span class="sd">"""Mapping of an escaped sequence (`\\n`) to its unescaped version (`\n`)."""</span> +</span><span id="Dialect-278"><a href="#Dialect-278"><span class="linenos">278</span></a> +</span><span id="Dialect-279"><a href="#Dialect-279"><span class="linenos">279</span></a> <span class="n">PSEUDOCOLUMNS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Dialect-280"><a href="#Dialect-280"><span class="linenos">280</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-281"><a href="#Dialect-281"><span class="linenos">281</span></a><span class="sd"> Columns that are auto-generated by the engine corresponding to this dialect.</span> +</span><span id="Dialect-282"><a href="#Dialect-282"><span class="linenos">282</span></a><span class="sd"> For example, such columns may be excluded from `SELECT *` queries.</span> +</span><span id="Dialect-283"><a href="#Dialect-283"><span class="linenos">283</span></a><span class="sd"> """</span> +</span><span id="Dialect-284"><a href="#Dialect-284"><span class="linenos">284</span></a> +</span><span id="Dialect-285"><a href="#Dialect-285"><span class="linenos">285</span></a> <span class="n">PREFER_CTE_ALIAS_COLUMN</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Dialect-286"><a href="#Dialect-286"><span class="linenos">286</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-287"><a href="#Dialect-287"><span class="linenos">287</span></a><span class="sd"> Some dialects, such as Snowflake, allow you to reference a CTE column alias in the</span> +</span><span id="Dialect-288"><a href="#Dialect-288"><span class="linenos">288</span></a><span class="sd"> HAVING clause of the CTE. This flag will cause the CTE alias columns to override</span> +</span><span id="Dialect-289"><a href="#Dialect-289"><span class="linenos">289</span></a><span class="sd"> any projection aliases in the subquery.</span> +</span><span id="Dialect-290"><a href="#Dialect-290"><span class="linenos">290</span></a> +</span><span id="Dialect-291"><a href="#Dialect-291"><span class="linenos">291</span></a><span class="sd"> For example,</span> +</span><span id="Dialect-292"><a href="#Dialect-292"><span class="linenos">292</span></a><span class="sd"> WITH y(c) AS (</span> +</span><span id="Dialect-293"><a href="#Dialect-293"><span class="linenos">293</span></a><span class="sd"> SELECT SUM(a) FROM (SELECT 1 a) AS x HAVING c > 0</span> +</span><span id="Dialect-294"><a href="#Dialect-294"><span class="linenos">294</span></a><span class="sd"> ) SELECT c FROM y;</span> </span><span id="Dialect-295"><a href="#Dialect-295"><span class="linenos">295</span></a> -</span><span id="Dialect-296"><a href="#Dialect-296"><span class="linenos">296</span></a><span class="sd"> WITH y(c) AS (</span> -</span><span id="Dialect-297"><a href="#Dialect-297"><span class="linenos">297</span></a><span class="sd"> SELECT SUM(a) AS c FROM (SELECT 1 AS a) AS x HAVING c > 0</span> -</span><span id="Dialect-298"><a href="#Dialect-298"><span class="linenos">298</span></a><span class="sd"> ) SELECT c FROM y;</span> -</span><span id="Dialect-299"><a href="#Dialect-299"><span class="linenos">299</span></a><span class="sd"> """</span> -</span><span id="Dialect-300"><a href="#Dialect-300"><span class="linenos">300</span></a> -</span><span id="Dialect-301"><a href="#Dialect-301"><span class="linenos">301</span></a> <span class="c1"># --- Autofilled ---</span> +</span><span id="Dialect-296"><a href="#Dialect-296"><span class="linenos">296</span></a><span class="sd"> will be rewritten as</span> +</span><span id="Dialect-297"><a href="#Dialect-297"><span class="linenos">297</span></a> +</span><span id="Dialect-298"><a href="#Dialect-298"><span class="linenos">298</span></a><span class="sd"> WITH y(c) AS (</span> +</span><span id="Dialect-299"><a href="#Dialect-299"><span class="linenos">299</span></a><span class="sd"> SELECT SUM(a) AS c FROM (SELECT 1 AS a) AS x HAVING c > 0</span> +</span><span id="Dialect-300"><a href="#Dialect-300"><span class="linenos">300</span></a><span class="sd"> ) SELECT c FROM y;</span> +</span><span id="Dialect-301"><a href="#Dialect-301"><span class="linenos">301</span></a><span class="sd"> """</span> </span><span id="Dialect-302"><a href="#Dialect-302"><span class="linenos">302</span></a> -</span><span id="Dialect-303"><a href="#Dialect-303"><span class="linenos">303</span></a> <span class="n">tokenizer_class</span> <span class="o">=</span> <span class="n">Tokenizer</span> -</span><span id="Dialect-304"><a href="#Dialect-304"><span class="linenos">304</span></a> <span class="n">parser_class</span> <span class="o">=</span> <span class="n">Parser</span> -</span><span id="Dialect-305"><a href="#Dialect-305"><span class="linenos">305</span></a> <span class="n">generator_class</span> <span class="o">=</span> <span class="n">Generator</span> -</span><span id="Dialect-306"><a href="#Dialect-306"><span class="linenos">306</span></a> -</span><span id="Dialect-307"><a href="#Dialect-307"><span class="linenos">307</span></a> <span class="c1"># A trie of the time_mapping keys</span> -</span><span id="Dialect-308"><a href="#Dialect-308"><span class="linenos">308</span></a> <span class="n">TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-309"><a href="#Dialect-309"><span class="linenos">309</span></a> <span class="n">FORMAT_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-310"><a href="#Dialect-310"><span class="linenos">310</span></a> -</span><span id="Dialect-311"><a href="#Dialect-311"><span class="linenos">311</span></a> <span class="n">INVERSE_TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-312"><a href="#Dialect-312"><span class="linenos">312</span></a> <span class="n">INVERSE_TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Dialect-313"><a href="#Dialect-313"><span class="linenos">313</span></a> -</span><span id="Dialect-314"><a href="#Dialect-314"><span class="linenos">314</span></a> <span class="n">ESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-303"><a href="#Dialect-303"><span class="linenos">303</span></a> <span class="c1"># --- Autofilled ---</span> +</span><span id="Dialect-304"><a href="#Dialect-304"><span class="linenos">304</span></a> +</span><span id="Dialect-305"><a href="#Dialect-305"><span class="linenos">305</span></a> <span class="n">tokenizer_class</span> <span class="o">=</span> <span class="n">Tokenizer</span> +</span><span id="Dialect-306"><a href="#Dialect-306"><span class="linenos">306</span></a> <span class="n">parser_class</span> <span class="o">=</span> <span class="n">Parser</span> +</span><span id="Dialect-307"><a href="#Dialect-307"><span class="linenos">307</span></a> <span class="n">generator_class</span> <span class="o">=</span> <span class="n">Generator</span> +</span><span id="Dialect-308"><a href="#Dialect-308"><span class="linenos">308</span></a> +</span><span id="Dialect-309"><a href="#Dialect-309"><span class="linenos">309</span></a> <span class="c1"># A trie of the time_mapping keys</span> +</span><span id="Dialect-310"><a href="#Dialect-310"><span class="linenos">310</span></a> <span class="n">TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-311"><a href="#Dialect-311"><span class="linenos">311</span></a> <span class="n">FORMAT_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-312"><a href="#Dialect-312"><span class="linenos">312</span></a> +</span><span id="Dialect-313"><a href="#Dialect-313"><span class="linenos">313</span></a> <span class="n">INVERSE_TIME_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-314"><a href="#Dialect-314"><span class="linenos">314</span></a> <span class="n">INVERSE_TIME_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="Dialect-315"><a href="#Dialect-315"><span class="linenos">315</span></a> -</span><span id="Dialect-316"><a href="#Dialect-316"><span class="linenos">316</span></a> <span class="c1"># Delimiters for string literals and identifiers</span> -</span><span id="Dialect-317"><a href="#Dialect-317"><span class="linenos">317</span></a> <span class="n">QUOTE_START</span> <span class="o">=</span> <span class="s2">"'"</span> -</span><span id="Dialect-318"><a href="#Dialect-318"><span class="linenos">318</span></a> <span class="n">QUOTE_END</span> <span class="o">=</span> <span class="s2">"'"</span> -</span><span id="Dialect-319"><a href="#Dialect-319"><span class="linenos">319</span></a> <span class="n">IDENTIFIER_START</span> <span class="o">=</span> <span class="s1">'"'</span> -</span><span id="Dialect-320"><a href="#Dialect-320"><span class="linenos">320</span></a> <span class="n">IDENTIFIER_END</span> <span class="o">=</span> <span class="s1">'"'</span> -</span><span id="Dialect-321"><a href="#Dialect-321"><span class="linenos">321</span></a> -</span><span id="Dialect-322"><a href="#Dialect-322"><span class="linenos">322</span></a> <span class="c1"># Delimiters for bit, hex, byte and unicode literals</span> -</span><span id="Dialect-323"><a href="#Dialect-323"><span class="linenos">323</span></a> <span class="n">BIT_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-324"><a href="#Dialect-324"><span class="linenos">324</span></a> <span class="n">BIT_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-325"><a href="#Dialect-325"><span class="linenos">325</span></a> <span class="n">HEX_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-326"><a href="#Dialect-326"><span class="linenos">326</span></a> <span class="n">HEX_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-327"><a href="#Dialect-327"><span class="linenos">327</span></a> <span class="n">BYTE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-328"><a href="#Dialect-328"><span class="linenos">328</span></a> <span class="n">BYTE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-329"><a href="#Dialect-329"><span class="linenos">329</span></a> <span class="n">UNICODE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-330"><a href="#Dialect-330"><span class="linenos">330</span></a> <span class="n">UNICODE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Dialect-331"><a href="#Dialect-331"><span class="linenos">331</span></a> -</span><span id="Dialect-332"><a href="#Dialect-332"><span class="linenos">332</span></a> <span class="c1"># Separator of COPY statement parameters</span> -</span><span id="Dialect-333"><a href="#Dialect-333"><span class="linenos">333</span></a> <span class="n">COPY_PARAMS_ARE_CSV</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Dialect-334"><a href="#Dialect-334"><span class="linenos">334</span></a> -</span><span id="Dialect-335"><a href="#Dialect-335"><span class="linenos">335</span></a> <span class="nd">@classmethod</span> -</span><span id="Dialect-336"><a href="#Dialect-336"><span class="linenos">336</span></a> <span class="k">def</span> <span class="nf">get_or_raise</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dialect</span><span class="p">:</span> -</span><span id="Dialect-337"><a href="#Dialect-337"><span class="linenos">337</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-338"><a href="#Dialect-338"><span class="linenos">338</span></a><span class="sd"> Look up a dialect in the global dialect registry and return it if it exists.</span> -</span><span id="Dialect-339"><a href="#Dialect-339"><span class="linenos">339</span></a> -</span><span id="Dialect-340"><a href="#Dialect-340"><span class="linenos">340</span></a><span class="sd"> Args:</span> -</span><span id="Dialect-341"><a href="#Dialect-341"><span class="linenos">341</span></a><span class="sd"> dialect: The target dialect. If this is a string, it can be optionally followed by</span> -</span><span id="Dialect-342"><a href="#Dialect-342"><span class="linenos">342</span></a><span class="sd"> additional key-value pairs that are separated by commas and are used to specify</span> -</span><span id="Dialect-343"><a href="#Dialect-343"><span class="linenos">343</span></a><span class="sd"> dialect settings, such as whether the dialect's identifiers are case-sensitive.</span> -</span><span id="Dialect-344"><a href="#Dialect-344"><span class="linenos">344</span></a> -</span><span id="Dialect-345"><a href="#Dialect-345"><span class="linenos">345</span></a><span class="sd"> Example:</span> -</span><span id="Dialect-346"><a href="#Dialect-346"><span class="linenos">346</span></a><span class="sd"> >>> dialect = dialect_class = get_or_raise("duckdb")</span> -</span><span id="Dialect-347"><a href="#Dialect-347"><span class="linenos">347</span></a><span class="sd"> >>> dialect = get_or_raise("mysql, normalization_strategy = case_sensitive")</span> -</span><span id="Dialect-348"><a href="#Dialect-348"><span class="linenos">348</span></a> -</span><span id="Dialect-349"><a href="#Dialect-349"><span class="linenos">349</span></a><span class="sd"> Returns:</span> -</span><span id="Dialect-350"><a href="#Dialect-350"><span class="linenos">350</span></a><span class="sd"> The corresponding Dialect instance.</span> -</span><span id="Dialect-351"><a href="#Dialect-351"><span class="linenos">351</span></a><span class="sd"> """</span> -</span><span id="Dialect-352"><a href="#Dialect-352"><span class="linenos">352</span></a> -</span><span id="Dialect-353"><a href="#Dialect-353"><span class="linenos">353</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dialect</span><span class="p">:</span> -</span><span id="Dialect-354"><a href="#Dialect-354"><span class="linenos">354</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">()</span> -</span><span id="Dialect-355"><a href="#Dialect-355"><span class="linenos">355</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">_Dialect</span><span class="p">):</span> -</span><span id="Dialect-356"><a href="#Dialect-356"><span class="linenos">356</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="p">()</span> -</span><span id="Dialect-357"><a href="#Dialect-357"><span class="linenos">357</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> -</span><span id="Dialect-358"><a href="#Dialect-358"><span class="linenos">358</span></a> <span class="k">return</span> <span class="n">dialect</span> -</span><span id="Dialect-359"><a href="#Dialect-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Dialect-360"><a href="#Dialect-360"><span class="linenos">360</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Dialect-361"><a href="#Dialect-361"><span class="linenos">361</span></a> <span class="n">dialect_name</span><span class="p">,</span> <span class="o">*</span><span class="n">kv_pairs</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> -</span><span id="Dialect-362"><a href="#Dialect-362"><span class="linenos">362</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">kv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> <span class="k">for</span> <span class="n">kv</span> <span class="ow">in</span> <span class="n">kv_pairs</span><span class="p">)}</span> -</span><span id="Dialect-363"><a href="#Dialect-363"><span class="linenos">363</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Dialect-364"><a href="#Dialect-364"><span class="linenos">364</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> -</span><span id="Dialect-365"><a href="#Dialect-365"><span class="linenos">365</span></a> <span class="sa">f</span><span class="s2">"Invalid dialect format: '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">'. "</span> -</span><span id="Dialect-366"><a href="#Dialect-366"><span class="linenos">366</span></a> <span class="s2">"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'."</span> -</span><span id="Dialect-367"><a href="#Dialect-367"><span class="linenos">367</span></a> <span class="p">)</span> -</span><span id="Dialect-368"><a href="#Dialect-368"><span class="linenos">368</span></a> -</span><span id="Dialect-369"><a href="#Dialect-369"><span class="linenos">369</span></a> <span class="n">result</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dialect_name</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> -</span><span id="Dialect-370"><a href="#Dialect-370"><span class="linenos">370</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> -</span><span id="Dialect-371"><a href="#Dialect-371"><span class="linenos">371</span></a> <span class="kn">from</span> <span class="nn">difflib</span> <span class="kn">import</span> <span class="n">get_close_matches</span> -</span><span id="Dialect-372"><a href="#Dialect-372"><span class="linenos">372</span></a> -</span><span id="Dialect-373"><a href="#Dialect-373"><span class="linenos">373</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">get_close_matches</span><span class="p">(</span><span class="n">dialect_name</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Dialect-374"><a href="#Dialect-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="n">similar</span><span class="p">:</span> -</span><span id="Dialect-375"><a href="#Dialect-375"><span class="linenos">375</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" Did you mean </span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">?"</span> -</span><span id="Dialect-376"><a href="#Dialect-376"><span class="linenos">376</span></a> -</span><span id="Dialect-377"><a href="#Dialect-377"><span class="linenos">377</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown dialect '</span><span class="si">{</span><span class="n">dialect_name</span><span class="si">}</span><span class="s2">'.</span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Dialect-316"><a href="#Dialect-316"><span class="linenos">316</span></a> <span class="n">ESCAPED_SEQUENCES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Dialect-317"><a href="#Dialect-317"><span class="linenos">317</span></a> +</span><span id="Dialect-318"><a href="#Dialect-318"><span class="linenos">318</span></a> <span class="c1"># Delimiters for string literals and identifiers</span> +</span><span id="Dialect-319"><a href="#Dialect-319"><span class="linenos">319</span></a> <span class="n">QUOTE_START</span> <span class="o">=</span> <span class="s2">"'"</span> +</span><span id="Dialect-320"><a href="#Dialect-320"><span class="linenos">320</span></a> <span class="n">QUOTE_END</span> <span class="o">=</span> <span class="s2">"'"</span> +</span><span id="Dialect-321"><a href="#Dialect-321"><span class="linenos">321</span></a> <span class="n">IDENTIFIER_START</span> <span class="o">=</span> <span class="s1">'"'</span> +</span><span id="Dialect-322"><a href="#Dialect-322"><span class="linenos">322</span></a> <span class="n">IDENTIFIER_END</span> <span class="o">=</span> <span class="s1">'"'</span> +</span><span id="Dialect-323"><a href="#Dialect-323"><span class="linenos">323</span></a> +</span><span id="Dialect-324"><a href="#Dialect-324"><span class="linenos">324</span></a> <span class="c1"># Delimiters for bit, hex, byte and unicode literals</span> +</span><span id="Dialect-325"><a href="#Dialect-325"><span class="linenos">325</span></a> <span class="n">BIT_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-326"><a href="#Dialect-326"><span class="linenos">326</span></a> <span class="n">BIT_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-327"><a href="#Dialect-327"><span class="linenos">327</span></a> <span class="n">HEX_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-328"><a href="#Dialect-328"><span class="linenos">328</span></a> <span class="n">HEX_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-329"><a href="#Dialect-329"><span class="linenos">329</span></a> <span class="n">BYTE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-330"><a href="#Dialect-330"><span class="linenos">330</span></a> <span class="n">BYTE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-331"><a href="#Dialect-331"><span class="linenos">331</span></a> <span class="n">UNICODE_START</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-332"><a href="#Dialect-332"><span class="linenos">332</span></a> <span class="n">UNICODE_END</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Dialect-333"><a href="#Dialect-333"><span class="linenos">333</span></a> +</span><span id="Dialect-334"><a href="#Dialect-334"><span class="linenos">334</span></a> <span class="c1"># Separator of COPY statement parameters</span> +</span><span id="Dialect-335"><a href="#Dialect-335"><span class="linenos">335</span></a> <span class="n">COPY_PARAMS_ARE_CSV</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Dialect-336"><a href="#Dialect-336"><span class="linenos">336</span></a> +</span><span id="Dialect-337"><a href="#Dialect-337"><span class="linenos">337</span></a> <span class="nd">@classmethod</span> +</span><span id="Dialect-338"><a href="#Dialect-338"><span class="linenos">338</span></a> <span class="k">def</span> <span class="nf">get_or_raise</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dialect</span><span class="p">:</span> +</span><span id="Dialect-339"><a href="#Dialect-339"><span class="linenos">339</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-340"><a href="#Dialect-340"><span class="linenos">340</span></a><span class="sd"> Look up a dialect in the global dialect registry and return it if it exists.</span> +</span><span id="Dialect-341"><a href="#Dialect-341"><span class="linenos">341</span></a> +</span><span id="Dialect-342"><a href="#Dialect-342"><span class="linenos">342</span></a><span class="sd"> Args:</span> +</span><span id="Dialect-343"><a href="#Dialect-343"><span class="linenos">343</span></a><span class="sd"> dialect: The target dialect. If this is a string, it can be optionally followed by</span> +</span><span id="Dialect-344"><a href="#Dialect-344"><span class="linenos">344</span></a><span class="sd"> additional key-value pairs that are separated by commas and are used to specify</span> +</span><span id="Dialect-345"><a href="#Dialect-345"><span class="linenos">345</span></a><span class="sd"> dialect settings, such as whether the dialect's identifiers are case-sensitive.</span> +</span><span id="Dialect-346"><a href="#Dialect-346"><span class="linenos">346</span></a> +</span><span id="Dialect-347"><a href="#Dialect-347"><span class="linenos">347</span></a><span class="sd"> Example:</span> +</span><span id="Dialect-348"><a href="#Dialect-348"><span class="linenos">348</span></a><span class="sd"> >>> dialect = dialect_class = get_or_raise("duckdb")</span> +</span><span id="Dialect-349"><a href="#Dialect-349"><span class="linenos">349</span></a><span class="sd"> >>> dialect = get_or_raise("mysql, normalization_strategy = case_sensitive")</span> +</span><span id="Dialect-350"><a href="#Dialect-350"><span class="linenos">350</span></a> +</span><span id="Dialect-351"><a href="#Dialect-351"><span class="linenos">351</span></a><span class="sd"> Returns:</span> +</span><span id="Dialect-352"><a href="#Dialect-352"><span class="linenos">352</span></a><span class="sd"> The corresponding Dialect instance.</span> +</span><span id="Dialect-353"><a href="#Dialect-353"><span class="linenos">353</span></a><span class="sd"> """</span> +</span><span id="Dialect-354"><a href="#Dialect-354"><span class="linenos">354</span></a> +</span><span id="Dialect-355"><a href="#Dialect-355"><span class="linenos">355</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dialect</span><span class="p">:</span> +</span><span id="Dialect-356"><a href="#Dialect-356"><span class="linenos">356</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">()</span> +</span><span id="Dialect-357"><a href="#Dialect-357"><span class="linenos">357</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">_Dialect</span><span class="p">):</span> +</span><span id="Dialect-358"><a href="#Dialect-358"><span class="linenos">358</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="p">()</span> +</span><span id="Dialect-359"><a href="#Dialect-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> +</span><span id="Dialect-360"><a href="#Dialect-360"><span class="linenos">360</span></a> <span class="k">return</span> <span class="n">dialect</span> +</span><span id="Dialect-361"><a href="#Dialect-361"><span class="linenos">361</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Dialect-362"><a href="#Dialect-362"><span class="linenos">362</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Dialect-363"><a href="#Dialect-363"><span class="linenos">363</span></a> <span class="n">dialect_name</span><span class="p">,</span> <span class="o">*</span><span class="n">kv_pairs</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> +</span><span id="Dialect-364"><a href="#Dialect-364"><span class="linenos">364</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">kv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> <span class="k">for</span> <span class="n">kv</span> <span class="ow">in</span> <span class="n">kv_pairs</span><span class="p">)}</span> +</span><span id="Dialect-365"><a href="#Dialect-365"><span class="linenos">365</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Dialect-366"><a href="#Dialect-366"><span class="linenos">366</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> +</span><span id="Dialect-367"><a href="#Dialect-367"><span class="linenos">367</span></a> <span class="sa">f</span><span class="s2">"Invalid dialect format: '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">'. "</span> +</span><span id="Dialect-368"><a href="#Dialect-368"><span class="linenos">368</span></a> <span class="s2">"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'."</span> +</span><span id="Dialect-369"><a href="#Dialect-369"><span class="linenos">369</span></a> <span class="p">)</span> +</span><span id="Dialect-370"><a href="#Dialect-370"><span class="linenos">370</span></a> +</span><span id="Dialect-371"><a href="#Dialect-371"><span class="linenos">371</span></a> <span class="n">result</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dialect_name</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> +</span><span id="Dialect-372"><a href="#Dialect-372"><span class="linenos">372</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> +</span><span id="Dialect-373"><a href="#Dialect-373"><span class="linenos">373</span></a> <span class="kn">from</span> <span class="nn">difflib</span> <span class="kn">import</span> <span class="n">get_close_matches</span> +</span><span id="Dialect-374"><a href="#Dialect-374"><span class="linenos">374</span></a> +</span><span id="Dialect-375"><a href="#Dialect-375"><span class="linenos">375</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">get_close_matches</span><span class="p">(</span><span class="n">dialect_name</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Dialect-376"><a href="#Dialect-376"><span class="linenos">376</span></a> <span class="k">if</span> <span class="n">similar</span><span class="p">:</span> +</span><span id="Dialect-377"><a href="#Dialect-377"><span class="linenos">377</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" Did you mean </span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">?"</span> </span><span id="Dialect-378"><a href="#Dialect-378"><span class="linenos">378</span></a> -</span><span id="Dialect-379"><a href="#Dialect-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="n">result</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Dialect-379"><a href="#Dialect-379"><span class="linenos">379</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown dialect '</span><span class="si">{</span><span class="n">dialect_name</span><span class="si">}</span><span class="s2">'.</span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Dialect-380"><a href="#Dialect-380"><span class="linenos">380</span></a> -</span><span id="Dialect-381"><a href="#Dialect-381"><span class="linenos">381</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid dialect type for '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">': '</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span> +</span><span id="Dialect-381"><a href="#Dialect-381"><span class="linenos">381</span></a> <span class="k">return</span> <span class="n">result</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="Dialect-382"><a href="#Dialect-382"><span class="linenos">382</span></a> -</span><span id="Dialect-383"><a href="#Dialect-383"><span class="linenos">383</span></a> <span class="nd">@classmethod</span> -</span><span id="Dialect-384"><a href="#Dialect-384"><span class="linenos">384</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span> -</span><span id="Dialect-385"><a href="#Dialect-385"><span class="linenos">385</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Dialect-386"><a href="#Dialect-386"><span class="linenos">386</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Dialect-387"><a href="#Dialect-387"><span class="linenos">387</span></a><span class="w"> </span><span class="sd">"""Converts a time format in this dialect to its equivalent Python `strftime` format."""</span> -</span><span id="Dialect-388"><a href="#Dialect-388"><span class="linenos">388</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Dialect-389"><a href="#Dialect-389"><span class="linenos">389</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="Dialect-390"><a href="#Dialect-390"><span class="linenos">390</span></a> <span class="c1"># the time formats are quoted</span> -</span><span id="Dialect-391"><a href="#Dialect-391"><span class="linenos">391</span></a> <span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">)</span> -</span><span id="Dialect-392"><a href="#Dialect-392"><span class="linenos">392</span></a> <span class="p">)</span> -</span><span id="Dialect-393"><a href="#Dialect-393"><span class="linenos">393</span></a> -</span><span id="Dialect-394"><a href="#Dialect-394"><span class="linenos">394</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Dialect-395"><a href="#Dialect-395"><span class="linenos">395</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">))</span> -</span><span id="Dialect-396"><a href="#Dialect-396"><span class="linenos">396</span></a> -</span><span id="Dialect-397"><a href="#Dialect-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Dialect-383"><a href="#Dialect-383"><span class="linenos">383</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid dialect type for '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">': '</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span> +</span><span id="Dialect-384"><a href="#Dialect-384"><span class="linenos">384</span></a> +</span><span id="Dialect-385"><a href="#Dialect-385"><span class="linenos">385</span></a> <span class="nd">@classmethod</span> +</span><span id="Dialect-386"><a href="#Dialect-386"><span class="linenos">386</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span> +</span><span id="Dialect-387"><a href="#Dialect-387"><span class="linenos">387</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Dialect-388"><a href="#Dialect-388"><span class="linenos">388</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Dialect-389"><a href="#Dialect-389"><span class="linenos">389</span></a><span class="w"> </span><span class="sd">"""Converts a time format in this dialect to its equivalent Python `strftime` format."""</span> +</span><span id="Dialect-390"><a href="#Dialect-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Dialect-391"><a href="#Dialect-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="Dialect-392"><a href="#Dialect-392"><span class="linenos">392</span></a> <span class="c1"># the time formats are quoted</span> +</span><span id="Dialect-393"><a href="#Dialect-393"><span class="linenos">393</span></a> <span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">)</span> +</span><span id="Dialect-394"><a href="#Dialect-394"><span class="linenos">394</span></a> <span class="p">)</span> +</span><span id="Dialect-395"><a href="#Dialect-395"><span class="linenos">395</span></a> +</span><span id="Dialect-396"><a href="#Dialect-396"><span class="linenos">396</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Dialect-397"><a href="#Dialect-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">))</span> </span><span id="Dialect-398"><a href="#Dialect-398"><span class="linenos">398</span></a> -</span><span id="Dialect-399"><a href="#Dialect-399"><span class="linenos">399</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Dialect-400"><a href="#Dialect-400"><span class="linenos">400</span></a> <span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"normalization_strategy"</span><span class="p">)</span> -</span><span id="Dialect-401"><a href="#Dialect-401"><span class="linenos">401</span></a> -</span><span id="Dialect-402"><a href="#Dialect-402"><span class="linenos">402</span></a> <span class="k">if</span> <span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Dialect-403"><a href="#Dialect-403"><span class="linenos">403</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NORMALIZATION_STRATEGY</span> -</span><span id="Dialect-404"><a href="#Dialect-404"><span class="linenos">404</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Dialect-405"><a href="#Dialect-405"><span class="linenos">405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="p">(</span><span class="n">normalization_strategy</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Dialect-406"><a href="#Dialect-406"><span class="linenos">406</span></a> -</span><span id="Dialect-407"><a href="#Dialect-407"><span class="linenos">407</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</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">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dialect-408"><a href="#Dialect-408"><span class="linenos">408</span></a> <span class="c1"># Does not currently take dialect state into account</span> -</span><span id="Dialect-409"><a href="#Dialect-409"><span class="linenos">409</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span> -</span><span id="Dialect-410"><a href="#Dialect-410"><span class="linenos">410</span></a> -</span><span id="Dialect-411"><a href="#Dialect-411"><span class="linenos">411</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="Dialect-412"><a href="#Dialect-412"><span class="linenos">412</span></a> <span class="c1"># Does not currently take dialect state into account</span> -</span><span id="Dialect-413"><a href="#Dialect-413"><span class="linenos">413</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="Dialect-414"><a href="#Dialect-414"><span class="linenos">414</span></a> -</span><span id="Dialect-415"><a href="#Dialect-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">normalize_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Dialect-416"><a href="#Dialect-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-417"><a href="#Dialect-417"><span class="linenos">417</span></a><span class="sd"> Transforms an identifier in a way that resembles how it'd be resolved by this dialect.</span> -</span><span id="Dialect-418"><a href="#Dialect-418"><span class="linenos">418</span></a> -</span><span id="Dialect-419"><a href="#Dialect-419"><span class="linenos">419</span></a><span class="sd"> For example, an identifier like `FoO` would be resolved as `foo` in Postgres, because it</span> -</span><span id="Dialect-420"><a href="#Dialect-420"><span class="linenos">420</span></a><span class="sd"> lowercases all unquoted identifiers. On the other hand, Snowflake uppercases them, so</span> -</span><span id="Dialect-421"><a href="#Dialect-421"><span class="linenos">421</span></a><span class="sd"> it would resolve it as `FOO`. If it was quoted, it'd need to be treated as case-sensitive,</span> -</span><span id="Dialect-422"><a href="#Dialect-422"><span class="linenos">422</span></a><span class="sd"> and so any normalization would be prohibited in order to avoid "breaking" the identifier.</span> -</span><span id="Dialect-423"><a href="#Dialect-423"><span class="linenos">423</span></a> -</span><span id="Dialect-424"><a href="#Dialect-424"><span class="linenos">424</span></a><span class="sd"> There are also dialects like Spark, which are case-insensitive even when quotes are</span> -</span><span id="Dialect-425"><a href="#Dialect-425"><span class="linenos">425</span></a><span class="sd"> present, and dialects like MySQL, whose resolution rules match those employed by the</span> -</span><span id="Dialect-426"><a href="#Dialect-426"><span class="linenos">426</span></a><span class="sd"> underlying operating system, for example they may always be case-sensitive in Linux.</span> -</span><span id="Dialect-427"><a href="#Dialect-427"><span class="linenos">427</span></a> -</span><span id="Dialect-428"><a href="#Dialect-428"><span class="linenos">428</span></a><span class="sd"> Finally, the normalization behavior of some engines can even be controlled through flags,</span> -</span><span id="Dialect-429"><a href="#Dialect-429"><span class="linenos">429</span></a><span class="sd"> like in Redshift's case, where users can explicitly set enable_case_sensitive_identifier.</span> -</span><span id="Dialect-430"><a href="#Dialect-430"><span class="linenos">430</span></a> -</span><span id="Dialect-431"><a href="#Dialect-431"><span class="linenos">431</span></a><span class="sd"> SQLGlot aims to understand and handle all of these different behaviors gracefully, so</span> -</span><span id="Dialect-432"><a href="#Dialect-432"><span class="linenos">432</span></a><span class="sd"> that it can analyze queries in the optimizer and successfully capture their semantics.</span> -</span><span id="Dialect-433"><a href="#Dialect-433"><span class="linenos">433</span></a><span class="sd"> """</span> -</span><span id="Dialect-434"><a href="#Dialect-434"><span class="linenos">434</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Dialect-435"><a href="#Dialect-435"><span class="linenos">435</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="Dialect-436"><a href="#Dialect-436"><span class="linenos">436</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span> -</span><span id="Dialect-437"><a href="#Dialect-437"><span class="linenos">437</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Dialect-438"><a href="#Dialect-438"><span class="linenos">438</span></a> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">quoted</span> -</span><span id="Dialect-439"><a href="#Dialect-439"><span class="linenos">439</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span> -</span><span id="Dialect-440"><a href="#Dialect-440"><span class="linenos">440</span></a> <span class="p">)</span> -</span><span id="Dialect-441"><a href="#Dialect-441"><span class="linenos">441</span></a> <span class="p">):</span> -</span><span id="Dialect-442"><a href="#Dialect-442"><span class="linenos">442</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Dialect-443"><a href="#Dialect-443"><span class="linenos">443</span></a> <span class="s2">"this"</span><span class="p">,</span> -</span><span id="Dialect-444"><a href="#Dialect-444"><span class="linenos">444</span></a> <span class="p">(</span> -</span><span id="Dialect-445"><a href="#Dialect-445"><span class="linenos">445</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Dialect-446"><a href="#Dialect-446"><span class="linenos">446</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> -</span><span id="Dialect-447"><a href="#Dialect-447"><span class="linenos">447</span></a> <span class="k">else</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="Dialect-448"><a href="#Dialect-448"><span class="linenos">448</span></a> <span class="p">),</span> -</span><span id="Dialect-449"><a href="#Dialect-449"><span class="linenos">449</span></a> <span class="p">)</span> -</span><span id="Dialect-450"><a href="#Dialect-450"><span class="linenos">450</span></a> -</span><span id="Dialect-451"><a href="#Dialect-451"><span class="linenos">451</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Dialect-399"><a href="#Dialect-399"><span class="linenos">399</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Dialect-400"><a href="#Dialect-400"><span class="linenos">400</span></a> +</span><span id="Dialect-401"><a href="#Dialect-401"><span class="linenos">401</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Dialect-402"><a href="#Dialect-402"><span class="linenos">402</span></a> <span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"normalization_strategy"</span><span class="p">)</span> +</span><span id="Dialect-403"><a href="#Dialect-403"><span class="linenos">403</span></a> +</span><span id="Dialect-404"><a href="#Dialect-404"><span class="linenos">404</span></a> <span class="k">if</span> <span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Dialect-405"><a href="#Dialect-405"><span class="linenos">405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NORMALIZATION_STRATEGY</span> +</span><span id="Dialect-406"><a href="#Dialect-406"><span class="linenos">406</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Dialect-407"><a href="#Dialect-407"><span class="linenos">407</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="p">(</span><span class="n">normalization_strategy</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Dialect-408"><a href="#Dialect-408"><span class="linenos">408</span></a> +</span><span id="Dialect-409"><a href="#Dialect-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</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">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dialect-410"><a href="#Dialect-410"><span class="linenos">410</span></a> <span class="c1"># Does not currently take dialect state into account</span> +</span><span id="Dialect-411"><a href="#Dialect-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span> +</span><span id="Dialect-412"><a href="#Dialect-412"><span class="linenos">412</span></a> +</span><span id="Dialect-413"><a href="#Dialect-413"><span class="linenos">413</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="Dialect-414"><a href="#Dialect-414"><span class="linenos">414</span></a> <span class="c1"># Does not currently take dialect state into account</span> +</span><span id="Dialect-415"><a href="#Dialect-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="Dialect-416"><a href="#Dialect-416"><span class="linenos">416</span></a> +</span><span id="Dialect-417"><a href="#Dialect-417"><span class="linenos">417</span></a> <span class="k">def</span> <span class="nf">normalize_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Dialect-418"><a href="#Dialect-418"><span class="linenos">418</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-419"><a href="#Dialect-419"><span class="linenos">419</span></a><span class="sd"> Transforms an identifier in a way that resembles how it'd be resolved by this dialect.</span> +</span><span id="Dialect-420"><a href="#Dialect-420"><span class="linenos">420</span></a> +</span><span id="Dialect-421"><a href="#Dialect-421"><span class="linenos">421</span></a><span class="sd"> For example, an identifier like `FoO` would be resolved as `foo` in Postgres, because it</span> +</span><span id="Dialect-422"><a href="#Dialect-422"><span class="linenos">422</span></a><span class="sd"> lowercases all unquoted identifiers. On the other hand, Snowflake uppercases them, so</span> +</span><span id="Dialect-423"><a href="#Dialect-423"><span class="linenos">423</span></a><span class="sd"> it would resolve it as `FOO`. If it was quoted, it'd need to be treated as case-sensitive,</span> +</span><span id="Dialect-424"><a href="#Dialect-424"><span class="linenos">424</span></a><span class="sd"> and so any normalization would be prohibited in order to avoid "breaking" the identifier.</span> +</span><span id="Dialect-425"><a href="#Dialect-425"><span class="linenos">425</span></a> +</span><span id="Dialect-426"><a href="#Dialect-426"><span class="linenos">426</span></a><span class="sd"> There are also dialects like Spark, which are case-insensitive even when quotes are</span> +</span><span id="Dialect-427"><a href="#Dialect-427"><span class="linenos">427</span></a><span class="sd"> present, and dialects like MySQL, whose resolution rules match those employed by the</span> +</span><span id="Dialect-428"><a href="#Dialect-428"><span class="linenos">428</span></a><span class="sd"> underlying operating system, for example they may always be case-sensitive in Linux.</span> +</span><span id="Dialect-429"><a href="#Dialect-429"><span class="linenos">429</span></a> +</span><span id="Dialect-430"><a href="#Dialect-430"><span class="linenos">430</span></a><span class="sd"> Finally, the normalization behavior of some engines can even be controlled through flags,</span> +</span><span id="Dialect-431"><a href="#Dialect-431"><span class="linenos">431</span></a><span class="sd"> like in Redshift's case, where users can explicitly set enable_case_sensitive_identifier.</span> +</span><span id="Dialect-432"><a href="#Dialect-432"><span class="linenos">432</span></a> +</span><span id="Dialect-433"><a href="#Dialect-433"><span class="linenos">433</span></a><span class="sd"> SQLGlot aims to understand and handle all of these different behaviors gracefully, so</span> +</span><span id="Dialect-434"><a href="#Dialect-434"><span class="linenos">434</span></a><span class="sd"> that it can analyze queries in the optimizer and successfully capture their semantics.</span> +</span><span id="Dialect-435"><a href="#Dialect-435"><span class="linenos">435</span></a><span class="sd"> """</span> +</span><span id="Dialect-436"><a href="#Dialect-436"><span class="linenos">436</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Dialect-437"><a href="#Dialect-437"><span class="linenos">437</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="Dialect-438"><a href="#Dialect-438"><span class="linenos">438</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span> +</span><span id="Dialect-439"><a href="#Dialect-439"><span class="linenos">439</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Dialect-440"><a href="#Dialect-440"><span class="linenos">440</span></a> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">quoted</span> +</span><span id="Dialect-441"><a href="#Dialect-441"><span class="linenos">441</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span> +</span><span id="Dialect-442"><a href="#Dialect-442"><span class="linenos">442</span></a> <span class="p">)</span> +</span><span id="Dialect-443"><a href="#Dialect-443"><span class="linenos">443</span></a> <span class="p">):</span> +</span><span id="Dialect-444"><a href="#Dialect-444"><span class="linenos">444</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Dialect-445"><a href="#Dialect-445"><span class="linenos">445</span></a> <span class="s2">"this"</span><span class="p">,</span> +</span><span id="Dialect-446"><a href="#Dialect-446"><span class="linenos">446</span></a> <span class="p">(</span> +</span><span id="Dialect-447"><a href="#Dialect-447"><span class="linenos">447</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Dialect-448"><a href="#Dialect-448"><span class="linenos">448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> +</span><span id="Dialect-449"><a href="#Dialect-449"><span class="linenos">449</span></a> <span class="k">else</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="Dialect-450"><a href="#Dialect-450"><span class="linenos">450</span></a> <span class="p">),</span> +</span><span id="Dialect-451"><a href="#Dialect-451"><span class="linenos">451</span></a> <span class="p">)</span> </span><span id="Dialect-452"><a href="#Dialect-452"><span class="linenos">452</span></a> -</span><span id="Dialect-453"><a href="#Dialect-453"><span class="linenos">453</span></a> <span class="k">def</span> <span class="nf">case_sensitive</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dialect-454"><a href="#Dialect-454"><span class="linenos">454</span></a><span class="w"> </span><span class="sd">"""Checks if text contains any case sensitive characters, based on the dialect's rules."""</span> -</span><span id="Dialect-455"><a href="#Dialect-455"><span class="linenos">455</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span><span class="p">:</span> -</span><span id="Dialect-456"><a href="#Dialect-456"><span class="linenos">456</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Dialect-457"><a href="#Dialect-457"><span class="linenos">457</span></a> -</span><span id="Dialect-458"><a href="#Dialect-458"><span class="linenos">458</span></a> <span class="n">unsafe</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Dialect-459"><a href="#Dialect-459"><span class="linenos">459</span></a> <span class="nb">str</span><span class="o">.</span><span class="n">islower</span> -</span><span id="Dialect-460"><a href="#Dialect-460"><span class="linenos">460</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> -</span><span id="Dialect-461"><a href="#Dialect-461"><span class="linenos">461</span></a> <span class="k">else</span> <span class="nb">str</span><span class="o">.</span><span class="n">isupper</span> -</span><span id="Dialect-462"><a href="#Dialect-462"><span class="linenos">462</span></a> <span class="p">)</span> -</span><span id="Dialect-463"><a href="#Dialect-463"><span class="linenos">463</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">unsafe</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Dialect-464"><a href="#Dialect-464"><span class="linenos">464</span></a> -</span><span id="Dialect-465"><a href="#Dialect-465"><span class="linenos">465</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">self</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">"safe"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dialect-466"><a href="#Dialect-466"><span class="linenos">466</span></a><span class="w"> </span><span class="sd">"""Checks if text can be identified given an identify option.</span> -</span><span id="Dialect-467"><a href="#Dialect-467"><span class="linenos">467</span></a> -</span><span id="Dialect-468"><a href="#Dialect-468"><span class="linenos">468</span></a><span class="sd"> Args:</span> -</span><span id="Dialect-469"><a href="#Dialect-469"><span class="linenos">469</span></a><span class="sd"> text: The text to check.</span> -</span><span id="Dialect-470"><a href="#Dialect-470"><span class="linenos">470</span></a><span class="sd"> identify:</span> -</span><span id="Dialect-471"><a href="#Dialect-471"><span class="linenos">471</span></a><span class="sd"> `"always"` or `True`: Always returns `True`.</span> -</span><span id="Dialect-472"><a href="#Dialect-472"><span class="linenos">472</span></a><span class="sd"> `"safe"`: Only returns `True` if the identifier is case-insensitive.</span> -</span><span id="Dialect-473"><a href="#Dialect-473"><span class="linenos">473</span></a> -</span><span id="Dialect-474"><a href="#Dialect-474"><span class="linenos">474</span></a><span class="sd"> Returns:</span> -</span><span id="Dialect-475"><a href="#Dialect-475"><span class="linenos">475</span></a><span class="sd"> Whether the given text can be identified.</span> -</span><span id="Dialect-476"><a href="#Dialect-476"><span class="linenos">476</span></a><span class="sd"> """</span> -</span><span id="Dialect-477"><a href="#Dialect-477"><span class="linenos">477</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">"always"</span><span class="p">:</span> -</span><span id="Dialect-478"><a href="#Dialect-478"><span class="linenos">478</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Dialect-479"><a href="#Dialect-479"><span class="linenos">479</span></a> -</span><span id="Dialect-480"><a href="#Dialect-480"><span class="linenos">480</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">"safe"</span><span class="p">:</span> -</span><span id="Dialect-481"><a href="#Dialect-481"><span class="linenos">481</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</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="Dialect-482"><a href="#Dialect-482"><span class="linenos">482</span></a> -</span><span id="Dialect-483"><a href="#Dialect-483"><span class="linenos">483</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Dialect-453"><a href="#Dialect-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Dialect-454"><a href="#Dialect-454"><span class="linenos">454</span></a> +</span><span id="Dialect-455"><a href="#Dialect-455"><span class="linenos">455</span></a> <span class="k">def</span> <span class="nf">case_sensitive</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dialect-456"><a href="#Dialect-456"><span class="linenos">456</span></a><span class="w"> </span><span class="sd">"""Checks if text contains any case sensitive characters, based on the dialect's rules."""</span> +</span><span id="Dialect-457"><a href="#Dialect-457"><span class="linenos">457</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span><span class="p">:</span> +</span><span id="Dialect-458"><a href="#Dialect-458"><span class="linenos">458</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Dialect-459"><a href="#Dialect-459"><span class="linenos">459</span></a> +</span><span id="Dialect-460"><a href="#Dialect-460"><span class="linenos">460</span></a> <span class="n">unsafe</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Dialect-461"><a href="#Dialect-461"><span class="linenos">461</span></a> <span class="nb">str</span><span class="o">.</span><span class="n">islower</span> +</span><span id="Dialect-462"><a href="#Dialect-462"><span class="linenos">462</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> +</span><span id="Dialect-463"><a href="#Dialect-463"><span class="linenos">463</span></a> <span class="k">else</span> <span class="nb">str</span><span class="o">.</span><span class="n">isupper</span> +</span><span id="Dialect-464"><a href="#Dialect-464"><span class="linenos">464</span></a> <span class="p">)</span> +</span><span id="Dialect-465"><a href="#Dialect-465"><span class="linenos">465</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">unsafe</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Dialect-466"><a href="#Dialect-466"><span class="linenos">466</span></a> +</span><span id="Dialect-467"><a href="#Dialect-467"><span class="linenos">467</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">self</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">"safe"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dialect-468"><a href="#Dialect-468"><span class="linenos">468</span></a><span class="w"> </span><span class="sd">"""Checks if text can be identified given an identify option.</span> +</span><span id="Dialect-469"><a href="#Dialect-469"><span class="linenos">469</span></a> +</span><span id="Dialect-470"><a href="#Dialect-470"><span class="linenos">470</span></a><span class="sd"> Args:</span> +</span><span id="Dialect-471"><a href="#Dialect-471"><span class="linenos">471</span></a><span class="sd"> text: The text to check.</span> +</span><span id="Dialect-472"><a href="#Dialect-472"><span class="linenos">472</span></a><span class="sd"> identify:</span> +</span><span id="Dialect-473"><a href="#Dialect-473"><span class="linenos">473</span></a><span class="sd"> `"always"` or `True`: Always returns `True`.</span> +</span><span id="Dialect-474"><a href="#Dialect-474"><span class="linenos">474</span></a><span class="sd"> `"safe"`: Only returns `True` if the identifier is case-insensitive.</span> +</span><span id="Dialect-475"><a href="#Dialect-475"><span class="linenos">475</span></a> +</span><span id="Dialect-476"><a href="#Dialect-476"><span class="linenos">476</span></a><span class="sd"> Returns:</span> +</span><span id="Dialect-477"><a href="#Dialect-477"><span class="linenos">477</span></a><span class="sd"> Whether the given text can be identified.</span> +</span><span id="Dialect-478"><a href="#Dialect-478"><span class="linenos">478</span></a><span class="sd"> """</span> +</span><span id="Dialect-479"><a href="#Dialect-479"><span class="linenos">479</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">"always"</span><span class="p">:</span> +</span><span id="Dialect-480"><a href="#Dialect-480"><span class="linenos">480</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Dialect-481"><a href="#Dialect-481"><span class="linenos">481</span></a> +</span><span id="Dialect-482"><a href="#Dialect-482"><span class="linenos">482</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">"safe"</span><span class="p">:</span> +</span><span id="Dialect-483"><a href="#Dialect-483"><span class="linenos">483</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</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="Dialect-484"><a href="#Dialect-484"><span class="linenos">484</span></a> -</span><span id="Dialect-485"><a href="#Dialect-485"><span class="linenos">485</span></a> <span class="k">def</span> <span class="nf">quote_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Dialect-486"><a href="#Dialect-486"><span class="linenos">486</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect-487"><a href="#Dialect-487"><span class="linenos">487</span></a><span class="sd"> Adds quotes to a given identifier.</span> -</span><span id="Dialect-488"><a href="#Dialect-488"><span class="linenos">488</span></a> -</span><span id="Dialect-489"><a href="#Dialect-489"><span class="linenos">489</span></a><span class="sd"> Args:</span> -</span><span id="Dialect-490"><a href="#Dialect-490"><span class="linenos">490</span></a><span class="sd"> expression: The expression of interest. If it's not an `Identifier`, this method is a no-op.</span> -</span><span id="Dialect-491"><a href="#Dialect-491"><span class="linenos">491</span></a><span class="sd"> identify: If set to `False`, the quotes will only be added if the identifier is deemed</span> -</span><span id="Dialect-492"><a href="#Dialect-492"><span class="linenos">492</span></a><span class="sd"> "unsafe", with respect to its characters and this dialect's normalization strategy.</span> -</span><span id="Dialect-493"><a href="#Dialect-493"><span class="linenos">493</span></a><span class="sd"> """</span> -</span><span id="Dialect-494"><a href="#Dialect-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Dialect-495"><a href="#Dialect-495"><span class="linenos">495</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Dialect-496"><a href="#Dialect-496"><span class="linenos">496</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Dialect-497"><a href="#Dialect-497"><span class="linenos">497</span></a> <span class="s2">"quoted"</span><span class="p">,</span> -</span><span id="Dialect-498"><a href="#Dialect-498"><span class="linenos">498</span></a> <span class="n">identify</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> -</span><span id="Dialect-499"><a href="#Dialect-499"><span class="linenos">499</span></a> <span class="p">)</span> -</span><span id="Dialect-500"><a href="#Dialect-500"><span class="linenos">500</span></a> -</span><span id="Dialect-501"><a href="#Dialect-501"><span class="linenos">501</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Dialect-485"><a href="#Dialect-485"><span class="linenos">485</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Dialect-486"><a href="#Dialect-486"><span class="linenos">486</span></a> +</span><span id="Dialect-487"><a href="#Dialect-487"><span class="linenos">487</span></a> <span class="k">def</span> <span class="nf">quote_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Dialect-488"><a href="#Dialect-488"><span class="linenos">488</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect-489"><a href="#Dialect-489"><span class="linenos">489</span></a><span class="sd"> Adds quotes to a given identifier.</span> +</span><span id="Dialect-490"><a href="#Dialect-490"><span class="linenos">490</span></a> +</span><span id="Dialect-491"><a href="#Dialect-491"><span class="linenos">491</span></a><span class="sd"> Args:</span> +</span><span id="Dialect-492"><a href="#Dialect-492"><span class="linenos">492</span></a><span class="sd"> expression: The expression of interest. If it's not an `Identifier`, this method is a no-op.</span> +</span><span id="Dialect-493"><a href="#Dialect-493"><span class="linenos">493</span></a><span class="sd"> identify: If set to `False`, the quotes will only be added if the identifier is deemed</span> +</span><span id="Dialect-494"><a href="#Dialect-494"><span class="linenos">494</span></a><span class="sd"> "unsafe", with respect to its characters and this dialect's normalization strategy.</span> +</span><span id="Dialect-495"><a href="#Dialect-495"><span class="linenos">495</span></a><span class="sd"> """</span> +</span><span id="Dialect-496"><a href="#Dialect-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Dialect-497"><a href="#Dialect-497"><span class="linenos">497</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Dialect-498"><a href="#Dialect-498"><span class="linenos">498</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Dialect-499"><a href="#Dialect-499"><span class="linenos">499</span></a> <span class="s2">"quoted"</span><span class="p">,</span> +</span><span id="Dialect-500"><a href="#Dialect-500"><span class="linenos">500</span></a> <span class="n">identify</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> +</span><span id="Dialect-501"><a href="#Dialect-501"><span class="linenos">501</span></a> <span class="p">)</span> </span><span id="Dialect-502"><a href="#Dialect-502"><span class="linenos">502</span></a> -</span><span id="Dialect-503"><a href="#Dialect-503"><span class="linenos">503</span></a> <span class="k">def</span> <span class="nf">to_json_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Dialect-504"><a href="#Dialect-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="Dialect-505"><a href="#Dialect-505"><span class="linenos">505</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> -</span><span id="Dialect-506"><a href="#Dialect-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="Dialect-507"><a href="#Dialect-507"><span class="linenos">507</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">path_text</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="Dialect-508"><a href="#Dialect-508"><span class="linenos">508</span></a> -</span><span id="Dialect-509"><a href="#Dialect-509"><span class="linenos">509</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Dialect-510"><a href="#Dialect-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="n">parse_json_path</span><span class="p">(</span><span class="n">path_text</span><span class="p">)</span> -</span><span id="Dialect-511"><a href="#Dialect-511"><span class="linenos">511</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Dialect-512"><a href="#Dialect-512"><span class="linenos">512</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid JSON path syntax. </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Dialect-513"><a href="#Dialect-513"><span class="linenos">513</span></a> -</span><span id="Dialect-514"><a href="#Dialect-514"><span class="linenos">514</span></a> <span class="k">return</span> <span class="n">path</span> +</span><span id="Dialect-503"><a href="#Dialect-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Dialect-504"><a href="#Dialect-504"><span class="linenos">504</span></a> +</span><span id="Dialect-505"><a href="#Dialect-505"><span class="linenos">505</span></a> <span class="k">def</span> <span class="nf">to_json_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Dialect-506"><a href="#Dialect-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="Dialect-507"><a href="#Dialect-507"><span class="linenos">507</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> +</span><span id="Dialect-508"><a href="#Dialect-508"><span class="linenos">508</span></a> <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="Dialect-509"><a href="#Dialect-509"><span class="linenos">509</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">path_text</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Dialect-510"><a href="#Dialect-510"><span class="linenos">510</span></a> +</span><span id="Dialect-511"><a href="#Dialect-511"><span class="linenos">511</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Dialect-512"><a href="#Dialect-512"><span class="linenos">512</span></a> <span class="k">return</span> <span class="n">parse_json_path</span><span class="p">(</span><span class="n">path_text</span><span class="p">)</span> +</span><span id="Dialect-513"><a href="#Dialect-513"><span class="linenos">513</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Dialect-514"><a href="#Dialect-514"><span class="linenos">514</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid JSON path syntax. </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Dialect-515"><a href="#Dialect-515"><span class="linenos">515</span></a> -</span><span id="Dialect-516"><a href="#Dialect-516"><span class="linenos">516</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Dialect-517"><a href="#Dialect-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Dialect-518"><a href="#Dialect-518"><span class="linenos">518</span></a> -</span><span id="Dialect-519"><a href="#Dialect-519"><span class="linenos">519</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="Dialect-520"><a href="#Dialect-520"><span class="linenos">520</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression_type</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="Dialect-521"><a href="#Dialect-521"><span class="linenos">521</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Dialect-522"><a href="#Dialect-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">expression_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Dialect-523"><a href="#Dialect-523"><span class="linenos">523</span></a> -</span><span id="Dialect-524"><a href="#Dialect-524"><span class="linenos">524</span></a> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dialect-525"><a href="#Dialect-525"><span class="linenos">525</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="Dialect-526"><a href="#Dialect-526"><span class="linenos">526</span></a> -</span><span id="Dialect-527"><a href="#Dialect-527"><span class="linenos">527</span></a> <span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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="Dialect-528"><a href="#Dialect-528"><span class="linenos">528</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="Dialect-529"><a href="#Dialect-529"><span class="linenos">529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Dialect-530"><a href="#Dialect-530"><span class="linenos">530</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Dialect-531"><a href="#Dialect-531"><span class="linenos">531</span></a> <span class="p">]</span> -</span><span id="Dialect-532"><a href="#Dialect-532"><span class="linenos">532</span></a> -</span><span id="Dialect-533"><a href="#Dialect-533"><span class="linenos">533</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Dialect-534"><a href="#Dialect-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Dialect-535"><a href="#Dialect-535"><span class="linenos">535</span></a> -</span><span id="Dialect-536"><a href="#Dialect-536"><span class="linenos">536</span></a> <span class="nd">@property</span> -</span><span id="Dialect-537"><a href="#Dialect-537"><span class="linenos">537</span></a> <span class="k">def</span> <span class="nf">tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tokenizer</span><span class="p">:</span> -</span><span id="Dialect-538"><a href="#Dialect-538"><span class="linenos">538</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_tokenizer"</span><span class="p">):</span> -</span><span id="Dialect-539"><a href="#Dialect-539"><span class="linenos">539</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Dialect-540"><a href="#Dialect-540"><span class="linenos">540</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> -</span><span id="Dialect-541"><a href="#Dialect-541"><span class="linenos">541</span></a> -</span><span id="Dialect-542"><a href="#Dialect-542"><span class="linenos">542</span></a> <span class="k">def</span> <span class="nf">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Parser</span><span class="p">:</span> -</span><span id="Dialect-543"><a href="#Dialect-543"><span class="linenos">543</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Dialect-544"><a href="#Dialect-544"><span class="linenos">544</span></a> -</span><span id="Dialect-545"><a href="#Dialect-545"><span class="linenos">545</span></a> <span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">:</span> -</span><span id="Dialect-546"><a href="#Dialect-546"><span class="linenos">546</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Dialect-516"><a href="#Dialect-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="n">path</span> +</span><span id="Dialect-517"><a href="#Dialect-517"><span class="linenos">517</span></a> +</span><span id="Dialect-518"><a href="#Dialect-518"><span class="linenos">518</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Dialect-519"><a href="#Dialect-519"><span class="linenos">519</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Dialect-520"><a href="#Dialect-520"><span class="linenos">520</span></a> +</span><span id="Dialect-521"><a href="#Dialect-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="Dialect-522"><a href="#Dialect-522"><span class="linenos">522</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression_type</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="Dialect-523"><a href="#Dialect-523"><span class="linenos">523</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Dialect-524"><a href="#Dialect-524"><span class="linenos">524</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">expression_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Dialect-525"><a href="#Dialect-525"><span class="linenos">525</span></a> +</span><span id="Dialect-526"><a href="#Dialect-526"><span class="linenos">526</span></a> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dialect-527"><a href="#Dialect-527"><span class="linenos">527</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="Dialect-528"><a href="#Dialect-528"><span class="linenos">528</span></a> +</span><span id="Dialect-529"><a href="#Dialect-529"><span class="linenos">529</span></a> <span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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="Dialect-530"><a href="#Dialect-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="Dialect-531"><a href="#Dialect-531"><span class="linenos">531</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Dialect-532"><a href="#Dialect-532"><span class="linenos">532</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Dialect-533"><a href="#Dialect-533"><span class="linenos">533</span></a> <span class="p">]</span> +</span><span id="Dialect-534"><a href="#Dialect-534"><span class="linenos">534</span></a> +</span><span id="Dialect-535"><a href="#Dialect-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Dialect-536"><a href="#Dialect-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Dialect-537"><a href="#Dialect-537"><span class="linenos">537</span></a> +</span><span id="Dialect-538"><a href="#Dialect-538"><span class="linenos">538</span></a> <span class="nd">@property</span> +</span><span id="Dialect-539"><a href="#Dialect-539"><span class="linenos">539</span></a> <span class="k">def</span> <span class="nf">tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tokenizer</span><span class="p">:</span> +</span><span id="Dialect-540"><a href="#Dialect-540"><span class="linenos">540</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_tokenizer"</span><span class="p">):</span> +</span><span id="Dialect-541"><a href="#Dialect-541"><span class="linenos">541</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Dialect-542"><a href="#Dialect-542"><span class="linenos">542</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> +</span><span id="Dialect-543"><a href="#Dialect-543"><span class="linenos">543</span></a> +</span><span id="Dialect-544"><a href="#Dialect-544"><span class="linenos">544</span></a> <span class="k">def</span> <span class="nf">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Parser</span><span class="p">:</span> +</span><span id="Dialect-545"><a href="#Dialect-545"><span class="linenos">545</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Dialect-546"><a href="#Dialect-546"><span class="linenos">546</span></a> +</span><span id="Dialect-547"><a href="#Dialect-547"><span class="linenos">547</span></a> <span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">:</span> +</span><span id="Dialect-548"><a href="#Dialect-548"><span class="linenos">548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -2725,13 +2759,13 @@ </div> <a class="headerlink" href="#Dialect.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.__init__-399"><a href="#Dialect.__init__-399"><span class="linenos">399</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Dialect.__init__-400"><a href="#Dialect.__init__-400"><span class="linenos">400</span></a> <span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"normalization_strategy"</span><span class="p">)</span> -</span><span id="Dialect.__init__-401"><a href="#Dialect.__init__-401"><span class="linenos">401</span></a> -</span><span id="Dialect.__init__-402"><a href="#Dialect.__init__-402"><span class="linenos">402</span></a> <span class="k">if</span> <span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Dialect.__init__-403"><a href="#Dialect.__init__-403"><span class="linenos">403</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NORMALIZATION_STRATEGY</span> -</span><span id="Dialect.__init__-404"><a href="#Dialect.__init__-404"><span class="linenos">404</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Dialect.__init__-405"><a href="#Dialect.__init__-405"><span class="linenos">405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="p">(</span><span class="n">normalization_strategy</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.__init__-401"><a href="#Dialect.__init__-401"><span class="linenos">401</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Dialect.__init__-402"><a href="#Dialect.__init__-402"><span class="linenos">402</span></a> <span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"normalization_strategy"</span><span class="p">)</span> +</span><span id="Dialect.__init__-403"><a href="#Dialect.__init__-403"><span class="linenos">403</span></a> +</span><span id="Dialect.__init__-404"><a href="#Dialect.__init__-404"><span class="linenos">404</span></a> <span class="k">if</span> <span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Dialect.__init__-405"><a href="#Dialect.__init__-405"><span class="linenos">405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NORMALIZATION_STRATEGY</span> +</span><span id="Dialect.__init__-406"><a href="#Dialect.__init__-406"><span class="linenos">406</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Dialect.__init__-407"><a href="#Dialect.__init__-407"><span class="linenos">407</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="o">=</span> <span class="n">NormalizationStrategy</span><span class="p">(</span><span class="n">normalization_strategy</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> </span></pre></div> @@ -3389,53 +3423,53 @@ WITH y(c) AS ( </div> <a class="headerlink" href="#Dialect.get_or_raise"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.get_or_raise-335"><a href="#Dialect.get_or_raise-335"><span class="linenos">335</span></a> <span class="nd">@classmethod</span> -</span><span id="Dialect.get_or_raise-336"><a href="#Dialect.get_or_raise-336"><span class="linenos">336</span></a> <span class="k">def</span> <span class="nf">get_or_raise</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dialect</span><span class="p">:</span> -</span><span id="Dialect.get_or_raise-337"><a href="#Dialect.get_or_raise-337"><span class="linenos">337</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect.get_or_raise-338"><a href="#Dialect.get_or_raise-338"><span class="linenos">338</span></a><span class="sd"> Look up a dialect in the global dialect registry and return it if it exists.</span> -</span><span id="Dialect.get_or_raise-339"><a href="#Dialect.get_or_raise-339"><span class="linenos">339</span></a> -</span><span id="Dialect.get_or_raise-340"><a href="#Dialect.get_or_raise-340"><span class="linenos">340</span></a><span class="sd"> Args:</span> -</span><span id="Dialect.get_or_raise-341"><a href="#Dialect.get_or_raise-341"><span class="linenos">341</span></a><span class="sd"> dialect: The target dialect. If this is a string, it can be optionally followed by</span> -</span><span id="Dialect.get_or_raise-342"><a href="#Dialect.get_or_raise-342"><span class="linenos">342</span></a><span class="sd"> additional key-value pairs that are separated by commas and are used to specify</span> -</span><span id="Dialect.get_or_raise-343"><a href="#Dialect.get_or_raise-343"><span class="linenos">343</span></a><span class="sd"> dialect settings, such as whether the dialect's identifiers are case-sensitive.</span> -</span><span id="Dialect.get_or_raise-344"><a href="#Dialect.get_or_raise-344"><span class="linenos">344</span></a> -</span><span id="Dialect.get_or_raise-345"><a href="#Dialect.get_or_raise-345"><span class="linenos">345</span></a><span class="sd"> Example:</span> -</span><span id="Dialect.get_or_raise-346"><a href="#Dialect.get_or_raise-346"><span class="linenos">346</span></a><span class="sd"> >>> dialect = dialect_class = get_or_raise("duckdb")</span> -</span><span id="Dialect.get_or_raise-347"><a href="#Dialect.get_or_raise-347"><span class="linenos">347</span></a><span class="sd"> >>> dialect = get_or_raise("mysql, normalization_strategy = case_sensitive")</span> -</span><span id="Dialect.get_or_raise-348"><a href="#Dialect.get_or_raise-348"><span class="linenos">348</span></a> -</span><span id="Dialect.get_or_raise-349"><a href="#Dialect.get_or_raise-349"><span class="linenos">349</span></a><span class="sd"> Returns:</span> -</span><span id="Dialect.get_or_raise-350"><a href="#Dialect.get_or_raise-350"><span class="linenos">350</span></a><span class="sd"> The corresponding Dialect instance.</span> -</span><span id="Dialect.get_or_raise-351"><a href="#Dialect.get_or_raise-351"><span class="linenos">351</span></a><span class="sd"> """</span> -</span><span id="Dialect.get_or_raise-352"><a href="#Dialect.get_or_raise-352"><span class="linenos">352</span></a> -</span><span id="Dialect.get_or_raise-353"><a href="#Dialect.get_or_raise-353"><span class="linenos">353</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dialect</span><span class="p">:</span> -</span><span id="Dialect.get_or_raise-354"><a href="#Dialect.get_or_raise-354"><span class="linenos">354</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">()</span> -</span><span id="Dialect.get_or_raise-355"><a href="#Dialect.get_or_raise-355"><span class="linenos">355</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">_Dialect</span><span class="p">):</span> -</span><span id="Dialect.get_or_raise-356"><a href="#Dialect.get_or_raise-356"><span class="linenos">356</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="p">()</span> -</span><span id="Dialect.get_or_raise-357"><a href="#Dialect.get_or_raise-357"><span class="linenos">357</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> -</span><span id="Dialect.get_or_raise-358"><a href="#Dialect.get_or_raise-358"><span class="linenos">358</span></a> <span class="k">return</span> <span class="n">dialect</span> -</span><span id="Dialect.get_or_raise-359"><a href="#Dialect.get_or_raise-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Dialect.get_or_raise-360"><a href="#Dialect.get_or_raise-360"><span class="linenos">360</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Dialect.get_or_raise-361"><a href="#Dialect.get_or_raise-361"><span class="linenos">361</span></a> <span class="n">dialect_name</span><span class="p">,</span> <span class="o">*</span><span class="n">kv_pairs</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> -</span><span id="Dialect.get_or_raise-362"><a href="#Dialect.get_or_raise-362"><span class="linenos">362</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">kv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> <span class="k">for</span> <span class="n">kv</span> <span class="ow">in</span> <span class="n">kv_pairs</span><span class="p">)}</span> -</span><span id="Dialect.get_or_raise-363"><a href="#Dialect.get_or_raise-363"><span class="linenos">363</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Dialect.get_or_raise-364"><a href="#Dialect.get_or_raise-364"><span class="linenos">364</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> -</span><span id="Dialect.get_or_raise-365"><a href="#Dialect.get_or_raise-365"><span class="linenos">365</span></a> <span class="sa">f</span><span class="s2">"Invalid dialect format: '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">'. "</span> -</span><span id="Dialect.get_or_raise-366"><a href="#Dialect.get_or_raise-366"><span class="linenos">366</span></a> <span class="s2">"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'."</span> -</span><span id="Dialect.get_or_raise-367"><a href="#Dialect.get_or_raise-367"><span class="linenos">367</span></a> <span class="p">)</span> -</span><span id="Dialect.get_or_raise-368"><a href="#Dialect.get_or_raise-368"><span class="linenos">368</span></a> -</span><span id="Dialect.get_or_raise-369"><a href="#Dialect.get_or_raise-369"><span class="linenos">369</span></a> <span class="n">result</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dialect_name</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> -</span><span id="Dialect.get_or_raise-370"><a href="#Dialect.get_or_raise-370"><span class="linenos">370</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> -</span><span id="Dialect.get_or_raise-371"><a href="#Dialect.get_or_raise-371"><span class="linenos">371</span></a> <span class="kn">from</span> <span class="nn">difflib</span> <span class="kn">import</span> <span class="n">get_close_matches</span> -</span><span id="Dialect.get_or_raise-372"><a href="#Dialect.get_or_raise-372"><span class="linenos">372</span></a> -</span><span id="Dialect.get_or_raise-373"><a href="#Dialect.get_or_raise-373"><span class="linenos">373</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">get_close_matches</span><span class="p">(</span><span class="n">dialect_name</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Dialect.get_or_raise-374"><a href="#Dialect.get_or_raise-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="n">similar</span><span class="p">:</span> -</span><span id="Dialect.get_or_raise-375"><a href="#Dialect.get_or_raise-375"><span class="linenos">375</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" Did you mean </span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">?"</span> -</span><span id="Dialect.get_or_raise-376"><a href="#Dialect.get_or_raise-376"><span class="linenos">376</span></a> -</span><span id="Dialect.get_or_raise-377"><a href="#Dialect.get_or_raise-377"><span class="linenos">377</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown dialect '</span><span class="si">{</span><span class="n">dialect_name</span><span class="si">}</span><span class="s2">'.</span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.get_or_raise-337"><a href="#Dialect.get_or_raise-337"><span class="linenos">337</span></a> <span class="nd">@classmethod</span> +</span><span id="Dialect.get_or_raise-338"><a href="#Dialect.get_or_raise-338"><span class="linenos">338</span></a> <span class="k">def</span> <span class="nf">get_or_raise</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dialect</span><span class="p">:</span> +</span><span id="Dialect.get_or_raise-339"><a href="#Dialect.get_or_raise-339"><span class="linenos">339</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect.get_or_raise-340"><a href="#Dialect.get_or_raise-340"><span class="linenos">340</span></a><span class="sd"> Look up a dialect in the global dialect registry and return it if it exists.</span> +</span><span id="Dialect.get_or_raise-341"><a href="#Dialect.get_or_raise-341"><span class="linenos">341</span></a> +</span><span id="Dialect.get_or_raise-342"><a href="#Dialect.get_or_raise-342"><span class="linenos">342</span></a><span class="sd"> Args:</span> +</span><span id="Dialect.get_or_raise-343"><a href="#Dialect.get_or_raise-343"><span class="linenos">343</span></a><span class="sd"> dialect: The target dialect. If this is a string, it can be optionally followed by</span> +</span><span id="Dialect.get_or_raise-344"><a href="#Dialect.get_or_raise-344"><span class="linenos">344</span></a><span class="sd"> additional key-value pairs that are separated by commas and are used to specify</span> +</span><span id="Dialect.get_or_raise-345"><a href="#Dialect.get_or_raise-345"><span class="linenos">345</span></a><span class="sd"> dialect settings, such as whether the dialect's identifiers are case-sensitive.</span> +</span><span id="Dialect.get_or_raise-346"><a href="#Dialect.get_or_raise-346"><span class="linenos">346</span></a> +</span><span id="Dialect.get_or_raise-347"><a href="#Dialect.get_or_raise-347"><span class="linenos">347</span></a><span class="sd"> Example:</span> +</span><span id="Dialect.get_or_raise-348"><a href="#Dialect.get_or_raise-348"><span class="linenos">348</span></a><span class="sd"> >>> dialect = dialect_class = get_or_raise("duckdb")</span> +</span><span id="Dialect.get_or_raise-349"><a href="#Dialect.get_or_raise-349"><span class="linenos">349</span></a><span class="sd"> >>> dialect = get_or_raise("mysql, normalization_strategy = case_sensitive")</span> +</span><span id="Dialect.get_or_raise-350"><a href="#Dialect.get_or_raise-350"><span class="linenos">350</span></a> +</span><span id="Dialect.get_or_raise-351"><a href="#Dialect.get_or_raise-351"><span class="linenos">351</span></a><span class="sd"> Returns:</span> +</span><span id="Dialect.get_or_raise-352"><a href="#Dialect.get_or_raise-352"><span class="linenos">352</span></a><span class="sd"> The corresponding Dialect instance.</span> +</span><span id="Dialect.get_or_raise-353"><a href="#Dialect.get_or_raise-353"><span class="linenos">353</span></a><span class="sd"> """</span> +</span><span id="Dialect.get_or_raise-354"><a href="#Dialect.get_or_raise-354"><span class="linenos">354</span></a> +</span><span id="Dialect.get_or_raise-355"><a href="#Dialect.get_or_raise-355"><span class="linenos">355</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">dialect</span><span class="p">:</span> +</span><span id="Dialect.get_or_raise-356"><a href="#Dialect.get_or_raise-356"><span class="linenos">356</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">()</span> +</span><span id="Dialect.get_or_raise-357"><a href="#Dialect.get_or_raise-357"><span class="linenos">357</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">_Dialect</span><span class="p">):</span> +</span><span id="Dialect.get_or_raise-358"><a href="#Dialect.get_or_raise-358"><span class="linenos">358</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="p">()</span> +</span><span id="Dialect.get_or_raise-359"><a href="#Dialect.get_or_raise-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="n">Dialect</span><span class="p">):</span> +</span><span id="Dialect.get_or_raise-360"><a href="#Dialect.get_or_raise-360"><span class="linenos">360</span></a> <span class="k">return</span> <span class="n">dialect</span> +</span><span id="Dialect.get_or_raise-361"><a href="#Dialect.get_or_raise-361"><span class="linenos">361</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dialect</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Dialect.get_or_raise-362"><a href="#Dialect.get_or_raise-362"><span class="linenos">362</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Dialect.get_or_raise-363"><a href="#Dialect.get_or_raise-363"><span class="linenos">363</span></a> <span class="n">dialect_name</span><span class="p">,</span> <span class="o">*</span><span class="n">kv_pairs</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> +</span><span id="Dialect.get_or_raise-364"><a href="#Dialect.get_or_raise-364"><span class="linenos">364</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">kv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> <span class="k">for</span> <span class="n">kv</span> <span class="ow">in</span> <span class="n">kv_pairs</span><span class="p">)}</span> +</span><span id="Dialect.get_or_raise-365"><a href="#Dialect.get_or_raise-365"><span class="linenos">365</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Dialect.get_or_raise-366"><a href="#Dialect.get_or_raise-366"><span class="linenos">366</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> +</span><span id="Dialect.get_or_raise-367"><a href="#Dialect.get_or_raise-367"><span class="linenos">367</span></a> <span class="sa">f</span><span class="s2">"Invalid dialect format: '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">'. "</span> +</span><span id="Dialect.get_or_raise-368"><a href="#Dialect.get_or_raise-368"><span class="linenos">368</span></a> <span class="s2">"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'."</span> +</span><span id="Dialect.get_or_raise-369"><a href="#Dialect.get_or_raise-369"><span class="linenos">369</span></a> <span class="p">)</span> +</span><span id="Dialect.get_or_raise-370"><a href="#Dialect.get_or_raise-370"><span class="linenos">370</span></a> +</span><span id="Dialect.get_or_raise-371"><a href="#Dialect.get_or_raise-371"><span class="linenos">371</span></a> <span class="n">result</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dialect_name</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> +</span><span id="Dialect.get_or_raise-372"><a href="#Dialect.get_or_raise-372"><span class="linenos">372</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> +</span><span id="Dialect.get_or_raise-373"><a href="#Dialect.get_or_raise-373"><span class="linenos">373</span></a> <span class="kn">from</span> <span class="nn">difflib</span> <span class="kn">import</span> <span class="n">get_close_matches</span> +</span><span id="Dialect.get_or_raise-374"><a href="#Dialect.get_or_raise-374"><span class="linenos">374</span></a> +</span><span id="Dialect.get_or_raise-375"><a href="#Dialect.get_or_raise-375"><span class="linenos">375</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">get_close_matches</span><span class="p">(</span><span class="n">dialect_name</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">classes</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Dialect.get_or_raise-376"><a href="#Dialect.get_or_raise-376"><span class="linenos">376</span></a> <span class="k">if</span> <span class="n">similar</span><span class="p">:</span> +</span><span id="Dialect.get_or_raise-377"><a href="#Dialect.get_or_raise-377"><span class="linenos">377</span></a> <span class="n">similar</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" Did you mean </span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">?"</span> </span><span id="Dialect.get_or_raise-378"><a href="#Dialect.get_or_raise-378"><span class="linenos">378</span></a> -</span><span id="Dialect.get_or_raise-379"><a href="#Dialect.get_or_raise-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="n">result</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Dialect.get_or_raise-379"><a href="#Dialect.get_or_raise-379"><span class="linenos">379</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown dialect '</span><span class="si">{</span><span class="n">dialect_name</span><span class="si">}</span><span class="s2">'.</span><span class="si">{</span><span class="n">similar</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Dialect.get_or_raise-380"><a href="#Dialect.get_or_raise-380"><span class="linenos">380</span></a> -</span><span id="Dialect.get_or_raise-381"><a href="#Dialect.get_or_raise-381"><span class="linenos">381</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid dialect type for '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">': '</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span> +</span><span id="Dialect.get_or_raise-381"><a href="#Dialect.get_or_raise-381"><span class="linenos">381</span></a> <span class="k">return</span> <span class="n">result</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Dialect.get_or_raise-382"><a href="#Dialect.get_or_raise-382"><span class="linenos">382</span></a> +</span><span id="Dialect.get_or_raise-383"><a href="#Dialect.get_or_raise-383"><span class="linenos">383</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid dialect type for '</span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">': '</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span> </span></pre></div> @@ -3480,21 +3514,21 @@ dialect settings, such as whether the dialect's identifiers are case-sensitive.< </div> <a class="headerlink" href="#Dialect.format_time"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.format_time-383"><a href="#Dialect.format_time-383"><span class="linenos">383</span></a> <span class="nd">@classmethod</span> -</span><span id="Dialect.format_time-384"><a href="#Dialect.format_time-384"><span class="linenos">384</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span> -</span><span id="Dialect.format_time-385"><a href="#Dialect.format_time-385"><span class="linenos">385</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Dialect.format_time-386"><a href="#Dialect.format_time-386"><span class="linenos">386</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Dialect.format_time-387"><a href="#Dialect.format_time-387"><span class="linenos">387</span></a><span class="w"> </span><span class="sd">"""Converts a time format in this dialect to its equivalent Python `strftime` format."""</span> -</span><span id="Dialect.format_time-388"><a href="#Dialect.format_time-388"><span class="linenos">388</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Dialect.format_time-389"><a href="#Dialect.format_time-389"><span class="linenos">389</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="Dialect.format_time-390"><a href="#Dialect.format_time-390"><span class="linenos">390</span></a> <span class="c1"># the time formats are quoted</span> -</span><span id="Dialect.format_time-391"><a href="#Dialect.format_time-391"><span class="linenos">391</span></a> <span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">)</span> -</span><span id="Dialect.format_time-392"><a href="#Dialect.format_time-392"><span class="linenos">392</span></a> <span class="p">)</span> -</span><span id="Dialect.format_time-393"><a href="#Dialect.format_time-393"><span class="linenos">393</span></a> -</span><span id="Dialect.format_time-394"><a href="#Dialect.format_time-394"><span class="linenos">394</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Dialect.format_time-395"><a href="#Dialect.format_time-395"><span class="linenos">395</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">))</span> -</span><span id="Dialect.format_time-396"><a href="#Dialect.format_time-396"><span class="linenos">396</span></a> -</span><span id="Dialect.format_time-397"><a href="#Dialect.format_time-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.format_time-385"><a href="#Dialect.format_time-385"><span class="linenos">385</span></a> <span class="nd">@classmethod</span> +</span><span id="Dialect.format_time-386"><a href="#Dialect.format_time-386"><span class="linenos">386</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span> +</span><span id="Dialect.format_time-387"><a href="#Dialect.format_time-387"><span class="linenos">387</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Dialect.format_time-388"><a href="#Dialect.format_time-388"><span class="linenos">388</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Dialect.format_time-389"><a href="#Dialect.format_time-389"><span class="linenos">389</span></a><span class="w"> </span><span class="sd">"""Converts a time format in this dialect to its equivalent Python `strftime` format."""</span> +</span><span id="Dialect.format_time-390"><a href="#Dialect.format_time-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Dialect.format_time-391"><a href="#Dialect.format_time-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="Dialect.format_time-392"><a href="#Dialect.format_time-392"><span class="linenos">392</span></a> <span class="c1"># the time formats are quoted</span> +</span><span id="Dialect.format_time-393"><a href="#Dialect.format_time-393"><span class="linenos">393</span></a> <span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">)</span> +</span><span id="Dialect.format_time-394"><a href="#Dialect.format_time-394"><span class="linenos">394</span></a> <span class="p">)</span> +</span><span id="Dialect.format_time-395"><a href="#Dialect.format_time-395"><span class="linenos">395</span></a> +</span><span id="Dialect.format_time-396"><a href="#Dialect.format_time-396"><span class="linenos">396</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Dialect.format_time-397"><a href="#Dialect.format_time-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">))</span> +</span><span id="Dialect.format_time-398"><a href="#Dialect.format_time-398"><span class="linenos">398</span></a> +</span><span id="Dialect.format_time-399"><a href="#Dialect.format_time-399"><span class="linenos">399</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -3514,43 +3548,43 @@ dialect settings, such as whether the dialect's identifiers are case-sensitive.< </div> <a class="headerlink" href="#Dialect.normalize_identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.normalize_identifier-415"><a href="#Dialect.normalize_identifier-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">normalize_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Dialect.normalize_identifier-416"><a href="#Dialect.normalize_identifier-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect.normalize_identifier-417"><a href="#Dialect.normalize_identifier-417"><span class="linenos">417</span></a><span class="sd"> Transforms an identifier in a way that resembles how it'd be resolved by this dialect.</span> -</span><span id="Dialect.normalize_identifier-418"><a href="#Dialect.normalize_identifier-418"><span class="linenos">418</span></a> -</span><span id="Dialect.normalize_identifier-419"><a href="#Dialect.normalize_identifier-419"><span class="linenos">419</span></a><span class="sd"> For example, an identifier like `FoO` would be resolved as `foo` in Postgres, because it</span> -</span><span id="Dialect.normalize_identifier-420"><a href="#Dialect.normalize_identifier-420"><span class="linenos">420</span></a><span class="sd"> lowercases all unquoted identifiers. On the other hand, Snowflake uppercases them, so</span> -</span><span id="Dialect.normalize_identifier-421"><a href="#Dialect.normalize_identifier-421"><span class="linenos">421</span></a><span class="sd"> it would resolve it as `FOO`. If it was quoted, it'd need to be treated as case-sensitive,</span> -</span><span id="Dialect.normalize_identifier-422"><a href="#Dialect.normalize_identifier-422"><span class="linenos">422</span></a><span class="sd"> and so any normalization would be prohibited in order to avoid "breaking" the identifier.</span> -</span><span id="Dialect.normalize_identifier-423"><a href="#Dialect.normalize_identifier-423"><span class="linenos">423</span></a> -</span><span id="Dialect.normalize_identifier-424"><a href="#Dialect.normalize_identifier-424"><span class="linenos">424</span></a><span class="sd"> There are also dialects like Spark, which are case-insensitive even when quotes are</span> -</span><span id="Dialect.normalize_identifier-425"><a href="#Dialect.normalize_identifier-425"><span class="linenos">425</span></a><span class="sd"> present, and dialects like MySQL, whose resolution rules match those employed by the</span> -</span><span id="Dialect.normalize_identifier-426"><a href="#Dialect.normalize_identifier-426"><span class="linenos">426</span></a><span class="sd"> underlying operating system, for example they may always be case-sensitive in Linux.</span> -</span><span id="Dialect.normalize_identifier-427"><a href="#Dialect.normalize_identifier-427"><span class="linenos">427</span></a> -</span><span id="Dialect.normalize_identifier-428"><a href="#Dialect.normalize_identifier-428"><span class="linenos">428</span></a><span class="sd"> Finally, the normalization behavior of some engines can even be controlled through flags,</span> -</span><span id="Dialect.normalize_identifier-429"><a href="#Dialect.normalize_identifier-429"><span class="linenos">429</span></a><span class="sd"> like in Redshift's case, where users can explicitly set enable_case_sensitive_identifier.</span> -</span><span id="Dialect.normalize_identifier-430"><a href="#Dialect.normalize_identifier-430"><span class="linenos">430</span></a> -</span><span id="Dialect.normalize_identifier-431"><a href="#Dialect.normalize_identifier-431"><span class="linenos">431</span></a><span class="sd"> SQLGlot aims to understand and handle all of these different behaviors gracefully, so</span> -</span><span id="Dialect.normalize_identifier-432"><a href="#Dialect.normalize_identifier-432"><span class="linenos">432</span></a><span class="sd"> that it can analyze queries in the optimizer and successfully capture their semantics.</span> -</span><span id="Dialect.normalize_identifier-433"><a href="#Dialect.normalize_identifier-433"><span class="linenos">433</span></a><span class="sd"> """</span> -</span><span id="Dialect.normalize_identifier-434"><a href="#Dialect.normalize_identifier-434"><span class="linenos">434</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Dialect.normalize_identifier-435"><a href="#Dialect.normalize_identifier-435"><span class="linenos">435</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="Dialect.normalize_identifier-436"><a href="#Dialect.normalize_identifier-436"><span class="linenos">436</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span> -</span><span id="Dialect.normalize_identifier-437"><a href="#Dialect.normalize_identifier-437"><span class="linenos">437</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Dialect.normalize_identifier-438"><a href="#Dialect.normalize_identifier-438"><span class="linenos">438</span></a> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">quoted</span> -</span><span id="Dialect.normalize_identifier-439"><a href="#Dialect.normalize_identifier-439"><span class="linenos">439</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span> -</span><span id="Dialect.normalize_identifier-440"><a href="#Dialect.normalize_identifier-440"><span class="linenos">440</span></a> <span class="p">)</span> -</span><span id="Dialect.normalize_identifier-441"><a href="#Dialect.normalize_identifier-441"><span class="linenos">441</span></a> <span class="p">):</span> -</span><span id="Dialect.normalize_identifier-442"><a href="#Dialect.normalize_identifier-442"><span class="linenos">442</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Dialect.normalize_identifier-443"><a href="#Dialect.normalize_identifier-443"><span class="linenos">443</span></a> <span class="s2">"this"</span><span class="p">,</span> -</span><span id="Dialect.normalize_identifier-444"><a href="#Dialect.normalize_identifier-444"><span class="linenos">444</span></a> <span class="p">(</span> -</span><span id="Dialect.normalize_identifier-445"><a href="#Dialect.normalize_identifier-445"><span class="linenos">445</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Dialect.normalize_identifier-446"><a href="#Dialect.normalize_identifier-446"><span class="linenos">446</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> -</span><span id="Dialect.normalize_identifier-447"><a href="#Dialect.normalize_identifier-447"><span class="linenos">447</span></a> <span class="k">else</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="Dialect.normalize_identifier-448"><a href="#Dialect.normalize_identifier-448"><span class="linenos">448</span></a> <span class="p">),</span> -</span><span id="Dialect.normalize_identifier-449"><a href="#Dialect.normalize_identifier-449"><span class="linenos">449</span></a> <span class="p">)</span> -</span><span id="Dialect.normalize_identifier-450"><a href="#Dialect.normalize_identifier-450"><span class="linenos">450</span></a> -</span><span id="Dialect.normalize_identifier-451"><a href="#Dialect.normalize_identifier-451"><span class="linenos">451</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.normalize_identifier-417"><a href="#Dialect.normalize_identifier-417"><span class="linenos">417</span></a> <span class="k">def</span> <span class="nf">normalize_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Dialect.normalize_identifier-418"><a href="#Dialect.normalize_identifier-418"><span class="linenos">418</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect.normalize_identifier-419"><a href="#Dialect.normalize_identifier-419"><span class="linenos">419</span></a><span class="sd"> Transforms an identifier in a way that resembles how it'd be resolved by this dialect.</span> +</span><span id="Dialect.normalize_identifier-420"><a href="#Dialect.normalize_identifier-420"><span class="linenos">420</span></a> +</span><span id="Dialect.normalize_identifier-421"><a href="#Dialect.normalize_identifier-421"><span class="linenos">421</span></a><span class="sd"> For example, an identifier like `FoO` would be resolved as `foo` in Postgres, because it</span> +</span><span id="Dialect.normalize_identifier-422"><a href="#Dialect.normalize_identifier-422"><span class="linenos">422</span></a><span class="sd"> lowercases all unquoted identifiers. On the other hand, Snowflake uppercases them, so</span> +</span><span id="Dialect.normalize_identifier-423"><a href="#Dialect.normalize_identifier-423"><span class="linenos">423</span></a><span class="sd"> it would resolve it as `FOO`. If it was quoted, it'd need to be treated as case-sensitive,</span> +</span><span id="Dialect.normalize_identifier-424"><a href="#Dialect.normalize_identifier-424"><span class="linenos">424</span></a><span class="sd"> and so any normalization would be prohibited in order to avoid "breaking" the identifier.</span> +</span><span id="Dialect.normalize_identifier-425"><a href="#Dialect.normalize_identifier-425"><span class="linenos">425</span></a> +</span><span id="Dialect.normalize_identifier-426"><a href="#Dialect.normalize_identifier-426"><span class="linenos">426</span></a><span class="sd"> There are also dialects like Spark, which are case-insensitive even when quotes are</span> +</span><span id="Dialect.normalize_identifier-427"><a href="#Dialect.normalize_identifier-427"><span class="linenos">427</span></a><span class="sd"> present, and dialects like MySQL, whose resolution rules match those employed by the</span> +</span><span id="Dialect.normalize_identifier-428"><a href="#Dialect.normalize_identifier-428"><span class="linenos">428</span></a><span class="sd"> underlying operating system, for example they may always be case-sensitive in Linux.</span> +</span><span id="Dialect.normalize_identifier-429"><a href="#Dialect.normalize_identifier-429"><span class="linenos">429</span></a> +</span><span id="Dialect.normalize_identifier-430"><a href="#Dialect.normalize_identifier-430"><span class="linenos">430</span></a><span class="sd"> Finally, the normalization behavior of some engines can even be controlled through flags,</span> +</span><span id="Dialect.normalize_identifier-431"><a href="#Dialect.normalize_identifier-431"><span class="linenos">431</span></a><span class="sd"> like in Redshift's case, where users can explicitly set enable_case_sensitive_identifier.</span> +</span><span id="Dialect.normalize_identifier-432"><a href="#Dialect.normalize_identifier-432"><span class="linenos">432</span></a> +</span><span id="Dialect.normalize_identifier-433"><a href="#Dialect.normalize_identifier-433"><span class="linenos">433</span></a><span class="sd"> SQLGlot aims to understand and handle all of these different behaviors gracefully, so</span> +</span><span id="Dialect.normalize_identifier-434"><a href="#Dialect.normalize_identifier-434"><span class="linenos">434</span></a><span class="sd"> that it can analyze queries in the optimizer and successfully capture their semantics.</span> +</span><span id="Dialect.normalize_identifier-435"><a href="#Dialect.normalize_identifier-435"><span class="linenos">435</span></a><span class="sd"> """</span> +</span><span id="Dialect.normalize_identifier-436"><a href="#Dialect.normalize_identifier-436"><span class="linenos">436</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Dialect.normalize_identifier-437"><a href="#Dialect.normalize_identifier-437"><span class="linenos">437</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="Dialect.normalize_identifier-438"><a href="#Dialect.normalize_identifier-438"><span class="linenos">438</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_SENSITIVE</span> +</span><span id="Dialect.normalize_identifier-439"><a href="#Dialect.normalize_identifier-439"><span class="linenos">439</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Dialect.normalize_identifier-440"><a href="#Dialect.normalize_identifier-440"><span class="linenos">440</span></a> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">quoted</span> +</span><span id="Dialect.normalize_identifier-441"><a href="#Dialect.normalize_identifier-441"><span class="linenos">441</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span> +</span><span id="Dialect.normalize_identifier-442"><a href="#Dialect.normalize_identifier-442"><span class="linenos">442</span></a> <span class="p">)</span> +</span><span id="Dialect.normalize_identifier-443"><a href="#Dialect.normalize_identifier-443"><span class="linenos">443</span></a> <span class="p">):</span> +</span><span id="Dialect.normalize_identifier-444"><a href="#Dialect.normalize_identifier-444"><span class="linenos">444</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Dialect.normalize_identifier-445"><a href="#Dialect.normalize_identifier-445"><span class="linenos">445</span></a> <span class="s2">"this"</span><span class="p">,</span> +</span><span id="Dialect.normalize_identifier-446"><a href="#Dialect.normalize_identifier-446"><span class="linenos">446</span></a> <span class="p">(</span> +</span><span id="Dialect.normalize_identifier-447"><a href="#Dialect.normalize_identifier-447"><span class="linenos">447</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Dialect.normalize_identifier-448"><a href="#Dialect.normalize_identifier-448"><span class="linenos">448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> +</span><span id="Dialect.normalize_identifier-449"><a href="#Dialect.normalize_identifier-449"><span class="linenos">449</span></a> <span class="k">else</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="Dialect.normalize_identifier-450"><a href="#Dialect.normalize_identifier-450"><span class="linenos">450</span></a> <span class="p">),</span> +</span><span id="Dialect.normalize_identifier-451"><a href="#Dialect.normalize_identifier-451"><span class="linenos">451</span></a> <span class="p">)</span> +</span><span id="Dialect.normalize_identifier-452"><a href="#Dialect.normalize_identifier-452"><span class="linenos">452</span></a> +</span><span id="Dialect.normalize_identifier-453"><a href="#Dialect.normalize_identifier-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -3585,17 +3619,17 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.case_sensitive"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.case_sensitive-453"><a href="#Dialect.case_sensitive-453"><span class="linenos">453</span></a> <span class="k">def</span> <span class="nf">case_sensitive</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dialect.case_sensitive-454"><a href="#Dialect.case_sensitive-454"><span class="linenos">454</span></a><span class="w"> </span><span class="sd">"""Checks if text contains any case sensitive characters, based on the dialect's rules."""</span> -</span><span id="Dialect.case_sensitive-455"><a href="#Dialect.case_sensitive-455"><span class="linenos">455</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span><span class="p">:</span> -</span><span id="Dialect.case_sensitive-456"><a href="#Dialect.case_sensitive-456"><span class="linenos">456</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Dialect.case_sensitive-457"><a href="#Dialect.case_sensitive-457"><span class="linenos">457</span></a> -</span><span id="Dialect.case_sensitive-458"><a href="#Dialect.case_sensitive-458"><span class="linenos">458</span></a> <span class="n">unsafe</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Dialect.case_sensitive-459"><a href="#Dialect.case_sensitive-459"><span class="linenos">459</span></a> <span class="nb">str</span><span class="o">.</span><span class="n">islower</span> -</span><span id="Dialect.case_sensitive-460"><a href="#Dialect.case_sensitive-460"><span class="linenos">460</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> -</span><span id="Dialect.case_sensitive-461"><a href="#Dialect.case_sensitive-461"><span class="linenos">461</span></a> <span class="k">else</span> <span class="nb">str</span><span class="o">.</span><span class="n">isupper</span> -</span><span id="Dialect.case_sensitive-462"><a href="#Dialect.case_sensitive-462"><span class="linenos">462</span></a> <span class="p">)</span> -</span><span id="Dialect.case_sensitive-463"><a href="#Dialect.case_sensitive-463"><span class="linenos">463</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">unsafe</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.case_sensitive-455"><a href="#Dialect.case_sensitive-455"><span class="linenos">455</span></a> <span class="k">def</span> <span class="nf">case_sensitive</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dialect.case_sensitive-456"><a href="#Dialect.case_sensitive-456"><span class="linenos">456</span></a><span class="w"> </span><span class="sd">"""Checks if text contains any case sensitive characters, based on the dialect's rules."""</span> +</span><span id="Dialect.case_sensitive-457"><a href="#Dialect.case_sensitive-457"><span class="linenos">457</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">CASE_INSENSITIVE</span><span class="p">:</span> +</span><span id="Dialect.case_sensitive-458"><a href="#Dialect.case_sensitive-458"><span class="linenos">458</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Dialect.case_sensitive-459"><a href="#Dialect.case_sensitive-459"><span class="linenos">459</span></a> +</span><span id="Dialect.case_sensitive-460"><a href="#Dialect.case_sensitive-460"><span class="linenos">460</span></a> <span class="n">unsafe</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Dialect.case_sensitive-461"><a href="#Dialect.case_sensitive-461"><span class="linenos">461</span></a> <span class="nb">str</span><span class="o">.</span><span class="n">islower</span> +</span><span id="Dialect.case_sensitive-462"><a href="#Dialect.case_sensitive-462"><span class="linenos">462</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalization_strategy</span> <span class="ow">is</span> <span class="n">NormalizationStrategy</span><span class="o">.</span><span class="n">UPPERCASE</span> +</span><span id="Dialect.case_sensitive-463"><a href="#Dialect.case_sensitive-463"><span class="linenos">463</span></a> <span class="k">else</span> <span class="nb">str</span><span class="o">.</span><span class="n">isupper</span> +</span><span id="Dialect.case_sensitive-464"><a href="#Dialect.case_sensitive-464"><span class="linenos">464</span></a> <span class="p">)</span> +</span><span id="Dialect.case_sensitive-465"><a href="#Dialect.case_sensitive-465"><span class="linenos">465</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">unsafe</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">)</span> </span></pre></div> @@ -3615,25 +3649,25 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.can_identify"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.can_identify-465"><a href="#Dialect.can_identify-465"><span class="linenos">465</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">self</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">"safe"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dialect.can_identify-466"><a href="#Dialect.can_identify-466"><span class="linenos">466</span></a><span class="w"> </span><span class="sd">"""Checks if text can be identified given an identify option.</span> -</span><span id="Dialect.can_identify-467"><a href="#Dialect.can_identify-467"><span class="linenos">467</span></a> -</span><span id="Dialect.can_identify-468"><a href="#Dialect.can_identify-468"><span class="linenos">468</span></a><span class="sd"> Args:</span> -</span><span id="Dialect.can_identify-469"><a href="#Dialect.can_identify-469"><span class="linenos">469</span></a><span class="sd"> text: The text to check.</span> -</span><span id="Dialect.can_identify-470"><a href="#Dialect.can_identify-470"><span class="linenos">470</span></a><span class="sd"> identify:</span> -</span><span id="Dialect.can_identify-471"><a href="#Dialect.can_identify-471"><span class="linenos">471</span></a><span class="sd"> `"always"` or `True`: Always returns `True`.</span> -</span><span id="Dialect.can_identify-472"><a href="#Dialect.can_identify-472"><span class="linenos">472</span></a><span class="sd"> `"safe"`: Only returns `True` if the identifier is case-insensitive.</span> -</span><span id="Dialect.can_identify-473"><a href="#Dialect.can_identify-473"><span class="linenos">473</span></a> -</span><span id="Dialect.can_identify-474"><a href="#Dialect.can_identify-474"><span class="linenos">474</span></a><span class="sd"> Returns:</span> -</span><span id="Dialect.can_identify-475"><a href="#Dialect.can_identify-475"><span class="linenos">475</span></a><span class="sd"> Whether the given text can be identified.</span> -</span><span id="Dialect.can_identify-476"><a href="#Dialect.can_identify-476"><span class="linenos">476</span></a><span class="sd"> """</span> -</span><span id="Dialect.can_identify-477"><a href="#Dialect.can_identify-477"><span class="linenos">477</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">"always"</span><span class="p">:</span> -</span><span id="Dialect.can_identify-478"><a href="#Dialect.can_identify-478"><span class="linenos">478</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Dialect.can_identify-479"><a href="#Dialect.can_identify-479"><span class="linenos">479</span></a> -</span><span id="Dialect.can_identify-480"><a href="#Dialect.can_identify-480"><span class="linenos">480</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">"safe"</span><span class="p">:</span> -</span><span id="Dialect.can_identify-481"><a href="#Dialect.can_identify-481"><span class="linenos">481</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</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="Dialect.can_identify-482"><a href="#Dialect.can_identify-482"><span class="linenos">482</span></a> -</span><span id="Dialect.can_identify-483"><a href="#Dialect.can_identify-483"><span class="linenos">483</span></a> <span class="k">return</span> <span class="kc">False</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.can_identify-467"><a href="#Dialect.can_identify-467"><span class="linenos">467</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">self</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">"safe"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dialect.can_identify-468"><a href="#Dialect.can_identify-468"><span class="linenos">468</span></a><span class="w"> </span><span class="sd">"""Checks if text can be identified given an identify option.</span> +</span><span id="Dialect.can_identify-469"><a href="#Dialect.can_identify-469"><span class="linenos">469</span></a> +</span><span id="Dialect.can_identify-470"><a href="#Dialect.can_identify-470"><span class="linenos">470</span></a><span class="sd"> Args:</span> +</span><span id="Dialect.can_identify-471"><a href="#Dialect.can_identify-471"><span class="linenos">471</span></a><span class="sd"> text: The text to check.</span> +</span><span id="Dialect.can_identify-472"><a href="#Dialect.can_identify-472"><span class="linenos">472</span></a><span class="sd"> identify:</span> +</span><span id="Dialect.can_identify-473"><a href="#Dialect.can_identify-473"><span class="linenos">473</span></a><span class="sd"> `"always"` or `True`: Always returns `True`.</span> +</span><span id="Dialect.can_identify-474"><a href="#Dialect.can_identify-474"><span class="linenos">474</span></a><span class="sd"> `"safe"`: Only returns `True` if the identifier is case-insensitive.</span> +</span><span id="Dialect.can_identify-475"><a href="#Dialect.can_identify-475"><span class="linenos">475</span></a> +</span><span id="Dialect.can_identify-476"><a href="#Dialect.can_identify-476"><span class="linenos">476</span></a><span class="sd"> Returns:</span> +</span><span id="Dialect.can_identify-477"><a href="#Dialect.can_identify-477"><span class="linenos">477</span></a><span class="sd"> Whether the given text can be identified.</span> +</span><span id="Dialect.can_identify-478"><a href="#Dialect.can_identify-478"><span class="linenos">478</span></a><span class="sd"> """</span> +</span><span id="Dialect.can_identify-479"><a href="#Dialect.can_identify-479"><span class="linenos">479</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">"always"</span><span class="p">:</span> +</span><span id="Dialect.can_identify-480"><a href="#Dialect.can_identify-480"><span class="linenos">480</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Dialect.can_identify-481"><a href="#Dialect.can_identify-481"><span class="linenos">481</span></a> +</span><span id="Dialect.can_identify-482"><a href="#Dialect.can_identify-482"><span class="linenos">482</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">"safe"</span><span class="p">:</span> +</span><span id="Dialect.can_identify-483"><a href="#Dialect.can_identify-483"><span class="linenos">483</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</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="Dialect.can_identify-484"><a href="#Dialect.can_identify-484"><span class="linenos">484</span></a> +</span><span id="Dialect.can_identify-485"><a href="#Dialect.can_identify-485"><span class="linenos">485</span></a> <span class="k">return</span> <span class="kc">False</span> </span></pre></div> @@ -3667,23 +3701,23 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.quote_identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.quote_identifier-485"><a href="#Dialect.quote_identifier-485"><span class="linenos">485</span></a> <span class="k">def</span> <span class="nf">quote_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Dialect.quote_identifier-486"><a href="#Dialect.quote_identifier-486"><span class="linenos">486</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Dialect.quote_identifier-487"><a href="#Dialect.quote_identifier-487"><span class="linenos">487</span></a><span class="sd"> Adds quotes to a given identifier.</span> -</span><span id="Dialect.quote_identifier-488"><a href="#Dialect.quote_identifier-488"><span class="linenos">488</span></a> -</span><span id="Dialect.quote_identifier-489"><a href="#Dialect.quote_identifier-489"><span class="linenos">489</span></a><span class="sd"> Args:</span> -</span><span id="Dialect.quote_identifier-490"><a href="#Dialect.quote_identifier-490"><span class="linenos">490</span></a><span class="sd"> expression: The expression of interest. If it's not an `Identifier`, this method is a no-op.</span> -</span><span id="Dialect.quote_identifier-491"><a href="#Dialect.quote_identifier-491"><span class="linenos">491</span></a><span class="sd"> identify: If set to `False`, the quotes will only be added if the identifier is deemed</span> -</span><span id="Dialect.quote_identifier-492"><a href="#Dialect.quote_identifier-492"><span class="linenos">492</span></a><span class="sd"> "unsafe", with respect to its characters and this dialect's normalization strategy.</span> -</span><span id="Dialect.quote_identifier-493"><a href="#Dialect.quote_identifier-493"><span class="linenos">493</span></a><span class="sd"> """</span> -</span><span id="Dialect.quote_identifier-494"><a href="#Dialect.quote_identifier-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Dialect.quote_identifier-495"><a href="#Dialect.quote_identifier-495"><span class="linenos">495</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Dialect.quote_identifier-496"><a href="#Dialect.quote_identifier-496"><span class="linenos">496</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Dialect.quote_identifier-497"><a href="#Dialect.quote_identifier-497"><span class="linenos">497</span></a> <span class="s2">"quoted"</span><span class="p">,</span> -</span><span id="Dialect.quote_identifier-498"><a href="#Dialect.quote_identifier-498"><span class="linenos">498</span></a> <span class="n">identify</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> -</span><span id="Dialect.quote_identifier-499"><a href="#Dialect.quote_identifier-499"><span class="linenos">499</span></a> <span class="p">)</span> -</span><span id="Dialect.quote_identifier-500"><a href="#Dialect.quote_identifier-500"><span class="linenos">500</span></a> -</span><span id="Dialect.quote_identifier-501"><a href="#Dialect.quote_identifier-501"><span class="linenos">501</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.quote_identifier-487"><a href="#Dialect.quote_identifier-487"><span class="linenos">487</span></a> <span class="k">def</span> <span class="nf">quote_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Dialect.quote_identifier-488"><a href="#Dialect.quote_identifier-488"><span class="linenos">488</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Dialect.quote_identifier-489"><a href="#Dialect.quote_identifier-489"><span class="linenos">489</span></a><span class="sd"> Adds quotes to a given identifier.</span> +</span><span id="Dialect.quote_identifier-490"><a href="#Dialect.quote_identifier-490"><span class="linenos">490</span></a> +</span><span id="Dialect.quote_identifier-491"><a href="#Dialect.quote_identifier-491"><span class="linenos">491</span></a><span class="sd"> Args:</span> +</span><span id="Dialect.quote_identifier-492"><a href="#Dialect.quote_identifier-492"><span class="linenos">492</span></a><span class="sd"> expression: The expression of interest. If it's not an `Identifier`, this method is a no-op.</span> +</span><span id="Dialect.quote_identifier-493"><a href="#Dialect.quote_identifier-493"><span class="linenos">493</span></a><span class="sd"> identify: If set to `False`, the quotes will only be added if the identifier is deemed</span> +</span><span id="Dialect.quote_identifier-494"><a href="#Dialect.quote_identifier-494"><span class="linenos">494</span></a><span class="sd"> "unsafe", with respect to its characters and this dialect's normalization strategy.</span> +</span><span id="Dialect.quote_identifier-495"><a href="#Dialect.quote_identifier-495"><span class="linenos">495</span></a><span class="sd"> """</span> +</span><span id="Dialect.quote_identifier-496"><a href="#Dialect.quote_identifier-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Dialect.quote_identifier-497"><a href="#Dialect.quote_identifier-497"><span class="linenos">497</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Dialect.quote_identifier-498"><a href="#Dialect.quote_identifier-498"><span class="linenos">498</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Dialect.quote_identifier-499"><a href="#Dialect.quote_identifier-499"><span class="linenos">499</span></a> <span class="s2">"quoted"</span><span class="p">,</span> +</span><span id="Dialect.quote_identifier-500"><a href="#Dialect.quote_identifier-500"><span class="linenos">500</span></a> <span class="n">identify</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> +</span><span id="Dialect.quote_identifier-501"><a href="#Dialect.quote_identifier-501"><span class="linenos">501</span></a> <span class="p">)</span> +</span><span id="Dialect.quote_identifier-502"><a href="#Dialect.quote_identifier-502"><span class="linenos">502</span></a> +</span><span id="Dialect.quote_identifier-503"><a href="#Dialect.quote_identifier-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -3711,18 +3745,18 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.to_json_path"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.to_json_path-503"><a href="#Dialect.to_json_path-503"><span class="linenos">503</span></a> <span class="k">def</span> <span class="nf">to_json_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Dialect.to_json_path-504"><a href="#Dialect.to_json_path-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="Dialect.to_json_path-505"><a href="#Dialect.to_json_path-505"><span class="linenos">505</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> -</span><span id="Dialect.to_json_path-506"><a href="#Dialect.to_json_path-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="Dialect.to_json_path-507"><a href="#Dialect.to_json_path-507"><span class="linenos">507</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">path_text</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="Dialect.to_json_path-508"><a href="#Dialect.to_json_path-508"><span class="linenos">508</span></a> -</span><span id="Dialect.to_json_path-509"><a href="#Dialect.to_json_path-509"><span class="linenos">509</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Dialect.to_json_path-510"><a href="#Dialect.to_json_path-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="n">parse_json_path</span><span class="p">(</span><span class="n">path_text</span><span class="p">)</span> -</span><span id="Dialect.to_json_path-511"><a href="#Dialect.to_json_path-511"><span class="linenos">511</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Dialect.to_json_path-512"><a href="#Dialect.to_json_path-512"><span class="linenos">512</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid JSON path syntax. </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Dialect.to_json_path-513"><a href="#Dialect.to_json_path-513"><span class="linenos">513</span></a> -</span><span id="Dialect.to_json_path-514"><a href="#Dialect.to_json_path-514"><span class="linenos">514</span></a> <span class="k">return</span> <span class="n">path</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.to_json_path-505"><a href="#Dialect.to_json_path-505"><span class="linenos">505</span></a> <span class="k">def</span> <span class="nf">to_json_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Dialect.to_json_path-506"><a href="#Dialect.to_json_path-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="Dialect.to_json_path-507"><a href="#Dialect.to_json_path-507"><span class="linenos">507</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">name</span> +</span><span id="Dialect.to_json_path-508"><a href="#Dialect.to_json_path-508"><span class="linenos">508</span></a> <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="Dialect.to_json_path-509"><a href="#Dialect.to_json_path-509"><span class="linenos">509</span></a> <span class="n">path_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">path_text</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Dialect.to_json_path-510"><a href="#Dialect.to_json_path-510"><span class="linenos">510</span></a> +</span><span id="Dialect.to_json_path-511"><a href="#Dialect.to_json_path-511"><span class="linenos">511</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Dialect.to_json_path-512"><a href="#Dialect.to_json_path-512"><span class="linenos">512</span></a> <span class="k">return</span> <span class="n">parse_json_path</span><span class="p">(</span><span class="n">path_text</span><span class="p">)</span> +</span><span id="Dialect.to_json_path-513"><a href="#Dialect.to_json_path-513"><span class="linenos">513</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Dialect.to_json_path-514"><a href="#Dialect.to_json_path-514"><span class="linenos">514</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid JSON path syntax. </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Dialect.to_json_path-515"><a href="#Dialect.to_json_path-515"><span class="linenos">515</span></a> +</span><span id="Dialect.to_json_path-516"><a href="#Dialect.to_json_path-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="n">path</span> </span></pre></div> @@ -3740,8 +3774,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.parse"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.parse-516"><a href="#Dialect.parse-516"><span class="linenos">516</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Dialect.parse-517"><a href="#Dialect.parse-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.parse-518"><a href="#Dialect.parse-518"><span class="linenos">518</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Dialect.parse-519"><a href="#Dialect.parse-519"><span class="linenos">519</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -3759,10 +3793,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.parse_into"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.parse_into-519"><a href="#Dialect.parse_into-519"><span class="linenos">519</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="Dialect.parse_into-520"><a href="#Dialect.parse_into-520"><span class="linenos">520</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression_type</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="Dialect.parse_into-521"><a href="#Dialect.parse_into-521"><span class="linenos">521</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Dialect.parse_into-522"><a href="#Dialect.parse_into-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">expression_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.parse_into-521"><a href="#Dialect.parse_into-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="Dialect.parse_into-522"><a href="#Dialect.parse_into-522"><span class="linenos">522</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression_type</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="Dialect.parse_into-523"><a href="#Dialect.parse_into-523"><span class="linenos">523</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Dialect.parse_into-524"><a href="#Dialect.parse_into-524"><span class="linenos">524</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">expression_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">),</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -3780,8 +3814,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.generate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.generate-524"><a href="#Dialect.generate-524"><span class="linenos">524</span></a> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dialect.generate-525"><a href="#Dialect.generate-525"><span class="linenos">525</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.generate-526"><a href="#Dialect.generate-526"><span class="linenos">526</span></a> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dialect.generate-527"><a href="#Dialect.generate-527"><span class="linenos">527</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> </span></pre></div> @@ -3799,11 +3833,11 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.transpile"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.transpile-527"><a href="#Dialect.transpile-527"><span class="linenos">527</span></a> <span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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="Dialect.transpile-528"><a href="#Dialect.transpile-528"><span class="linenos">528</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="Dialect.transpile-529"><a href="#Dialect.transpile-529"><span class="linenos">529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Dialect.transpile-530"><a href="#Dialect.transpile-530"><span class="linenos">530</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Dialect.transpile-531"><a href="#Dialect.transpile-531"><span class="linenos">531</span></a> <span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.transpile-529"><a href="#Dialect.transpile-529"><span class="linenos">529</span></a> <span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></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="Dialect.transpile-530"><a href="#Dialect.transpile-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="Dialect.transpile-531"><a href="#Dialect.transpile-531"><span class="linenos">531</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Dialect.transpile-532"><a href="#Dialect.transpile-532"><span class="linenos">532</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Dialect.transpile-533"><a href="#Dialect.transpile-533"><span class="linenos">533</span></a> <span class="p">]</span> </span></pre></div> @@ -3821,8 +3855,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.tokenize"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.tokenize-533"><a href="#Dialect.tokenize-533"><span class="linenos">533</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Dialect.tokenize-534"><a href="#Dialect.tokenize-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.tokenize-535"><a href="#Dialect.tokenize-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Dialect.tokenize-536"><a href="#Dialect.tokenize-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -3838,11 +3872,11 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.tokenizer-536"><a href="#Dialect.tokenizer-536"><span class="linenos">536</span></a> <span class="nd">@property</span> -</span><span id="Dialect.tokenizer-537"><a href="#Dialect.tokenizer-537"><span class="linenos">537</span></a> <span class="k">def</span> <span class="nf">tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tokenizer</span><span class="p">:</span> -</span><span id="Dialect.tokenizer-538"><a href="#Dialect.tokenizer-538"><span class="linenos">538</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_tokenizer"</span><span class="p">):</span> -</span><span id="Dialect.tokenizer-539"><a href="#Dialect.tokenizer-539"><span class="linenos">539</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Dialect.tokenizer-540"><a href="#Dialect.tokenizer-540"><span class="linenos">540</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.tokenizer-538"><a href="#Dialect.tokenizer-538"><span class="linenos">538</span></a> <span class="nd">@property</span> +</span><span id="Dialect.tokenizer-539"><a href="#Dialect.tokenizer-539"><span class="linenos">539</span></a> <span class="k">def</span> <span class="nf">tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tokenizer</span><span class="p">:</span> +</span><span id="Dialect.tokenizer-540"><a href="#Dialect.tokenizer-540"><span class="linenos">540</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_tokenizer"</span><span class="p">):</span> +</span><span id="Dialect.tokenizer-541"><a href="#Dialect.tokenizer-541"><span class="linenos">541</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Dialect.tokenizer-542"><a href="#Dialect.tokenizer-542"><span class="linenos">542</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokenizer</span> </span></pre></div> @@ -3860,8 +3894,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.parser-542"><a href="#Dialect.parser-542"><span class="linenos">542</span></a> <span class="k">def</span> <span class="nf">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Parser</span><span class="p">:</span> -</span><span id="Dialect.parser-543"><a href="#Dialect.parser-543"><span class="linenos">543</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.parser-544"><a href="#Dialect.parser-544"><span class="linenos">544</span></a> <span class="k">def</span> <span class="nf">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Parser</span><span class="p">:</span> +</span><span id="Dialect.parser-545"><a href="#Dialect.parser-545"><span class="linenos">545</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parser_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -3879,8 +3913,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#Dialect.generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.generator-545"><a href="#Dialect.generator-545"><span class="linenos">545</span></a> <span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">:</span> -</span><span id="Dialect.generator-546"><a href="#Dialect.generator-546"><span class="linenos">546</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dialect.generator-547"><a href="#Dialect.generator-547"><span class="linenos">547</span></a> <span class="k">def</span> <span class="nf">generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">:</span> +</span><span id="Dialect.generator-548"><a href="#Dialect.generator-548"><span class="linenos">548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">generator_class</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -3912,8 +3946,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#rename_func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="rename_func-552"><a href="#rename_func-552"><span class="linenos">552</span></a><span class="k">def</span> <span class="nf">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="rename_func-553"><a href="#rename_func-553"><span class="linenos">553</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">flatten</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="rename_func-554"><a href="#rename_func-554"><span class="linenos">554</span></a><span class="k">def</span> <span class="nf">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="rename_func-555"><a href="#rename_func-555"><span class="linenos">555</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">flatten</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span> </span></pre></div> @@ -3931,10 +3965,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#approx_count_distinct_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="approx_count_distinct_sql-556"><a href="#approx_count_distinct_sql-556"><span class="linenos">556</span></a><span class="k">def</span> <span class="nf">approx_count_distinct_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="approx_count_distinct_sql-557"><a href="#approx_count_distinct_sql-557"><span class="linenos">557</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"accuracy"</span><span class="p">):</span> -</span><span id="approx_count_distinct_sql-558"><a href="#approx_count_distinct_sql-558"><span class="linenos">558</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT does not support accuracy"</span><span class="p">)</span> -</span><span id="approx_count_distinct_sql-559"><a href="#approx_count_distinct_sql-559"><span class="linenos">559</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="approx_count_distinct_sql-558"><a href="#approx_count_distinct_sql-558"><span class="linenos">558</span></a><span class="k">def</span> <span class="nf">approx_count_distinct_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="approx_count_distinct_sql-559"><a href="#approx_count_distinct_sql-559"><span class="linenos">559</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"accuracy"</span><span class="p">):</span> +</span><span id="approx_count_distinct_sql-560"><a href="#approx_count_distinct_sql-560"><span class="linenos">560</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT does not support accuracy"</span><span class="p">)</span> +</span><span id="approx_count_distinct_sql-561"><a href="#approx_count_distinct_sql-561"><span class="linenos">561</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span></pre></div> @@ -3952,18 +3986,18 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#if_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="if_sql-562"><a href="#if_sql-562"><span class="linenos">562</span></a><span class="k">def</span> <span class="nf">if_sql</span><span class="p">(</span> -</span><span id="if_sql-563"><a href="#if_sql-563"><span class="linenos">563</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"IF"</span><span class="p">,</span> <span class="n">false_value</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="if_sql-564"><a href="#if_sql-564"><span class="linenos">564</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="if_sql-565"><a href="#if_sql-565"><span class="linenos">565</span></a> <span class="k">def</span> <span class="nf">_if_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="if_sql-566"><a href="#if_sql-566"><span class="linenos">566</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="if_sql-567"><a href="#if_sql-567"><span class="linenos">567</span></a> <span class="n">name</span><span class="p">,</span> -</span><span id="if_sql-568"><a href="#if_sql-568"><span class="linenos">568</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="if_sql-569"><a href="#if_sql-569"><span class="linenos">569</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"true"</span><span class="p">),</span> -</span><span id="if_sql-570"><a href="#if_sql-570"><span class="linenos">570</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"false"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">false_value</span><span class="p">,</span> -</span><span id="if_sql-571"><a href="#if_sql-571"><span class="linenos">571</span></a> <span class="p">)</span> -</span><span id="if_sql-572"><a href="#if_sql-572"><span class="linenos">572</span></a> -</span><span id="if_sql-573"><a href="#if_sql-573"><span class="linenos">573</span></a> <span class="k">return</span> <span class="n">_if_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="if_sql-564"><a href="#if_sql-564"><span class="linenos">564</span></a><span class="k">def</span> <span class="nf">if_sql</span><span class="p">(</span> +</span><span id="if_sql-565"><a href="#if_sql-565"><span class="linenos">565</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"IF"</span><span class="p">,</span> <span class="n">false_value</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="if_sql-566"><a href="#if_sql-566"><span class="linenos">566</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="if_sql-567"><a href="#if_sql-567"><span class="linenos">567</span></a> <span class="k">def</span> <span class="nf">_if_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="if_sql-568"><a href="#if_sql-568"><span class="linenos">568</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="if_sql-569"><a href="#if_sql-569"><span class="linenos">569</span></a> <span class="n">name</span><span class="p">,</span> +</span><span id="if_sql-570"><a href="#if_sql-570"><span class="linenos">570</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="if_sql-571"><a href="#if_sql-571"><span class="linenos">571</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"true"</span><span class="p">),</span> +</span><span id="if_sql-572"><a href="#if_sql-572"><span class="linenos">572</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"false"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">false_value</span><span class="p">,</span> +</span><span id="if_sql-573"><a href="#if_sql-573"><span class="linenos">573</span></a> <span class="p">)</span> +</span><span id="if_sql-574"><a href="#if_sql-574"><span class="linenos">574</span></a> +</span><span id="if_sql-575"><a href="#if_sql-575"><span class="linenos">575</span></a> <span class="k">return</span> <span class="n">_if_sql</span> </span></pre></div> @@ -3981,12 +4015,12 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#arrow_json_extract_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="arrow_json_extract_sql-576"><a href="#arrow_json_extract_sql-576"><span class="linenos">576</span></a><span class="k">def</span> <span class="nf">arrow_json_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="arrow_json_extract_sql-577"><a href="#arrow_json_extract_sql-577"><span class="linenos">577</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="arrow_json_extract_sql-578"><a href="#arrow_json_extract_sql-578"><span class="linenos">578</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="arrow_json_extract_sql-579"><a href="#arrow_json_extract_sql-579"><span class="linenos">579</span></a> <span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> -</span><span id="arrow_json_extract_sql-580"><a href="#arrow_json_extract_sql-580"><span class="linenos">580</span></a> -</span><span id="arrow_json_extract_sql-581"><a href="#arrow_json_extract_sql-581"><span class="linenos">581</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"->"</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"->>"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="arrow_json_extract_sql-578"><a href="#arrow_json_extract_sql-578"><span class="linenos">578</span></a><span class="k">def</span> <span class="nf">arrow_json_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="arrow_json_extract_sql-579"><a href="#arrow_json_extract_sql-579"><span class="linenos">579</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="arrow_json_extract_sql-580"><a href="#arrow_json_extract_sql-580"><span class="linenos">580</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="arrow_json_extract_sql-581"><a href="#arrow_json_extract_sql-581"><span class="linenos">581</span></a> <span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> +</span><span id="arrow_json_extract_sql-582"><a href="#arrow_json_extract_sql-582"><span class="linenos">582</span></a> +</span><span id="arrow_json_extract_sql-583"><a href="#arrow_json_extract_sql-583"><span class="linenos">583</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"->"</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"->>"</span><span class="p">)</span> </span></pre></div> @@ -4004,8 +4038,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#inline_array_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="inline_array_sql-584"><a href="#inline_array_sql-584"><span class="linenos">584</span></a><span class="k">def</span> <span class="nf">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="inline_array_sql-585"><a href="#inline_array_sql-585"><span class="linenos">585</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">dynamic</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="inline_array_sql-586"><a href="#inline_array_sql-586"><span class="linenos">586</span></a><span class="k">def</span> <span class="nf">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="inline_array_sql-587"><a href="#inline_array_sql-587"><span class="linenos">587</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">dynamic</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="w"> </span><span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> </span></pre></div> @@ -4023,11 +4057,11 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#inline_array_unless_query"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="inline_array_unless_query-588"><a href="#inline_array_unless_query-588"><span class="linenos">588</span></a><span class="k">def</span> <span class="nf">inline_array_unless_query</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="inline_array_unless_query-589"><a href="#inline_array_unless_query-589"><span class="linenos">589</span></a> <span class="n">elem</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="inline_array_unless_query-590"><a href="#inline_array_unless_query-590"><span class="linenos">590</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">elem</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">elem</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> -</span><span id="inline_array_unless_query-591"><a href="#inline_array_unless_query-591"><span class="linenos">591</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">elem</span><span class="p">)</span> -</span><span id="inline_array_unless_query-592"><a href="#inline_array_unless_query-592"><span class="linenos">592</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="inline_array_unless_query-590"><a href="#inline_array_unless_query-590"><span class="linenos">590</span></a><span class="k">def</span> <span class="nf">inline_array_unless_query</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="inline_array_unless_query-591"><a href="#inline_array_unless_query-591"><span class="linenos">591</span></a> <span class="n">elem</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="inline_array_unless_query-592"><a href="#inline_array_unless_query-592"><span class="linenos">592</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">elem</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">elem</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> +</span><span id="inline_array_unless_query-593"><a href="#inline_array_unless_query-593"><span class="linenos">593</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">elem</span><span class="p">)</span> +</span><span id="inline_array_unless_query-594"><a href="#inline_array_unless_query-594"><span class="linenos">594</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4045,12 +4079,12 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_ilike_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_ilike_sql-595"><a href="#no_ilike_sql-595"><span class="linenos">595</span></a><span class="k">def</span> <span class="nf">no_ilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_ilike_sql-596"><a href="#no_ilike_sql-596"><span class="linenos">596</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">like_sql</span><span class="p">(</span> -</span><span id="no_ilike_sql-597"><a href="#no_ilike_sql-597"><span class="linenos">597</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">(</span> -</span><span id="no_ilike_sql-598"><a href="#no_ilike_sql-598"><span class="linenos">598</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="no_ilike_sql-599"><a href="#no_ilike_sql-599"><span class="linenos">599</span></a> <span class="p">)</span> -</span><span id="no_ilike_sql-600"><a href="#no_ilike_sql-600"><span class="linenos">600</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_ilike_sql-597"><a href="#no_ilike_sql-597"><span class="linenos">597</span></a><span class="k">def</span> <span class="nf">no_ilike_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_ilike_sql-598"><a href="#no_ilike_sql-598"><span class="linenos">598</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">like_sql</span><span class="p">(</span> +</span><span id="no_ilike_sql-599"><a href="#no_ilike_sql-599"><span class="linenos">599</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">(</span> +</span><span id="no_ilike_sql-600"><a href="#no_ilike_sql-600"><span class="linenos">600</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Lower</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="no_ilike_sql-601"><a href="#no_ilike_sql-601"><span class="linenos">601</span></a> <span class="p">)</span> +</span><span id="no_ilike_sql-602"><a href="#no_ilike_sql-602"><span class="linenos">602</span></a> <span class="p">)</span> </span></pre></div> @@ -4068,9 +4102,9 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_paren_current_date_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_paren_current_date_sql-603"><a href="#no_paren_current_date_sql-603"><span class="linenos">603</span></a><span class="k">def</span> <span class="nf">no_paren_current_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_paren_current_date_sql-604"><a href="#no_paren_current_date_sql-604"><span class="linenos">604</span></a> <span class="n">zone</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="no_paren_current_date_sql-605"><a href="#no_paren_current_date_sql-605"><span class="linenos">605</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_paren_current_date_sql-605"><a href="#no_paren_current_date_sql-605"><span class="linenos">605</span></a><span class="k">def</span> <span class="nf">no_paren_current_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_paren_current_date_sql-606"><a href="#no_paren_current_date_sql-606"><span class="linenos">606</span></a> <span class="n">zone</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="no_paren_current_date_sql-607"><a href="#no_paren_current_date_sql-607"><span class="linenos">607</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> </span></pre></div> @@ -4088,11 +4122,11 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_recursive_cte_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_recursive_cte_sql-608"><a href="#no_recursive_cte_sql-608"><span class="linenos">608</span></a><span class="k">def</span> <span class="nf">no_recursive_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_recursive_cte_sql-609"><a href="#no_recursive_cte_sql-609"><span class="linenos">609</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"recursive"</span><span class="p">):</span> -</span><span id="no_recursive_cte_sql-610"><a href="#no_recursive_cte_sql-610"><span class="linenos">610</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Recursive CTEs are unsupported"</span><span class="p">)</span> -</span><span id="no_recursive_cte_sql-611"><a href="#no_recursive_cte_sql-611"><span class="linenos">611</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"recursive"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="no_recursive_cte_sql-612"><a href="#no_recursive_cte_sql-612"><span class="linenos">612</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_recursive_cte_sql-610"><a href="#no_recursive_cte_sql-610"><span class="linenos">610</span></a><span class="k">def</span> <span class="nf">no_recursive_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_recursive_cte_sql-611"><a href="#no_recursive_cte_sql-611"><span class="linenos">611</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"recursive"</span><span class="p">):</span> +</span><span id="no_recursive_cte_sql-612"><a href="#no_recursive_cte_sql-612"><span class="linenos">612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Recursive CTEs are unsupported"</span><span class="p">)</span> +</span><span id="no_recursive_cte_sql-613"><a href="#no_recursive_cte_sql-613"><span class="linenos">613</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"recursive"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="no_recursive_cte_sql-614"><a href="#no_recursive_cte_sql-614"><span class="linenos">614</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4110,10 +4144,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_safe_divide_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_safe_divide_sql-615"><a href="#no_safe_divide_sql-615"><span class="linenos">615</span></a><span class="k">def</span> <span class="nf">no_safe_divide_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_safe_divide_sql-616"><a href="#no_safe_divide_sql-616"><span class="linenos">616</span></a> <span class="n">n</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="no_safe_divide_sql-617"><a href="#no_safe_divide_sql-617"><span class="linenos">617</span></a> <span class="n">d</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="no_safe_divide_sql-618"><a href="#no_safe_divide_sql-618"><span class="linenos">618</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IF((</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">) <> 0, (</span><span class="si">{</span><span class="n">n</span><span class="si">}</span><span class="s2">) / (</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">), NULL)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_safe_divide_sql-617"><a href="#no_safe_divide_sql-617"><span class="linenos">617</span></a><span class="k">def</span> <span class="nf">no_safe_divide_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_safe_divide_sql-618"><a href="#no_safe_divide_sql-618"><span class="linenos">618</span></a> <span class="n">n</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="no_safe_divide_sql-619"><a href="#no_safe_divide_sql-619"><span class="linenos">619</span></a> <span class="n">d</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="no_safe_divide_sql-620"><a href="#no_safe_divide_sql-620"><span class="linenos">620</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IF((</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">) <> 0, (</span><span class="si">{</span><span class="n">n</span><span class="si">}</span><span class="s2">) / (</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">), NULL)"</span> </span></pre></div> @@ -4131,9 +4165,9 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_tablesample_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_tablesample_sql-621"><a href="#no_tablesample_sql-621"><span class="linenos">621</span></a><span class="k">def</span> <span class="nf">no_tablesample_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_tablesample_sql-622"><a href="#no_tablesample_sql-622"><span class="linenos">622</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"TABLESAMPLE unsupported"</span><span class="p">)</span> -</span><span id="no_tablesample_sql-623"><a href="#no_tablesample_sql-623"><span class="linenos">623</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_tablesample_sql-623"><a href="#no_tablesample_sql-623"><span class="linenos">623</span></a><span class="k">def</span> <span class="nf">no_tablesample_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_tablesample_sql-624"><a href="#no_tablesample_sql-624"><span class="linenos">624</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"TABLESAMPLE unsupported"</span><span class="p">)</span> +</span><span id="no_tablesample_sql-625"><a href="#no_tablesample_sql-625"><span class="linenos">625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span></pre></div> @@ -4151,9 +4185,9 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_pivot_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_pivot_sql-626"><a href="#no_pivot_sql-626"><span class="linenos">626</span></a><span class="k">def</span> <span class="nf">no_pivot_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_pivot_sql-627"><a href="#no_pivot_sql-627"><span class="linenos">627</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"PIVOT unsupported"</span><span class="p">)</span> -</span><span id="no_pivot_sql-628"><a href="#no_pivot_sql-628"><span class="linenos">628</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_pivot_sql-628"><a href="#no_pivot_sql-628"><span class="linenos">628</span></a><span class="k">def</span> <span class="nf">no_pivot_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_pivot_sql-629"><a href="#no_pivot_sql-629"><span class="linenos">629</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"PIVOT unsupported"</span><span class="p">)</span> +</span><span id="no_pivot_sql-630"><a href="#no_pivot_sql-630"><span class="linenos">630</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -4171,8 +4205,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_trycast_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_trycast_sql-631"><a href="#no_trycast_sql-631"><span class="linenos">631</span></a><span class="k">def</span> <span class="nf">no_trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_trycast_sql-632"><a href="#no_trycast_sql-632"><span class="linenos">632</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_trycast_sql-633"><a href="#no_trycast_sql-633"><span class="linenos">633</span></a><span class="k">def</span> <span class="nf">no_trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_trycast_sql-634"><a href="#no_trycast_sql-634"><span class="linenos">634</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4190,11 +4224,11 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_comment_column_constraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_comment_column_constraint_sql-635"><a href="#no_comment_column_constraint_sql-635"><span class="linenos">635</span></a><span class="k">def</span> <span class="nf">no_comment_column_constraint_sql</span><span class="p">(</span> -</span><span id="no_comment_column_constraint_sql-636"><a href="#no_comment_column_constraint_sql-636"><span class="linenos">636</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span> -</span><span id="no_comment_column_constraint_sql-637"><a href="#no_comment_column_constraint_sql-637"><span class="linenos">637</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_comment_column_constraint_sql-638"><a href="#no_comment_column_constraint_sql-638"><span class="linenos">638</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"CommentColumnConstraint unsupported"</span><span class="p">)</span> -</span><span id="no_comment_column_constraint_sql-639"><a href="#no_comment_column_constraint_sql-639"><span class="linenos">639</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_comment_column_constraint_sql-637"><a href="#no_comment_column_constraint_sql-637"><span class="linenos">637</span></a><span class="k">def</span> <span class="nf">no_comment_column_constraint_sql</span><span class="p">(</span> +</span><span id="no_comment_column_constraint_sql-638"><a href="#no_comment_column_constraint_sql-638"><span class="linenos">638</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span> +</span><span id="no_comment_column_constraint_sql-639"><a href="#no_comment_column_constraint_sql-639"><span class="linenos">639</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_comment_column_constraint_sql-640"><a href="#no_comment_column_constraint_sql-640"><span class="linenos">640</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"CommentColumnConstraint unsupported"</span><span class="p">)</span> +</span><span id="no_comment_column_constraint_sql-641"><a href="#no_comment_column_constraint_sql-641"><span class="linenos">641</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -4212,9 +4246,9 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_map_from_entries_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_map_from_entries_sql-642"><a href="#no_map_from_entries_sql-642"><span class="linenos">642</span></a><span class="k">def</span> <span class="nf">no_map_from_entries_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_map_from_entries_sql-643"><a href="#no_map_from_entries_sql-643"><span class="linenos">643</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"MAP_FROM_ENTRIES unsupported"</span><span class="p">)</span> -</span><span id="no_map_from_entries_sql-644"><a href="#no_map_from_entries_sql-644"><span class="linenos">644</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_map_from_entries_sql-644"><a href="#no_map_from_entries_sql-644"><span class="linenos">644</span></a><span class="k">def</span> <span class="nf">no_map_from_entries_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_map_from_entries_sql-645"><a href="#no_map_from_entries_sql-645"><span class="linenos">645</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"MAP_FROM_ENTRIES unsupported"</span><span class="p">)</span> +</span><span id="no_map_from_entries_sql-646"><a href="#no_map_from_entries_sql-646"><span class="linenos">646</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -4232,21 +4266,21 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#str_position_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="str_position_sql-647"><a href="#str_position_sql-647"><span class="linenos">647</span></a><span class="k">def</span> <span class="nf">str_position_sql</span><span class="p">(</span> -</span><span id="str_position_sql-648"><a href="#str_position_sql-648"><span class="linenos">648</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">generate_instance</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="str_position_sql-649"><a href="#str_position_sql-649"><span class="linenos">649</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="str_position_sql-650"><a href="#str_position_sql-650"><span class="linenos">650</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="str_position_sql-651"><a href="#str_position_sql-651"><span class="linenos">651</span></a> <span class="n">substr</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">expression</span><span class="p">,</span> <span class="s2">"substr"</span><span class="p">)</span> -</span><span id="str_position_sql-652"><a href="#str_position_sql-652"><span class="linenos">652</span></a> <span class="n">position</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="str_position_sql-653"><a href="#str_position_sql-653"><span class="linenos">653</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"instance"</span><span class="p">)</span> <span class="k">if</span> <span class="n">generate_instance</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="str_position_sql-654"><a href="#str_position_sql-654"><span class="linenos">654</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="str_position_sql-655"><a href="#str_position_sql-655"><span class="linenos">655</span></a> -</span><span id="str_position_sql-656"><a href="#str_position_sql-656"><span class="linenos">656</span></a> <span class="k">if</span> <span class="n">position</span><span class="p">:</span> -</span><span id="str_position_sql-657"><a href="#str_position_sql-657"><span class="linenos">657</span></a> <span class="c1"># Normalize third 'pos' argument into 'SUBSTR(..) + offset' across dialects</span> -</span><span id="str_position_sql-658"><a href="#str_position_sql-658"><span class="linenos">658</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"SUBSTR"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="p">)</span> -</span><span id="str_position_sql-659"><a href="#str_position_sql-659"><span class="linenos">659</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" + </span><span class="si">{</span><span class="n">position</span><span class="si">}</span><span class="s2"> - 1"</span> -</span><span id="str_position_sql-660"><a href="#str_position_sql-660"><span class="linenos">660</span></a> -</span><span id="str_position_sql-661"><a href="#str_position_sql-661"><span class="linenos">661</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPOS"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">substr</span><span class="p">,</span> <span class="n">instance</span><span class="p">)</span> <span class="o">+</span> <span class="n">position_offset</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="str_position_sql-649"><a href="#str_position_sql-649"><span class="linenos">649</span></a><span class="k">def</span> <span class="nf">str_position_sql</span><span class="p">(</span> +</span><span id="str_position_sql-650"><a href="#str_position_sql-650"><span class="linenos">650</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">generate_instance</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="str_position_sql-651"><a href="#str_position_sql-651"><span class="linenos">651</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="str_position_sql-652"><a href="#str_position_sql-652"><span class="linenos">652</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="str_position_sql-653"><a href="#str_position_sql-653"><span class="linenos">653</span></a> <span class="n">substr</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">expression</span><span class="p">,</span> <span class="s2">"substr"</span><span class="p">)</span> +</span><span id="str_position_sql-654"><a href="#str_position_sql-654"><span class="linenos">654</span></a> <span class="n">position</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="str_position_sql-655"><a href="#str_position_sql-655"><span class="linenos">655</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"instance"</span><span class="p">)</span> <span class="k">if</span> <span class="n">generate_instance</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="str_position_sql-656"><a href="#str_position_sql-656"><span class="linenos">656</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="str_position_sql-657"><a href="#str_position_sql-657"><span class="linenos">657</span></a> +</span><span id="str_position_sql-658"><a href="#str_position_sql-658"><span class="linenos">658</span></a> <span class="k">if</span> <span class="n">position</span><span class="p">:</span> +</span><span id="str_position_sql-659"><a href="#str_position_sql-659"><span class="linenos">659</span></a> <span class="c1"># Normalize third 'pos' argument into 'SUBSTR(..) + offset' across dialects</span> +</span><span id="str_position_sql-660"><a href="#str_position_sql-660"><span class="linenos">660</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"SUBSTR"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="p">)</span> +</span><span id="str_position_sql-661"><a href="#str_position_sql-661"><span class="linenos">661</span></a> <span class="n">position_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" + </span><span class="si">{</span><span class="n">position</span><span class="si">}</span><span class="s2"> - 1"</span> +</span><span id="str_position_sql-662"><a href="#str_position_sql-662"><span class="linenos">662</span></a> +</span><span id="str_position_sql-663"><a href="#str_position_sql-663"><span class="linenos">663</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPOS"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">substr</span><span class="p">,</span> <span class="n">instance</span><span class="p">)</span> <span class="o">+</span> <span class="n">position_offset</span> </span></pre></div> @@ -4264,10 +4298,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#struct_extract_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="struct_extract_sql-664"><a href="#struct_extract_sql-664"><span class="linenos">664</span></a><span class="k">def</span> <span class="nf">struct_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="struct_extract_sql-665"><a href="#struct_extract_sql-665"><span class="linenos">665</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="struct_extract_sql-666"><a href="#struct_extract_sql-666"><span class="linenos">666</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="struct_extract_sql-667"><a href="#struct_extract_sql-667"><span class="linenos">667</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="struct_extract_sql-666"><a href="#struct_extract_sql-666"><span class="linenos">666</span></a><span class="k">def</span> <span class="nf">struct_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="struct_extract_sql-667"><a href="#struct_extract_sql-667"><span class="linenos">667</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="struct_extract_sql-668"><a href="#struct_extract_sql-668"><span class="linenos">668</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> +</span><span id="struct_extract_sql-669"><a href="#struct_extract_sql-669"><span class="linenos">669</span></a> <span class="p">)</span> </span></pre></div> @@ -4285,22 +4319,22 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#var_map_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="var_map_sql-670"><a href="#var_map_sql-670"><span class="linenos">670</span></a><span class="k">def</span> <span class="nf">var_map_sql</span><span class="p">(</span> -</span><span id="var_map_sql-671"><a href="#var_map_sql-671"><span class="linenos">671</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">,</span> <span class="n">map_func_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MAP"</span> -</span><span id="var_map_sql-672"><a href="#var_map_sql-672"><span class="linenos">672</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="var_map_sql-673"><a href="#var_map_sql-673"><span class="linenos">673</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span> -</span><span id="var_map_sql-674"><a href="#var_map_sql-674"><span class="linenos">674</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> -</span><span id="var_map_sql-675"><a href="#var_map_sql-675"><span class="linenos">675</span></a> -</span><span id="var_map_sql-676"><a href="#var_map_sql-676"><span class="linenos">676</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keys</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> -</span><span id="var_map_sql-677"><a href="#var_map_sql-677"><span class="linenos">677</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Cannot convert array columns into map."</span><span class="p">)</span> -</span><span id="var_map_sql-678"><a href="#var_map_sql-678"><span class="linenos">678</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="n">keys</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> -</span><span id="var_map_sql-679"><a href="#var_map_sql-679"><span class="linenos">679</span></a> -</span><span id="var_map_sql-680"><a href="#var_map_sql-680"><span class="linenos">680</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="var_map_sql-681"><a href="#var_map_sql-681"><span class="linenos">681</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">keys</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="var_map_sql-682"><a href="#var_map_sql-682"><span class="linenos">682</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> -</span><span id="var_map_sql-683"><a href="#var_map_sql-683"><span class="linenos">683</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> -</span><span id="var_map_sql-684"><a href="#var_map_sql-684"><span class="linenos">684</span></a> -</span><span id="var_map_sql-685"><a href="#var_map_sql-685"><span class="linenos">685</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="var_map_sql-672"><a href="#var_map_sql-672"><span class="linenos">672</span></a><span class="k">def</span> <span class="nf">var_map_sql</span><span class="p">(</span> +</span><span id="var_map_sql-673"><a href="#var_map_sql-673"><span class="linenos">673</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</span><span class="p">,</span> <span class="n">map_func_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MAP"</span> +</span><span id="var_map_sql-674"><a href="#var_map_sql-674"><span class="linenos">674</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="var_map_sql-675"><a href="#var_map_sql-675"><span class="linenos">675</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span> +</span><span id="var_map_sql-676"><a href="#var_map_sql-676"><span class="linenos">676</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> +</span><span id="var_map_sql-677"><a href="#var_map_sql-677"><span class="linenos">677</span></a> +</span><span id="var_map_sql-678"><a href="#var_map_sql-678"><span class="linenos">678</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keys</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> +</span><span id="var_map_sql-679"><a href="#var_map_sql-679"><span class="linenos">679</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Cannot convert array columns into map."</span><span class="p">)</span> +</span><span id="var_map_sql-680"><a href="#var_map_sql-680"><span class="linenos">680</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="n">keys</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> +</span><span id="var_map_sql-681"><a href="#var_map_sql-681"><span class="linenos">681</span></a> +</span><span id="var_map_sql-682"><a href="#var_map_sql-682"><span class="linenos">682</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="var_map_sql-683"><a href="#var_map_sql-683"><span class="linenos">683</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">keys</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="var_map_sql-684"><a href="#var_map_sql-684"><span class="linenos">684</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> +</span><span id="var_map_sql-685"><a href="#var_map_sql-685"><span class="linenos">685</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> +</span><span id="var_map_sql-686"><a href="#var_map_sql-686"><span class="linenos">686</span></a> +</span><span id="var_map_sql-687"><a href="#var_map_sql-687"><span class="linenos">687</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">map_func_name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -4318,30 +4352,30 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#build_formatted_time"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="build_formatted_time-688"><a href="#build_formatted_time-688"><span class="linenos">688</span></a><span class="k">def</span> <span class="nf">build_formatted_time</span><span class="p">(</span> -</span><span id="build_formatted_time-689"><a href="#build_formatted_time-689"><span class="linenos">689</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="build_formatted_time-690"><a href="#build_formatted_time-690"><span class="linenos">690</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> -</span><span id="build_formatted_time-691"><a href="#build_formatted_time-691"><span class="linenos">691</span></a><span class="w"> </span><span class="sd">"""Helper used for time expressions.</span> -</span><span id="build_formatted_time-692"><a href="#build_formatted_time-692"><span class="linenos">692</span></a> -</span><span id="build_formatted_time-693"><a href="#build_formatted_time-693"><span class="linenos">693</span></a><span class="sd"> Args:</span> -</span><span id="build_formatted_time-694"><a href="#build_formatted_time-694"><span class="linenos">694</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> -</span><span id="build_formatted_time-695"><a href="#build_formatted_time-695"><span class="linenos">695</span></a><span class="sd"> dialect: target sql dialect.</span> -</span><span id="build_formatted_time-696"><a href="#build_formatted_time-696"><span class="linenos">696</span></a><span class="sd"> default: the default format, True being time.</span> -</span><span id="build_formatted_time-697"><a href="#build_formatted_time-697"><span class="linenos">697</span></a> -</span><span id="build_formatted_time-698"><a href="#build_formatted_time-698"><span class="linenos">698</span></a><span class="sd"> Returns:</span> -</span><span id="build_formatted_time-699"><a href="#build_formatted_time-699"><span class="linenos">699</span></a><span class="sd"> A callable that can be used to return the appropriately formatted time expression.</span> -</span><span id="build_formatted_time-700"><a href="#build_formatted_time-700"><span class="linenos">700</span></a><span class="sd"> """</span> -</span><span id="build_formatted_time-701"><a href="#build_formatted_time-701"><span class="linenos">701</span></a> -</span><span id="build_formatted_time-702"><a href="#build_formatted_time-702"><span class="linenos">702</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">):</span> -</span><span id="build_formatted_time-703"><a href="#build_formatted_time-703"><span class="linenos">703</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span> -</span><span id="build_formatted_time-704"><a href="#build_formatted_time-704"><span class="linenos">704</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="build_formatted_time-705"><a href="#build_formatted_time-705"><span class="linenos">705</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span> -</span><span id="build_formatted_time-706"><a href="#build_formatted_time-706"><span class="linenos">706</span></a> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="build_formatted_time-707"><a href="#build_formatted_time-707"><span class="linenos">707</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">TIME_FORMAT</span> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="kc">True</span> <span class="k">else</span> <span class="n">default</span> <span class="ow">or</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="build_formatted_time-708"><a href="#build_formatted_time-708"><span class="linenos">708</span></a> <span class="p">),</span> -</span><span id="build_formatted_time-709"><a href="#build_formatted_time-709"><span class="linenos">709</span></a> <span class="p">)</span> -</span><span id="build_formatted_time-710"><a href="#build_formatted_time-710"><span class="linenos">710</span></a> -</span><span id="build_formatted_time-711"><a href="#build_formatted_time-711"><span class="linenos">711</span></a> <span class="k">return</span> <span class="n">_builder</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="build_formatted_time-690"><a href="#build_formatted_time-690"><span class="linenos">690</span></a><span class="k">def</span> <span class="nf">build_formatted_time</span><span class="p">(</span> +</span><span id="build_formatted_time-691"><a href="#build_formatted_time-691"><span class="linenos">691</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="build_formatted_time-692"><a href="#build_formatted_time-692"><span class="linenos">692</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> +</span><span id="build_formatted_time-693"><a href="#build_formatted_time-693"><span class="linenos">693</span></a><span class="w"> </span><span class="sd">"""Helper used for time expressions.</span> +</span><span id="build_formatted_time-694"><a href="#build_formatted_time-694"><span class="linenos">694</span></a> +</span><span id="build_formatted_time-695"><a href="#build_formatted_time-695"><span class="linenos">695</span></a><span class="sd"> Args:</span> +</span><span id="build_formatted_time-696"><a href="#build_formatted_time-696"><span class="linenos">696</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> +</span><span id="build_formatted_time-697"><a href="#build_formatted_time-697"><span class="linenos">697</span></a><span class="sd"> dialect: target sql dialect.</span> +</span><span id="build_formatted_time-698"><a href="#build_formatted_time-698"><span class="linenos">698</span></a><span class="sd"> default: the default format, True being time.</span> +</span><span id="build_formatted_time-699"><a href="#build_formatted_time-699"><span class="linenos">699</span></a> +</span><span id="build_formatted_time-700"><a href="#build_formatted_time-700"><span class="linenos">700</span></a><span class="sd"> Returns:</span> +</span><span id="build_formatted_time-701"><a href="#build_formatted_time-701"><span class="linenos">701</span></a><span class="sd"> A callable that can be used to return the appropriately formatted time expression.</span> +</span><span id="build_formatted_time-702"><a href="#build_formatted_time-702"><span class="linenos">702</span></a><span class="sd"> """</span> +</span><span id="build_formatted_time-703"><a href="#build_formatted_time-703"><span class="linenos">703</span></a> +</span><span id="build_formatted_time-704"><a href="#build_formatted_time-704"><span class="linenos">704</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">):</span> +</span><span id="build_formatted_time-705"><a href="#build_formatted_time-705"><span class="linenos">705</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span> +</span><span id="build_formatted_time-706"><a href="#build_formatted_time-706"><span class="linenos">706</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="build_formatted_time-707"><a href="#build_formatted_time-707"><span class="linenos">707</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span> +</span><span id="build_formatted_time-708"><a href="#build_formatted_time-708"><span class="linenos">708</span></a> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="build_formatted_time-709"><a href="#build_formatted_time-709"><span class="linenos">709</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">Dialect</span><span class="p">[</span><span class="n">dialect</span><span class="p">]</span><span class="o">.</span><span class="n">TIME_FORMAT</span> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="kc">True</span> <span class="k">else</span> <span class="n">default</span> <span class="ow">or</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="build_formatted_time-710"><a href="#build_formatted_time-710"><span class="linenos">710</span></a> <span class="p">),</span> +</span><span id="build_formatted_time-711"><a href="#build_formatted_time-711"><span class="linenos">711</span></a> <span class="p">)</span> +</span><span id="build_formatted_time-712"><a href="#build_formatted_time-712"><span class="linenos">712</span></a> +</span><span id="build_formatted_time-713"><a href="#build_formatted_time-713"><span class="linenos">713</span></a> <span class="k">return</span> <span class="n">_builder</span> </span></pre></div> @@ -4375,18 +4409,18 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#time_format"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="time_format-714"><a href="#time_format-714"><span class="linenos">714</span></a><span class="k">def</span> <span class="nf">time_format</span><span class="p">(</span> -</span><span id="time_format-715"><a href="#time_format-715"><span class="linenos">715</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="time_format-716"><a href="#time_format-716"><span class="linenos">716</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> -</span><span id="time_format-717"><a href="#time_format-717"><span class="linenos">717</span></a> <span class="k">def</span> <span class="nf">_time_format</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">)</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="nb">str</span><span class="p">]:</span> -</span><span id="time_format-718"><a href="#time_format-718"><span class="linenos">718</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="time_format-719"><a href="#time_format-719"><span class="linenos">719</span></a><span class="sd"> Returns the time format for a given expression, unless it's equivalent</span> -</span><span id="time_format-720"><a href="#time_format-720"><span class="linenos">720</span></a><span class="sd"> to the default time format of the dialect of interest.</span> -</span><span id="time_format-721"><a href="#time_format-721"><span class="linenos">721</span></a><span class="sd"> """</span> -</span><span id="time_format-722"><a href="#time_format-722"><span class="linenos">722</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="time_format-723"><a href="#time_format-723"><span class="linenos">723</span></a> <span class="k">return</span> <span class="n">time_format</span> <span class="k">if</span> <span class="n">time_format</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">TIME_FORMAT</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="time_format-724"><a href="#time_format-724"><span class="linenos">724</span></a> -</span><span id="time_format-725"><a href="#time_format-725"><span class="linenos">725</span></a> <span class="k">return</span> <span class="n">_time_format</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="time_format-716"><a href="#time_format-716"><span class="linenos">716</span></a><span class="k">def</span> <span class="nf">time_format</span><span class="p">(</span> +</span><span id="time_format-717"><a href="#time_format-717"><span class="linenos">717</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="time_format-718"><a href="#time_format-718"><span class="linenos">718</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> +</span><span id="time_format-719"><a href="#time_format-719"><span class="linenos">719</span></a> <span class="k">def</span> <span class="nf">_time_format</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">)</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="nb">str</span><span class="p">]:</span> +</span><span id="time_format-720"><a href="#time_format-720"><span class="linenos">720</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="time_format-721"><a href="#time_format-721"><span class="linenos">721</span></a><span class="sd"> Returns the time format for a given expression, unless it's equivalent</span> +</span><span id="time_format-722"><a href="#time_format-722"><span class="linenos">722</span></a><span class="sd"> to the default time format of the dialect of interest.</span> +</span><span id="time_format-723"><a href="#time_format-723"><span class="linenos">723</span></a><span class="sd"> """</span> +</span><span id="time_format-724"><a href="#time_format-724"><span class="linenos">724</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="time_format-725"><a href="#time_format-725"><span class="linenos">725</span></a> <span class="k">return</span> <span class="n">time_format</span> <span class="k">if</span> <span class="n">time_format</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">TIME_FORMAT</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="time_format-726"><a href="#time_format-726"><span class="linenos">726</span></a> +</span><span id="time_format-727"><a href="#time_format-727"><span class="linenos">727</span></a> <span class="k">return</span> <span class="n">_time_format</span> </span></pre></div> @@ -4404,17 +4438,17 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#build_date_delta"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="build_date_delta-728"><a href="#build_date_delta-728"><span class="linenos">728</span></a><span class="k">def</span> <span class="nf">build_date_delta</span><span class="p">(</span> -</span><span id="build_date_delta-729"><a href="#build_date_delta-729"><span class="linenos">729</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">unit_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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="build_date_delta-730"><a href="#build_date_delta-730"><span class="linenos">730</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> -</span><span id="build_date_delta-731"><a href="#build_date_delta-731"><span class="linenos">731</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="build_date_delta-732"><a href="#build_date_delta-732"><span class="linenos">732</span></a> <span class="n">unit_based</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span> -</span><span id="build_date_delta-733"><a href="#build_date_delta-733"><span class="linenos">733</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="build_date_delta-734"><a href="#build_date_delta-734"><span class="linenos">734</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"DAY"</span><span class="p">)</span> -</span><span id="build_date_delta-735"><a href="#build_date_delta-735"><span class="linenos">735</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">unit_mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> <span class="k">if</span> <span class="n">unit_mapping</span> <span class="k">else</span> <span class="n">unit</span> -</span><span id="build_date_delta-736"><a href="#build_date_delta-736"><span class="linenos">736</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> -</span><span id="build_date_delta-737"><a href="#build_date_delta-737"><span class="linenos">737</span></a> -</span><span id="build_date_delta-738"><a href="#build_date_delta-738"><span class="linenos">738</span></a> <span class="k">return</span> <span class="n">_builder</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="build_date_delta-730"><a href="#build_date_delta-730"><span class="linenos">730</span></a><span class="k">def</span> <span class="nf">build_date_delta</span><span class="p">(</span> +</span><span id="build_date_delta-731"><a href="#build_date_delta-731"><span class="linenos">731</span></a> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">unit_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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="build_date_delta-732"><a href="#build_date_delta-732"><span class="linenos">732</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> +</span><span id="build_date_delta-733"><a href="#build_date_delta-733"><span class="linenos">733</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="build_date_delta-734"><a href="#build_date_delta-734"><span class="linenos">734</span></a> <span class="n">unit_based</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">3</span> +</span><span id="build_date_delta-735"><a href="#build_date_delta-735"><span class="linenos">735</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="build_date_delta-736"><a href="#build_date_delta-736"><span class="linenos">736</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">unit_based</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"DAY"</span><span class="p">)</span> +</span><span id="build_date_delta-737"><a href="#build_date_delta-737"><span class="linenos">737</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">unit_mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> <span class="k">if</span> <span class="n">unit_mapping</span> <span class="k">else</span> <span class="n">unit</span> +</span><span id="build_date_delta-738"><a href="#build_date_delta-738"><span class="linenos">738</span></a> <span class="k">return</span> <span class="n">exp_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> +</span><span id="build_date_delta-739"><a href="#build_date_delta-739"><span class="linenos">739</span></a> +</span><span id="build_date_delta-740"><a href="#build_date_delta-740"><span class="linenos">740</span></a> <span class="k">return</span> <span class="n">_builder</span> </span></pre></div> @@ -4432,25 +4466,25 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#build_date_delta_with_interval"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="build_date_delta_with_interval-741"><a href="#build_date_delta_with_interval-741"><span class="linenos">741</span></a><span class="k">def</span> <span class="nf">build_date_delta_with_interval</span><span class="p">(</span> -</span><span id="build_date_delta_with_interval-742"><a href="#build_date_delta_with_interval-742"><span class="linenos">742</span></a> <span class="n">expression_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> -</span><span id="build_date_delta_with_interval-743"><a href="#build_date_delta_with_interval-743"><span class="linenos">743</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">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">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]]:</span> -</span><span id="build_date_delta_with_interval-744"><a href="#build_date_delta_with_interval-744"><span class="linenos">744</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]:</span> -</span><span id="build_date_delta_with_interval-745"><a href="#build_date_delta_with_interval-745"><span class="linenos">745</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="build_date_delta_with_interval-746"><a href="#build_date_delta_with_interval-746"><span class="linenos">746</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="build_date_delta_with_interval-747"><a href="#build_date_delta_with_interval-747"><span class="linenos">747</span></a> -</span><span id="build_date_delta_with_interval-748"><a href="#build_date_delta_with_interval-748"><span class="linenos">748</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="build_date_delta_with_interval-743"><a href="#build_date_delta_with_interval-743"><span class="linenos">743</span></a><span class="k">def</span> <span class="nf">build_date_delta_with_interval</span><span class="p">(</span> +</span><span id="build_date_delta_with_interval-744"><a href="#build_date_delta_with_interval-744"><span class="linenos">744</span></a> <span class="n">expression_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> +</span><span id="build_date_delta_with_interval-745"><a href="#build_date_delta_with_interval-745"><span class="linenos">745</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">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">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]]:</span> +</span><span id="build_date_delta_with_interval-746"><a href="#build_date_delta_with_interval-746"><span class="linenos">746</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">E</span><span class="p">]:</span> +</span><span id="build_date_delta_with_interval-747"><a href="#build_date_delta_with_interval-747"><span class="linenos">747</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="build_date_delta_with_interval-748"><a href="#build_date_delta_with_interval-748"><span class="linenos">748</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="build_date_delta_with_interval-749"><a href="#build_date_delta_with_interval-749"><span class="linenos">749</span></a> -</span><span id="build_date_delta_with_interval-750"><a href="#build_date_delta_with_interval-750"><span class="linenos">750</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">):</span> -</span><span id="build_date_delta_with_interval-751"><a href="#build_date_delta_with_interval-751"><span class="linenos">751</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"INTERVAL expression expected but got '</span><span class="si">{</span><span class="n">interval</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> -</span><span id="build_date_delta_with_interval-752"><a href="#build_date_delta_with_interval-752"><span class="linenos">752</span></a> -</span><span id="build_date_delta_with_interval-753"><a href="#build_date_delta_with_interval-753"><span class="linenos">753</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> -</span><span id="build_date_delta_with_interval-754"><a href="#build_date_delta_with_interval-754"><span class="linenos">754</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="build_date_delta_with_interval-755"><a href="#build_date_delta_with_interval-755"><span class="linenos">755</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="build_date_delta_with_interval-756"><a href="#build_date_delta_with_interval-756"><span class="linenos">756</span></a> -</span><span id="build_date_delta_with_interval-757"><a href="#build_date_delta_with_interval-757"><span class="linenos">757</span></a> <span class="k">return</span> <span class="n">expression_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">interval</span><span class="p">))</span> +</span><span id="build_date_delta_with_interval-750"><a href="#build_date_delta_with_interval-750"><span class="linenos">750</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> +</span><span id="build_date_delta_with_interval-751"><a href="#build_date_delta_with_interval-751"><span class="linenos">751</span></a> +</span><span id="build_date_delta_with_interval-752"><a href="#build_date_delta_with_interval-752"><span class="linenos">752</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">):</span> +</span><span id="build_date_delta_with_interval-753"><a href="#build_date_delta_with_interval-753"><span class="linenos">753</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"INTERVAL expression expected but got '</span><span class="si">{</span><span class="n">interval</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="build_date_delta_with_interval-754"><a href="#build_date_delta_with_interval-754"><span class="linenos">754</span></a> +</span><span id="build_date_delta_with_interval-755"><a href="#build_date_delta_with_interval-755"><span class="linenos">755</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> +</span><span id="build_date_delta_with_interval-756"><a href="#build_date_delta_with_interval-756"><span class="linenos">756</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="build_date_delta_with_interval-757"><a href="#build_date_delta_with_interval-757"><span class="linenos">757</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span><span id="build_date_delta_with_interval-758"><a href="#build_date_delta_with_interval-758"><span class="linenos">758</span></a> -</span><span id="build_date_delta_with_interval-759"><a href="#build_date_delta_with_interval-759"><span class="linenos">759</span></a> <span class="k">return</span> <span class="n">_builder</span> +</span><span id="build_date_delta_with_interval-759"><a href="#build_date_delta_with_interval-759"><span class="linenos">759</span></a> <span class="k">return</span> <span class="n">expression_class</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">interval</span><span class="p">))</span> +</span><span id="build_date_delta_with_interval-760"><a href="#build_date_delta_with_interval-760"><span class="linenos">760</span></a> +</span><span id="build_date_delta_with_interval-761"><a href="#build_date_delta_with_interval-761"><span class="linenos">761</span></a> <span class="k">return</span> <span class="n">_builder</span> </span></pre></div> @@ -4468,13 +4502,13 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#date_trunc_to_time"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="date_trunc_to_time-762"><a href="#date_trunc_to_time-762"><span class="linenos">762</span></a><span class="k">def</span> <span class="nf">date_trunc_to_time</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> -</span><span id="date_trunc_to_time-763"><a href="#date_trunc_to_time-763"><span class="linenos">763</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="date_trunc_to_time-764"><a href="#date_trunc_to_time-764"><span class="linenos">764</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="date_trunc_to_time-765"><a href="#date_trunc_to_time-765"><span class="linenos">765</span></a> -</span><span id="date_trunc_to_time-766"><a href="#date_trunc_to_time-766"><span class="linenos">766</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"date"</span><span class="p">):</span> -</span><span id="date_trunc_to_time-767"><a href="#date_trunc_to_time-767"><span class="linenos">767</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span><span class="p">(</span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="date_trunc_to_time-768"><a href="#date_trunc_to_time-768"><span class="linenos">768</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="date_trunc_to_time-764"><a href="#date_trunc_to_time-764"><span class="linenos">764</span></a><span class="k">def</span> <span class="nf">date_trunc_to_time</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> +</span><span id="date_trunc_to_time-765"><a href="#date_trunc_to_time-765"><span class="linenos">765</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="date_trunc_to_time-766"><a href="#date_trunc_to_time-766"><span class="linenos">766</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="date_trunc_to_time-767"><a href="#date_trunc_to_time-767"><span class="linenos">767</span></a> +</span><span id="date_trunc_to_time-768"><a href="#date_trunc_to_time-768"><span class="linenos">768</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"date"</span><span class="p">):</span> +</span><span id="date_trunc_to_time-769"><a href="#date_trunc_to_time-769"><span class="linenos">769</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</span><span class="p">(</span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="date_trunc_to_time-770"><a href="#date_trunc_to_time-770"><span class="linenos">770</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> </span></pre></div> @@ -4492,15 +4526,15 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#date_add_interval_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="date_add_interval_sql-771"><a href="#date_add_interval_sql-771"><span class="linenos">771</span></a><span class="k">def</span> <span class="nf">date_add_interval_sql</span><span class="p">(</span> -</span><span id="date_add_interval_sql-772"><a href="#date_add_interval_sql-772"><span class="linenos">772</span></a> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> -</span><span id="date_add_interval_sql-773"><a href="#date_add_interval_sql-773"><span class="linenos">773</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="date_add_interval_sql-774"><a href="#date_add_interval_sql-774"><span class="linenos">774</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="date_add_interval_sql-775"><a href="#date_add_interval_sql-775"><span class="linenos">775</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="date_add_interval_sql-776"><a href="#date_add_interval_sql-776"><span class="linenos">776</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="date_add_interval_sql-777"><a href="#date_add_interval_sql-777"><span class="linenos">777</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="date_add_interval_sql-778"><a href="#date_add_interval_sql-778"><span class="linenos">778</span></a> -</span><span id="date_add_interval_sql-779"><a href="#date_add_interval_sql-779"><span class="linenos">779</span></a> <span class="k">return</span> <span class="n">func</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="date_add_interval_sql-773"><a href="#date_add_interval_sql-773"><span class="linenos">773</span></a><span class="k">def</span> <span class="nf">date_add_interval_sql</span><span class="p">(</span> +</span><span id="date_add_interval_sql-774"><a href="#date_add_interval_sql-774"><span class="linenos">774</span></a> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> +</span><span id="date_add_interval_sql-775"><a href="#date_add_interval_sql-775"><span class="linenos">775</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="date_add_interval_sql-776"><a href="#date_add_interval_sql-776"><span class="linenos">776</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="date_add_interval_sql-777"><a href="#date_add_interval_sql-777"><span class="linenos">777</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="date_add_interval_sql-778"><a href="#date_add_interval_sql-778"><span class="linenos">778</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="date_add_interval_sql-779"><a href="#date_add_interval_sql-779"><span class="linenos">779</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="date_add_interval_sql-780"><a href="#date_add_interval_sql-780"><span class="linenos">780</span></a> +</span><span id="date_add_interval_sql-781"><a href="#date_add_interval_sql-781"><span class="linenos">781</span></a> <span class="k">return</span> <span class="n">func</span> </span></pre></div> @@ -4518,14 +4552,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#timestamptrunc_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="timestamptrunc_sql-782"><a href="#timestamptrunc_sql-782"><span class="linenos">782</span></a><span class="k">def</span> <span class="nf">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="timestamptrunc_sql-783"><a href="#timestamptrunc_sql-783"><span class="linenos">783</span></a> <span class="k">def</span> <span class="nf">_timestamptrunc_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="timestamptrunc_sql-784"><a href="#timestamptrunc_sql-784"><span class="linenos">784</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">]</span> -</span><span id="timestamptrunc_sql-785"><a href="#timestamptrunc_sql-785"><span class="linenos">785</span></a> <span class="k">if</span> <span class="n">zone</span><span class="p">:</span> -</span><span id="timestamptrunc_sql-786"><a href="#timestamptrunc_sql-786"><span class="linenos">786</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> -</span><span id="timestamptrunc_sql-787"><a href="#timestamptrunc_sql-787"><span class="linenos">787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> -</span><span id="timestamptrunc_sql-788"><a href="#timestamptrunc_sql-788"><span class="linenos">788</span></a> -</span><span id="timestamptrunc_sql-789"><a href="#timestamptrunc_sql-789"><span class="linenos">789</span></a> <span class="k">return</span> <span class="n">_timestamptrunc_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="timestamptrunc_sql-784"><a href="#timestamptrunc_sql-784"><span class="linenos">784</span></a><span class="k">def</span> <span class="nf">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="timestamptrunc_sql-785"><a href="#timestamptrunc_sql-785"><span class="linenos">785</span></a> <span class="k">def</span> <span class="nf">_timestamptrunc_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="timestamptrunc_sql-786"><a href="#timestamptrunc_sql-786"><span class="linenos">786</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">]</span> +</span><span id="timestamptrunc_sql-787"><a href="#timestamptrunc_sql-787"><span class="linenos">787</span></a> <span class="k">if</span> <span class="n">zone</span><span class="p">:</span> +</span><span id="timestamptrunc_sql-788"><a href="#timestamptrunc_sql-788"><span class="linenos">788</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> +</span><span id="timestamptrunc_sql-789"><a href="#timestamptrunc_sql-789"><span class="linenos">789</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> +</span><span id="timestamptrunc_sql-790"><a href="#timestamptrunc_sql-790"><span class="linenos">790</span></a> +</span><span id="timestamptrunc_sql-791"><a href="#timestamptrunc_sql-791"><span class="linenos">791</span></a> <span class="k">return</span> <span class="n">_timestamptrunc_sql</span> </span></pre></div> @@ -4543,20 +4577,20 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_timestamp_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_timestamp_sql-792"><a href="#no_timestamp_sql-792"><span class="linenos">792</span></a><span class="k">def</span> <span class="nf">no_timestamp_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_timestamp_sql-793"><a href="#no_timestamp_sql-793"><span class="linenos">793</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span> -</span><span id="no_timestamp_sql-794"><a href="#no_timestamp_sql-794"><span class="linenos">794</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="no_timestamp_sql-795"><a href="#no_timestamp_sql-795"><span class="linenos">795</span></a> -</span><span id="no_timestamp_sql-796"><a href="#no_timestamp_sql-796"><span class="linenos">796</span></a> <span class="n">target_type</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span> -</span><span id="no_timestamp_sql-797"><a href="#no_timestamp_sql-797"><span class="linenos">797</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">target_type</span><span class="p">))</span> -</span><span id="no_timestamp_sql-798"><a href="#no_timestamp_sql-798"><span class="linenos">798</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">TIMEZONES</span><span class="p">:</span> -</span><span id="no_timestamp_sql-799"><a href="#no_timestamp_sql-799"><span class="linenos">799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="no_timestamp_sql-800"><a href="#no_timestamp_sql-800"><span class="linenos">800</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">(</span> -</span><span id="no_timestamp_sql-801"><a href="#no_timestamp_sql-801"><span class="linenos">801</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">),</span> -</span><span id="no_timestamp_sql-802"><a href="#no_timestamp_sql-802"><span class="linenos">802</span></a> <span class="n">zone</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> -</span><span id="no_timestamp_sql-803"><a href="#no_timestamp_sql-803"><span class="linenos">803</span></a> <span class="p">)</span> -</span><span id="no_timestamp_sql-804"><a href="#no_timestamp_sql-804"><span class="linenos">804</span></a> <span class="p">)</span> -</span><span id="no_timestamp_sql-805"><a href="#no_timestamp_sql-805"><span class="linenos">805</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_timestamp_sql-794"><a href="#no_timestamp_sql-794"><span class="linenos">794</span></a><span class="k">def</span> <span class="nf">no_timestamp_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_timestamp_sql-795"><a href="#no_timestamp_sql-795"><span class="linenos">795</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span> +</span><span id="no_timestamp_sql-796"><a href="#no_timestamp_sql-796"><span class="linenos">796</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="no_timestamp_sql-797"><a href="#no_timestamp_sql-797"><span class="linenos">797</span></a> +</span><span id="no_timestamp_sql-798"><a href="#no_timestamp_sql-798"><span class="linenos">798</span></a> <span class="n">target_type</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span> +</span><span id="no_timestamp_sql-799"><a href="#no_timestamp_sql-799"><span class="linenos">799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">target_type</span><span class="p">))</span> +</span><span id="no_timestamp_sql-800"><a href="#no_timestamp_sql-800"><span class="linenos">800</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">TIMEZONES</span><span class="p">:</span> +</span><span id="no_timestamp_sql-801"><a href="#no_timestamp_sql-801"><span class="linenos">801</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="no_timestamp_sql-802"><a href="#no_timestamp_sql-802"><span class="linenos">802</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">(</span> +</span><span id="no_timestamp_sql-803"><a href="#no_timestamp_sql-803"><span class="linenos">803</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">),</span> +</span><span id="no_timestamp_sql-804"><a href="#no_timestamp_sql-804"><span class="linenos">804</span></a> <span class="n">zone</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> +</span><span id="no_timestamp_sql-805"><a href="#no_timestamp_sql-805"><span class="linenos">805</span></a> <span class="p">)</span> +</span><span id="no_timestamp_sql-806"><a href="#no_timestamp_sql-806"><span class="linenos">806</span></a> <span class="p">)</span> +</span><span id="no_timestamp_sql-807"><a href="#no_timestamp_sql-807"><span class="linenos">807</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4574,10 +4608,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#locate_to_strposition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="locate_to_strposition-808"><a href="#locate_to_strposition-808"><span class="linenos">808</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="locate_to_strposition-809"><a href="#locate_to_strposition-809"><span class="linenos">809</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span> -</span><span id="locate_to_strposition-810"><a href="#locate_to_strposition-810"><span class="linenos">810</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="locate_to_strposition-811"><a href="#locate_to_strposition-811"><span class="linenos">811</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="locate_to_strposition-810"><a href="#locate_to_strposition-810"><span class="linenos">810</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="locate_to_strposition-811"><a href="#locate_to_strposition-811"><span class="linenos">811</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span> +</span><span id="locate_to_strposition-812"><a href="#locate_to_strposition-812"><span class="linenos">812</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="locate_to_strposition-813"><a href="#locate_to_strposition-813"><span class="linenos">813</span></a> <span class="p">)</span> </span></pre></div> @@ -4595,10 +4629,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#strposition_to_locate_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="strposition_to_locate_sql-814"><a href="#strposition_to_locate_sql-814"><span class="linenos">814</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="strposition_to_locate_sql-815"><a href="#strposition_to_locate_sql-815"><span class="linenos">815</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="strposition_to_locate_sql-816"><a href="#strposition_to_locate_sql-816"><span class="linenos">816</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span> -</span><span id="strposition_to_locate_sql-817"><a href="#strposition_to_locate_sql-817"><span class="linenos">817</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="strposition_to_locate_sql-816"><a href="#strposition_to_locate_sql-816"><span class="linenos">816</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="strposition_to_locate_sql-817"><a href="#strposition_to_locate_sql-817"><span class="linenos">817</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="strposition_to_locate_sql-818"><a href="#strposition_to_locate_sql-818"><span class="linenos">818</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span> +</span><span id="strposition_to_locate_sql-819"><a href="#strposition_to_locate_sql-819"><span class="linenos">819</span></a> <span class="p">)</span> </span></pre></div> @@ -4616,12 +4650,12 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#left_to_substring_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="left_to_substring_sql-820"><a href="#left_to_substring_sql-820"><span class="linenos">820</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="left_to_substring_sql-821"><a href="#left_to_substring_sql-821"><span class="linenos">821</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="left_to_substring_sql-822"><a href="#left_to_substring_sql-822"><span class="linenos">822</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> -</span><span id="left_to_substring_sql-823"><a href="#left_to_substring_sql-823"><span class="linenos">823</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="left_to_substring_sql-824"><a href="#left_to_substring_sql-824"><span class="linenos">824</span></a> <span class="p">)</span> -</span><span id="left_to_substring_sql-825"><a href="#left_to_substring_sql-825"><span class="linenos">825</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="left_to_substring_sql-822"><a href="#left_to_substring_sql-822"><span class="linenos">822</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="left_to_substring_sql-823"><a href="#left_to_substring_sql-823"><span class="linenos">823</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="left_to_substring_sql-824"><a href="#left_to_substring_sql-824"><span class="linenos">824</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> +</span><span id="left_to_substring_sql-825"><a href="#left_to_substring_sql-825"><span class="linenos">825</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="left_to_substring_sql-826"><a href="#left_to_substring_sql-826"><span class="linenos">826</span></a> <span class="p">)</span> +</span><span id="left_to_substring_sql-827"><a href="#left_to_substring_sql-827"><span class="linenos">827</span></a> <span class="p">)</span> </span></pre></div> @@ -4639,13 +4673,13 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#right_to_substring_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="right_to_substring_sql-828"><a href="#right_to_substring_sql-828"><span class="linenos">828</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="right_to_substring_sql-829"><a href="#right_to_substring_sql-829"><span class="linenos">829</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="right_to_substring_sql-830"><a href="#right_to_substring_sql-830"><span class="linenos">830</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> -</span><span id="right_to_substring_sql-831"><a href="#right_to_substring_sql-831"><span class="linenos">831</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="right_to_substring_sql-832"><a href="#right_to_substring_sql-832"><span class="linenos">832</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> -</span><span id="right_to_substring_sql-833"><a href="#right_to_substring_sql-833"><span class="linenos">833</span></a> <span class="p">)</span> -</span><span id="right_to_substring_sql-834"><a href="#right_to_substring_sql-834"><span class="linenos">834</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="right_to_substring_sql-830"><a href="#right_to_substring_sql-830"><span class="linenos">830</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="right_to_substring_sql-831"><a href="#right_to_substring_sql-831"><span class="linenos">831</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="right_to_substring_sql-832"><a href="#right_to_substring_sql-832"><span class="linenos">832</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span> +</span><span id="right_to_substring_sql-833"><a href="#right_to_substring_sql-833"><span class="linenos">833</span></a> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="right_to_substring_sql-834"><a href="#right_to_substring_sql-834"><span class="linenos">834</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> +</span><span id="right_to_substring_sql-835"><a href="#right_to_substring_sql-835"><span class="linenos">835</span></a> <span class="p">)</span> +</span><span id="right_to_substring_sql-836"><a href="#right_to_substring_sql-836"><span class="linenos">836</span></a> <span class="p">)</span> </span></pre></div> @@ -4663,8 +4697,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#timestrtotime_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="timestrtotime_sql-837"><a href="#timestrtotime_sql-837"><span class="linenos">837</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="timestrtotime_sql-838"><a href="#timestrtotime_sql-838"><span class="linenos">838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="timestrtotime_sql-839"><a href="#timestrtotime_sql-839"><span class="linenos">839</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="timestrtotime_sql-840"><a href="#timestrtotime_sql-840"><span class="linenos">840</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">))</span> </span></pre></div> @@ -4682,8 +4716,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#datestrtodate_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="datestrtodate_sql-841"><a href="#datestrtodate_sql-841"><span class="linenos">841</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="datestrtodate_sql-842"><a href="#datestrtodate_sql-842"><span class="linenos">842</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="datestrtodate_sql-843"><a href="#datestrtodate_sql-843"><span class="linenos">843</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="datestrtodate_sql-844"><a href="#datestrtodate_sql-844"><span class="linenos">844</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> </span></pre></div> @@ -4701,14 +4735,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#encode_decode_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="encode_decode_sql-846"><a href="#encode_decode_sql-846"><span class="linenos">846</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span> -</span><span id="encode_decode_sql-847"><a href="#encode_decode_sql-847"><span class="linenos">847</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="encode_decode_sql-848"><a href="#encode_decode_sql-848"><span class="linenos">848</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="encode_decode_sql-849"><a href="#encode_decode_sql-849"><span class="linenos">849</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span> -</span><span id="encode_decode_sql-850"><a href="#encode_decode_sql-850"><span class="linenos">850</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span> -</span><span id="encode_decode_sql-851"><a href="#encode_decode_sql-851"><span class="linenos">851</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="encode_decode_sql-852"><a href="#encode_decode_sql-852"><span class="linenos">852</span></a> -</span><span id="encode_decode_sql-853"><a href="#encode_decode_sql-853"><span class="linenos">853</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="encode_decode_sql-848"><a href="#encode_decode_sql-848"><span class="linenos">848</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span> +</span><span id="encode_decode_sql-849"><a href="#encode_decode_sql-849"><span class="linenos">849</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="encode_decode_sql-850"><a href="#encode_decode_sql-850"><span class="linenos">850</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="encode_decode_sql-851"><a href="#encode_decode_sql-851"><span class="linenos">851</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span> +</span><span id="encode_decode_sql-852"><a href="#encode_decode_sql-852"><span class="linenos">852</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span> +</span><span id="encode_decode_sql-853"><a href="#encode_decode_sql-853"><span class="linenos">853</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</span><span id="encode_decode_sql-854"><a href="#encode_decode_sql-854"><span class="linenos">854</span></a> +</span><span id="encode_decode_sql-855"><a href="#encode_decode_sql-855"><span class="linenos">855</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> </span></pre></div> @@ -4726,9 +4760,9 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#min_or_least"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="min_or_least-856"><a href="#min_or_least-856"><span class="linenos">856</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="min_or_least-857"><a href="#min_or_least-857"><span class="linenos">857</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span> -</span><span id="min_or_least-858"><a href="#min_or_least-858"><span class="linenos">858</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="min_or_least-858"><a href="#min_or_least-858"><span class="linenos">858</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="min_or_least-859"><a href="#min_or_least-859"><span class="linenos">859</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span> +</span><span id="min_or_least-860"><a href="#min_or_least-860"><span class="linenos">860</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4746,9 +4780,9 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#max_or_greatest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="max_or_greatest-861"><a href="#max_or_greatest-861"><span class="linenos">861</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="max_or_greatest-862"><a href="#max_or_greatest-862"><span class="linenos">862</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span> -</span><span id="max_or_greatest-863"><a href="#max_or_greatest-863"><span class="linenos">863</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="max_or_greatest-863"><a href="#max_or_greatest-863"><span class="linenos">863</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="max_or_greatest-864"><a href="#max_or_greatest-864"><span class="linenos">864</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span> +</span><span id="max_or_greatest-865"><a href="#max_or_greatest-865"><span class="linenos">865</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4766,14 +4800,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#count_if_to_sum"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="count_if_to_sum-866"><a href="#count_if_to_sum-866"><span class="linenos">866</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="count_if_to_sum-867"><a href="#count_if_to_sum-867"><span class="linenos">867</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="count_if_to_sum-868"><a href="#count_if_to_sum-868"><span class="linenos">868</span></a> -</span><span id="count_if_to_sum-869"><a href="#count_if_to_sum-869"><span class="linenos">869</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span> -</span><span id="count_if_to_sum-870"><a href="#count_if_to_sum-870"><span class="linenos">870</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="count_if_to_sum-871"><a href="#count_if_to_sum-871"><span class="linenos">871</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span> -</span><span id="count_if_to_sum-872"><a href="#count_if_to_sum-872"><span class="linenos">872</span></a> -</span><span id="count_if_to_sum-873"><a href="#count_if_to_sum-873"><span class="linenos">873</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="count_if_to_sum-868"><a href="#count_if_to_sum-868"><span class="linenos">868</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="count_if_to_sum-869"><a href="#count_if_to_sum-869"><span class="linenos">869</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="count_if_to_sum-870"><a href="#count_if_to_sum-870"><span class="linenos">870</span></a> +</span><span id="count_if_to_sum-871"><a href="#count_if_to_sum-871"><span class="linenos">871</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span> +</span><span id="count_if_to_sum-872"><a href="#count_if_to_sum-872"><span class="linenos">872</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="count_if_to_sum-873"><a href="#count_if_to_sum-873"><span class="linenos">873</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span> +</span><span id="count_if_to_sum-874"><a href="#count_if_to_sum-874"><span class="linenos">874</span></a> +</span><span id="count_if_to_sum-875"><a href="#count_if_to_sum-875"><span class="linenos">875</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> </span></pre></div> @@ -4791,21 +4825,21 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#trim_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="trim_sql-876"><a href="#trim_sql-876"><span class="linenos">876</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="trim_sql-877"><a href="#trim_sql-877"><span class="linenos">877</span></a> <span class="n">target</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="trim_sql-878"><a href="#trim_sql-878"><span class="linenos">878</span></a> <span class="n">trim_type</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="trim_sql-879"><a href="#trim_sql-879"><span class="linenos">879</span></a> <span class="n">remove_chars</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="trim_sql-880"><a href="#trim_sql-880"><span class="linenos">880</span></a> <span class="n">collation</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">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span> -</span><span id="trim_sql-881"><a href="#trim_sql-881"><span class="linenos">881</span></a> -</span><span id="trim_sql-882"><a href="#trim_sql-882"><span class="linenos">882</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span> -</span><span id="trim_sql-883"><a href="#trim_sql-883"><span class="linenos">883</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span> -</span><span id="trim_sql-884"><a href="#trim_sql-884"><span class="linenos">884</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="trim_sql-885"><a href="#trim_sql-885"><span class="linenos">885</span></a> -</span><span id="trim_sql-886"><a href="#trim_sql-886"><span class="linenos">886</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="trim_sql-887"><a href="#trim_sql-887"><span class="linenos">887</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="trim_sql-888"><a href="#trim_sql-888"><span class="linenos">888</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="trim_sql-889"><a href="#trim_sql-889"><span class="linenos">889</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="trim_sql-890"><a href="#trim_sql-890"><span class="linenos">890</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="trim_sql-878"><a href="#trim_sql-878"><span class="linenos">878</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="trim_sql-879"><a href="#trim_sql-879"><span class="linenos">879</span></a> <span class="n">target</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="trim_sql-880"><a href="#trim_sql-880"><span class="linenos">880</span></a> <span class="n">trim_type</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">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="trim_sql-881"><a href="#trim_sql-881"><span class="linenos">881</span></a> <span class="n">remove_chars</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">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="trim_sql-882"><a href="#trim_sql-882"><span class="linenos">882</span></a> <span class="n">collation</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">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span> +</span><span id="trim_sql-883"><a href="#trim_sql-883"><span class="linenos">883</span></a> +</span><span id="trim_sql-884"><a href="#trim_sql-884"><span class="linenos">884</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span> +</span><span id="trim_sql-885"><a href="#trim_sql-885"><span class="linenos">885</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span> +</span><span id="trim_sql-886"><a href="#trim_sql-886"><span class="linenos">886</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="trim_sql-887"><a href="#trim_sql-887"><span class="linenos">887</span></a> +</span><span id="trim_sql-888"><a href="#trim_sql-888"><span class="linenos">888</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="trim_sql-889"><a href="#trim_sql-889"><span class="linenos">889</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="trim_sql-890"><a href="#trim_sql-890"><span class="linenos">890</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="trim_sql-891"><a href="#trim_sql-891"><span class="linenos">891</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="trim_sql-892"><a href="#trim_sql-892"><span class="linenos">892</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -4823,8 +4857,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#str_to_time_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="str_to_time_sql-893"><a href="#str_to_time_sql-893"><span class="linenos">893</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="str_to_time_sql-894"><a href="#str_to_time_sql-894"><span class="linenos">894</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="str_to_time_sql-895"><a href="#str_to_time_sql-895"><span class="linenos">895</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="str_to_time_sql-896"><a href="#str_to_time_sql-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> </span></pre></div> @@ -4842,8 +4876,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#concat_to_dpipe_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="concat_to_dpipe_sql-897"><a href="#concat_to_dpipe_sql-897"><span class="linenos">897</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="concat_to_dpipe_sql-898"><a href="#concat_to_dpipe_sql-898"><span class="linenos">898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="concat_to_dpipe_sql-899"><a href="#concat_to_dpipe_sql-899"><span class="linenos">899</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="concat_to_dpipe_sql-900"><a href="#concat_to_dpipe_sql-900"><span class="linenos">900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span> </span></pre></div> @@ -4861,14 +4895,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#concat_ws_to_dpipe_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="concat_ws_to_dpipe_sql-901"><a href="#concat_ws_to_dpipe_sql-901"><span class="linenos">901</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="concat_ws_to_dpipe_sql-902"><a href="#concat_ws_to_dpipe_sql-902"><span class="linenos">902</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="concat_ws_to_dpipe_sql-903"><a href="#concat_ws_to_dpipe_sql-903"><span class="linenos">903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> -</span><span id="concat_ws_to_dpipe_sql-904"><a href="#concat_ws_to_dpipe_sql-904"><span class="linenos">904</span></a> <span class="n">reduce</span><span class="p">(</span> -</span><span id="concat_ws_to_dpipe_sql-905"><a href="#concat_ws_to_dpipe_sql-905"><span class="linenos">905</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span> -</span><span id="concat_ws_to_dpipe_sql-906"><a href="#concat_ws_to_dpipe_sql-906"><span class="linenos">906</span></a> <span class="n">rest_args</span><span class="p">,</span> -</span><span id="concat_ws_to_dpipe_sql-907"><a href="#concat_ws_to_dpipe_sql-907"><span class="linenos">907</span></a> <span class="p">)</span> -</span><span id="concat_ws_to_dpipe_sql-908"><a href="#concat_ws_to_dpipe_sql-908"><span class="linenos">908</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="concat_ws_to_dpipe_sql-903"><a href="#concat_ws_to_dpipe_sql-903"><span class="linenos">903</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="concat_ws_to_dpipe_sql-904"><a href="#concat_ws_to_dpipe_sql-904"><span class="linenos">904</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="concat_ws_to_dpipe_sql-905"><a href="#concat_ws_to_dpipe_sql-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span> +</span><span id="concat_ws_to_dpipe_sql-906"><a href="#concat_ws_to_dpipe_sql-906"><span class="linenos">906</span></a> <span class="n">reduce</span><span class="p">(</span> +</span><span id="concat_ws_to_dpipe_sql-907"><a href="#concat_ws_to_dpipe_sql-907"><span class="linenos">907</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span> +</span><span id="concat_ws_to_dpipe_sql-908"><a href="#concat_ws_to_dpipe_sql-908"><span class="linenos">908</span></a> <span class="n">rest_args</span><span class="p">,</span> +</span><span id="concat_ws_to_dpipe_sql-909"><a href="#concat_ws_to_dpipe_sql-909"><span class="linenos">909</span></a> <span class="p">)</span> +</span><span id="concat_ws_to_dpipe_sql-910"><a href="#concat_ws_to_dpipe_sql-910"><span class="linenos">910</span></a> <span class="p">)</span> </span></pre></div> @@ -4886,14 +4920,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#regexp_extract_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="regexp_extract_sql-911"><a href="#regexp_extract_sql-911"><span class="linenos">911</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="regexp_extract_sql-912"><a href="#regexp_extract_sql-912"><span class="linenos">912</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span> -</span><span id="regexp_extract_sql-913"><a href="#regexp_extract_sql-913"><span class="linenos">913</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> -</span><span id="regexp_extract_sql-914"><a href="#regexp_extract_sql-914"><span class="linenos">914</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="regexp_extract_sql-915"><a href="#regexp_extract_sql-915"><span class="linenos">915</span></a> -</span><span id="regexp_extract_sql-916"><a href="#regexp_extract_sql-916"><span class="linenos">916</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="regexp_extract_sql-917"><a href="#regexp_extract_sql-917"><span class="linenos">917</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span> -</span><span id="regexp_extract_sql-918"><a href="#regexp_extract_sql-918"><span class="linenos">918</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="regexp_extract_sql-913"><a href="#regexp_extract_sql-913"><span class="linenos">913</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="regexp_extract_sql-914"><a href="#regexp_extract_sql-914"><span class="linenos">914</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span> +</span><span id="regexp_extract_sql-915"><a href="#regexp_extract_sql-915"><span class="linenos">915</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> +</span><span id="regexp_extract_sql-916"><a href="#regexp_extract_sql-916"><span class="linenos">916</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="regexp_extract_sql-917"><a href="#regexp_extract_sql-917"><span class="linenos">917</span></a> +</span><span id="regexp_extract_sql-918"><a href="#regexp_extract_sql-918"><span class="linenos">918</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="regexp_extract_sql-919"><a href="#regexp_extract_sql-919"><span class="linenos">919</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span> +</span><span id="regexp_extract_sql-920"><a href="#regexp_extract_sql-920"><span class="linenos">920</span></a> <span class="p">)</span> </span></pre></div> @@ -4911,14 +4945,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#regexp_replace_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="regexp_replace_sql-921"><a href="#regexp_replace_sql-921"><span class="linenos">921</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="regexp_replace_sql-922"><a href="#regexp_replace_sql-922"><span class="linenos">922</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"modifiers"</span><span class="p">)))</span> -</span><span id="regexp_replace_sql-923"><a href="#regexp_replace_sql-923"><span class="linenos">923</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> -</span><span id="regexp_replace_sql-924"><a href="#regexp_replace_sql-924"><span class="linenos">924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="regexp_replace_sql-925"><a href="#regexp_replace_sql-925"><span class="linenos">925</span></a> -</span><span id="regexp_replace_sql-926"><a href="#regexp_replace_sql-926"><span class="linenos">926</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="regexp_replace_sql-927"><a href="#regexp_replace_sql-927"><span class="linenos">927</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span> -</span><span id="regexp_replace_sql-928"><a href="#regexp_replace_sql-928"><span class="linenos">928</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="regexp_replace_sql-923"><a href="#regexp_replace_sql-923"><span class="linenos">923</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="regexp_replace_sql-924"><a href="#regexp_replace_sql-924"><span class="linenos">924</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"modifiers"</span><span class="p">)))</span> +</span><span id="regexp_replace_sql-925"><a href="#regexp_replace_sql-925"><span class="linenos">925</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> +</span><span id="regexp_replace_sql-926"><a href="#regexp_replace_sql-926"><span class="linenos">926</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="regexp_replace_sql-927"><a href="#regexp_replace_sql-927"><span class="linenos">927</span></a> +</span><span id="regexp_replace_sql-928"><a href="#regexp_replace_sql-928"><span class="linenos">928</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="regexp_replace_sql-929"><a href="#regexp_replace_sql-929"><span class="linenos">929</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span> +</span><span id="regexp_replace_sql-930"><a href="#regexp_replace_sql-930"><span class="linenos">930</span></a> <span class="p">)</span> </span></pre></div> @@ -4936,28 +4970,28 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#pivot_column_names"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="pivot_column_names-931"><a href="#pivot_column_names-931"><span class="linenos">931</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></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="pivot_column_names-932"><a href="#pivot_column_names-932"><span class="linenos">932</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="pivot_column_names-933"><a href="#pivot_column_names-933"><span class="linenos">933</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span> -</span><span id="pivot_column_names-934"><a href="#pivot_column_names-934"><span class="linenos">934</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> -</span><span id="pivot_column_names-935"><a href="#pivot_column_names-935"><span class="linenos">935</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span> -</span><span id="pivot_column_names-936"><a href="#pivot_column_names-936"><span class="linenos">936</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="pivot_column_names-937"><a href="#pivot_column_names-937"><span class="linenos">937</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="pivot_column_names-938"><a href="#pivot_column_names-938"><span class="linenos">938</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span> -</span><span id="pivot_column_names-939"><a href="#pivot_column_names-939"><span class="linenos">939</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span> -</span><span id="pivot_column_names-940"><a href="#pivot_column_names-940"><span class="linenos">940</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span> -</span><span id="pivot_column_names-941"><a href="#pivot_column_names-941"><span class="linenos">941</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span> -</span><span id="pivot_column_names-942"><a href="#pivot_column_names-942"><span class="linenos">942</span></a><span class="sd"> """</span> -</span><span id="pivot_column_names-943"><a href="#pivot_column_names-943"><span class="linenos">943</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="pivot_column_names-944"><a href="#pivot_column_names-944"><span class="linenos">944</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> -</span><span id="pivot_column_names-945"><a href="#pivot_column_names-945"><span class="linenos">945</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="pivot_column_names-946"><a href="#pivot_column_names-946"><span class="linenos">946</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="pivot_column_names-947"><a href="#pivot_column_names-947"><span class="linenos">947</span></a> <span class="k">else</span> <span class="n">node</span> -</span><span id="pivot_column_names-948"><a href="#pivot_column_names-948"><span class="linenos">948</span></a> <span class="p">)</span> -</span><span id="pivot_column_names-949"><a href="#pivot_column_names-949"><span class="linenos">949</span></a> <span class="p">)</span> -</span><span id="pivot_column_names-950"><a href="#pivot_column_names-950"><span class="linenos">950</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</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">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span> -</span><span id="pivot_column_names-951"><a href="#pivot_column_names-951"><span class="linenos">951</span></a> -</span><span id="pivot_column_names-952"><a href="#pivot_column_names-952"><span class="linenos">952</span></a> <span class="k">return</span> <span class="n">names</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="pivot_column_names-933"><a href="#pivot_column_names-933"><span class="linenos">933</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">)</span> <span class="o">-></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="pivot_column_names-934"><a href="#pivot_column_names-934"><span class="linenos">934</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="pivot_column_names-935"><a href="#pivot_column_names-935"><span class="linenos">935</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span> +</span><span id="pivot_column_names-936"><a href="#pivot_column_names-936"><span class="linenos">936</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> +</span><span id="pivot_column_names-937"><a href="#pivot_column_names-937"><span class="linenos">937</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span> +</span><span id="pivot_column_names-938"><a href="#pivot_column_names-938"><span class="linenos">938</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="pivot_column_names-939"><a href="#pivot_column_names-939"><span class="linenos">939</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="pivot_column_names-940"><a href="#pivot_column_names-940"><span class="linenos">940</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span> +</span><span id="pivot_column_names-941"><a href="#pivot_column_names-941"><span class="linenos">941</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span> +</span><span id="pivot_column_names-942"><a href="#pivot_column_names-942"><span class="linenos">942</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span> +</span><span id="pivot_column_names-943"><a href="#pivot_column_names-943"><span class="linenos">943</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span> +</span><span id="pivot_column_names-944"><a href="#pivot_column_names-944"><span class="linenos">944</span></a><span class="sd"> """</span> +</span><span id="pivot_column_names-945"><a href="#pivot_column_names-945"><span class="linenos">945</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="pivot_column_names-946"><a href="#pivot_column_names-946"><span class="linenos">946</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> +</span><span id="pivot_column_names-947"><a href="#pivot_column_names-947"><span class="linenos">947</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="pivot_column_names-948"><a href="#pivot_column_names-948"><span class="linenos">948</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="pivot_column_names-949"><a href="#pivot_column_names-949"><span class="linenos">949</span></a> <span class="k">else</span> <span class="n">node</span> +</span><span id="pivot_column_names-950"><a href="#pivot_column_names-950"><span class="linenos">950</span></a> <span class="p">)</span> +</span><span id="pivot_column_names-951"><a href="#pivot_column_names-951"><span class="linenos">951</span></a> <span class="p">)</span> +</span><span id="pivot_column_names-952"><a href="#pivot_column_names-952"><span class="linenos">952</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</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">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span> +</span><span id="pivot_column_names-953"><a href="#pivot_column_names-953"><span class="linenos">953</span></a> +</span><span id="pivot_column_names-954"><a href="#pivot_column_names-954"><span class="linenos">954</span></a> <span class="k">return</span> <span class="n">names</span> </span></pre></div> @@ -4975,8 +5009,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#binary_from_function"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="binary_from_function-955"><a href="#binary_from_function-955"><span class="linenos">955</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span> -</span><span id="binary_from_function-956"><a href="#binary_from_function-956"><span class="linenos">956</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="binary_from_function-957"><a href="#binary_from_function-957"><span class="linenos">957</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span> +</span><span id="binary_from_function-958"><a href="#binary_from_function-958"><span class="linenos">958</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> </span></pre></div> @@ -4994,8 +5028,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#build_timestamp_trunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="build_timestamp_trunc-960"><a href="#build_timestamp_trunc-960"><span class="linenos">960</span></a><span class="k">def</span> <span class="nf">build_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> -</span><span id="build_timestamp_trunc-961"><a href="#build_timestamp_trunc-961"><span class="linenos">961</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="build_timestamp_trunc-962"><a href="#build_timestamp_trunc-962"><span class="linenos">962</span></a><span class="k">def</span> <span class="nf">build_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> +</span><span id="build_timestamp_trunc-963"><a href="#build_timestamp_trunc-963"><span class="linenos">963</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> </span></pre></div> @@ -5013,8 +5047,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#any_value_to_max_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="any_value_to_max_sql-964"><a href="#any_value_to_max_sql-964"><span class="linenos">964</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="any_value_to_max_sql-965"><a href="#any_value_to_max_sql-965"><span class="linenos">965</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="any_value_to_max_sql-966"><a href="#any_value_to_max_sql-966"><span class="linenos">966</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="any_value_to_max_sql-967"><a href="#any_value_to_max_sql-967"><span class="linenos">967</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span></pre></div> @@ -5032,10 +5066,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#bool_xor_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="bool_xor_sql-968"><a href="#bool_xor_sql-968"><span class="linenos">968</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="bool_xor_sql-969"><a href="#bool_xor_sql-969"><span class="linenos">969</span></a> <span class="n">a</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">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span> -</span><span id="bool_xor_sql-970"><a href="#bool_xor_sql-970"><span class="linenos">970</span></a> <span class="n">b</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">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span> -</span><span id="bool_xor_sql-971"><a href="#bool_xor_sql-971"><span class="linenos">971</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="bool_xor_sql-970"><a href="#bool_xor_sql-970"><span class="linenos">970</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="bool_xor_sql-971"><a href="#bool_xor_sql-971"><span class="linenos">971</span></a> <span class="n">a</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">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span> +</span><span id="bool_xor_sql-972"><a href="#bool_xor_sql-972"><span class="linenos">972</span></a> <span class="n">b</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">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span> +</span><span id="bool_xor_sql-973"><a href="#bool_xor_sql-973"><span class="linenos">973</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -5053,10 +5087,10 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#is_parse_json"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="is_parse_json-974"><a href="#is_parse_json-974"><span class="linenos">974</span></a><span class="k">def</span> <span class="nf">is_parse_json</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="is_parse_json-975"><a href="#is_parse_json-975"><span class="linenos">975</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="is_parse_json-976"><a href="#is_parse_json-976"><span class="linenos">976</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span> -</span><span id="is_parse_json-977"><a href="#is_parse_json-977"><span class="linenos">977</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="is_parse_json-976"><a href="#is_parse_json-976"><span class="linenos">976</span></a><span class="k">def</span> <span class="nf">is_parse_json</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="is_parse_json-977"><a href="#is_parse_json-977"><span class="linenos">977</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="is_parse_json-978"><a href="#is_parse_json-978"><span class="linenos">978</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span> +</span><span id="is_parse_json-979"><a href="#is_parse_json-979"><span class="linenos">979</span></a> <span class="p">)</span> </span></pre></div> @@ -5074,8 +5108,8 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#isnull_to_is_null"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="isnull_to_is_null-980"><a href="#isnull_to_is_null-980"><span class="linenos">980</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="isnull_to_is_null-981"><a href="#isnull_to_is_null-981"><span class="linenos">981</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="isnull_to_is_null-982"><a href="#isnull_to_is_null-982"><span class="linenos">982</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="isnull_to_is_null-983"><a href="#isnull_to_is_null-983"><span class="linenos">983</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span> </span></pre></div> @@ -5093,12 +5127,12 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#generatedasidentitycolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="generatedasidentitycolumnconstraint_sql-984"><a href="#generatedasidentitycolumnconstraint_sql-984"><span class="linenos">984</span></a><span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="generatedasidentitycolumnconstraint_sql-985"><a href="#generatedasidentitycolumnconstraint_sql-985"><span class="linenos">985</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> -</span><span id="generatedasidentitycolumnconstraint_sql-986"><a href="#generatedasidentitycolumnconstraint_sql-986"><span class="linenos">986</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="generatedasidentitycolumnconstraint_sql-987"><a href="#generatedasidentitycolumnconstraint_sql-987"><span class="linenos">987</span></a> <span class="n">start</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">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> -</span><span id="generatedasidentitycolumnconstraint_sql-988"><a href="#generatedasidentitycolumnconstraint_sql-988"><span class="linenos">988</span></a> <span class="n">increment</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">expression</span><span class="p">,</span> <span class="s2">"increment"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> -</span><span id="generatedasidentitycolumnconstraint_sql-989"><a href="#generatedasidentitycolumnconstraint_sql-989"><span class="linenos">989</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IDENTITY(</span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="generatedasidentitycolumnconstraint_sql-986"><a href="#generatedasidentitycolumnconstraint_sql-986"><span class="linenos">986</span></a><span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="generatedasidentitycolumnconstraint_sql-987"><a href="#generatedasidentitycolumnconstraint_sql-987"><span class="linenos">987</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> +</span><span id="generatedasidentitycolumnconstraint_sql-988"><a href="#generatedasidentitycolumnconstraint_sql-988"><span class="linenos">988</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="generatedasidentitycolumnconstraint_sql-989"><a href="#generatedasidentitycolumnconstraint_sql-989"><span class="linenos">989</span></a> <span class="n">start</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">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> +</span><span id="generatedasidentitycolumnconstraint_sql-990"><a href="#generatedasidentitycolumnconstraint_sql-990"><span class="linenos">990</span></a> <span class="n">increment</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">expression</span><span class="p">,</span> <span class="s2">"increment"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span> +</span><span id="generatedasidentitycolumnconstraint_sql-991"><a href="#generatedasidentitycolumnconstraint_sql-991"><span class="linenos">991</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IDENTITY(</span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -5116,14 +5150,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#arg_max_or_min_no_count"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="arg_max_or_min_no_count-992"><a href="#arg_max_or_min_no_count-992"><span class="linenos">992</span></a><span class="k">def</span> <span class="nf">arg_max_or_min_no_count</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="arg_max_or_min_no_count-993"><a href="#arg_max_or_min_no_count-993"><span class="linenos">993</span></a> <span class="k">def</span> <span class="nf">_arg_max_or_min_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="arg_max_or_min_no_count-994"><a href="#arg_max_or_min_no_count-994"><span class="linenos">994</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"count"</span><span class="p">):</span> -</span><span id="arg_max_or_min_no_count-995"><a href="#arg_max_or_min_no_count-995"><span class="linenos">995</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Only two arguments are supported in function </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="arg_max_or_min_no_count-996"><a href="#arg_max_or_min_no_count-996"><span class="linenos">996</span></a> -</span><span id="arg_max_or_min_no_count-997"><a href="#arg_max_or_min_no_count-997"><span class="linenos">997</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="arg_max_or_min_no_count-998"><a href="#arg_max_or_min_no_count-998"><span class="linenos">998</span></a> -</span><span id="arg_max_or_min_no_count-999"><a href="#arg_max_or_min_no_count-999"><span class="linenos">999</span></a> <span class="k">return</span> <span class="n">_arg_max_or_min_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="arg_max_or_min_no_count-994"><a href="#arg_max_or_min_no_count-994"><span class="linenos"> 994</span></a><span class="k">def</span> <span class="nf">arg_max_or_min_no_count</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="arg_max_or_min_no_count-995"><a href="#arg_max_or_min_no_count-995"><span class="linenos"> 995</span></a> <span class="k">def</span> <span class="nf">_arg_max_or_min_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="arg_max_or_min_no_count-996"><a href="#arg_max_or_min_no_count-996"><span class="linenos"> 996</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"count"</span><span class="p">):</span> +</span><span id="arg_max_or_min_no_count-997"><a href="#arg_max_or_min_no_count-997"><span class="linenos"> 997</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Only two arguments are supported in function </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</span><span id="arg_max_or_min_no_count-998"><a href="#arg_max_or_min_no_count-998"><span class="linenos"> 998</span></a> +</span><span id="arg_max_or_min_no_count-999"><a href="#arg_max_or_min_no_count-999"><span class="linenos"> 999</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="arg_max_or_min_no_count-1000"><a href="#arg_max_or_min_no_count-1000"><span class="linenos">1000</span></a> +</span><span id="arg_max_or_min_no_count-1001"><a href="#arg_max_or_min_no_count-1001"><span class="linenos">1001</span></a> <span class="k">return</span> <span class="n">_arg_max_or_min_sql</span> </span></pre></div> @@ -5141,17 +5175,17 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#ts_or_ds_add_cast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ts_or_ds_add_cast-1002"><a href="#ts_or_ds_add_cast-1002"><span class="linenos">1002</span></a><span class="k">def</span> <span class="nf">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> -</span><span id="ts_or_ds_add_cast-1003"><a href="#ts_or_ds_add_cast-1003"><span class="linenos">1003</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="ts_or_ds_add_cast-1004"><a href="#ts_or_ds_add_cast-1004"><span class="linenos">1004</span></a> -</span><span id="ts_or_ds_add_cast-1005"><a href="#ts_or_ds_add_cast-1005"><span class="linenos">1005</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">return_type</span> -</span><span id="ts_or_ds_add_cast-1006"><a href="#ts_or_ds_add_cast-1006"><span class="linenos">1006</span></a> <span class="k">if</span> <span class="n">return_type</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">):</span> -</span><span id="ts_or_ds_add_cast-1007"><a href="#ts_or_ds_add_cast-1007"><span class="linenos">1007</span></a> <span class="c1"># If we need to cast to a DATE, we cast to TIMESTAMP first to make sure we</span> -</span><span id="ts_or_ds_add_cast-1008"><a href="#ts_or_ds_add_cast-1008"><span class="linenos">1008</span></a> <span class="c1"># can truncate timestamp strings, because some dialects can't cast them to DATE</span> -</span><span id="ts_or_ds_add_cast-1009"><a href="#ts_or_ds_add_cast-1009"><span class="linenos">1009</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">)</span> -</span><span id="ts_or_ds_add_cast-1010"><a href="#ts_or_ds_add_cast-1010"><span class="linenos">1010</span></a> -</span><span id="ts_or_ds_add_cast-1011"><a href="#ts_or_ds_add_cast-1011"><span class="linenos">1011</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">return_type</span><span class="p">))</span> -</span><span id="ts_or_ds_add_cast-1012"><a href="#ts_or_ds_add_cast-1012"><span class="linenos">1012</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ts_or_ds_add_cast-1004"><a href="#ts_or_ds_add_cast-1004"><span class="linenos">1004</span></a><span class="k">def</span> <span class="nf">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> +</span><span id="ts_or_ds_add_cast-1005"><a href="#ts_or_ds_add_cast-1005"><span class="linenos">1005</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="ts_or_ds_add_cast-1006"><a href="#ts_or_ds_add_cast-1006"><span class="linenos">1006</span></a> +</span><span id="ts_or_ds_add_cast-1007"><a href="#ts_or_ds_add_cast-1007"><span class="linenos">1007</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">return_type</span> +</span><span id="ts_or_ds_add_cast-1008"><a href="#ts_or_ds_add_cast-1008"><span class="linenos">1008</span></a> <span class="k">if</span> <span class="n">return_type</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">):</span> +</span><span id="ts_or_ds_add_cast-1009"><a href="#ts_or_ds_add_cast-1009"><span class="linenos">1009</span></a> <span class="c1"># If we need to cast to a DATE, we cast to TIMESTAMP first to make sure we</span> +</span><span id="ts_or_ds_add_cast-1010"><a href="#ts_or_ds_add_cast-1010"><span class="linenos">1010</span></a> <span class="c1"># can truncate timestamp strings, because some dialects can't cast them to DATE</span> +</span><span id="ts_or_ds_add_cast-1011"><a href="#ts_or_ds_add_cast-1011"><span class="linenos">1011</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">)</span> +</span><span id="ts_or_ds_add_cast-1012"><a href="#ts_or_ds_add_cast-1012"><span class="linenos">1012</span></a> +</span><span id="ts_or_ds_add_cast-1013"><a href="#ts_or_ds_add_cast-1013"><span class="linenos">1013</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">return_type</span><span class="p">))</span> +</span><span id="ts_or_ds_add_cast-1014"><a href="#ts_or_ds_add_cast-1014"><span class="linenos">1014</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -5169,19 +5203,19 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#date_delta_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="date_delta_sql-1015"><a href="#date_delta_sql-1015"><span class="linenos">1015</span></a><span class="k">def</span> <span class="nf">date_delta_sql</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="n">cast</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="date_delta_sql-1016"><a href="#date_delta_sql-1016"><span class="linenos">1016</span></a> <span class="k">def</span> <span class="nf">_delta_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="date_delta_sql-1017"><a href="#date_delta_sql-1017"><span class="linenos">1017</span></a> <span class="k">if</span> <span class="n">cast</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">):</span> -</span><span id="date_delta_sql-1018"><a href="#date_delta_sql-1018"><span class="linenos">1018</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="date_delta_sql-1019"><a href="#date_delta_sql-1019"><span class="linenos">1019</span></a> -</span><span id="date_delta_sql-1020"><a href="#date_delta_sql-1020"><span class="linenos">1020</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="date_delta_sql-1021"><a href="#date_delta_sql-1021"><span class="linenos">1021</span></a> <span class="n">name</span><span class="p">,</span> -</span><span id="date_delta_sql-1022"><a href="#date_delta_sql-1022"><span class="linenos">1022</span></a> <span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> -</span><span id="date_delta_sql-1023"><a href="#date_delta_sql-1023"><span class="linenos">1023</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> -</span><span id="date_delta_sql-1024"><a href="#date_delta_sql-1024"><span class="linenos">1024</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="date_delta_sql-1025"><a href="#date_delta_sql-1025"><span class="linenos">1025</span></a> <span class="p">)</span> -</span><span id="date_delta_sql-1026"><a href="#date_delta_sql-1026"><span class="linenos">1026</span></a> -</span><span id="date_delta_sql-1027"><a href="#date_delta_sql-1027"><span class="linenos">1027</span></a> <span class="k">return</span> <span class="n">_delta_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="date_delta_sql-1017"><a href="#date_delta_sql-1017"><span class="linenos">1017</span></a><span class="k">def</span> <span class="nf">date_delta_sql</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="n">cast</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="date_delta_sql-1018"><a href="#date_delta_sql-1018"><span class="linenos">1018</span></a> <span class="k">def</span> <span class="nf">_delta_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">DATE_ADD_OR_DIFF</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="date_delta_sql-1019"><a href="#date_delta_sql-1019"><span class="linenos">1019</span></a> <span class="k">if</span> <span class="n">cast</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">):</span> +</span><span id="date_delta_sql-1020"><a href="#date_delta_sql-1020"><span class="linenos">1020</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">ts_or_ds_add_cast</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="date_delta_sql-1021"><a href="#date_delta_sql-1021"><span class="linenos">1021</span></a> +</span><span id="date_delta_sql-1022"><a href="#date_delta_sql-1022"><span class="linenos">1022</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="date_delta_sql-1023"><a href="#date_delta_sql-1023"><span class="linenos">1023</span></a> <span class="n">name</span><span class="p">,</span> +</span><span id="date_delta_sql-1024"><a href="#date_delta_sql-1024"><span class="linenos">1024</span></a> <span class="n">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> +</span><span id="date_delta_sql-1025"><a href="#date_delta_sql-1025"><span class="linenos">1025</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> +</span><span id="date_delta_sql-1026"><a href="#date_delta_sql-1026"><span class="linenos">1026</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="date_delta_sql-1027"><a href="#date_delta_sql-1027"><span class="linenos">1027</span></a> <span class="p">)</span> +</span><span id="date_delta_sql-1028"><a href="#date_delta_sql-1028"><span class="linenos">1028</span></a> +</span><span id="date_delta_sql-1029"><a href="#date_delta_sql-1029"><span class="linenos">1029</span></a> <span class="k">return</span> <span class="n">_delta_sql</span> </span></pre></div> @@ -5199,14 +5233,14 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#unit_to_str"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="unit_to_str-1030"><a href="#unit_to_str-1030"><span class="linenos">1030</span></a><span class="k">def</span> <span class="nf">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="unit_to_str-1031"><a href="#unit_to_str-1031"><span class="linenos">1031</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="unit_to_str-1032"><a href="#unit_to_str-1032"><span class="linenos">1032</span></a> -</span><span id="unit_to_str-1033"><a href="#unit_to_str-1033"><span class="linenos">1033</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">):</span> -</span><span id="unit_to_str-1034"><a href="#unit_to_str-1034"><span class="linenos">1034</span></a> <span class="k">return</span> <span class="n">unit</span> -</span><span id="unit_to_str-1035"><a href="#unit_to_str-1035"><span class="linenos">1035</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> -</span><span id="unit_to_str-1036"><a href="#unit_to_str-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="unit_to_str-1037"><a href="#unit_to_str-1037"><span class="linenos">1037</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="unit_to_str-1032"><a href="#unit_to_str-1032"><span class="linenos">1032</span></a><span class="k">def</span> <span class="nf">unit_to_str</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="unit_to_str-1033"><a href="#unit_to_str-1033"><span class="linenos">1033</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="unit_to_str-1034"><a href="#unit_to_str-1034"><span class="linenos">1034</span></a> +</span><span id="unit_to_str-1035"><a href="#unit_to_str-1035"><span class="linenos">1035</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">):</span> +</span><span id="unit_to_str-1036"><a href="#unit_to_str-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="n">unit</span> +</span><span id="unit_to_str-1037"><a href="#unit_to_str-1037"><span class="linenos">1037</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> +</span><span id="unit_to_str-1038"><a href="#unit_to_str-1038"><span class="linenos">1038</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="unit_to_str-1039"><a href="#unit_to_str-1039"><span class="linenos">1039</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> </span></pre></div> @@ -5224,12 +5258,12 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#unit_to_var"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="unit_to_var-1040"><a href="#unit_to_var-1040"><span class="linenos">1040</span></a><span class="k">def</span> <span class="nf">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="unit_to_var-1041"><a href="#unit_to_var-1041"><span class="linenos">1041</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="unit_to_var-1042"><a href="#unit_to_var-1042"><span class="linenos">1042</span></a> -</span><span id="unit_to_var-1043"><a href="#unit_to_var-1043"><span class="linenos">1043</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)):</span> -</span><span id="unit_to_var-1044"><a href="#unit_to_var-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="n">unit</span> -</span><span id="unit_to_var-1045"><a href="#unit_to_var-1045"><span class="linenos">1045</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="unit_to_var-1042"><a href="#unit_to_var-1042"><span class="linenos">1042</span></a><span class="k">def</span> <span class="nf">unit_to_var</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"DAY"</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="unit_to_var-1043"><a href="#unit_to_var-1043"><span class="linenos">1043</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="unit_to_var-1044"><a href="#unit_to_var-1044"><span class="linenos">1044</span></a> +</span><span id="unit_to_var-1045"><a href="#unit_to_var-1045"><span class="linenos">1045</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)):</span> +</span><span id="unit_to_var-1046"><a href="#unit_to_var-1046"><span class="linenos">1046</span></a> <span class="k">return</span> <span class="n">unit</span> +</span><span id="unit_to_var-1047"><a href="#unit_to_var-1047"><span class="linenos">1047</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> <span class="k">if</span> <span class="n">default</span> <span class="k">else</span> <span class="kc">None</span> </span></pre></div> @@ -5247,12 +5281,12 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#no_last_day_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="no_last_day_sql-1048"><a href="#no_last_day_sql-1048"><span class="linenos">1048</span></a><span class="k">def</span> <span class="nf">no_last_day_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="no_last_day_sql-1049"><a href="#no_last_day_sql-1049"><span class="linenos">1049</span></a> <span class="n">trunc_curr_date</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_trunc"</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="no_last_day_sql-1050"><a href="#no_last_day_sql-1050"><span class="linenos">1050</span></a> <span class="n">plus_one_month</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_add"</span><span class="p">,</span> <span class="n">trunc_curr_date</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">)</span> -</span><span id="no_last_day_sql-1051"><a href="#no_last_day_sql-1051"><span class="linenos">1051</span></a> <span class="n">minus_one_day</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_sub"</span><span class="p">,</span> <span class="n">plus_one_month</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">)</span> -</span><span id="no_last_day_sql-1052"><a href="#no_last_day_sql-1052"><span class="linenos">1052</span></a> -</span><span id="no_last_day_sql-1053"><a href="#no_last_day_sql-1053"><span class="linenos">1053</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">minus_one_day</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="no_last_day_sql-1050"><a href="#no_last_day_sql-1050"><span class="linenos">1050</span></a><span class="k">def</span> <span class="nf">no_last_day_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="no_last_day_sql-1051"><a href="#no_last_day_sql-1051"><span class="linenos">1051</span></a> <span class="n">trunc_curr_date</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_trunc"</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="no_last_day_sql-1052"><a href="#no_last_day_sql-1052"><span class="linenos">1052</span></a> <span class="n">plus_one_month</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_add"</span><span class="p">,</span> <span class="n">trunc_curr_date</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">)</span> +</span><span id="no_last_day_sql-1053"><a href="#no_last_day_sql-1053"><span class="linenos">1053</span></a> <span class="n">minus_one_day</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"date_sub"</span><span class="p">,</span> <span class="n">plus_one_month</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">)</span> +</span><span id="no_last_day_sql-1054"><a href="#no_last_day_sql-1054"><span class="linenos">1054</span></a> +</span><span id="no_last_day_sql-1055"><a href="#no_last_day_sql-1055"><span class="linenos">1055</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">minus_one_day</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">))</span> </span></pre></div> @@ -5270,29 +5304,29 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#merge_without_target_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="merge_without_target_sql-1056"><a href="#merge_without_target_sql-1056"><span class="linenos">1056</span></a><span class="k">def</span> <span class="nf">merge_without_target_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="merge_without_target_sql-1057"><a href="#merge_without_target_sql-1057"><span class="linenos">1057</span></a><span class="w"> </span><span class="sd">"""Remove table refs from columns in when statements."""</span> -</span><span id="merge_without_target_sql-1058"><a href="#merge_without_target_sql-1058"><span class="linenos">1058</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> -</span><span id="merge_without_target_sql-1059"><a href="#merge_without_target_sql-1059"><span class="linenos">1059</span></a> -</span><span id="merge_without_target_sql-1060"><a href="#merge_without_target_sql-1060"><span class="linenos">1060</span></a> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">identifier</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">])</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="nb">str</span><span class="p">]:</span> -</span><span id="merge_without_target_sql-1061"><a href="#merge_without_target_sql-1061"><span class="linenos">1061</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</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 class="k">if</span> <span class="n">identifier</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="merge_without_target_sql-1062"><a href="#merge_without_target_sql-1062"><span class="linenos">1062</span></a> -</span><span id="merge_without_target_sql-1063"><a href="#merge_without_target_sql-1063"><span class="linenos">1063</span></a> <span class="n">targets</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="merge_without_target_sql-1058"><a href="#merge_without_target_sql-1058"><span class="linenos">1058</span></a><span class="k">def</span> <span class="nf">merge_without_target_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="merge_without_target_sql-1059"><a href="#merge_without_target_sql-1059"><span class="linenos">1059</span></a><span class="w"> </span><span class="sd">"""Remove table refs from columns in when statements."""</span> +</span><span id="merge_without_target_sql-1060"><a href="#merge_without_target_sql-1060"><span class="linenos">1060</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="merge_without_target_sql-1061"><a href="#merge_without_target_sql-1061"><span class="linenos">1061</span></a> +</span><span id="merge_without_target_sql-1062"><a href="#merge_without_target_sql-1062"><span class="linenos">1062</span></a> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">identifier</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">])</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="nb">str</span><span class="p">]:</span> +</span><span id="merge_without_target_sql-1063"><a href="#merge_without_target_sql-1063"><span class="linenos">1063</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</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 class="k">if</span> <span class="n">identifier</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="merge_without_target_sql-1064"><a href="#merge_without_target_sql-1064"><span class="linenos">1064</span></a> -</span><span id="merge_without_target_sql-1065"><a href="#merge_without_target_sql-1065"><span class="linenos">1065</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="merge_without_target_sql-1066"><a href="#merge_without_target_sql-1066"><span class="linenos">1066</span></a> <span class="n">targets</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">))</span> -</span><span id="merge_without_target_sql-1067"><a href="#merge_without_target_sql-1067"><span class="linenos">1067</span></a> -</span><span id="merge_without_target_sql-1068"><a href="#merge_without_target_sql-1068"><span class="linenos">1068</span></a> <span class="k">for</span> <span class="n">when</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="merge_without_target_sql-1069"><a href="#merge_without_target_sql-1069"><span class="linenos">1069</span></a> <span class="n">when</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="merge_without_target_sql-1070"><a href="#merge_without_target_sql-1070"><span class="linenos">1070</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> -</span><span id="merge_without_target_sql-1071"><a href="#merge_without_target_sql-1071"><span class="linenos">1071</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="merge_without_target_sql-1072"><a href="#merge_without_target_sql-1072"><span class="linenos">1072</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="n">normalize</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">))</span> <span class="ow">in</span> <span class="n">targets</span> -</span><span id="merge_without_target_sql-1073"><a href="#merge_without_target_sql-1073"><span class="linenos">1073</span></a> <span class="k">else</span> <span class="n">node</span> -</span><span id="merge_without_target_sql-1074"><a href="#merge_without_target_sql-1074"><span class="linenos">1074</span></a> <span class="p">),</span> -</span><span id="merge_without_target_sql-1075"><a href="#merge_without_target_sql-1075"><span class="linenos">1075</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="merge_without_target_sql-1076"><a href="#merge_without_target_sql-1076"><span class="linenos">1076</span></a> <span class="p">)</span> -</span><span id="merge_without_target_sql-1077"><a href="#merge_without_target_sql-1077"><span class="linenos">1077</span></a> -</span><span id="merge_without_target_sql-1078"><a href="#merge_without_target_sql-1078"><span class="linenos">1078</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">merge_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="merge_without_target_sql-1065"><a href="#merge_without_target_sql-1065"><span class="linenos">1065</span></a> <span class="n">targets</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)}</span> +</span><span id="merge_without_target_sql-1066"><a href="#merge_without_target_sql-1066"><span class="linenos">1066</span></a> +</span><span id="merge_without_target_sql-1067"><a href="#merge_without_target_sql-1067"><span class="linenos">1067</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="merge_without_target_sql-1068"><a href="#merge_without_target_sql-1068"><span class="linenos">1068</span></a> <span class="n">targets</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">))</span> +</span><span id="merge_without_target_sql-1069"><a href="#merge_without_target_sql-1069"><span class="linenos">1069</span></a> +</span><span id="merge_without_target_sql-1070"><a href="#merge_without_target_sql-1070"><span class="linenos">1070</span></a> <span class="k">for</span> <span class="n">when</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="merge_without_target_sql-1071"><a href="#merge_without_target_sql-1071"><span class="linenos">1071</span></a> <span class="n">when</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="merge_without_target_sql-1072"><a href="#merge_without_target_sql-1072"><span class="linenos">1072</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="p">(</span> +</span><span id="merge_without_target_sql-1073"><a href="#merge_without_target_sql-1073"><span class="linenos">1073</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="merge_without_target_sql-1074"><a href="#merge_without_target_sql-1074"><span class="linenos">1074</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="n">normalize</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">))</span> <span class="ow">in</span> <span class="n">targets</span> +</span><span id="merge_without_target_sql-1075"><a href="#merge_without_target_sql-1075"><span class="linenos">1075</span></a> <span class="k">else</span> <span class="n">node</span> +</span><span id="merge_without_target_sql-1076"><a href="#merge_without_target_sql-1076"><span class="linenos">1076</span></a> <span class="p">),</span> +</span><span id="merge_without_target_sql-1077"><a href="#merge_without_target_sql-1077"><span class="linenos">1077</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="merge_without_target_sql-1078"><a href="#merge_without_target_sql-1078"><span class="linenos">1078</span></a> <span class="p">)</span> +</span><span id="merge_without_target_sql-1079"><a href="#merge_without_target_sql-1079"><span class="linenos">1079</span></a> +</span><span id="merge_without_target_sql-1080"><a href="#merge_without_target_sql-1080"><span class="linenos">1080</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">merge_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -5312,34 +5346,34 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#build_json_extract_path"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="build_json_extract_path-1081"><a href="#build_json_extract_path-1081"><span class="linenos">1081</span></a><span class="k">def</span> <span class="nf">build_json_extract_path</span><span class="p">(</span> -</span><span id="build_json_extract_path-1082"><a href="#build_json_extract_path-1082"><span class="linenos">1082</span></a> <span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">F</span><span class="p">],</span> <span class="n">zero_based_indexing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="build_json_extract_path-1083"><a href="#build_json_extract_path-1083"><span class="linenos">1083</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">F</span><span class="p">]:</span> -</span><span id="build_json_extract_path-1084"><a href="#build_json_extract_path-1084"><span class="linenos">1084</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">F</span><span class="p">:</span> -</span><span id="build_json_extract_path-1085"><a href="#build_json_extract_path-1085"><span class="linenos">1085</span></a> <span class="n">segments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span> -</span><span id="build_json_extract_path-1086"><a href="#build_json_extract_path-1086"><span class="linenos">1086</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> -</span><span id="build_json_extract_path-1087"><a href="#build_json_extract_path-1087"><span class="linenos">1087</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="build_json_extract_path-1088"><a href="#build_json_extract_path-1088"><span class="linenos">1088</span></a> <span class="c1"># We use the fallback parser because we can't really transpile non-literals safely</span> -</span><span id="build_json_extract_path-1089"><a href="#build_json_extract_path-1089"><span class="linenos">1089</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="build_json_extract_path-1090"><a href="#build_json_extract_path-1090"><span class="linenos">1090</span></a> -</span><span id="build_json_extract_path-1091"><a href="#build_json_extract_path-1091"><span class="linenos">1091</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">arg</span><span class="o">.</span><span class="n">name</span> -</span><span id="build_json_extract_path-1092"><a href="#build_json_extract_path-1092"><span class="linenos">1092</span></a> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">text</span><span class="p">):</span> -</span><span id="build_json_extract_path-1093"><a href="#build_json_extract_path-1093"><span class="linenos">1093</span></a> <span class="n">index</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> -</span><span id="build_json_extract_path-1094"><a href="#build_json_extract_path-1094"><span class="linenos">1094</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="build_json_extract_path-1095"><a href="#build_json_extract_path-1095"><span class="linenos">1095</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">index</span> <span class="k">if</span> <span class="n">zero_based_indexing</span> <span class="k">else</span> <span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="build_json_extract_path-1096"><a href="#build_json_extract_path-1096"><span class="linenos">1096</span></a> <span class="p">)</span> -</span><span id="build_json_extract_path-1097"><a href="#build_json_extract_path-1097"><span class="linenos">1097</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="build_json_extract_path-1098"><a href="#build_json_extract_path-1098"><span class="linenos">1098</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">))</span> -</span><span id="build_json_extract_path-1099"><a href="#build_json_extract_path-1099"><span class="linenos">1099</span></a> -</span><span id="build_json_extract_path-1100"><a href="#build_json_extract_path-1100"><span class="linenos">1100</span></a> <span class="c1"># This is done to avoid failing in the expression validator due to the arg count</span> -</span><span id="build_json_extract_path-1101"><a href="#build_json_extract_path-1101"><span class="linenos">1101</span></a> <span class="k">del</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> -</span><span id="build_json_extract_path-1102"><a href="#build_json_extract_path-1102"><span class="linenos">1102</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span> -</span><span id="build_json_extract_path-1103"><a href="#build_json_extract_path-1103"><span class="linenos">1103</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="build_json_extract_path-1104"><a href="#build_json_extract_path-1104"><span class="linenos">1104</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">segments</span><span class="p">),</span> -</span><span id="build_json_extract_path-1105"><a href="#build_json_extract_path-1105"><span class="linenos">1105</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="n">arrow_req_json_type</span><span class="p">,</span> -</span><span id="build_json_extract_path-1106"><a href="#build_json_extract_path-1106"><span class="linenos">1106</span></a> <span class="p">)</span> -</span><span id="build_json_extract_path-1107"><a href="#build_json_extract_path-1107"><span class="linenos">1107</span></a> -</span><span id="build_json_extract_path-1108"><a href="#build_json_extract_path-1108"><span class="linenos">1108</span></a> <span class="k">return</span> <span class="n">_builder</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="build_json_extract_path-1083"><a href="#build_json_extract_path-1083"><span class="linenos">1083</span></a><span class="k">def</span> <span class="nf">build_json_extract_path</span><span class="p">(</span> +</span><span id="build_json_extract_path-1084"><a href="#build_json_extract_path-1084"><span class="linenos">1084</span></a> <span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">F</span><span class="p">],</span> <span class="n">zero_based_indexing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="build_json_extract_path-1085"><a href="#build_json_extract_path-1085"><span class="linenos">1085</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">F</span><span class="p">]:</span> +</span><span id="build_json_extract_path-1086"><a href="#build_json_extract_path-1086"><span class="linenos">1086</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">F</span><span class="p">:</span> +</span><span id="build_json_extract_path-1087"><a href="#build_json_extract_path-1087"><span class="linenos">1087</span></a> <span class="n">segments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span> +</span><span id="build_json_extract_path-1088"><a href="#build_json_extract_path-1088"><span class="linenos">1088</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> +</span><span id="build_json_extract_path-1089"><a href="#build_json_extract_path-1089"><span class="linenos">1089</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="build_json_extract_path-1090"><a href="#build_json_extract_path-1090"><span class="linenos">1090</span></a> <span class="c1"># We use the fallback parser because we can't really transpile non-literals safely</span> +</span><span id="build_json_extract_path-1091"><a href="#build_json_extract_path-1091"><span class="linenos">1091</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="build_json_extract_path-1092"><a href="#build_json_extract_path-1092"><span class="linenos">1092</span></a> +</span><span id="build_json_extract_path-1093"><a href="#build_json_extract_path-1093"><span class="linenos">1093</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">arg</span><span class="o">.</span><span class="n">name</span> +</span><span id="build_json_extract_path-1094"><a href="#build_json_extract_path-1094"><span class="linenos">1094</span></a> <span class="k">if</span> <span class="n">is_int</span><span class="p">(</span><span class="n">text</span><span class="p">):</span> +</span><span id="build_json_extract_path-1095"><a href="#build_json_extract_path-1095"><span class="linenos">1095</span></a> <span class="n">index</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> +</span><span id="build_json_extract_path-1096"><a href="#build_json_extract_path-1096"><span class="linenos">1096</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="build_json_extract_path-1097"><a href="#build_json_extract_path-1097"><span class="linenos">1097</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">index</span> <span class="k">if</span> <span class="n">zero_based_indexing</span> <span class="k">else</span> <span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="build_json_extract_path-1098"><a href="#build_json_extract_path-1098"><span class="linenos">1098</span></a> <span class="p">)</span> +</span><span id="build_json_extract_path-1099"><a href="#build_json_extract_path-1099"><span class="linenos">1099</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="build_json_extract_path-1100"><a href="#build_json_extract_path-1100"><span class="linenos">1100</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">))</span> +</span><span id="build_json_extract_path-1101"><a href="#build_json_extract_path-1101"><span class="linenos">1101</span></a> +</span><span id="build_json_extract_path-1102"><a href="#build_json_extract_path-1102"><span class="linenos">1102</span></a> <span class="c1"># This is done to avoid failing in the expression validator due to the arg count</span> +</span><span id="build_json_extract_path-1103"><a href="#build_json_extract_path-1103"><span class="linenos">1103</span></a> <span class="k">del</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> +</span><span id="build_json_extract_path-1104"><a href="#build_json_extract_path-1104"><span class="linenos">1104</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span> +</span><span id="build_json_extract_path-1105"><a href="#build_json_extract_path-1105"><span class="linenos">1105</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="build_json_extract_path-1106"><a href="#build_json_extract_path-1106"><span class="linenos">1106</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">segments</span><span class="p">),</span> +</span><span id="build_json_extract_path-1107"><a href="#build_json_extract_path-1107"><span class="linenos">1107</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="n">arrow_req_json_type</span><span class="p">,</span> +</span><span id="build_json_extract_path-1108"><a href="#build_json_extract_path-1108"><span class="linenos">1108</span></a> <span class="p">)</span> +</span><span id="build_json_extract_path-1109"><a href="#build_json_extract_path-1109"><span class="linenos">1109</span></a> +</span><span id="build_json_extract_path-1110"><a href="#build_json_extract_path-1110"><span class="linenos">1110</span></a> <span class="k">return</span> <span class="n">_builder</span> </span></pre></div> @@ -5357,30 +5391,30 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#json_extract_segments"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="json_extract_segments-1111"><a href="#json_extract_segments-1111"><span class="linenos">1111</span></a><span class="k">def</span> <span class="nf">json_extract_segments</span><span class="p">(</span> -</span><span id="json_extract_segments-1112"><a href="#json_extract_segments-1112"><span class="linenos">1112</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">quoted_index</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="json_extract_segments-1113"><a href="#json_extract_segments-1113"><span class="linenos">1113</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="json_extract_segments-1114"><a href="#json_extract_segments-1114"><span class="linenos">1114</span></a> <span class="k">def</span> <span class="nf">_json_extract_segments</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="json_extract_segments-1115"><a href="#json_extract_segments-1115"><span class="linenos">1115</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="json_extract_segments-1116"><a href="#json_extract_segments-1116"><span class="linenos">1116</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">):</span> -</span><span id="json_extract_segments-1117"><a href="#json_extract_segments-1117"><span class="linenos">1117</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="json_extract_segments-1118"><a href="#json_extract_segments-1118"><span class="linenos">1118</span></a> -</span><span id="json_extract_segments-1119"><a href="#json_extract_segments-1119"><span class="linenos">1119</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="json_extract_segments-1120"><a href="#json_extract_segments-1120"><span class="linenos">1120</span></a> <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="json_extract_segments-1121"><a href="#json_extract_segments-1121"><span class="linenos">1121</span></a> <span class="n">path</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">segment</span><span class="p">)</span> -</span><span id="json_extract_segments-1122"><a href="#json_extract_segments-1122"><span class="linenos">1122</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> -</span><span id="json_extract_segments-1123"><a href="#json_extract_segments-1123"><span class="linenos">1123</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="json_extract_segments-1124"><a href="#json_extract_segments-1124"><span class="linenos">1124</span></a> <span class="n">quoted_index</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> -</span><span id="json_extract_segments-1125"><a href="#json_extract_segments-1125"><span class="linenos">1125</span></a> <span class="p">):</span> -</span><span id="json_extract_segments-1126"><a href="#json_extract_segments-1126"><span class="linenos">1126</span></a> <span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_START</span><span class="si">}{</span><span class="n">path</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_END</span><span class="si">}</span><span class="s2">"</span> -</span><span id="json_extract_segments-1127"><a href="#json_extract_segments-1127"><span class="linenos">1127</span></a> -</span><span id="json_extract_segments-1128"><a href="#json_extract_segments-1128"><span class="linenos">1128</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="json_extract_segments-1113"><a href="#json_extract_segments-1113"><span class="linenos">1113</span></a><span class="k">def</span> <span class="nf">json_extract_segments</span><span class="p">(</span> +</span><span id="json_extract_segments-1114"><a href="#json_extract_segments-1114"><span class="linenos">1114</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">quoted_index</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="json_extract_segments-1115"><a href="#json_extract_segments-1115"><span class="linenos">1115</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</span><span class="p">,</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="json_extract_segments-1116"><a href="#json_extract_segments-1116"><span class="linenos">1116</span></a> <span class="k">def</span> <span class="nf">_json_extract_segments</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="json_extract_segments-1117"><a href="#json_extract_segments-1117"><span class="linenos">1117</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="json_extract_segments-1118"><a href="#json_extract_segments-1118"><span class="linenos">1118</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">):</span> +</span><span id="json_extract_segments-1119"><a href="#json_extract_segments-1119"><span class="linenos">1119</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="json_extract_segments-1120"><a href="#json_extract_segments-1120"><span class="linenos">1120</span></a> +</span><span id="json_extract_segments-1121"><a href="#json_extract_segments-1121"><span class="linenos">1121</span></a> <span class="n">segments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="json_extract_segments-1122"><a href="#json_extract_segments-1122"><span class="linenos">1122</span></a> <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="json_extract_segments-1123"><a href="#json_extract_segments-1123"><span class="linenos">1123</span></a> <span class="n">path</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">segment</span><span class="p">)</span> +</span><span id="json_extract_segments-1124"><a href="#json_extract_segments-1124"><span class="linenos">1124</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> +</span><span id="json_extract_segments-1125"><a href="#json_extract_segments-1125"><span class="linenos">1125</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="json_extract_segments-1126"><a href="#json_extract_segments-1126"><span class="linenos">1126</span></a> <span class="n">quoted_index</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">)</span> +</span><span id="json_extract_segments-1127"><a href="#json_extract_segments-1127"><span class="linenos">1127</span></a> <span class="p">):</span> +</span><span id="json_extract_segments-1128"><a href="#json_extract_segments-1128"><span class="linenos">1128</span></a> <span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_START</span><span class="si">}{</span><span class="n">path</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">QUOTE_END</span><span class="si">}</span><span class="s2">"</span> </span><span id="json_extract_segments-1129"><a href="#json_extract_segments-1129"><span class="linenos">1129</span></a> -</span><span id="json_extract_segments-1130"><a href="#json_extract_segments-1130"><span class="linenos">1130</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> -</span><span id="json_extract_segments-1131"><a href="#json_extract_segments-1131"><span class="linenos">1131</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="o">*</span><span class="n">segments</span><span class="p">])</span> -</span><span id="json_extract_segments-1132"><a href="#json_extract_segments-1132"><span class="linenos">1132</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">segments</span><span class="p">)</span> -</span><span id="json_extract_segments-1133"><a href="#json_extract_segments-1133"><span class="linenos">1133</span></a> -</span><span id="json_extract_segments-1134"><a href="#json_extract_segments-1134"><span class="linenos">1134</span></a> <span class="k">return</span> <span class="n">_json_extract_segments</span> +</span><span id="json_extract_segments-1130"><a href="#json_extract_segments-1130"><span class="linenos">1130</span></a> <span class="n">segments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> +</span><span id="json_extract_segments-1131"><a href="#json_extract_segments-1131"><span class="linenos">1131</span></a> +</span><span id="json_extract_segments-1132"><a href="#json_extract_segments-1132"><span class="linenos">1132</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> +</span><span id="json_extract_segments-1133"><a href="#json_extract_segments-1133"><span class="linenos">1133</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="o">*</span><span class="n">segments</span><span class="p">])</span> +</span><span id="json_extract_segments-1134"><a href="#json_extract_segments-1134"><span class="linenos">1134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">segments</span><span class="p">)</span> +</span><span id="json_extract_segments-1135"><a href="#json_extract_segments-1135"><span class="linenos">1135</span></a> +</span><span id="json_extract_segments-1136"><a href="#json_extract_segments-1136"><span class="linenos">1136</span></a> <span class="k">return</span> <span class="n">_json_extract_segments</span> </span></pre></div> @@ -5398,11 +5432,11 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#json_path_key_only_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="json_path_key_only_name-1137"><a href="#json_path_key_only_name-1137"><span class="linenos">1137</span></a><span class="k">def</span> <span class="nf">json_path_key_only_name</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="json_path_key_only_name-1138"><a href="#json_path_key_only_name-1138"><span class="linenos">1138</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">):</span> -</span><span id="json_path_key_only_name-1139"><a href="#json_path_key_only_name-1139"><span class="linenos">1139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported wildcard in JSONPathKey expression"</span><span class="p">)</span> -</span><span id="json_path_key_only_name-1140"><a href="#json_path_key_only_name-1140"><span class="linenos">1140</span></a> -</span><span id="json_path_key_only_name-1141"><a href="#json_path_key_only_name-1141"><span class="linenos">1141</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="json_path_key_only_name-1139"><a href="#json_path_key_only_name-1139"><span class="linenos">1139</span></a><span class="k">def</span> <span class="nf">json_path_key_only_name</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="json_path_key_only_name-1140"><a href="#json_path_key_only_name-1140"><span class="linenos">1140</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">):</span> +</span><span id="json_path_key_only_name-1141"><a href="#json_path_key_only_name-1141"><span class="linenos">1141</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported wildcard in JSONPathKey expression"</span><span class="p">)</span> +</span><span id="json_path_key_only_name-1142"><a href="#json_path_key_only_name-1142"><span class="linenos">1142</span></a> +</span><span id="json_path_key_only_name-1143"><a href="#json_path_key_only_name-1143"><span class="linenos">1143</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -5420,20 +5454,20 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#filter_array_using_unnest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="filter_array_using_unnest-1144"><a href="#filter_array_using_unnest-1144"><span class="linenos">1144</span></a><span class="k">def</span> <span class="nf">filter_array_using_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="filter_array_using_unnest-1145"><a href="#filter_array_using_unnest-1145"><span class="linenos">1145</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="filter_array_using_unnest-1146"><a href="#filter_array_using_unnest-1146"><span class="linenos">1146</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="filter_array_using_unnest-1147"><a href="#filter_array_using_unnest-1147"><span class="linenos">1147</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="filter_array_using_unnest-1148"><a href="#filter_array_using_unnest-1148"><span class="linenos">1148</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">this</span> -</span><span id="filter_array_using_unnest-1149"><a href="#filter_array_using_unnest-1149"><span class="linenos">1149</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="filter_array_using_unnest-1150"><a href="#filter_array_using_unnest-1150"><span class="linenos">1150</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">"_u"</span> -</span><span id="filter_array_using_unnest-1151"><a href="#filter_array_using_unnest-1151"><span class="linenos">1151</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="filter_array_using_unnest-1152"><a href="#filter_array_using_unnest-1152"><span class="linenos">1152</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported filter condition"</span><span class="p">)</span> -</span><span id="filter_array_using_unnest-1153"><a href="#filter_array_using_unnest-1153"><span class="linenos">1153</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="filter_array_using_unnest-1154"><a href="#filter_array_using_unnest-1154"><span class="linenos">1154</span></a> -</span><span id="filter_array_using_unnest-1155"><a href="#filter_array_using_unnest-1155"><span class="linenos">1155</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> -</span><span id="filter_array_using_unnest-1156"><a href="#filter_array_using_unnest-1156"><span class="linenos">1156</span></a> <span class="n">filtered</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">alias</span><span class="p">]))</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">cond</span><span class="p">)</span> -</span><span id="filter_array_using_unnest-1157"><a href="#filter_array_using_unnest-1157"><span class="linenos">1157</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">filtered</span><span class="p">]))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="filter_array_using_unnest-1146"><a href="#filter_array_using_unnest-1146"><span class="linenos">1146</span></a><span class="k">def</span> <span class="nf">filter_array_using_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="filter_array_using_unnest-1147"><a href="#filter_array_using_unnest-1147"><span class="linenos">1147</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="filter_array_using_unnest-1148"><a href="#filter_array_using_unnest-1148"><span class="linenos">1148</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="filter_array_using_unnest-1149"><a href="#filter_array_using_unnest-1149"><span class="linenos">1149</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="filter_array_using_unnest-1150"><a href="#filter_array_using_unnest-1150"><span class="linenos">1150</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">cond</span><span class="o">.</span><span class="n">this</span> +</span><span id="filter_array_using_unnest-1151"><a href="#filter_array_using_unnest-1151"><span class="linenos">1151</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="filter_array_using_unnest-1152"><a href="#filter_array_using_unnest-1152"><span class="linenos">1152</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">"_u"</span> +</span><span id="filter_array_using_unnest-1153"><a href="#filter_array_using_unnest-1153"><span class="linenos">1153</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="filter_array_using_unnest-1154"><a href="#filter_array_using_unnest-1154"><span class="linenos">1154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported filter condition"</span><span class="p">)</span> +</span><span id="filter_array_using_unnest-1155"><a href="#filter_array_using_unnest-1155"><span class="linenos">1155</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="filter_array_using_unnest-1156"><a href="#filter_array_using_unnest-1156"><span class="linenos">1156</span></a> +</span><span id="filter_array_using_unnest-1157"><a href="#filter_array_using_unnest-1157"><span class="linenos">1157</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> +</span><span id="filter_array_using_unnest-1158"><a href="#filter_array_using_unnest-1158"><span class="linenos">1158</span></a> <span class="n">filtered</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">alias</span><span class="p">]))</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">cond</span><span class="p">)</span> +</span><span id="filter_array_using_unnest-1159"><a href="#filter_array_using_unnest-1159"><span class="linenos">1159</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">filtered</span><span class="p">]))</span> </span></pre></div> @@ -5451,13 +5485,13 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#to_number_with_nls_param"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_number_with_nls_param-1160"><a href="#to_number_with_nls_param-1160"><span class="linenos">1160</span></a><span class="k">def</span> <span class="nf">to_number_with_nls_param</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToNumber</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="to_number_with_nls_param-1161"><a href="#to_number_with_nls_param-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="to_number_with_nls_param-1162"><a href="#to_number_with_nls_param-1162"><span class="linenos">1162</span></a> <span class="s2">"TO_NUMBER"</span><span class="p">,</span> -</span><span id="to_number_with_nls_param-1163"><a href="#to_number_with_nls_param-1163"><span class="linenos">1163</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="to_number_with_nls_param-1164"><a href="#to_number_with_nls_param-1164"><span class="linenos">1164</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"format"</span><span class="p">),</span> -</span><span id="to_number_with_nls_param-1165"><a href="#to_number_with_nls_param-1165"><span class="linenos">1165</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nlsparam"</span><span class="p">),</span> -</span><span id="to_number_with_nls_param-1166"><a href="#to_number_with_nls_param-1166"><span class="linenos">1166</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_number_with_nls_param-1162"><a href="#to_number_with_nls_param-1162"><span class="linenos">1162</span></a><span class="k">def</span> <span class="nf">to_number_with_nls_param</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToNumber</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="to_number_with_nls_param-1163"><a href="#to_number_with_nls_param-1163"><span class="linenos">1163</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="to_number_with_nls_param-1164"><a href="#to_number_with_nls_param-1164"><span class="linenos">1164</span></a> <span class="s2">"TO_NUMBER"</span><span class="p">,</span> +</span><span id="to_number_with_nls_param-1165"><a href="#to_number_with_nls_param-1165"><span class="linenos">1165</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="to_number_with_nls_param-1166"><a href="#to_number_with_nls_param-1166"><span class="linenos">1166</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"format"</span><span class="p">),</span> +</span><span id="to_number_with_nls_param-1167"><a href="#to_number_with_nls_param-1167"><span class="linenos">1167</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nlsparam"</span><span class="p">),</span> +</span><span id="to_number_with_nls_param-1168"><a href="#to_number_with_nls_param-1168"><span class="linenos">1168</span></a> <span class="p">)</span> </span></pre></div> @@ -5475,17 +5509,17 @@ that it can analyze queries in the optimizer and successfully capture their sema </div> <a class="headerlink" href="#build_default_decimal_type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="build_default_decimal_type-1169"><a href="#build_default_decimal_type-1169"><span class="linenos">1169</span></a><span class="k">def</span> <span class="nf">build_default_decimal_type</span><span class="p">(</span> -</span><span id="build_default_decimal_type-1170"><a href="#build_default_decimal_type-1170"><span class="linenos">1170</span></a> <span class="n">precision</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">scale</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="build_default_decimal_type-1171"><a href="#build_default_decimal_type-1171"><span class="linenos">1171</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]:</span> -</span><span id="build_default_decimal_type-1172"><a href="#build_default_decimal_type-1172"><span class="linenos">1172</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">dtype</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> -</span><span id="build_default_decimal_type-1173"><a href="#build_default_decimal_type-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">precision</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="build_default_decimal_type-1174"><a href="#build_default_decimal_type-1174"><span class="linenos">1174</span></a> <span class="k">return</span> <span class="n">dtype</span> -</span><span id="build_default_decimal_type-1175"><a href="#build_default_decimal_type-1175"><span class="linenos">1175</span></a> -</span><span id="build_default_decimal_type-1176"><a href="#build_default_decimal_type-1176"><span class="linenos">1176</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">precision</span><span class="si">}{</span><span class="sa">f</span><span class="s1">', </span><span class="si">{</span><span class="n">scale</span><span class="si">}</span><span class="s1">'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">scale</span><span class="w"> </span><span class="ow">is</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="kc">None</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="build_default_decimal_type-1177"><a href="#build_default_decimal_type-1177"><span class="linenos">1177</span></a> <span class="k">return</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="sa">f</span><span class="s2">"DECIMAL(</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> -</span><span id="build_default_decimal_type-1178"><a href="#build_default_decimal_type-1178"><span class="linenos">1178</span></a> -</span><span id="build_default_decimal_type-1179"><a href="#build_default_decimal_type-1179"><span class="linenos">1179</span></a> <span class="k">return</span> <span class="n">_builder</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="build_default_decimal_type-1171"><a href="#build_default_decimal_type-1171"><span class="linenos">1171</span></a><span class="k">def</span> <span class="nf">build_default_decimal_type</span><span class="p">(</span> +</span><span id="build_default_decimal_type-1172"><a href="#build_default_decimal_type-1172"><span class="linenos">1172</span></a> <span class="n">precision</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">scale</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="build_default_decimal_type-1173"><a href="#build_default_decimal_type-1173"><span class="linenos">1173</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]:</span> +</span><span id="build_default_decimal_type-1174"><a href="#build_default_decimal_type-1174"><span class="linenos">1174</span></a> <span class="k">def</span> <span class="nf">_builder</span><span class="p">(</span><span class="n">dtype</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> +</span><span id="build_default_decimal_type-1175"><a href="#build_default_decimal_type-1175"><span class="linenos">1175</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">precision</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="build_default_decimal_type-1176"><a href="#build_default_decimal_type-1176"><span class="linenos">1176</span></a> <span class="k">return</span> <span class="n">dtype</span> +</span><span id="build_default_decimal_type-1177"><a href="#build_default_decimal_type-1177"><span class="linenos">1177</span></a> +</span><span id="build_default_decimal_type-1178"><a href="#build_default_decimal_type-1178"><span class="linenos">1178</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">precision</span><span class="si">}{</span><span class="sa">f</span><span class="s1">', </span><span class="si">{</span><span class="n">scale</span><span class="si">}</span><span class="s1">'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">scale</span><span class="w"> </span><span class="ow">is</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="kc">None</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="build_default_decimal_type-1179"><a href="#build_default_decimal_type-1179"><span class="linenos">1179</span></a> <span class="k">return</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="sa">f</span><span class="s2">"DECIMAL(</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> +</span><span id="build_default_decimal_type-1180"><a href="#build_default_decimal_type-1180"><span class="linenos">1180</span></a> +</span><span id="build_default_decimal_type-1181"><a href="#build_default_decimal_type-1181"><span class="linenos">1181</span></a> <span class="k">return</span> <span class="n">_builder</span> </span></pre></div> diff --git a/docs/sqlglot/dialects/doris.html b/docs/sqlglot/dialects/doris.html index c7b1d7e..da823da 100644 --- a/docs/sqlglot/dialects/doris.html +++ b/docs/sqlglot/dialects/doris.html @@ -1684,7 +1684,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Doris.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Doris.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function MySQL.Parser.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function MySQL.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function MySQL.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function MySQL.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function MySQL.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function MySQL.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <function MySQL.Parser.<lambda>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <function MySQL.Parser.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function MySQL.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function MySQL.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'INSTR': <function MySQL.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MONTHNAME': <function MySQL.Parser.<lambda>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'MONTHS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'REGEXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>}</span> + <label class="view-value-button pdoc-button" for="Doris.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function MySQL.Parser.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function MySQL.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function MySQL.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function MySQL.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function MySQL.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function MySQL.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <function MySQL.Parser.<lambda>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <function MySQL.Parser.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function MySQL.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function MySQL.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'INSTR': <function MySQL.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MONTHNAME': <function MySQL.Parser.<lambda>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'MONTHS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'REGEXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>}</span> </div> @@ -1710,7 +1710,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Doris.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Doris.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Doris.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -1762,6 +1762,7 @@ Default: 3</li> <dd id="Doris.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="Doris.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Doris.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Doris.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Doris.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Doris.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Doris.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -2514,7 +2515,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="Doris.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Doris.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'starts', 'over', 'ends', 'date_diff', 'character', 'preceding', 'if', 'max', 'query', 'observer', 'plugins', 'events', 'is', 'bin', 'memo', 'routine', 'transaction', 'bitor', 'backend', 'optimized', 'policy', 'distribution', 'data', 'extended', 'to', 'timestamp', 'deferred', 'process', 'from', 'text', 'build', 'isnull', 'connection', 'with', 'aggregate', 'overwrite', 'sets', 'alias', 'begin', 'split', 'index', 'frontends', 'view', 'constraint', 'whitelist', 'resource', 'location', 'binlog', 'status', 'of', 'grouping', 'adddate', 'local', 'name', 'restrictive', 'add', 'at', 'join', 'fast', 'feature', 'write', 'semi', 'identified', 'copy', 'superuser', 'password_reuse', 'start', 'row', 'no', 'uninstall', 'rebalance', 'columns', 'doris_internal_table_id', 'immediate', 'logical', 'bigint', 'date_sub', 'authors', 'schema', 'repositories', 'job', 'type', 'insert', 'keys', 'trash', 'call', 'is_null_pred', 'warnings', 'filter', 'inverted', 'int', 'lines', 'permissive', 'match_all', 'proc', 'bitmap', 'free', 'expired', 'file', 'broker', 'full', 'distinctpcsa', 'convert', 'soname', 'creation', 'constraints', 'force', 'auto', 'largeint', 'is_not_null_pred', 'trim', 'physical', 'asc', 'restore', 'encryptkey', 'functions', 'outfile', 'repository', 'resources', 'null', 'account_unlock', 'json', 'regexp', 'cron', 'struct', 'roles', 'timestampadd', 'demand', 'groups', 'show', 'sequence', 'then', 'jsonb', 'last', 'natural', 'backup', 'match_phrase_prefix', 'desc', 'select', 'date', 'negative', 'month', 'migrate', 'variables', 'quota', 'days_sub', 'using', 'hdfs', 'rewritten', 'procedure', 'varchar', 'triggers', 'div', 'sample', 'shape', 'date_add', 'foreign', 'databases', 'histogram', 'parsed', 'drop', 'date_floor', 'match_regexp', 'incremental', 'format', 'less', 'describe', 'double', 'next', 'date_ceil', 'switch', 'values', 'isolation', 'brief', 'graph', 'link', 'grant', 'dual', 'current_timestamp', 'count', 'decimal', 'update', 'minute', 'skew', 'ldap_admin_password', 'charset', 'nulls', 'quantile_state', 'encryptkeys', 'replace', 'chain', 'help', 'low_priority', 'materialized', 'not', 'tinyint', 'engine', 'rollup', 'parameter', 'migrations', 'set', 'schemas', 'enable', 'enter', 'sum', 'and', 'database', 'kill', 'bitand', 'hostname', 'lateral', 'config', 'string', 'current_time', 'level', 'hub', 'tablets', 'grants', 'right', 'having', 'datev1', 'agg_state', 'variant', 'except', 'revoke', 'names', 'sync', 'hll', 'tree', 'unlock', 'time', 'bitmap_union', 'localtime', 'current_catalog', 'left', 'replica', 'type_cast', 'password_history', 'real', 'stream', 'minus', 'repair', 'pause', 'after', 'fields', 'extract', 'rows', 'path', 'intermediate', 'case', 'cube', 'distinct', 'outer', 'diagnose', 'scheduler', 'mtmv', 'builtin', 'boolean', 'cancel', 'rlike', 'install', 'jobs', 'list', 'min', 'properties', 'when', 'buckets', 'day', 'week', 'use', 'interval', 'datetimev1', 'export', 'password_lock_time', 'errors', 'table', 'create', 'task', 'password_expire', 'external', 'cross', 'truncate', 'random', 'comment', 'map', 'exclude', 'plan', 'replace_if_not_null', 'consistent', 'storage', 'on', 'distinctpc', 'like', 'streaming', 'terminated', 'workload', 'localtimestamp', 'analyze', 'schedule', 'rename', 'first', 'role', 'verbose', 'days_add', 'cached', 'unique', 'else', 'order', 'frontend', 'inner', 'signed', 'as', 'current', 'blob', 'dropp', 'union', 'cast', 'duplicate', 'smallint', 'resume', 'tables', 'user', 'recover', 'hour', 'intersect', 'array', 'non_nullable', 'unsigned', 'second', 'work', 'admin', 'ngram_bf', 'or', 'for', 's3', 'decommission', 'manual', 'distributed', 'match_phrase', 'range', 'clusters', 'bitxor', 'complete', 'temporary', 'belong', 'following', 'never', 'unbounded', 'alter', 'disk', 'check', 'percent', 'version', 'datev2', 'dynamic', 'execute', 'tasks', 'sql_block_rule', 'decimalv2', 'current_user', 'append', 'connection_id', 'timestampdiff', 'datetimev2', 'offset', 'read', 'auto_increment', 'integer', 'refresh', 'catalog', 'load', 'array_range', 'char', 'system', 'committed', 'end', 'into', 'profile', 'vault', 'repeatable', 'primary', 'clean', 'dateadd', 'anti', 'all', 'year', 'float', 'global', 'delete', 'merge', 'collate', 'follower', 'release', 'snapshot', 'compact', 'datediff', 'explain', 'generic', 'by', 'rollback', 'default', 'than', 'decimalv3', 'column', 'account_lock', 'bulk', 'property', 'open', 'session', 'stop', 'infile', 'hash', 'returns', 'indexes', 'group', 'quantile_union', 'commit', 'only', 'collect', 'binary', 'uncommitted', 'do', 'exists', 'analyzed', 'in', 'plugin', 'prepare', 'ignore', 'xor', 'catalogs', 'references', 'tablesample', 'value', 'true', 'hll_union', 'function', 'datetime', 'ldap', 'types', 'every', 'current_date', 'subdate', 'stats', 'recycle', 'maxvalue', 'ipv6', 'partitions', 'serializable', 'failed_login_attempts', 'match_phrase_edge', 'where', 'lock', 'limit', 'engines', 'cluster', 'label', 'processlist', 'between', 'period', 'key', 'collation', 'ipv4', 'false', 'match', 'match_any', 'modify', 'tablet', 'backends', 'partition', 'password'}</span> + <label class="view-value-button pdoc-button" for="Doris.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'match_phrase', 'jsonb', 'second', 'repair', 'value', 'following', 'when', 'over', 'repository', 'password_reuse', 'consistent', 'scheduler', 'distribution', 'min', 'manual', 'ipv4', 'trim', 'use', 'extended', 'distributed', 'match_phrase_edge', 'in', 'returns', 'name', 'incremental', 'engine', 'never', 'describe', 'label', 'negative', 'having', 'restore', 'whitelist', 'limit', 'anti', 'minute', 'text', 'plan', 'failed_login_attempts', 'rebalance', 'resource', 'task', 'property', 'tablet', 'follower', 'fields', 'schemas', 'then', 'build', 'local', 'show', 'chain', 'binlog', 'execute', 'observer', 'quantile_state', 'as', 'charset', 'subdate', 'job', 'collate', 'global', 'natural', 'alter', 'resume', 'buckets', 'catalogs', 'hash', 'encryptkeys', 'datev2', 'password_expire', 'date_floor', 'split', 'convert', 'logical', 'localtime', 'type', 'union', 'exclude', 'materialized', 'full', 'create', 'disk', 'sql_block_rule', 'quantile_union', 'real', 'regexp', 'dual', 'decimalv2', 'insert', 'stats', 'unbounded', 'enable', 'alias', 'events', 'intersect', 'link', 'backup', 'intermediate', 'immediate', 'ldap_admin_password', 'engines', 'constraints', 'map', 'binary', 'hostname', 'groups', 'sync', 'after', 'policy', 'false', 'is_not_null_pred', 'references', 'errors', 'append', 'temporary', 'table', 'decimalv3', 'sets', 'update', 'timestampdiff', 'rename', 'proc', 'rows', 'all', 'order', 'primary', 'hll', 'location', 'auto', 'soname', 'serializable', 'by', 'account_unlock', 'distinctpc', 'recycle', 'current_catalog', 'inner', 'signed', 'view', 'match_any', 'stop', 'creation', 'right', 'timestampadd', 'left', 'truncate', 'double', 'free', 'isnull', 'switch', 'array', 'set', 'string', 'broker', 'div', 'parsed', 'belong', 'clean', 'admin', 'and', 'catalog', 'schedule', 'transaction', 'skew', 'current_time', 'list', 'brief', 'unlock', 'like', 'else', 'start', 'read', 'cron', 'load', 'overwrite', 'current_date', 'datetime', 'if', 'type_cast', 'write', 'analyzed', 'sum', 'superuser', 'tinyint', 'null', 'current_user', 'only', 'storage', 'boolean', 'demand', 'match_all', 'bitand', 'dropp', 'encryptkey', 'index', 'asc', 'comment', 'auto_increment', 'true', 'aggregate', 'replace', 'at', 'frontend', 'except', 'plugin', 'tables', 'float', 'merge', 'rlike', 'function', 'dateadd', 'agg_state', 'vault', 'stream', 'month', 'ngram_bf', 'grouping', 'install', 'period', 'graph', 'desc', 'isolation', 'date_ceil', 'char', 'collect', 'foreign', 'tablesample', 'count', 'cached', 'date_sub', 'key', 'unsigned', 'struct', 'collation', 'tablets', 'ldap', 'row', 'drop', 'columns', 'types', 'match_phrase_prefix', 'plugins', 'workload', 'system', 'doris_internal_table_id', 'variables', 'repositories', 'select', 'localtimestamp', 'constraint', 'triggers', 'between', 'dynamic', 'for', 'blob', 'bitor', 'match_regexp', 'rollup', 'functions', 'where', 'array_range', 'group', 'generic', 'less', 'replica', 'clusters', 'decommission', 'next', 'minus', 'rewritten', 'migrations', 'starts', 'ignore', 'lock', 'optimized', 'bitmap_union', 'streaming', 'migrate', 'max', 'date_add', 'every', 'builtin', 'decimal', 'indexes', 'schema', 'work', 'timestamp', 'databases', 'or', 'snapshot', 'offset', 'bitxor', 'password_history', 'backend', 'lines', 'cancel', 'percent', 'outfile', 'datetimev1', 'first', 'not', 'add', 'values', 'tree', 'external', 'distinct', 'last', 'modify', 'connection_id', 'help', 'variant', 'on', 'partition', 'match', 'copy', 'replace_if_not_null', 'config', 'cross', 'year', 'kill', 'connection', 'commit', 'identified', 'bin', 'recover', 'resources', 'refresh', 'of', 'feature', 'week', 'nulls', 'mtmv', 'date', 'routine', 'terminated', 'time', 'int', 'session', 'current', 'is_null_pred', 'revoke', 'physical', 'memo', 'non_nullable', 'day', 'force', 'integer', 'hll_union', 'parameter', 'inverted', 'bigint', 'uncommitted', 'column', 'path', 'do', 'range', 'compact', 'is', 'distinctpcsa', 'partitions', 'diagnose', 'enter', 'datev1', 'adddate', 'extract', 'low_priority', 'datediff', 'using', 'maxvalue', 'procedure', 'cast', 'user', 'json', 'character', 'quota', 'tasks', 'smallint', 'explain', 'end', 'case', 'ipv6', 'to', 'password', 'authors', 'default', 'names', 'grant', 'shape', 'cube', 'trash', 'begin', 'profile', 'sequence', 'hdfs', 'format', 'processlist', 'unique', 'preceding', 'filter', 'bulk', 'than', 'release', 'fast', 'password_lock_time', 'pause', 'deferred', 'rollback', 'open', 'call', 'permissive', 'from', 'infile', 'random', 'status', 'repeatable', 'check', 'expired', 'histogram', 'cluster', 'uninstall', 'semi', 'level', 's3', 'keys', 'process', 'lateral', 'complete', 'ends', 'data', 'sample', 'exists', 'date_diff', 'grants', 'frontends', 'bitmap', 'hour', 'analyze', 'varchar', 'committed', 'largeint', 'backends', 'into', 'file', 'properties', 'datetimev2', 'duplicate', 'role', 'days_add', 'version', 'hub', 'outer', 'database', 'warnings', 'restrictive', 'query', 'with', 'no', 'days_sub', 'interval', 'join', 'prepare', 'delete', 'roles', 'export', 'xor', 'jobs', 'current_timestamp', 'verbose', 'account_lock'}</span> </div> diff --git a/docs/sqlglot/dialects/drill.html b/docs/sqlglot/dialects/drill.html index 13bf7be..d101483 100644 --- a/docs/sqlglot/dialects/drill.html +++ b/docs/sqlglot/dialects/drill.html @@ -1104,7 +1104,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Drill.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Drill.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function build_formatted_time.<locals>._builder>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>}</span> + <label class="view-value-button pdoc-button" for="Drill.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function build_formatted_time.<locals>._builder>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>}</span> </div> @@ -1129,7 +1129,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Drill.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Drill.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Drill.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -1181,6 +1181,7 @@ Default: 3</li> <dd id="Drill.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="Drill.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Drill.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Drill.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Drill.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Drill.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Drill.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/duckdb.html b/docs/sqlglot/dialects/duckdb.html index 9a92403..eafc9c7 100644 --- a/docs/sqlglot/dialects/duckdb.html +++ b/docs/sqlglot/dialects/duckdb.html @@ -2119,7 +2119,7 @@ Possible values: <code>"nulls_are_small"</code>, <code>"nulls_are_large"</code>, <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="DuckDB.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DuckDB.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.TEXT: 'TEXT'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.TEXT: 'TEXT'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.VARCHAR: 'VARCHAR'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '//': <TokenType.DIV: 'DIV'>, 'ATTACH': <TokenType.COMMAND: 'COMMAND'>, 'BITSTRING': <TokenType.BIT: 'BIT'>, 'CHARACTER VARYING': <TokenType.TEXT: 'TEXT'>, 'EXCLUDE': <TokenType.EXCEPT: 'EXCEPT'>, 'LOGICAL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'ONLY': <TokenType.ONLY: 'ONLY'>, 'PIVOT_WIDER': <TokenType.PIVOT: 'PIVOT'>, 'POSITIONAL': <TokenType.POSITIONAL: 'POSITIONAL'>, 'SIGNED': <TokenType.INT: 'INT'>, 'UBIGINT': <TokenType.UBIGINT: 'UBIGINT'>, 'UINTEGER': <TokenType.UINT: 'UINT'>, 'USMALLINT': <TokenType.USMALLINT: 'USMALLINT'>, 'UTINYINT': <TokenType.UTINYINT: 'UTINYINT'>, 'TIMESTAMP_S': <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, 'TIMESTAMP_MS': <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, 'TIMESTAMP_NS': <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, 'TIMESTAMP_US': <TokenType.TIMESTAMP: 'TIMESTAMP'>}</span> + <label class="view-value-button pdoc-button" for="DuckDB.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.TEXT: 'TEXT'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.TEXT: 'TEXT'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.VARCHAR: 'VARCHAR'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '//': <TokenType.DIV: 'DIV'>, 'ATTACH': <TokenType.COMMAND: 'COMMAND'>, 'BITSTRING': <TokenType.BIT: 'BIT'>, 'CHARACTER VARYING': <TokenType.TEXT: 'TEXT'>, 'EXCLUDE': <TokenType.EXCEPT: 'EXCEPT'>, 'LOGICAL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'ONLY': <TokenType.ONLY: 'ONLY'>, 'PIVOT_WIDER': <TokenType.PIVOT: 'PIVOT'>, 'POSITIONAL': <TokenType.POSITIONAL: 'POSITIONAL'>, 'SIGNED': <TokenType.INT: 'INT'>, 'UBIGINT': <TokenType.UBIGINT: 'UBIGINT'>, 'UINTEGER': <TokenType.UINT: 'UINT'>, 'USMALLINT': <TokenType.USMALLINT: 'USMALLINT'>, 'UTINYINT': <TokenType.UTINYINT: 'UTINYINT'>, 'TIMESTAMP_S': <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, 'TIMESTAMP_MS': <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, 'TIMESTAMP_NS': <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, 'TIMESTAMP_US': <TokenType.TIMESTAMP: 'TIMESTAMP'>}</span> </div> @@ -2348,7 +2348,7 @@ Default: 3</li> <div id="DuckDB.Parser.FUNCTIONS_WITH_ALIASED_ARGS" class="classattr"> <div class="attr variable"> <span class="name">FUNCTIONS_WITH_ALIASED_ARGS</span> = -<span class="default_value">{'STRUCT_PACK', 'STRUCT'}</span> +<span class="default_value">{'STRUCT', 'STRUCT_PACK'}</span> </div> @@ -2361,7 +2361,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="DuckDB.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DuckDB.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <function _build_date_diff>, 'DATE_DIFF': <function _build_date_diff>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function date_trunc_to_time>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <function _build_generate_series.<locals>._builder>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <function binary_from_function.<locals>.<lambda>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'ARRAY_REVERSE_SORT': <function _build_sort_array_desc>, 'DATETRUNC': <function date_trunc_to_time>, 'EPOCH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'EPOCH_MS': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_EXTRACT_PATH': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_STRING': <function build_extract_json_with_path.<locals>._builder>, 'LIST_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'LIST_REVERSE_SORT': <function _build_sort_array_desc>, 'LIST_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'LIST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'MAKE_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MAKE_TIMESTAMP': <function _build_make_timestamp>, 'MEDIAN': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'QUANTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'QUANTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'REGEXP_MATCHES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'STRFTIME': <function build_formatted_time.<locals>._builder>, 'STRING_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'STRING_SPLIT_REGEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'STRPTIME': <function build_formatted_time.<locals>._builder>, 'STRUCT_PACK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STR_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'STR_SPLIT_REGEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNNEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'RANGE': <function _build_generate_series.<locals>._builder>}</span> + <label class="view-value-button pdoc-button" for="DuckDB.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <function _build_date_diff>, 'DATE_DIFF': <function _build_date_diff>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function date_trunc_to_time>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <function _build_generate_series.<locals>._builder>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <function binary_from_function.<locals>.<lambda>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'ARRAY_REVERSE_SORT': <function _build_sort_array_desc>, 'DATETRUNC': <function date_trunc_to_time>, 'EPOCH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'EPOCH_MS': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_EXTRACT_PATH': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_STRING': <function build_extract_json_with_path.<locals>._builder>, 'LIST_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'LIST_REVERSE_SORT': <function _build_sort_array_desc>, 'LIST_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'LIST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'MAKE_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MAKE_TIMESTAMP': <function _build_make_timestamp>, 'MEDIAN': <function <a href="#DuckDB.Parser">DuckDB.Parser</a>.<lambda>>, 'QUANTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'QUANTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'REGEXP_MATCHES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'STRFTIME': <function build_formatted_time.<locals>._builder>, 'STRING_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'STRING_SPLIT_REGEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'STRPTIME': <function build_formatted_time.<locals>._builder>, 'STRUCT_PACK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STR_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'STR_SPLIT_REGEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNNEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'RANGE': <function _build_generate_series.<locals>._builder>}</span> </div> @@ -2400,7 +2400,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="DuckDB.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DuckDB.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="DuckDB.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -2477,6 +2477,7 @@ Default: 3</li> <dd id="DuckDB.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="DuckDB.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="DuckDB.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="DuckDB.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="DuckDB.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="DuckDB.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="DuckDB.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -3314,7 +3315,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="DuckDB.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DuckDB.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'returning', 'lateral_p', 'current_user', 'check_p', 'offset', 'asc_p', 'case', 'distinct', 'fetch', 'then', 'false_p', 'when', 'select', 'to', 'analyse', 'into', 'create_p', 'from', 'using', 'primary', 'table', 'true_p', 'all', 'with', 'window', 'foreign', 'placing', 'collate', 'trailing', 'constraint', 'leading', 'on', 'default', 'grant', 'localtimestamp', 'deferrable', 'analyze', 'column', 'symmetric', 'current_timestamp', 'initially', 'current_role', 'end_p', 'else', 'unique', 'order', 'only', 'as', 'not', 'union', 'cast', 'do', 'group_p', 'any', 'references', 'user', 'session_user', 'intersect', 'and', 'array', 'both', 'in_p', 'current_date', 'null_p', 'or', 'for', 'variadic', 'current_time', 'where', 'limit', 'having', 'except', 'desc_p', 'asymmetric', 'some', 'localtime', 'current_catalog'}</span> + <label class="view-value-button pdoc-button" for="DuckDB.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'placing', 'asymmetric', 'when', 'localtimestamp', 'select', 'constraint', 'references', 'symmetric', 'table', 'using', 'cast', 'for', 'session_user', 'returning', 'user', 'where', 'all', 'order', 'create_p', 'primary', 'any', 'leading', 'fetch', 'false_p', 'current_catalog', 'case', 'having', 'some', 'to', 'in_p', 'lateral_p', 'default', 'true_p', 'limit', 'desc_p', 'grant', 'or', 'both', 'array', 'offset', 'unique', 'and', 'not', 'then', 'current_time', 'else', 'from', 'group_p', 'as', 'current_role', 'on', 'distinct', 'collate', 'current_date', 'only', 'null_p', 'current_user', 'asc_p', 'check_p', 'localtime', 'union', 'window', 'initially', 'variadic', 'analyze', 'except', 'end_p', 'into', 'deferrable', 'trailing', 'analyse', 'intersect', 'with', 'foreign', 'column', 'do', 'current_timestamp'}</span> </div> diff --git a/docs/sqlglot/dialects/hive.html b/docs/sqlglot/dialects/hive.html index b6a1d7c..8aa9c0b 100644 --- a/docs/sqlglot/dialects/hive.html +++ b/docs/sqlglot/dialects/hive.html @@ -2079,7 +2079,7 @@ <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Hive.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Hive.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'ADD ARCHIVE': <TokenType.COMMAND: 'COMMAND'>, 'ADD ARCHIVES': <TokenType.COMMAND: 'COMMAND'>, 'ADD FILE': <TokenType.COMMAND: 'COMMAND'>, 'ADD FILES': <TokenType.COMMAND: 'COMMAND'>, 'ADD JAR': <TokenType.COMMAND: 'COMMAND'>, 'ADD JARS': <TokenType.COMMAND: 'COMMAND'>, 'MSCK REPAIR': <TokenType.COMMAND: 'COMMAND'>, 'REFRESH': <TokenType.REFRESH: 'REFRESH'>, 'TIMESTAMP AS OF': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'VERSION AS OF': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'SERDEPROPERTIES': <TokenType.SERDE_PROPERTIES: 'SERDE_PROPERTIES'>}</span> + <label class="view-value-button pdoc-button" for="Hive.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'ADD ARCHIVE': <TokenType.COMMAND: 'COMMAND'>, 'ADD ARCHIVES': <TokenType.COMMAND: 'COMMAND'>, 'ADD FILE': <TokenType.COMMAND: 'COMMAND'>, 'ADD FILES': <TokenType.COMMAND: 'COMMAND'>, 'ADD JAR': <TokenType.COMMAND: 'COMMAND'>, 'ADD JARS': <TokenType.COMMAND: 'COMMAND'>, 'MSCK REPAIR': <TokenType.COMMAND: 'COMMAND'>, 'REFRESH': <TokenType.REFRESH: 'REFRESH'>, 'TIMESTAMP AS OF': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'VERSION AS OF': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'SERDEPROPERTIES': <TokenType.SERDE_PROPERTIES: 'SERDE_PROPERTIES'>}</span> </div> @@ -2367,7 +2367,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Hive.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Hive.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DATEDIFF': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="Hive.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DATEDIFF': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function <a href="#Hive.Parser">Hive.Parser</a>.<lambda>>}</span> </div> @@ -2446,6 +2446,7 @@ Default: 3</li> <dd id="Hive.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Hive.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Hive.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Hive.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Hive.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Hive.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Hive.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -3009,7 +3010,7 @@ Default: True</li> <div class="attr variable"> <span class="name">EXPRESSIONS_WITHOUT_NESTED_CTES</span> = <input id="Hive.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Hive.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>, <class '<a href="../expressions.html#Union">sqlglot.expressions.Union</a>'>, <class '<a href="../expressions.html#Insert">sqlglot.expressions.Insert</a>'>, <class '<a href="../expressions.html#Subquery">sqlglot.expressions.Subquery</a>'>}</span> + <label class="view-value-button pdoc-button" for="Hive.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>, <class '<a href="../expressions.html#Insert">sqlglot.expressions.Insert</a>'>, <class '<a href="../expressions.html#Union">sqlglot.expressions.Union</a>'>, <class '<a href="../expressions.html#Subquery">sqlglot.expressions.Subquery</a>'>}</span> </div> diff --git a/docs/sqlglot/dialects/materialize.html b/docs/sqlglot/dialects/materialize.html new file mode 100644 index 0000000..6c2b156 --- /dev/null +++ b/docs/sqlglot/dialects/materialize.html @@ -0,0 +1,1777 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="generator" content="pdoc 14.5.0"/> + <title>sqlglot.dialects.materialize API documentation</title> + + <style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style> + <style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style> + <style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style> + <style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style> + <style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .pdoc-alert-note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style> + <style>/*! custom.css */</style></head> +<body> + <nav class="pdoc"> + <label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label> + <input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1"> + <div> <a class="pdoc-button module-list-button" href="../dialects.html"> +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/> + <path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/> +</svg> sqlglot.dialects</a> + + + <input type="search" placeholder="Search..." role="searchbox" aria-label="search" + pattern=".+" required> + + + + <h2>API Documentation</h2> + <ul class="memberlist"> + <li> + <a class="class" href="#Materialize">Materialize</a> + <ul class="memberlist"> + <li> + <a class="class" href="#Materialize.Parser">Materialize.Parser</a> + <ul class="memberlist"> + <li> + <a class="variable" href="#Materialize.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a> + </li> + <li> + <a class="variable" href="#Materialize.Parser.LAMBDAS">LAMBDAS</a> + </li> + <li> + <a class="variable" href="#Materialize.Parser.SHOW_TRIE">SHOW_TRIE</a> + </li> + <li> + <a class="variable" href="#Materialize.Parser.SET_TRIE">SET_TRIE</a> + </li> + </ul> + + </li> + <li> + <a class="class" href="#Materialize.Generator">Materialize.Generator</a> + <ul class="memberlist"> + <li> + <a class="variable" href="#Materialize.Generator.SUPPORTS_CREATE_TABLE_LIKE">SUPPORTS_CREATE_TABLE_LIKE</a> + </li> + <li> + <a class="variable" href="#Materialize.Generator.TRANSFORMS">TRANSFORMS</a> + </li> + <li> + <a class="function" href="#Materialize.Generator.propertyeq_sql">propertyeq_sql</a> + </li> + <li> + <a class="function" href="#Materialize.Generator.datatype_sql">datatype_sql</a> + </li> + <li> + <a class="function" href="#Materialize.Generator.list_sql">list_sql</a> + </li> + <li> + <a class="function" href="#Materialize.Generator.tomap_sql">tomap_sql</a> + </li> + <li> + <a class="variable" href="#Materialize.Generator.SELECT_KINDS">SELECT_KINDS</a> + </li> + <li> + <a class="variable" href="#Materialize.Generator.TRY_SUPPORTED">TRY_SUPPORTED</a> + </li> + <li> + <a class="variable" href="#Materialize.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS">AFTER_HAVING_MODIFIER_TRANSFORMS</a> + </li> + </ul> + + </li> + <li> + <a class="variable" href="#Materialize.tokenizer_class">tokenizer_class</a> + </li> + <li> + <a class="variable" href="#Materialize.parser_class">parser_class</a> + </li> + <li> + <a class="variable" href="#Materialize.generator_class">generator_class</a> + </li> + <li> + <a class="variable" href="#Materialize.TIME_TRIE">TIME_TRIE</a> + </li> + <li> + <a class="variable" href="#Materialize.FORMAT_TRIE">FORMAT_TRIE</a> + </li> + <li> + <a class="variable" href="#Materialize.INVERSE_TIME_MAPPING">INVERSE_TIME_MAPPING</a> + </li> + <li> + <a class="variable" href="#Materialize.INVERSE_TIME_TRIE">INVERSE_TIME_TRIE</a> + </li> + <li> + <a class="variable" href="#Materialize.ESCAPED_SEQUENCES">ESCAPED_SEQUENCES</a> + </li> + <li> + <a class="variable" href="#Materialize.QUOTE_START">QUOTE_START</a> + </li> + <li> + <a class="variable" href="#Materialize.QUOTE_END">QUOTE_END</a> + </li> + <li> + <a class="variable" href="#Materialize.IDENTIFIER_START">IDENTIFIER_START</a> + </li> + <li> + <a class="variable" href="#Materialize.IDENTIFIER_END">IDENTIFIER_END</a> + </li> + <li> + <a class="variable" href="#Materialize.BIT_START">BIT_START</a> + </li> + <li> + <a class="variable" href="#Materialize.BIT_END">BIT_END</a> + </li> + <li> + <a class="variable" href="#Materialize.HEX_START">HEX_START</a> + </li> + <li> + <a class="variable" href="#Materialize.HEX_END">HEX_END</a> + </li> + <li> + <a class="variable" href="#Materialize.BYTE_START">BYTE_START</a> + </li> + <li> + <a class="variable" href="#Materialize.BYTE_END">BYTE_END</a> + </li> + <li> + <a class="variable" href="#Materialize.UNICODE_START">UNICODE_START</a> + </li> + <li> + <a class="variable" href="#Materialize.UNICODE_END">UNICODE_END</a> + </li> + </ul> + + </li> + </ul> + + + <footer>Copyright (c) 2023 Toby Mao</footer> + + <a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank"> + built with <span class="visually-hidden">pdoc</span><img + alt="pdoc logo" + src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/> + </a> +</div> + </nav> + <main class="pdoc"> + <section class="module-info"> + <a class="pdoc-button git-button" href="https://github.com/tobymao/sqlglot/tree/main/sqlglot/dialects/materialize.py">Edit on GitHub</a> + <h1 class="modulename"> +<a href="./../../sqlglot.html">sqlglot</a><wbr>.<a href="./../dialects.html">dialects</a><wbr>.materialize </h1> + + + <input id="mod-materialize-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + + <label class="view-source-button" for="mod-materialize-view-source"><span>View Source</span></label> + + <div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> +</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a> +</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">exp</span> +</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">seq_get</span> +</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.postgres</span> <span class="kn">import</span> <span class="n">Postgres</span> +</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="kn">from</span> <span class="nn">sqlglot.tokens</span> <span class="kn">import</span> <span class="n">TokenType</span> +</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="kn">from</span> <span class="nn">sqlglot.transforms</span> <span class="kn">import</span> <span class="p">(</span> +</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a> <span class="n">remove_unique_constraints</span><span class="p">,</span> +</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a> <span class="n">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">,</span> +</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a> <span class="n">preprocess</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-13"><a href="#L-13"><span class="linenos">13</span></a><span class="kn">import</span> <span class="nn">typing</span> <span class="k">as</span> <span class="nn">t</span> +</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a> +</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 class="k">class</span> <span class="nc">Materialize</span><span class="p">(</span><span class="n">Postgres</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">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-19"><a href="#L-19"><span class="linenos">19</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">NO_PAREN_FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_map</span><span class="p">(),</span> +</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a> <span class="p">}</span> +</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a> +</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-24"><a href="#L-24"><span class="linenos">24</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">LAMBDAS</span><span class="p">,</span> +</span><span id="L-25"><a href="#L-25"><span class="linenos">25</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-26"><a href="#L-26"><span class="linenos">26</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-27"><a href="#L-27"><span class="linenos">27</span></a> <span class="p">),</span> +</span><span id="L-28"><a href="#L-28"><span class="linenos">28</span></a> <span class="p">}</span> +</span><span id="L-29"><a href="#L-29"><span class="linenos">29</span></a> +</span><span id="L-30"><a href="#L-30"><span class="linenos">30</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-31"><a href="#L-31"><span class="linenos">31</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</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="k">def</span> <span class="nf">_parse_map</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">:</span> +</span><span id="L-34"><a href="#L-34"><span class="linenos">34</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="n">to_map</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="L-36"><a href="#L-36"><span class="linenos">36</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos">37</span></a> <span class="k">return</span> <span class="n">to_map</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos">38</span></a> +</span><span id="L-39"><a href="#L-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos">40</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ["</span><span class="p">)</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 class="n">entries</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">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos">44</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos">45</span></a> <span class="p">]</span> +</span><span id="L-46"><a href="#L-46"><span class="linenos">46</span></a> +</span><span id="L-47"><a href="#L-47"><span class="linenos">47</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos">48</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> +</span><span id="L-49"><a href="#L-49"><span class="linenos">49</span></a> +</span><span id="L-50"><a href="#L-50"><span class="linenos">50</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">entries</span><span class="p">))</span> +</span><span id="L-51"><a href="#L-51"><span class="linenos">51</span></a> +</span><span id="L-52"><a href="#L-52"><span class="linenos">52</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos">53</span></a> <span class="n">SUPPORTS_CREATE_TABLE_LIKE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos">54</span></a> +</span><span id="L-55"><a href="#L-55"><span class="linenos">55</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos">56</span></a> <span class="o">**</span><span class="n">Postgres</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-57"><a href="#L-57"><span class="linenos">57</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-58"><a href="#L-58"><span class="linenos">58</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">preprocess</span><span class="p">(</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos">59</span></a> <span class="p">[</span> +</span><span id="L-60"><a href="#L-60"><span class="linenos">60</span></a> <span class="n">remove_unique_constraints</span><span class="p">,</span> +</span><span id="L-61"><a href="#L-61"><span class="linenos">61</span></a> <span class="n">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">,</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos">62</span></a> <span class="p">]</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos">63</span></a> <span class="p">),</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos">64</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos">65</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos">66</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-67"><a href="#L-67"><span class="linenos">67</span></a> <span class="p">}</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos">68</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> +</span><span id="L-69"><a href="#L-69"><span class="linenos">69</span></a> +</span><span id="L-70"><a href="#L-70"><span class="linenos">70</span></a> <span class="k">def</span> <span class="nf">propertyeq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-71"><a href="#L-71"><span class="linenos">71</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> +</span><span id="L-72"><a href="#L-72"><span class="linenos">72</span></a> +</span><span id="L-73"><a href="#L-73"><span class="linenos">73</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos">74</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LIST</span><span class="p">):</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos">75</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos">76</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2"> LIST"</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos">77</span></a> <span class="k">return</span> <span class="s2">"LIST"</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos">78</span></a> +</span><span id="L-79"><a href="#L-79"><span class="linenos">79</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos">80</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos">81</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MAP[</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">key</span><span class="p">)</span><span class="si">}</span><span class="s2"> => </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos">82</span></a> +</span><span id="L-83"><a href="#L-83"><span class="linenos">83</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</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="k">def</span> <span class="nf">list_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos">86</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos">87</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"LIST"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos">88</span></a> +</span><span id="L-89"><a href="#L-89"><span class="linenos">89</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'LIST'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos">90</span></a> +</span><span id="L-91"><a href="#L-91"><span class="linenos">91</span></a> <span class="k">def</span> <span class="nf">tomap_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos">92</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos">93</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos">94</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'MAP'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span></pre></div> + + + </section> + <section id="Materialize"> + <input id="Materialize-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">Materialize</span><wbr>(<span class="base"><a href="postgres.html#Postgres">sqlglot.dialects.postgres.Postgres</a></span>): + + <label class="view-source-button" for="Materialize-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize-17"><a href="#Materialize-17"><span class="linenos">17</span></a><span class="k">class</span> <span class="nc">Materialize</span><span class="p">(</span><span class="n">Postgres</span><span class="p">):</span> +</span><span id="Materialize-18"><a href="#Materialize-18"><span class="linenos">18</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="Materialize-19"><a href="#Materialize-19"><span class="linenos">19</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Materialize-20"><a href="#Materialize-20"><span class="linenos">20</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">NO_PAREN_FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="Materialize-21"><a href="#Materialize-21"><span class="linenos">21</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_map</span><span class="p">(),</span> +</span><span id="Materialize-22"><a href="#Materialize-22"><span class="linenos">22</span></a> <span class="p">}</span> +</span><span id="Materialize-23"><a href="#Materialize-23"><span class="linenos">23</span></a> +</span><span id="Materialize-24"><a href="#Materialize-24"><span class="linenos">24</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Materialize-25"><a href="#Materialize-25"><span class="linenos">25</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">LAMBDAS</span><span class="p">,</span> +</span><span id="Materialize-26"><a href="#Materialize-26"><span class="linenos">26</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Materialize-27"><a href="#Materialize-27"><span class="linenos">27</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Materialize-28"><a href="#Materialize-28"><span class="linenos">28</span></a> <span class="p">),</span> +</span><span id="Materialize-29"><a href="#Materialize-29"><span class="linenos">29</span></a> <span class="p">}</span> +</span><span id="Materialize-30"><a href="#Materialize-30"><span class="linenos">30</span></a> +</span><span id="Materialize-31"><a href="#Materialize-31"><span class="linenos">31</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Materialize-32"><a href="#Materialize-32"><span class="linenos">32</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Materialize-33"><a href="#Materialize-33"><span class="linenos">33</span></a> +</span><span id="Materialize-34"><a href="#Materialize-34"><span class="linenos">34</span></a> <span class="k">def</span> <span class="nf">_parse_map</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">:</span> +</span><span id="Materialize-35"><a href="#Materialize-35"><span class="linenos">35</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Materialize-36"><a href="#Materialize-36"><span class="linenos">36</span></a> <span class="n">to_map</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="Materialize-37"><a href="#Materialize-37"><span class="linenos">37</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Materialize-38"><a href="#Materialize-38"><span class="linenos">38</span></a> <span class="k">return</span> <span class="n">to_map</span> +</span><span id="Materialize-39"><a href="#Materialize-39"><span class="linenos">39</span></a> +</span><span id="Materialize-40"><a href="#Materialize-40"><span class="linenos">40</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="Materialize-41"><a href="#Materialize-41"><span class="linenos">41</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ["</span><span class="p">)</span> +</span><span id="Materialize-42"><a href="#Materialize-42"><span class="linenos">42</span></a> +</span><span id="Materialize-43"><a href="#Materialize-43"><span class="linenos">43</span></a> <span class="n">entries</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="Materialize-44"><a href="#Materialize-44"><span class="linenos">44</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Materialize-45"><a href="#Materialize-45"><span class="linenos">45</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="Materialize-46"><a href="#Materialize-46"><span class="linenos">46</span></a> <span class="p">]</span> +</span><span id="Materialize-47"><a href="#Materialize-47"><span class="linenos">47</span></a> +</span><span id="Materialize-48"><a href="#Materialize-48"><span class="linenos">48</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="Materialize-49"><a href="#Materialize-49"><span class="linenos">49</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> +</span><span id="Materialize-50"><a href="#Materialize-50"><span class="linenos">50</span></a> +</span><span id="Materialize-51"><a href="#Materialize-51"><span class="linenos">51</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">entries</span><span class="p">))</span> +</span><span id="Materialize-52"><a href="#Materialize-52"><span class="linenos">52</span></a> +</span><span id="Materialize-53"><a href="#Materialize-53"><span class="linenos">53</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="Materialize-54"><a href="#Materialize-54"><span class="linenos">54</span></a> <span class="n">SUPPORTS_CREATE_TABLE_LIKE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Materialize-55"><a href="#Materialize-55"><span class="linenos">55</span></a> +</span><span id="Materialize-56"><a href="#Materialize-56"><span class="linenos">56</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Materialize-57"><a href="#Materialize-57"><span class="linenos">57</span></a> <span class="o">**</span><span class="n">Postgres</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="Materialize-58"><a href="#Materialize-58"><span class="linenos">58</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize-59"><a href="#Materialize-59"><span class="linenos">59</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">preprocess</span><span class="p">(</span> +</span><span id="Materialize-60"><a href="#Materialize-60"><span class="linenos">60</span></a> <span class="p">[</span> +</span><span id="Materialize-61"><a href="#Materialize-61"><span class="linenos">61</span></a> <span class="n">remove_unique_constraints</span><span class="p">,</span> +</span><span id="Materialize-62"><a href="#Materialize-62"><span class="linenos">62</span></a> <span class="n">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">,</span> +</span><span id="Materialize-63"><a href="#Materialize-63"><span class="linenos">63</span></a> <span class="p">]</span> +</span><span id="Materialize-64"><a href="#Materialize-64"><span class="linenos">64</span></a> <span class="p">),</span> +</span><span id="Materialize-65"><a href="#Materialize-65"><span class="linenos">65</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize-66"><a href="#Materialize-66"><span class="linenos">66</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize-67"><a href="#Materialize-67"><span class="linenos">67</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize-68"><a href="#Materialize-68"><span class="linenos">68</span></a> <span class="p">}</span> +</span><span id="Materialize-69"><a href="#Materialize-69"><span class="linenos">69</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> +</span><span id="Materialize-70"><a href="#Materialize-70"><span class="linenos">70</span></a> +</span><span id="Materialize-71"><a href="#Materialize-71"><span class="linenos">71</span></a> <span class="k">def</span> <span class="nf">propertyeq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize-72"><a href="#Materialize-72"><span class="linenos">72</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> +</span><span id="Materialize-73"><a href="#Materialize-73"><span class="linenos">73</span></a> +</span><span id="Materialize-74"><a href="#Materialize-74"><span class="linenos">74</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize-75"><a href="#Materialize-75"><span class="linenos">75</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LIST</span><span class="p">):</span> +</span><span id="Materialize-76"><a href="#Materialize-76"><span class="linenos">76</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Materialize-77"><a href="#Materialize-77"><span class="linenos">77</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2"> LIST"</span> +</span><span id="Materialize-78"><a href="#Materialize-78"><span class="linenos">78</span></a> <span class="k">return</span> <span class="s2">"LIST"</span> +</span><span id="Materialize-79"><a href="#Materialize-79"><span class="linenos">79</span></a> +</span><span id="Materialize-80"><a href="#Materialize-80"><span class="linenos">80</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Materialize-81"><a href="#Materialize-81"><span class="linenos">81</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="Materialize-82"><a href="#Materialize-82"><span class="linenos">82</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MAP[</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">key</span><span class="p">)</span><span class="si">}</span><span class="s2"> => </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Materialize-83"><a href="#Materialize-83"><span class="linenos">83</span></a> +</span><span id="Materialize-84"><a href="#Materialize-84"><span class="linenos">84</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Materialize-85"><a href="#Materialize-85"><span class="linenos">85</span></a> +</span><span id="Materialize-86"><a href="#Materialize-86"><span class="linenos">86</span></a> <span class="k">def</span> <span class="nf">list_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize-87"><a href="#Materialize-87"><span class="linenos">87</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Materialize-88"><a href="#Materialize-88"><span class="linenos">88</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"LIST"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Materialize-89"><a href="#Materialize-89"><span class="linenos">89</span></a> +</span><span id="Materialize-90"><a href="#Materialize-90"><span class="linenos">90</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'LIST'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Materialize-91"><a href="#Materialize-91"><span class="linenos">91</span></a> +</span><span id="Materialize-92"><a href="#Materialize-92"><span class="linenos">92</span></a> <span class="k">def</span> <span class="nf">tomap_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize-93"><a href="#Materialize-93"><span class="linenos">93</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Materialize-94"><a href="#Materialize-94"><span class="linenos">94</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Materialize-95"><a href="#Materialize-95"><span class="linenos">95</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'MAP'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span></pre></div> + + + + + <div id="Materialize.tokenizer_class" class="classattr"> + <div class="attr variable"> + <span class="name">tokenizer_class</span> = +<span class="default_value"><class '<a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a>'></span> + + + </div> + <a class="headerlink" href="#Materialize.tokenizer_class"></a> + + + + </div> + <div id="Materialize.parser_class" class="classattr"> + <div class="attr variable"> + <span class="name">parser_class</span> = +<span class="default_value"><class '<a href="#Materialize.Parser">Materialize.Parser</a>'></span> + + + </div> + <a class="headerlink" href="#Materialize.parser_class"></a> + + + + </div> + <div id="Materialize.generator_class" class="classattr"> + <div class="attr variable"> + <span class="name">generator_class</span> = +<span class="default_value"><class '<a href="#Materialize.Generator">Materialize.Generator</a>'></span> + + + </div> + <a class="headerlink" href="#Materialize.generator_class"></a> + + + + </div> + <div id="Materialize.TIME_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">TIME_TRIE</span><span class="annotation">: Dict</span> = +<input id="Materialize.TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.TIME_TRIE-view-value"></label><span class="default_value">{'A': {'M': {0: True}}, 'P': {'M': {0: True}}, 'D': {0: True, 'D': {0: True, 'D': {0: True}}}, 'F': {'M': {'D': {'D': {0: True, 'D': {0: True}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'S': {'S': {0: True}}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'O': {'F': {0: True}}, 'S': {'S': {0: True}}, 'T': {'M': {'D': {'a': {'y': {0: True}}, 'y': {0: True}}, 'M': {'o': {'n': {0: True, 't': {'h': {0: True}}}}}}, 'Z': {0: True}}, 'U': {'S': {0: True}}, 'W': {'W': {0: True}}, 'Y': {'Y': {0: True, 'Y': {'Y': {0: True}}}}}</span> + + + </div> + <a class="headerlink" href="#Materialize.TIME_TRIE"></a> + + + + </div> + <div id="Materialize.FORMAT_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">FORMAT_TRIE</span><span class="annotation">: Dict</span> = +<input id="Materialize.FORMAT_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.FORMAT_TRIE-view-value"></label><span class="default_value">{'A': {'M': {0: True}}, 'P': {'M': {0: True}}, 'D': {0: True, 'D': {0: True, 'D': {0: True}}}, 'F': {'M': {'D': {'D': {0: True, 'D': {0: True}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'S': {'S': {0: True}}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'O': {'F': {0: True}}, 'S': {'S': {0: True}}, 'T': {'M': {'D': {'a': {'y': {0: True}}, 'y': {0: True}}, 'M': {'o': {'n': {0: True, 't': {'h': {0: True}}}}}}, 'Z': {0: True}}, 'U': {'S': {0: True}}, 'W': {'W': {0: True}}, 'Y': {'Y': {0: True, 'Y': {'Y': {0: True}}}}}</span> + + + </div> + <a class="headerlink" href="#Materialize.FORMAT_TRIE"></a> + + + + </div> + <div id="Materialize.INVERSE_TIME_MAPPING" class="classattr"> + <div class="attr variable"> + <span class="name">INVERSE_TIME_MAPPING</span><span class="annotation">: Dict[str, str]</span> = +<input id="Materialize.INVERSE_TIME_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.INVERSE_TIME_MAPPING-view-value"></label><span class="default_value">{'%p': 'PM', '%u': 'D', '%d': 'DD', '%j': 'DDD', '%-d': 'FMDD', '%-j': 'FMDDD', '%-I': 'FMHH12', '%-H': 'FMHH24', '%-M': 'FMMI', '%-m': 'FMMM', '%-S': 'FMSS', '%I': 'HH12', '%H': 'HH24', '%M': 'MI', '%m': 'MM', '%z': 'OF', '%S': 'SS', '%A': 'TMDay', '%a': 'TMDy', '%b': 'TMMon', '%B': 'TMMonth', '%Z': 'TZ', '%f': 'US', '%U': 'WW', '%y': 'YY', '%Y': 'YYYY'}</span> + + + </div> + <a class="headerlink" href="#Materialize.INVERSE_TIME_MAPPING"></a> + + + + </div> + <div id="Materialize.INVERSE_TIME_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">INVERSE_TIME_TRIE</span><span class="annotation">: Dict</span> = +<input id="Materialize.INVERSE_TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.INVERSE_TIME_TRIE-view-value"></label><span class="default_value">{'%': {'p': {0: True}, 'u': {0: True}, 'd': {0: True}, 'j': {0: True}, '-': {'d': {0: True}, 'j': {0: True}, 'I': {0: True}, 'H': {0: True}, 'M': {0: True}, 'm': {0: True}, 'S': {0: True}}, 'I': {0: True}, 'H': {0: True}, 'M': {0: True}, 'm': {0: True}, 'z': {0: True}, 'S': {0: True}, 'A': {0: True}, 'a': {0: True}, 'b': {0: True}, 'B': {0: True}, 'Z': {0: True}, 'f': {0: True}, 'U': {0: True}, 'y': {0: True}, 'Y': {0: True}}}</span> + + + </div> + <a class="headerlink" href="#Materialize.INVERSE_TIME_TRIE"></a> + + + + </div> + <div id="Materialize.ESCAPED_SEQUENCES" class="classattr"> + <div class="attr variable"> + <span class="name">ESCAPED_SEQUENCES</span><span class="annotation">: Dict[str, str]</span> = +<span class="default_value">{}</span> + + + </div> + <a class="headerlink" href="#Materialize.ESCAPED_SEQUENCES"></a> + + + + </div> + <div id="Materialize.QUOTE_START" class="classattr"> + <div class="attr variable"> + <span class="name">QUOTE_START</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#Materialize.QUOTE_START"></a> + + + + </div> + <div id="Materialize.QUOTE_END" class="classattr"> + <div class="attr variable"> + <span class="name">QUOTE_END</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#Materialize.QUOTE_END"></a> + + + + </div> + <div id="Materialize.IDENTIFIER_START" class="classattr"> + <div class="attr variable"> + <span class="name">IDENTIFIER_START</span> = +<span class="default_value">'"'</span> + + + </div> + <a class="headerlink" href="#Materialize.IDENTIFIER_START"></a> + + + + </div> + <div id="Materialize.IDENTIFIER_END" class="classattr"> + <div class="attr variable"> + <span class="name">IDENTIFIER_END</span> = +<span class="default_value">'"'</span> + + + </div> + <a class="headerlink" href="#Materialize.IDENTIFIER_END"></a> + + + + </div> + <div id="Materialize.BIT_START" class="classattr"> + <div class="attr variable"> + <span class="name">BIT_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"b'"</span> + + + </div> + <a class="headerlink" href="#Materialize.BIT_START"></a> + + + + </div> + <div id="Materialize.BIT_END" class="classattr"> + <div class="attr variable"> + <span class="name">BIT_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#Materialize.BIT_END"></a> + + + + </div> + <div id="Materialize.HEX_START" class="classattr"> + <div class="attr variable"> + <span class="name">HEX_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"x'"</span> + + + </div> + <a class="headerlink" href="#Materialize.HEX_START"></a> + + + + </div> + <div id="Materialize.HEX_END" class="classattr"> + <div class="attr variable"> + <span class="name">HEX_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#Materialize.HEX_END"></a> + + + + </div> + <div id="Materialize.BYTE_START" class="classattr"> + <div class="attr variable"> + <span class="name">BYTE_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"e'"</span> + + + </div> + <a class="headerlink" href="#Materialize.BYTE_START"></a> + + + + </div> + <div id="Materialize.BYTE_END" class="classattr"> + <div class="attr variable"> + <span class="name">BYTE_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#Materialize.BYTE_END"></a> + + + + </div> + <div id="Materialize.UNICODE_START" class="classattr"> + <div class="attr variable"> + <span class="name">UNICODE_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">None</span> + + + </div> + <a class="headerlink" href="#Materialize.UNICODE_START"></a> + + + + </div> + <div id="Materialize.UNICODE_END" class="classattr"> + <div class="attr variable"> + <span class="name">UNICODE_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">None</span> + + + </div> + <a class="headerlink" href="#Materialize.UNICODE_END"></a> + + + + </div> + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></dt> + <dd id="Materialize.__init__" class="function"><a href="dialect.html#Dialect.__init__">Dialect</a></dd> + <dd id="Materialize.WEEK_OFFSET" class="variable"><a href="dialect.html#Dialect.WEEK_OFFSET">WEEK_OFFSET</a></dd> + <dd id="Materialize.UNNEST_COLUMN_ONLY" class="variable"><a href="dialect.html#Dialect.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> + <dd id="Materialize.ALIAS_POST_TABLESAMPLE" class="variable"><a href="dialect.html#Dialect.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> + <dd id="Materialize.NORMALIZATION_STRATEGY" class="variable"><a href="dialect.html#Dialect.NORMALIZATION_STRATEGY">NORMALIZATION_STRATEGY</a></dd> + <dd id="Materialize.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="Materialize.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> + <dd id="Materialize.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> + <dd id="Materialize.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd> + <dd id="Materialize.SUPPORTS_SEMI_ANTI_JOIN" class="variable"><a href="dialect.html#Dialect.SUPPORTS_SEMI_ANTI_JOIN">SUPPORTS_SEMI_ANTI_JOIN</a></dd> + <dd id="Materialize.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> + <dd id="Materialize.LOG_BASE_FIRST" class="variable"><a href="dialect.html#Dialect.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> + <dd id="Materialize.SAFE_DIVISION" class="variable"><a href="dialect.html#Dialect.SAFE_DIVISION">SAFE_DIVISION</a></dd> + <dd id="Materialize.HEX_LOWERCASE" class="variable"><a href="dialect.html#Dialect.HEX_LOWERCASE">HEX_LOWERCASE</a></dd> + <dd id="Materialize.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> + <dd id="Materialize.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd> + <dd id="Materialize.FORMAT_MAPPING" class="variable"><a href="dialect.html#Dialect.FORMAT_MAPPING">FORMAT_MAPPING</a></dd> + <dd id="Materialize.UNESCAPED_SEQUENCES" class="variable"><a href="dialect.html#Dialect.UNESCAPED_SEQUENCES">UNESCAPED_SEQUENCES</a></dd> + <dd id="Materialize.PSEUDOCOLUMNS" class="variable"><a href="dialect.html#Dialect.PSEUDOCOLUMNS">PSEUDOCOLUMNS</a></dd> + <dd id="Materialize.PREFER_CTE_ALIAS_COLUMN" class="variable"><a href="dialect.html#Dialect.PREFER_CTE_ALIAS_COLUMN">PREFER_CTE_ALIAS_COLUMN</a></dd> + <dd id="Materialize.COPY_PARAMS_ARE_CSV" class="variable"><a href="dialect.html#Dialect.COPY_PARAMS_ARE_CSV">COPY_PARAMS_ARE_CSV</a></dd> + <dd id="Materialize.get_or_raise" class="function"><a href="dialect.html#Dialect.get_or_raise">get_or_raise</a></dd> + <dd id="Materialize.format_time" class="function"><a href="dialect.html#Dialect.format_time">format_time</a></dd> + <dd id="Materialize.normalize_identifier" class="function"><a href="dialect.html#Dialect.normalize_identifier">normalize_identifier</a></dd> + <dd id="Materialize.case_sensitive" class="function"><a href="dialect.html#Dialect.case_sensitive">case_sensitive</a></dd> + <dd id="Materialize.can_identify" class="function"><a href="dialect.html#Dialect.can_identify">can_identify</a></dd> + <dd id="Materialize.quote_identifier" class="function"><a href="dialect.html#Dialect.quote_identifier">quote_identifier</a></dd> + <dd id="Materialize.to_json_path" class="function"><a href="dialect.html#Dialect.to_json_path">to_json_path</a></dd> + <dd id="Materialize.parse" class="function"><a href="dialect.html#Dialect.parse">parse</a></dd> + <dd id="Materialize.parse_into" class="function"><a href="dialect.html#Dialect.parse_into">parse_into</a></dd> + <dd id="Materialize.generate" class="function"><a href="dialect.html#Dialect.generate">generate</a></dd> + <dd id="Materialize.transpile" class="function"><a href="dialect.html#Dialect.transpile">transpile</a></dd> + <dd id="Materialize.tokenize" class="function"><a href="dialect.html#Dialect.tokenize">tokenize</a></dd> + <dd id="Materialize.tokenizer" class="variable"><a href="dialect.html#Dialect.tokenizer">tokenizer</a></dd> + <dd id="Materialize.parser" class="function"><a href="dialect.html#Dialect.parser">parser</a></dd> + <dd id="Materialize.generator" class="function"><a href="dialect.html#Dialect.generator">generator</a></dd> + + </div> + <div><dt><a href="postgres.html#Postgres">sqlglot.dialects.postgres.Postgres</a></dt> + <dd id="Materialize.INDEX_OFFSET" class="variable"><a href="postgres.html#Postgres.INDEX_OFFSET">INDEX_OFFSET</a></dd> + <dd id="Materialize.TYPED_DIVISION" class="variable"><a href="postgres.html#Postgres.TYPED_DIVISION">TYPED_DIVISION</a></dd> + <dd id="Materialize.CONCAT_COALESCE" class="variable"><a href="postgres.html#Postgres.CONCAT_COALESCE">CONCAT_COALESCE</a></dd> + <dd id="Materialize.NULL_ORDERING" class="variable"><a href="postgres.html#Postgres.NULL_ORDERING">NULL_ORDERING</a></dd> + <dd id="Materialize.TIME_FORMAT" class="variable"><a href="postgres.html#Postgres.TIME_FORMAT">TIME_FORMAT</a></dd> + <dd id="Materialize.TABLESAMPLE_SIZE_IS_PERCENT" class="variable"><a href="postgres.html#Postgres.TABLESAMPLE_SIZE_IS_PERCENT">TABLESAMPLE_SIZE_IS_PERCENT</a></dd> + <dd id="Materialize.TIME_MAPPING" class="variable"><a href="postgres.html#Postgres.TIME_MAPPING">TIME_MAPPING</a></dd> + <dd id="Materialize.Tokenizer" class="class"><a href="postgres.html#Postgres.Tokenizer">Tokenizer</a></dd> + + </div> + </dl> + </div> + </section> + <section id="Materialize.Parser"> + <input id="Materialize.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">Materialize.Parser</span><wbr>(<span class="base"><a href="postgres.html#Postgres.Parser">sqlglot.dialects.postgres.Postgres.Parser</a></span>): + + <label class="view-source-button" for="Materialize.Parser-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize.Parser"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize.Parser-18"><a href="#Materialize.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">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="Materialize.Parser-19"><a href="#Materialize.Parser-19"><span class="linenos">19</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Materialize.Parser-20"><a href="#Materialize.Parser-20"><span class="linenos">20</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">NO_PAREN_FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="Materialize.Parser-21"><a href="#Materialize.Parser-21"><span class="linenos">21</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_map</span><span class="p">(),</span> +</span><span id="Materialize.Parser-22"><a href="#Materialize.Parser-22"><span class="linenos">22</span></a> <span class="p">}</span> +</span><span id="Materialize.Parser-23"><a href="#Materialize.Parser-23"><span class="linenos">23</span></a> +</span><span id="Materialize.Parser-24"><a href="#Materialize.Parser-24"><span class="linenos">24</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Materialize.Parser-25"><a href="#Materialize.Parser-25"><span class="linenos">25</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">LAMBDAS</span><span class="p">,</span> +</span><span id="Materialize.Parser-26"><a href="#Materialize.Parser-26"><span class="linenos">26</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Materialize.Parser-27"><a href="#Materialize.Parser-27"><span class="linenos">27</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Materialize.Parser-28"><a href="#Materialize.Parser-28"><span class="linenos">28</span></a> <span class="p">),</span> +</span><span id="Materialize.Parser-29"><a href="#Materialize.Parser-29"><span class="linenos">29</span></a> <span class="p">}</span> +</span><span id="Materialize.Parser-30"><a href="#Materialize.Parser-30"><span class="linenos">30</span></a> +</span><span id="Materialize.Parser-31"><a href="#Materialize.Parser-31"><span class="linenos">31</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Materialize.Parser-32"><a href="#Materialize.Parser-32"><span class="linenos">32</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Materialize.Parser-33"><a href="#Materialize.Parser-33"><span class="linenos">33</span></a> +</span><span id="Materialize.Parser-34"><a href="#Materialize.Parser-34"><span class="linenos">34</span></a> <span class="k">def</span> <span class="nf">_parse_map</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">:</span> +</span><span id="Materialize.Parser-35"><a href="#Materialize.Parser-35"><span class="linenos">35</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Materialize.Parser-36"><a href="#Materialize.Parser-36"><span class="linenos">36</span></a> <span class="n">to_map</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="Materialize.Parser-37"><a href="#Materialize.Parser-37"><span class="linenos">37</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Materialize.Parser-38"><a href="#Materialize.Parser-38"><span class="linenos">38</span></a> <span class="k">return</span> <span class="n">to_map</span> +</span><span id="Materialize.Parser-39"><a href="#Materialize.Parser-39"><span class="linenos">39</span></a> +</span><span id="Materialize.Parser-40"><a href="#Materialize.Parser-40"><span class="linenos">40</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="Materialize.Parser-41"><a href="#Materialize.Parser-41"><span class="linenos">41</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ["</span><span class="p">)</span> +</span><span id="Materialize.Parser-42"><a href="#Materialize.Parser-42"><span class="linenos">42</span></a> +</span><span id="Materialize.Parser-43"><a href="#Materialize.Parser-43"><span class="linenos">43</span></a> <span class="n">entries</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="Materialize.Parser-44"><a href="#Materialize.Parser-44"><span class="linenos">44</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Materialize.Parser-45"><a href="#Materialize.Parser-45"><span class="linenos">45</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="Materialize.Parser-46"><a href="#Materialize.Parser-46"><span class="linenos">46</span></a> <span class="p">]</span> +</span><span id="Materialize.Parser-47"><a href="#Materialize.Parser-47"><span class="linenos">47</span></a> +</span><span id="Materialize.Parser-48"><a href="#Materialize.Parser-48"><span class="linenos">48</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="Materialize.Parser-49"><a href="#Materialize.Parser-49"><span class="linenos">49</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> +</span><span id="Materialize.Parser-50"><a href="#Materialize.Parser-50"><span class="linenos">50</span></a> +</span><span id="Materialize.Parser-51"><a href="#Materialize.Parser-51"><span class="linenos">51</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">entries</span><span class="p">))</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> 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="Materialize.Parser.NO_PAREN_FUNCTION_PARSERS" class="classattr"> + <div class="attr variable"> + <span class="name">NO_PAREN_FUNCTION_PARSERS</span> = +<input id="Materialize.Parser.NO_PAREN_FUNCTION_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.Parser.NO_PAREN_FUNCTION_PARSERS-view-value"></label><span class="default_value">{'ANY': <function Parser.<lambda>>, 'CASE': <function Parser.<lambda>>, 'IF': <function Parser.<lambda>>, 'NEXT': <function Parser.<lambda>>, 'MAP': <function <a href="#Materialize.Parser">Materialize.Parser</a>.<lambda>>}</span> + + + </div> + <a class="headerlink" href="#Materialize.Parser.NO_PAREN_FUNCTION_PARSERS"></a> + + + + </div> + <div id="Materialize.Parser.LAMBDAS" class="classattr"> + <div class="attr variable"> + <span class="name">LAMBDAS</span> = +<input id="Materialize.Parser.LAMBDAS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.Parser.LAMBDAS-view-value"></label><span class="default_value">{<TokenType.ARROW: 'ARROW'>: <function Parser.<lambda>>, <TokenType.FARROW: 'FARROW'>: <function <a href="#Materialize.Parser">Materialize.Parser</a>.<lambda>>}</span> + + + </div> + <a class="headerlink" href="#Materialize.Parser.LAMBDAS"></a> + + + + </div> + <div id="Materialize.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="#Materialize.Parser.SHOW_TRIE"></a> + + + + </div> + <div id="Materialize.Parser.SET_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">SET_TRIE</span><span class="annotation">: Dict</span> = +<span class="default_value">{'GLOBAL': {0: True}, 'LOCAL': {0: True}, 'SESSION': {0: True}, 'TRANSACTION': {0: True}}</span> + + + </div> + <a class="headerlink" href="#Materialize.Parser.SET_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="Materialize.Parser.__init__" class="function"><a href="../parser.html#Parser.__init__">Parser</a></dd> + <dd id="Materialize.Parser.NO_PAREN_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NO_PAREN_FUNCTIONS">NO_PAREN_FUNCTIONS</a></dd> + <dd id="Materialize.Parser.STRUCT_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.STRUCT_TYPE_TOKENS">STRUCT_TYPE_TOKENS</a></dd> + <dd id="Materialize.Parser.NESTED_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.NESTED_TYPE_TOKENS">NESTED_TYPE_TOKENS</a></dd> + <dd id="Materialize.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd> + <dd id="Materialize.Parser.AGGREGATE_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.AGGREGATE_TYPE_TOKENS">AGGREGATE_TYPE_TOKENS</a></dd> + <dd id="Materialize.Parser.TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd> + <dd id="Materialize.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="Materialize.Parser.SUBQUERY_PREDICATES" class="variable"><a href="../parser.html#Parser.SUBQUERY_PREDICATES">SUBQUERY_PREDICATES</a></dd> + <dd id="Materialize.Parser.RESERVED_TOKENS" class="variable"><a href="../parser.html#Parser.RESERVED_TOKENS">RESERVED_TOKENS</a></dd> + <dd id="Materialize.Parser.DB_CREATABLES" class="variable"><a href="../parser.html#Parser.DB_CREATABLES">DB_CREATABLES</a></dd> + <dd id="Materialize.Parser.CREATABLES" class="variable"><a href="../parser.html#Parser.CREATABLES">CREATABLES</a></dd> + <dd id="Materialize.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> + <dd id="Materialize.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> + <dd id="Materialize.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> + <dd id="Materialize.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Materialize.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> + <dd id="Materialize.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> + <dd id="Materialize.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> + <dd id="Materialize.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> + <dd id="Materialize.Parser.FUNC_TOKENS" class="variable"><a href="../parser.html#Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd> + <dd id="Materialize.Parser.CONJUNCTION" class="variable"><a href="../parser.html#Parser.CONJUNCTION">CONJUNCTION</a></dd> + <dd id="Materialize.Parser.ASSIGNMENT" class="variable"><a href="../parser.html#Parser.ASSIGNMENT">ASSIGNMENT</a></dd> + <dd id="Materialize.Parser.DISJUNCTION" class="variable"><a href="../parser.html#Parser.DISJUNCTION">DISJUNCTION</a></dd> + <dd id="Materialize.Parser.EQUALITY" class="variable"><a href="../parser.html#Parser.EQUALITY">EQUALITY</a></dd> + <dd id="Materialize.Parser.COMPARISON" class="variable"><a href="../parser.html#Parser.COMPARISON">COMPARISON</a></dd> + <dd id="Materialize.Parser.TERM" class="variable"><a href="../parser.html#Parser.TERM">TERM</a></dd> + <dd id="Materialize.Parser.FACTOR" class="variable"><a href="../parser.html#Parser.FACTOR">FACTOR</a></dd> + <dd id="Materialize.Parser.TIMES" class="variable"><a href="../parser.html#Parser.TIMES">TIMES</a></dd> + <dd id="Materialize.Parser.TIMESTAMPS" class="variable"><a href="../parser.html#Parser.TIMESTAMPS">TIMESTAMPS</a></dd> + <dd id="Materialize.Parser.SET_OPERATIONS" class="variable"><a href="../parser.html#Parser.SET_OPERATIONS">SET_OPERATIONS</a></dd> + <dd id="Materialize.Parser.JOIN_METHODS" class="variable"><a href="../parser.html#Parser.JOIN_METHODS">JOIN_METHODS</a></dd> + <dd id="Materialize.Parser.JOIN_SIDES" class="variable"><a href="../parser.html#Parser.JOIN_SIDES">JOIN_SIDES</a></dd> + <dd id="Materialize.Parser.JOIN_KINDS" class="variable"><a href="../parser.html#Parser.JOIN_KINDS">JOIN_KINDS</a></dd> + <dd id="Materialize.Parser.JOIN_HINTS" class="variable"><a href="../parser.html#Parser.JOIN_HINTS">JOIN_HINTS</a></dd> + <dd id="Materialize.Parser.EXPRESSION_PARSERS" class="variable"><a href="../parser.html#Parser.EXPRESSION_PARSERS">EXPRESSION_PARSERS</a></dd> + <dd id="Materialize.Parser.UNARY_PARSERS" class="variable"><a href="../parser.html#Parser.UNARY_PARSERS">UNARY_PARSERS</a></dd> + <dd id="Materialize.Parser.STRING_PARSERS" class="variable"><a href="../parser.html#Parser.STRING_PARSERS">STRING_PARSERS</a></dd> + <dd id="Materialize.Parser.NUMERIC_PARSERS" class="variable"><a href="../parser.html#Parser.NUMERIC_PARSERS">NUMERIC_PARSERS</a></dd> + <dd id="Materialize.Parser.PRIMARY_PARSERS" class="variable"><a href="../parser.html#Parser.PRIMARY_PARSERS">PRIMARY_PARSERS</a></dd> + <dd id="Materialize.Parser.PLACEHOLDER_PARSERS" class="variable"><a href="../parser.html#Parser.PLACEHOLDER_PARSERS">PLACEHOLDER_PARSERS</a></dd> + <dd id="Materialize.Parser.CONSTRAINT_PARSERS" class="variable"><a href="../parser.html#Parser.CONSTRAINT_PARSERS">CONSTRAINT_PARSERS</a></dd> + <dd id="Materialize.Parser.ALTER_PARSERS" class="variable"><a href="../parser.html#Parser.ALTER_PARSERS">ALTER_PARSERS</a></dd> + <dd id="Materialize.Parser.ALTER_ALTER_PARSERS" class="variable"><a href="../parser.html#Parser.ALTER_ALTER_PARSERS">ALTER_ALTER_PARSERS</a></dd> + <dd id="Materialize.Parser.SCHEMA_UNNAMED_CONSTRAINTS" class="variable"><a href="../parser.html#Parser.SCHEMA_UNNAMED_CONSTRAINTS">SCHEMA_UNNAMED_CONSTRAINTS</a></dd> + <dd id="Materialize.Parser.INVALID_FUNC_NAME_TOKENS" class="variable"><a href="../parser.html#Parser.INVALID_FUNC_NAME_TOKENS">INVALID_FUNC_NAME_TOKENS</a></dd> + <dd id="Materialize.Parser.FUNCTIONS_WITH_ALIASED_ARGS" class="variable"><a href="../parser.html#Parser.FUNCTIONS_WITH_ALIASED_ARGS">FUNCTIONS_WITH_ALIASED_ARGS</a></dd> + <dd id="Materialize.Parser.KEY_VALUE_DEFINITIONS" class="variable"><a href="../parser.html#Parser.KEY_VALUE_DEFINITIONS">KEY_VALUE_DEFINITIONS</a></dd> + <dd id="Materialize.Parser.QUERY_MODIFIER_PARSERS" class="variable"><a href="../parser.html#Parser.QUERY_MODIFIER_PARSERS">QUERY_MODIFIER_PARSERS</a></dd> + <dd id="Materialize.Parser.SET_PARSERS" class="variable"><a href="../parser.html#Parser.SET_PARSERS">SET_PARSERS</a></dd> + <dd id="Materialize.Parser.SHOW_PARSERS" class="variable"><a href="../parser.html#Parser.SHOW_PARSERS">SHOW_PARSERS</a></dd> + <dd id="Materialize.Parser.TYPE_LITERAL_PARSERS" class="variable"><a href="../parser.html#Parser.TYPE_LITERAL_PARSERS">TYPE_LITERAL_PARSERS</a></dd> + <dd id="Materialize.Parser.TYPE_CONVERTER" class="variable"><a href="../parser.html#Parser.TYPE_CONVERTER">TYPE_CONVERTER</a></dd> + <dd id="Materialize.Parser.DDL_SELECT_TOKENS" class="variable"><a href="../parser.html#Parser.DDL_SELECT_TOKENS">DDL_SELECT_TOKENS</a></dd> + <dd id="Materialize.Parser.PRE_VOLATILE_TOKENS" class="variable"><a href="../parser.html#Parser.PRE_VOLATILE_TOKENS">PRE_VOLATILE_TOKENS</a></dd> + <dd id="Materialize.Parser.TRANSACTION_KIND" class="variable"><a href="../parser.html#Parser.TRANSACTION_KIND">TRANSACTION_KIND</a></dd> + <dd id="Materialize.Parser.TRANSACTION_CHARACTERISTICS" class="variable"><a href="../parser.html#Parser.TRANSACTION_CHARACTERISTICS">TRANSACTION_CHARACTERISTICS</a></dd> + <dd id="Materialize.Parser.CONFLICT_ACTIONS" class="variable"><a href="../parser.html#Parser.CONFLICT_ACTIONS">CONFLICT_ACTIONS</a></dd> + <dd id="Materialize.Parser.CREATE_SEQUENCE" class="variable"><a href="../parser.html#Parser.CREATE_SEQUENCE">CREATE_SEQUENCE</a></dd> + <dd id="Materialize.Parser.ISOLATED_LOADING_OPTIONS" class="variable"><a href="../parser.html#Parser.ISOLATED_LOADING_OPTIONS">ISOLATED_LOADING_OPTIONS</a></dd> + <dd id="Materialize.Parser.USABLES" class="variable"><a href="../parser.html#Parser.USABLES">USABLES</a></dd> + <dd id="Materialize.Parser.CAST_ACTIONS" class="variable"><a href="../parser.html#Parser.CAST_ACTIONS">CAST_ACTIONS</a></dd> + <dd id="Materialize.Parser.INSERT_ALTERNATIVES" class="variable"><a href="../parser.html#Parser.INSERT_ALTERNATIVES">INSERT_ALTERNATIVES</a></dd> + <dd id="Materialize.Parser.CLONE_KEYWORDS" class="variable"><a href="../parser.html#Parser.CLONE_KEYWORDS">CLONE_KEYWORDS</a></dd> + <dd id="Materialize.Parser.HISTORICAL_DATA_KIND" class="variable"><a href="../parser.html#Parser.HISTORICAL_DATA_KIND">HISTORICAL_DATA_KIND</a></dd> + <dd id="Materialize.Parser.OPCLASS_FOLLOW_KEYWORDS" class="variable"><a href="../parser.html#Parser.OPCLASS_FOLLOW_KEYWORDS">OPCLASS_FOLLOW_KEYWORDS</a></dd> + <dd id="Materialize.Parser.OPTYPE_FOLLOW_TOKENS" class="variable"><a href="../parser.html#Parser.OPTYPE_FOLLOW_TOKENS">OPTYPE_FOLLOW_TOKENS</a></dd> + <dd id="Materialize.Parser.TABLE_INDEX_HINT_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_INDEX_HINT_TOKENS">TABLE_INDEX_HINT_TOKENS</a></dd> + <dd id="Materialize.Parser.VIEW_ATTRIBUTES" class="variable"><a href="../parser.html#Parser.VIEW_ATTRIBUTES">VIEW_ATTRIBUTES</a></dd> + <dd id="Materialize.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> + <dd id="Materialize.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> + <dd id="Materialize.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> + <dd id="Materialize.Parser.JSON_KEY_VALUE_SEPARATOR_TOKENS" class="variable"><a href="../parser.html#Parser.JSON_KEY_VALUE_SEPARATOR_TOKENS">JSON_KEY_VALUE_SEPARATOR_TOKENS</a></dd> + <dd id="Materialize.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd> + <dd id="Materialize.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> + <dd id="Materialize.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> + <dd id="Materialize.Parser.NULL_TOKENS" class="variable"><a href="../parser.html#Parser.NULL_TOKENS">NULL_TOKENS</a></dd> + <dd id="Materialize.Parser.UNNEST_OFFSET_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UNNEST_OFFSET_ALIAS_TOKENS">UNNEST_OFFSET_ALIAS_TOKENS</a></dd> + <dd id="Materialize.Parser.SELECT_START_TOKENS" class="variable"><a href="../parser.html#Parser.SELECT_START_TOKENS">SELECT_START_TOKENS</a></dd> + <dd id="Materialize.Parser.COPY_INTO_VARLEN_OPTIONS" class="variable"><a href="../parser.html#Parser.COPY_INTO_VARLEN_OPTIONS">COPY_INTO_VARLEN_OPTIONS</a></dd> + <dd id="Materialize.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> + <dd id="Materialize.Parser.PREFIXED_PIVOT_COLUMNS" class="variable"><a href="../parser.html#Parser.PREFIXED_PIVOT_COLUMNS">PREFIXED_PIVOT_COLUMNS</a></dd> + <dd id="Materialize.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> + <dd id="Materialize.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> + <dd id="Materialize.Parser.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</a></dd> + <dd id="Materialize.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd> + <dd id="Materialize.Parser.DEFAULT_SAMPLING_METHOD" class="variable"><a href="../parser.html#Parser.DEFAULT_SAMPLING_METHOD">DEFAULT_SAMPLING_METHOD</a></dd> + <dd id="Materialize.Parser.SET_REQUIRES_ASSIGNMENT_DELIMITER" class="variable"><a href="../parser.html#Parser.SET_REQUIRES_ASSIGNMENT_DELIMITER">SET_REQUIRES_ASSIGNMENT_DELIMITER</a></dd> + <dd id="Materialize.Parser.TRIM_PATTERN_FIRST" class="variable"><a href="../parser.html#Parser.TRIM_PATTERN_FIRST">TRIM_PATTERN_FIRST</a></dd> + <dd id="Materialize.Parser.STRING_ALIASES" class="variable"><a href="../parser.html#Parser.STRING_ALIASES">STRING_ALIASES</a></dd> + <dd id="Materialize.Parser.MODIFIERS_ATTACHED_TO_UNION" class="variable"><a href="../parser.html#Parser.MODIFIERS_ATTACHED_TO_UNION">MODIFIERS_ATTACHED_TO_UNION</a></dd> + <dd id="Materialize.Parser.UNION_MODIFIERS" class="variable"><a href="../parser.html#Parser.UNION_MODIFIERS">UNION_MODIFIERS</a></dd> + <dd id="Materialize.Parser.NO_PAREN_IF_COMMANDS" class="variable"><a href="../parser.html#Parser.NO_PAREN_IF_COMMANDS">NO_PAREN_IF_COMMANDS</a></dd> + <dd id="Materialize.Parser.COLON_IS_JSON_EXTRACT" class="variable"><a href="../parser.html#Parser.COLON_IS_JSON_EXTRACT">COLON_IS_JSON_EXTRACT</a></dd> + <dd id="Materialize.Parser.VALUES_FOLLOWED_BY_PAREN" class="variable"><a href="../parser.html#Parser.VALUES_FOLLOWED_BY_PAREN">VALUES_FOLLOWED_BY_PAREN</a></dd> + <dd id="Materialize.Parser.SUPPORTS_IMPLICIT_UNNEST" class="variable"><a href="../parser.html#Parser.SUPPORTS_IMPLICIT_UNNEST">SUPPORTS_IMPLICIT_UNNEST</a></dd> + <dd id="Materialize.Parser.INTERVAL_SPANS" class="variable"><a href="../parser.html#Parser.INTERVAL_SPANS">INTERVAL_SPANS</a></dd> + <dd id="Materialize.Parser.SUPPORTS_PARTITION_SELECTION" class="variable"><a href="../parser.html#Parser.SUPPORTS_PARTITION_SELECTION">SUPPORTS_PARTITION_SELECTION</a></dd> + <dd id="Materialize.Parser.error_level" class="variable"><a href="../parser.html#Parser.error_level">error_level</a></dd> + <dd id="Materialize.Parser.error_message_context" class="variable"><a href="../parser.html#Parser.error_message_context">error_message_context</a></dd> + <dd id="Materialize.Parser.max_errors" class="variable"><a href="../parser.html#Parser.max_errors">max_errors</a></dd> + <dd id="Materialize.Parser.dialect" class="variable"><a href="../parser.html#Parser.dialect">dialect</a></dd> + <dd id="Materialize.Parser.reset" class="function"><a href="../parser.html#Parser.reset">reset</a></dd> + <dd id="Materialize.Parser.parse" class="function"><a href="../parser.html#Parser.parse">parse</a></dd> + <dd id="Materialize.Parser.parse_into" class="function"><a href="../parser.html#Parser.parse_into">parse_into</a></dd> + <dd id="Materialize.Parser.check_errors" class="function"><a href="../parser.html#Parser.check_errors">check_errors</a></dd> + <dd id="Materialize.Parser.raise_error" class="function"><a href="../parser.html#Parser.raise_error">raise_error</a></dd> + <dd id="Materialize.Parser.expression" class="function"><a href="../parser.html#Parser.expression">expression</a></dd> + <dd id="Materialize.Parser.validate_expression" class="function"><a href="../parser.html#Parser.validate_expression">validate_expression</a></dd> + <dd id="Materialize.Parser.errors" class="variable"><a href="../parser.html#Parser.errors">errors</a></dd> + <dd id="Materialize.Parser.sql" class="variable"><a href="../parser.html#Parser.sql">sql</a></dd> + + </div> + <div><dt><a href="postgres.html#Postgres.Parser">sqlglot.dialects.postgres.Postgres.Parser</a></dt> + <dd id="Materialize.Parser.PROPERTY_PARSERS" class="variable"><a href="postgres.html#Postgres.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd> + <dd id="Materialize.Parser.FUNCTIONS" class="variable"><a href="postgres.html#Postgres.Parser.FUNCTIONS">FUNCTIONS</a></dd> + <dd id="Materialize.Parser.FUNCTION_PARSERS" class="variable"><a href="postgres.html#Postgres.Parser.FUNCTION_PARSERS">FUNCTION_PARSERS</a></dd> + <dd id="Materialize.Parser.BITWISE" class="variable"><a href="postgres.html#Postgres.Parser.BITWISE">BITWISE</a></dd> + <dd id="Materialize.Parser.EXPONENT" class="variable"><a href="postgres.html#Postgres.Parser.EXPONENT">EXPONENT</a></dd> + <dd id="Materialize.Parser.RANGE_PARSERS" class="variable"><a href="postgres.html#Postgres.Parser.RANGE_PARSERS">RANGE_PARSERS</a></dd> + <dd id="Materialize.Parser.STATEMENT_PARSERS" class="variable"><a href="postgres.html#Postgres.Parser.STATEMENT_PARSERS">STATEMENT_PARSERS</a></dd> + <dd id="Materialize.Parser.JSON_ARROWS_REQUIRE_JSON_TYPE" class="variable"><a href="postgres.html#Postgres.Parser.JSON_ARROWS_REQUIRE_JSON_TYPE">JSON_ARROWS_REQUIRE_JSON_TYPE</a></dd> + <dd id="Materialize.Parser.COLUMN_OPERATORS" class="variable"><a href="postgres.html#Postgres.Parser.COLUMN_OPERATORS">COLUMN_OPERATORS</a></dd> + + </div> + </dl> + </div> + </section> + <section id="Materialize.Generator"> + <input id="Materialize.Generator-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">Materialize.Generator</span><wbr>(<span class="base"><a href="postgres.html#Postgres.Generator">sqlglot.dialects.postgres.Postgres.Generator</a></span>): + + <label class="view-source-button" for="Materialize.Generator-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize.Generator"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize.Generator-53"><a href="#Materialize.Generator-53"><span class="linenos">53</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="Materialize.Generator-54"><a href="#Materialize.Generator-54"><span class="linenos">54</span></a> <span class="n">SUPPORTS_CREATE_TABLE_LIKE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Materialize.Generator-55"><a href="#Materialize.Generator-55"><span class="linenos">55</span></a> +</span><span id="Materialize.Generator-56"><a href="#Materialize.Generator-56"><span class="linenos">56</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Materialize.Generator-57"><a href="#Materialize.Generator-57"><span class="linenos">57</span></a> <span class="o">**</span><span class="n">Postgres</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="Materialize.Generator-58"><a href="#Materialize.Generator-58"><span class="linenos">58</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize.Generator-59"><a href="#Materialize.Generator-59"><span class="linenos">59</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">preprocess</span><span class="p">(</span> +</span><span id="Materialize.Generator-60"><a href="#Materialize.Generator-60"><span class="linenos">60</span></a> <span class="p">[</span> +</span><span id="Materialize.Generator-61"><a href="#Materialize.Generator-61"><span class="linenos">61</span></a> <span class="n">remove_unique_constraints</span><span class="p">,</span> +</span><span id="Materialize.Generator-62"><a href="#Materialize.Generator-62"><span class="linenos">62</span></a> <span class="n">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">,</span> +</span><span id="Materialize.Generator-63"><a href="#Materialize.Generator-63"><span class="linenos">63</span></a> <span class="p">]</span> +</span><span id="Materialize.Generator-64"><a href="#Materialize.Generator-64"><span class="linenos">64</span></a> <span class="p">),</span> +</span><span id="Materialize.Generator-65"><a href="#Materialize.Generator-65"><span class="linenos">65</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize.Generator-66"><a href="#Materialize.Generator-66"><span class="linenos">66</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize.Generator-67"><a href="#Materialize.Generator-67"><span class="linenos">67</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Materialize.Generator-68"><a href="#Materialize.Generator-68"><span class="linenos">68</span></a> <span class="p">}</span> +</span><span id="Materialize.Generator-69"><a href="#Materialize.Generator-69"><span class="linenos">69</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> +</span><span id="Materialize.Generator-70"><a href="#Materialize.Generator-70"><span class="linenos">70</span></a> +</span><span id="Materialize.Generator-71"><a href="#Materialize.Generator-71"><span class="linenos">71</span></a> <span class="k">def</span> <span class="nf">propertyeq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator-72"><a href="#Materialize.Generator-72"><span class="linenos">72</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> +</span><span id="Materialize.Generator-73"><a href="#Materialize.Generator-73"><span class="linenos">73</span></a> +</span><span id="Materialize.Generator-74"><a href="#Materialize.Generator-74"><span class="linenos">74</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator-75"><a href="#Materialize.Generator-75"><span class="linenos">75</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LIST</span><span class="p">):</span> +</span><span id="Materialize.Generator-76"><a href="#Materialize.Generator-76"><span class="linenos">76</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Materialize.Generator-77"><a href="#Materialize.Generator-77"><span class="linenos">77</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2"> LIST"</span> +</span><span id="Materialize.Generator-78"><a href="#Materialize.Generator-78"><span class="linenos">78</span></a> <span class="k">return</span> <span class="s2">"LIST"</span> +</span><span id="Materialize.Generator-79"><a href="#Materialize.Generator-79"><span class="linenos">79</span></a> +</span><span id="Materialize.Generator-80"><a href="#Materialize.Generator-80"><span class="linenos">80</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Materialize.Generator-81"><a href="#Materialize.Generator-81"><span class="linenos">81</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="Materialize.Generator-82"><a href="#Materialize.Generator-82"><span class="linenos">82</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MAP[</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">key</span><span class="p">)</span><span class="si">}</span><span class="s2"> => </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Materialize.Generator-83"><a href="#Materialize.Generator-83"><span class="linenos">83</span></a> +</span><span id="Materialize.Generator-84"><a href="#Materialize.Generator-84"><span class="linenos">84</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Materialize.Generator-85"><a href="#Materialize.Generator-85"><span class="linenos">85</span></a> +</span><span id="Materialize.Generator-86"><a href="#Materialize.Generator-86"><span class="linenos">86</span></a> <span class="k">def</span> <span class="nf">list_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator-87"><a href="#Materialize.Generator-87"><span class="linenos">87</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Materialize.Generator-88"><a href="#Materialize.Generator-88"><span class="linenos">88</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"LIST"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Materialize.Generator-89"><a href="#Materialize.Generator-89"><span class="linenos">89</span></a> +</span><span id="Materialize.Generator-90"><a href="#Materialize.Generator-90"><span class="linenos">90</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'LIST'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Materialize.Generator-91"><a href="#Materialize.Generator-91"><span class="linenos">91</span></a> +</span><span id="Materialize.Generator-92"><a href="#Materialize.Generator-92"><span class="linenos">92</span></a> <span class="k">def</span> <span class="nf">tomap_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator-93"><a href="#Materialize.Generator-93"><span class="linenos">93</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Materialize.Generator-94"><a href="#Materialize.Generator-94"><span class="linenos">94</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Materialize.Generator-95"><a href="#Materialize.Generator-95"><span class="linenos">95</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'MAP'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span></pre></div> + + + <div class="docstring"><p>Generator converts a given syntax tree to the corresponding SQL string.</p> + +<h6 id="arguments">Arguments:</h6> + +<ul> +<li><strong>pretty:</strong> Whether to format the produced SQL string. +Default: False.</li> +<li><strong>identify:</strong> Determines when an identifier should be quoted. Possible values are: +False (default): Never quote, except in cases where it's mandatory by the dialect. +True or 'always': Always quote. +'safe': Only quote identifiers that are case insensitive.</li> +<li><strong>normalize:</strong> Whether to normalize identifiers to lowercase. +Default: False.</li> +<li><strong>pad:</strong> The pad size in a formatted string. For example, this affects the indentation of +a projection in a query, relative to its nesting level. +Default: 2.</li> +<li><strong>indent:</strong> The indentation size in a formatted string. For example, this affects the +indentation of subqueries and filters under a <code>WHERE</code> clause. +Default: 2.</li> +<li><strong>normalize_functions:</strong> How to normalize function names. Possible values are: +"upper" or True (default): Convert names to uppercase. +"lower": Convert names to lowercase. +False: Disables function name normalization.</li> +<li><strong>unsupported_level:</strong> Determines the generator's behavior when it encounters unsupported expressions. +Default ErrorLevel.WARN.</li> +<li><strong>max_unsupported:</strong> Maximum number of unsupported messages to include in a raised UnsupportedError. +This is only relevant if unsupported_level is ErrorLevel.RAISE. +Default: 3</li> +<li><strong>leading_comma:</strong> Whether the comma is leading or trailing in select expressions. +This is only relevant when generating in pretty mode. +Default: False</li> +<li><strong>max_text_width:</strong> The max number of characters in a segment before creating new lines in pretty mode. +The default is on the smaller end because the length only represents a segment and not the true +line length. +Default: 80</li> +<li><strong>comments:</strong> Whether to preserve comments in the output SQL code. +Default: True</li> +</ul> +</div> + + + <div id="Materialize.Generator.SUPPORTS_CREATE_TABLE_LIKE" class="classattr"> + <div class="attr variable"> + <span class="name">SUPPORTS_CREATE_TABLE_LIKE</span> = +<span class="default_value">False</span> + + + </div> + <a class="headerlink" href="#Materialize.Generator.SUPPORTS_CREATE_TABLE_LIKE"></a> + + + + </div> + <div id="Materialize.Generator.TRANSFORMS" class="classattr"> + <div class="attr variable"> + <span class="name">TRANSFORMS</span> = +<input id="Materialize.Generator.TRANSFORMS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="Materialize.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function json_path_key_only_name>, <class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CaseSpecificColumnConstraint">sqlglot.expressions.CaseSpecificColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetColumnConstraint">sqlglot.expressions.CharacterSetColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ClusteredColumnConstraint">sqlglot.expressions.ClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CollateColumnConstraint">sqlglot.expressions.CollateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DateFormatColumnConstraint">sqlglot.expressions.DateFormatColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DefaultColumnConstraint">sqlglot.expressions.DefaultColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EncodeColumnConstraint">sqlglot.expressions.EncodeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EphemeralColumnConstraint">sqlglot.expressions.EphemeralColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExcludeColumnConstraint">sqlglot.expressions.ExcludeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InlineLengthColumnConstraint">sqlglot.expressions.InlineLengthColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IntervalSpan">sqlglot.expressions.IntervalSpan</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function _json_extract_sql.<locals>._generate>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function _json_extract_sql.<locals>._generate>, <class '<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NonClusteredColumnConstraint">sqlglot.expressions.NonClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NotForReplicationColumnConstraint">sqlglot.expressions.NotForReplicationColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnUpdateColumnConstraint">sqlglot.expressions.OnUpdateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#PathColumnConstraint">sqlglot.expressions.PathColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ProjectionPolicyColumnConstraint">sqlglot.expressions.ProjectionPolicyColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TagColumnConstraint">sqlglot.expressions.TagColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TitleColumnConstraint">sqlglot.expressions.TitleColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UppercaseColumnConstraint">sqlglot.expressions.UppercaseColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithOperator">sqlglot.expressions.WithOperator</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>: <function any_value_to_max_sql>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function filter_array_using_unnest>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ColumnDef">sqlglot.expressions.ColumnDef</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function no_paren_current_date_sql>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _date_diff_sql>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function datestrtodate_sql>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _string_agg_sql>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>: <function no_last_day_sql>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function max_or_greatest>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function no_map_from_entries_sql>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function min_or_least>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>: <function merge_without_target_sql>, <class '<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#Pivot">sqlglot.expressions.Pivot</a>'>: <function no_pivot_sql>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function str_position_sql>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function struct_extract_sql>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _substring_sql>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function timestamptrunc_sql.<locals>._timestamptrunc_sql>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function timestrtotime_sql>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function trim_sql>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function no_trycast_sql>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function _date_diff_sql>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _unix_to_time_sql>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function bool_xor_sql>, <class '<a href="../expressions.html#AutoIncrementColumnConstraint">sqlglot.expressions.AutoIncrementColumnConstraint</a>'>: <function <a href="#Materialize.Generator">Materialize.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Create">sqlglot.expressions.Create</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#GeneratedAsIdentityColumnConstraint">sqlglot.expressions.GeneratedAsIdentityColumnConstraint</a>'>: <function <a href="#Materialize.Generator">Materialize.Generator</a>.<lambda>>, <class '<a href="../expressions.html#OnConflict">sqlglot.expressions.OnConflict</a>'>: <function <a href="#Materialize.Generator">Materialize.Generator</a>.<lambda>>, <class '<a href="../expressions.html#PrimaryKeyColumnConstraint">sqlglot.expressions.PrimaryKeyColumnConstraint</a>'>: <function <a href="#Materialize.Generator">Materialize.Generator</a>.<lambda>>}</span> + + + </div> + <a class="headerlink" href="#Materialize.Generator.TRANSFORMS"></a> + + + + </div> + <div id="Materialize.Generator.propertyeq_sql" class="classattr"> + <input id="Materialize.Generator.propertyeq_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> +<div class="attr function"> + + <span class="def">def</span> + <span class="name">propertyeq_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#PropertyEQ">sqlglot.expressions.PropertyEQ</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Materialize.Generator.propertyeq_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize.Generator.propertyeq_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize.Generator.propertyeq_sql-71"><a href="#Materialize.Generator.propertyeq_sql-71"><span class="linenos">71</span></a> <span class="k">def</span> <span class="nf">propertyeq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator.propertyeq_sql-72"><a href="#Materialize.Generator.propertyeq_sql-72"><span class="linenos">72</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> +</span></pre></div> + + + + + </div> + <div id="Materialize.Generator.datatype_sql" class="classattr"> + <input id="Materialize.Generator.datatype_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> +<div class="attr function"> + + <span class="def">def</span> + <span class="name">datatype_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#DataType">sqlglot.expressions.DataType</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Materialize.Generator.datatype_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize.Generator.datatype_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize.Generator.datatype_sql-74"><a href="#Materialize.Generator.datatype_sql-74"><span class="linenos">74</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator.datatype_sql-75"><a href="#Materialize.Generator.datatype_sql-75"><span class="linenos">75</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LIST</span><span class="p">):</span> +</span><span id="Materialize.Generator.datatype_sql-76"><a href="#Materialize.Generator.datatype_sql-76"><span class="linenos">76</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Materialize.Generator.datatype_sql-77"><a href="#Materialize.Generator.datatype_sql-77"><span class="linenos">77</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2"> LIST"</span> +</span><span id="Materialize.Generator.datatype_sql-78"><a href="#Materialize.Generator.datatype_sql-78"><span class="linenos">78</span></a> <span class="k">return</span> <span class="s2">"LIST"</span> +</span><span id="Materialize.Generator.datatype_sql-79"><a href="#Materialize.Generator.datatype_sql-79"><span class="linenos">79</span></a> +</span><span id="Materialize.Generator.datatype_sql-80"><a href="#Materialize.Generator.datatype_sql-80"><span class="linenos">80</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Materialize.Generator.datatype_sql-81"><a href="#Materialize.Generator.datatype_sql-81"><span class="linenos">81</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="Materialize.Generator.datatype_sql-82"><a href="#Materialize.Generator.datatype_sql-82"><span class="linenos">82</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MAP[</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">key</span><span class="p">)</span><span class="si">}</span><span class="s2"> => </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Materialize.Generator.datatype_sql-83"><a href="#Materialize.Generator.datatype_sql-83"><span class="linenos">83</span></a> +</span><span id="Materialize.Generator.datatype_sql-84"><a href="#Materialize.Generator.datatype_sql-84"><span class="linenos">84</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span></pre></div> + + + + + </div> + <div id="Materialize.Generator.list_sql" class="classattr"> + <input id="Materialize.Generator.list_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> +<div class="attr function"> + + <span class="def">def</span> + <span class="name">list_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#List">sqlglot.expressions.List</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Materialize.Generator.list_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize.Generator.list_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize.Generator.list_sql-86"><a href="#Materialize.Generator.list_sql-86"><span class="linenos">86</span></a> <span class="k">def</span> <span class="nf">list_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">List</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator.list_sql-87"><a href="#Materialize.Generator.list_sql-87"><span class="linenos">87</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Materialize.Generator.list_sql-88"><a href="#Materialize.Generator.list_sql-88"><span class="linenos">88</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"LIST"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Materialize.Generator.list_sql-89"><a href="#Materialize.Generator.list_sql-89"><span class="linenos">89</span></a> +</span><span id="Materialize.Generator.list_sql-90"><a href="#Materialize.Generator.list_sql-90"><span class="linenos">90</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'LIST'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span></pre></div> + + + + + </div> + <div id="Materialize.Generator.tomap_sql" class="classattr"> + <input id="Materialize.Generator.tomap_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> +<div class="attr function"> + + <span class="def">def</span> + <span class="name">tomap_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Materialize.Generator.tomap_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Materialize.Generator.tomap_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Materialize.Generator.tomap_sql-92"><a href="#Materialize.Generator.tomap_sql-92"><span class="linenos">92</span></a> <span class="k">def</span> <span class="nf">tomap_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ToMap</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Materialize.Generator.tomap_sql-93"><a href="#Materialize.Generator.tomap_sql-93"><span class="linenos">93</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Materialize.Generator.tomap_sql-94"><a href="#Materialize.Generator.tomap_sql-94"><span class="linenos">94</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Materialize.Generator.tomap_sql-95"><a href="#Materialize.Generator.tomap_sql-95"><span class="linenos">95</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'MAP'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span></pre></div> + + + + + </div> + <div id="Materialize.Generator.SELECT_KINDS" class="classattr"> + <div class="attr variable"> + <span class="name">SELECT_KINDS</span><span class="annotation">: Tuple[str, ...]</span> = +<span class="default_value">()</span> + + + </div> + <a class="headerlink" href="#Materialize.Generator.SELECT_KINDS"></a> + + + + </div> + <div id="Materialize.Generator.TRY_SUPPORTED" class="classattr"> + <div class="attr variable"> + <span class="name">TRY_SUPPORTED</span> = +<span class="default_value">False</span> + + + </div> + <a class="headerlink" href="#Materialize.Generator.TRY_SUPPORTED"></a> + + + + </div> + <div id="Materialize.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS" class="classattr"> + <div class="attr variable"> + <span class="name">AFTER_HAVING_MODIFIER_TRANSFORMS</span> = +<span class="default_value">{'qualify': <function Generator.<lambda>>, 'windows': <function Generator.<lambda>>}</span> + + + </div> + <a class="headerlink" href="#Materialize.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS"></a> + + + + </div> + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="../generator.html#Generator">sqlglot.generator.Generator</a></dt> + <dd id="Materialize.Generator.__init__" class="function"><a href="../generator.html#Generator.__init__">Generator</a></dd> + <dd id="Materialize.Generator.NULL_ORDERING_SUPPORTED" class="variable"><a href="../generator.html#Generator.NULL_ORDERING_SUPPORTED">NULL_ORDERING_SUPPORTED</a></dd> + <dd id="Materialize.Generator.IGNORE_NULLS_IN_FUNC" class="variable"><a href="../generator.html#Generator.IGNORE_NULLS_IN_FUNC">IGNORE_NULLS_IN_FUNC</a></dd> + <dd id="Materialize.Generator.EXPLICIT_UNION" class="variable"><a href="../generator.html#Generator.EXPLICIT_UNION">EXPLICIT_UNION</a></dd> + <dd id="Materialize.Generator.WRAP_DERIVED_VALUES" class="variable"><a href="../generator.html#Generator.WRAP_DERIVED_VALUES">WRAP_DERIVED_VALUES</a></dd> + <dd id="Materialize.Generator.CREATE_FUNCTION_RETURN_AS" class="variable"><a href="../generator.html#Generator.CREATE_FUNCTION_RETURN_AS">CREATE_FUNCTION_RETURN_AS</a></dd> + <dd id="Materialize.Generator.MATCHED_BY_SOURCE" class="variable"><a href="../generator.html#Generator.MATCHED_BY_SOURCE">MATCHED_BY_SOURCE</a></dd> + <dd id="Materialize.Generator.INTERVAL_ALLOWS_PLURAL_FORM" class="variable"><a href="../generator.html#Generator.INTERVAL_ALLOWS_PLURAL_FORM">INTERVAL_ALLOWS_PLURAL_FORM</a></dd> + <dd id="Materialize.Generator.LIMIT_FETCH" class="variable"><a href="../generator.html#Generator.LIMIT_FETCH">LIMIT_FETCH</a></dd> + <dd id="Materialize.Generator.LIMIT_ONLY_LITERALS" class="variable"><a href="../generator.html#Generator.LIMIT_ONLY_LITERALS">LIMIT_ONLY_LITERALS</a></dd> + <dd id="Materialize.Generator.GROUPINGS_SEP" class="variable"><a href="../generator.html#Generator.GROUPINGS_SEP">GROUPINGS_SEP</a></dd> + <dd id="Materialize.Generator.INDEX_ON" class="variable"><a href="../generator.html#Generator.INDEX_ON">INDEX_ON</a></dd> + <dd id="Materialize.Generator.QUERY_HINT_SEP" class="variable"><a href="../generator.html#Generator.QUERY_HINT_SEP">QUERY_HINT_SEP</a></dd> + <dd id="Materialize.Generator.IS_BOOL_ALLOWED" class="variable"><a href="../generator.html#Generator.IS_BOOL_ALLOWED">IS_BOOL_ALLOWED</a></dd> + <dd id="Materialize.Generator.DUPLICATE_KEY_UPDATE_WITH_SET" class="variable"><a href="../generator.html#Generator.DUPLICATE_KEY_UPDATE_WITH_SET">DUPLICATE_KEY_UPDATE_WITH_SET</a></dd> + <dd id="Materialize.Generator.LIMIT_IS_TOP" class="variable"><a href="../generator.html#Generator.LIMIT_IS_TOP">LIMIT_IS_TOP</a></dd> + <dd id="Materialize.Generator.RETURNING_END" class="variable"><a href="../generator.html#Generator.RETURNING_END">RETURNING_END</a></dd> + <dd id="Materialize.Generator.COLUMN_JOIN_MARKS_SUPPORTED" class="variable"><a href="../generator.html#Generator.COLUMN_JOIN_MARKS_SUPPORTED">COLUMN_JOIN_MARKS_SUPPORTED</a></dd> + <dd id="Materialize.Generator.EXTRACT_ALLOWS_QUOTES" class="variable"><a href="../generator.html#Generator.EXTRACT_ALLOWS_QUOTES">EXTRACT_ALLOWS_QUOTES</a></dd> + <dd id="Materialize.Generator.TZ_TO_WITH_TIME_ZONE" class="variable"><a href="../generator.html#Generator.TZ_TO_WITH_TIME_ZONE">TZ_TO_WITH_TIME_ZONE</a></dd> + <dd id="Materialize.Generator.VALUES_AS_TABLE" class="variable"><a href="../generator.html#Generator.VALUES_AS_TABLE">VALUES_AS_TABLE</a></dd> + <dd id="Materialize.Generator.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD" class="variable"><a href="../generator.html#Generator.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD">ALTER_TABLE_INCLUDE_COLUMN_KEYWORD</a></dd> + <dd id="Materialize.Generator.UNNEST_WITH_ORDINALITY" class="variable"><a href="../generator.html#Generator.UNNEST_WITH_ORDINALITY">UNNEST_WITH_ORDINALITY</a></dd> + <dd id="Materialize.Generator.AGGREGATE_FILTER_SUPPORTED" class="variable"><a href="../generator.html#Generator.AGGREGATE_FILTER_SUPPORTED">AGGREGATE_FILTER_SUPPORTED</a></dd> + <dd id="Materialize.Generator.SEMI_ANTI_JOIN_WITH_SIDE" class="variable"><a href="../generator.html#Generator.SEMI_ANTI_JOIN_WITH_SIDE">SEMI_ANTI_JOIN_WITH_SIDE</a></dd> + <dd id="Materialize.Generator.COMPUTED_COLUMN_WITH_TYPE" class="variable"><a href="../generator.html#Generator.COMPUTED_COLUMN_WITH_TYPE">COMPUTED_COLUMN_WITH_TYPE</a></dd> + <dd id="Materialize.Generator.SUPPORTS_TABLE_COPY" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_COPY">SUPPORTS_TABLE_COPY</a></dd> + <dd id="Materialize.Generator.TABLESAMPLE_REQUIRES_PARENS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_REQUIRES_PARENS">TABLESAMPLE_REQUIRES_PARENS</a></dd> + <dd id="Materialize.Generator.TABLESAMPLE_KEYWORDS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_KEYWORDS">TABLESAMPLE_KEYWORDS</a></dd> + <dd id="Materialize.Generator.TABLESAMPLE_WITH_METHOD" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_WITH_METHOD">TABLESAMPLE_WITH_METHOD</a></dd> + <dd id="Materialize.Generator.COLLATE_IS_FUNC" class="variable"><a href="../generator.html#Generator.COLLATE_IS_FUNC">COLLATE_IS_FUNC</a></dd> + <dd id="Materialize.Generator.DATA_TYPE_SPECIFIERS_ALLOWED" class="variable"><a href="../generator.html#Generator.DATA_TYPE_SPECIFIERS_ALLOWED">DATA_TYPE_SPECIFIERS_ALLOWED</a></dd> + <dd id="Materialize.Generator.ENSURE_BOOLS" class="variable"><a href="../generator.html#Generator.ENSURE_BOOLS">ENSURE_BOOLS</a></dd> + <dd id="Materialize.Generator.CTE_RECURSIVE_KEYWORD_REQUIRED" class="variable"><a href="../generator.html#Generator.CTE_RECURSIVE_KEYWORD_REQUIRED">CTE_RECURSIVE_KEYWORD_REQUIRED</a></dd> + <dd id="Materialize.Generator.SUPPORTS_SINGLE_ARG_CONCAT" class="variable"><a href="../generator.html#Generator.SUPPORTS_SINGLE_ARG_CONCAT">SUPPORTS_SINGLE_ARG_CONCAT</a></dd> + <dd id="Materialize.Generator.LAST_DAY_SUPPORTS_DATE_PART" class="variable"><a href="../generator.html#Generator.LAST_DAY_SUPPORTS_DATE_PART">LAST_DAY_SUPPORTS_DATE_PART</a></dd> + <dd id="Materialize.Generator.SUPPORTS_TABLE_ALIAS_COLUMNS" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_ALIAS_COLUMNS">SUPPORTS_TABLE_ALIAS_COLUMNS</a></dd> + <dd id="Materialize.Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS" class="variable"><a href="../generator.html#Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS">UNPIVOT_ALIASES_ARE_IDENTIFIERS</a></dd> + <dd id="Materialize.Generator.JSON_KEY_VALUE_PAIR_SEP" class="variable"><a href="../generator.html#Generator.JSON_KEY_VALUE_PAIR_SEP">JSON_KEY_VALUE_PAIR_SEP</a></dd> + <dd id="Materialize.Generator.INSERT_OVERWRITE" class="variable"><a href="../generator.html#Generator.INSERT_OVERWRITE">INSERT_OVERWRITE</a></dd> + <dd id="Materialize.Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED" class="variable"><a href="../generator.html#Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED">JSON_PATH_BRACKETED_KEY_SUPPORTED</a></dd> + <dd id="Materialize.Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE" class="variable"><a href="../generator.html#Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE">JSON_PATH_SINGLE_QUOTE_ESCAPE</a></dd> + <dd id="Materialize.Generator.SUPPORTS_TO_NUMBER" class="variable"><a href="../generator.html#Generator.SUPPORTS_TO_NUMBER">SUPPORTS_TO_NUMBER</a></dd> + <dd id="Materialize.Generator.OUTER_UNION_MODIFIERS" class="variable"><a href="../generator.html#Generator.OUTER_UNION_MODIFIERS">OUTER_UNION_MODIFIERS</a></dd> + <dd id="Materialize.Generator.COPY_PARAMS_ARE_WRAPPED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_ARE_WRAPPED">COPY_PARAMS_ARE_WRAPPED</a></dd> + <dd id="Materialize.Generator.COPY_PARAMS_EQ_REQUIRED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_EQ_REQUIRED">COPY_PARAMS_EQ_REQUIRED</a></dd> + <dd id="Materialize.Generator.STAR_EXCEPT" class="variable"><a href="../generator.html#Generator.STAR_EXCEPT">STAR_EXCEPT</a></dd> + <dd id="Materialize.Generator.HEX_FUNC" class="variable"><a href="../generator.html#Generator.HEX_FUNC">HEX_FUNC</a></dd> + <dd id="Materialize.Generator.WITH_PROPERTIES_PREFIX" class="variable"><a href="../generator.html#Generator.WITH_PROPERTIES_PREFIX">WITH_PROPERTIES_PREFIX</a></dd> + <dd id="Materialize.Generator.TIME_PART_SINGULARS" class="variable"><a href="../generator.html#Generator.TIME_PART_SINGULARS">TIME_PART_SINGULARS</a></dd> + <dd id="Materialize.Generator.TOKEN_MAPPING" class="variable"><a href="../generator.html#Generator.TOKEN_MAPPING">TOKEN_MAPPING</a></dd> + <dd id="Materialize.Generator.STRUCT_DELIMITER" class="variable"><a href="../generator.html#Generator.STRUCT_DELIMITER">STRUCT_DELIMITER</a></dd> + <dd id="Materialize.Generator.NAMED_PLACEHOLDER_TOKEN" class="variable"><a href="../generator.html#Generator.NAMED_PLACEHOLDER_TOKEN">NAMED_PLACEHOLDER_TOKEN</a></dd> + <dd id="Materialize.Generator.RESERVED_KEYWORDS" class="variable"><a href="../generator.html#Generator.RESERVED_KEYWORDS">RESERVED_KEYWORDS</a></dd> + <dd id="Materialize.Generator.WITH_SEPARATED_COMMENTS" class="variable"><a href="../generator.html#Generator.WITH_SEPARATED_COMMENTS">WITH_SEPARATED_COMMENTS</a></dd> + <dd id="Materialize.Generator.EXCLUDE_COMMENTS" class="variable"><a href="../generator.html#Generator.EXCLUDE_COMMENTS">EXCLUDE_COMMENTS</a></dd> + <dd id="Materialize.Generator.UNWRAPPED_INTERVAL_VALUES" class="variable"><a href="../generator.html#Generator.UNWRAPPED_INTERVAL_VALUES">UNWRAPPED_INTERVAL_VALUES</a></dd> + <dd id="Materialize.Generator.PARAMETERIZABLE_TEXT_TYPES" class="variable"><a href="../generator.html#Generator.PARAMETERIZABLE_TEXT_TYPES">PARAMETERIZABLE_TEXT_TYPES</a></dd> + <dd id="Materialize.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES" class="variable"><a href="../generator.html#Generator.EXPRESSIONS_WITHOUT_NESTED_CTES">EXPRESSIONS_WITHOUT_NESTED_CTES</a></dd> + <dd id="Materialize.Generator.SENTINEL_LINE_BREAK" class="variable"><a href="../generator.html#Generator.SENTINEL_LINE_BREAK">SENTINEL_LINE_BREAK</a></dd> + <dd id="Materialize.Generator.pretty" class="variable"><a href="../generator.html#Generator.pretty">pretty</a></dd> + <dd id="Materialize.Generator.identify" class="variable"><a href="../generator.html#Generator.identify">identify</a></dd> + <dd id="Materialize.Generator.normalize" class="variable"><a href="../generator.html#Generator.normalize">normalize</a></dd> + <dd id="Materialize.Generator.pad" class="variable"><a href="../generator.html#Generator.pad">pad</a></dd> + <dd id="Materialize.Generator.unsupported_level" class="variable"><a href="../generator.html#Generator.unsupported_level">unsupported_level</a></dd> + <dd id="Materialize.Generator.max_unsupported" class="variable"><a href="../generator.html#Generator.max_unsupported">max_unsupported</a></dd> + <dd id="Materialize.Generator.leading_comma" class="variable"><a href="../generator.html#Generator.leading_comma">leading_comma</a></dd> + <dd id="Materialize.Generator.max_text_width" class="variable"><a href="../generator.html#Generator.max_text_width">max_text_width</a></dd> + <dd id="Materialize.Generator.comments" class="variable"><a href="../generator.html#Generator.comments">comments</a></dd> + <dd id="Materialize.Generator.dialect" class="variable"><a href="../generator.html#Generator.dialect">dialect</a></dd> + <dd id="Materialize.Generator.normalize_functions" class="variable"><a href="../generator.html#Generator.normalize_functions">normalize_functions</a></dd> + <dd id="Materialize.Generator.unsupported_messages" class="variable"><a href="../generator.html#Generator.unsupported_messages">unsupported_messages</a></dd> + <dd id="Materialize.Generator.generate" class="function"><a href="../generator.html#Generator.generate">generate</a></dd> + <dd id="Materialize.Generator.preprocess" class="function"><a href="../generator.html#Generator.preprocess">preprocess</a></dd> + <dd id="Materialize.Generator.unsupported" class="function"><a href="../generator.html#Generator.unsupported">unsupported</a></dd> + <dd id="Materialize.Generator.sep" class="function"><a href="../generator.html#Generator.sep">sep</a></dd> + <dd id="Materialize.Generator.seg" class="function"><a href="../generator.html#Generator.seg">seg</a></dd> + <dd id="Materialize.Generator.pad_comment" class="function"><a href="../generator.html#Generator.pad_comment">pad_comment</a></dd> + <dd id="Materialize.Generator.maybe_comment" class="function"><a href="../generator.html#Generator.maybe_comment">maybe_comment</a></dd> + <dd id="Materialize.Generator.wrap" class="function"><a href="../generator.html#Generator.wrap">wrap</a></dd> + <dd id="Materialize.Generator.no_identify" class="function"><a href="../generator.html#Generator.no_identify">no_identify</a></dd> + <dd id="Materialize.Generator.normalize_func" class="function"><a href="../generator.html#Generator.normalize_func">normalize_func</a></dd> + <dd id="Materialize.Generator.indent" class="function"><a href="../generator.html#Generator.indent">indent</a></dd> + <dd id="Materialize.Generator.sql" class="function"><a href="../generator.html#Generator.sql">sql</a></dd> + <dd id="Materialize.Generator.uncache_sql" class="function"><a href="../generator.html#Generator.uncache_sql">uncache_sql</a></dd> + <dd id="Materialize.Generator.cache_sql" class="function"><a href="../generator.html#Generator.cache_sql">cache_sql</a></dd> + <dd id="Materialize.Generator.characterset_sql" class="function"><a href="../generator.html#Generator.characterset_sql">characterset_sql</a></dd> + <dd id="Materialize.Generator.column_parts" class="function"><a href="../generator.html#Generator.column_parts">column_parts</a></dd> + <dd id="Materialize.Generator.column_sql" class="function"><a href="../generator.html#Generator.column_sql">column_sql</a></dd> + <dd id="Materialize.Generator.columnposition_sql" class="function"><a href="../generator.html#Generator.columnposition_sql">columnposition_sql</a></dd> + <dd id="Materialize.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> + <dd id="Materialize.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> + <dd id="Materialize.Generator.computedcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.computedcolumnconstraint_sql">computedcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.generatedasrowcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasrowcolumnconstraint_sql">generatedasrowcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.periodforsystemtimeconstraint_sql" class="function"><a href="../generator.html#Generator.periodforsystemtimeconstraint_sql">periodforsystemtimeconstraint_sql</a></dd> + <dd id="Materialize.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.transformcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.transformcolumnconstraint_sql">transformcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.uniquecolumnconstraint_sql" class="function"><a href="../generator.html#Generator.uniquecolumnconstraint_sql">uniquecolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.createable_sql" class="function"><a href="../generator.html#Generator.createable_sql">createable_sql</a></dd> + <dd id="Materialize.Generator.create_sql" class="function"><a href="../generator.html#Generator.create_sql">create_sql</a></dd> + <dd id="Materialize.Generator.sequenceproperties_sql" class="function"><a href="../generator.html#Generator.sequenceproperties_sql">sequenceproperties_sql</a></dd> + <dd id="Materialize.Generator.clone_sql" class="function"><a href="../generator.html#Generator.clone_sql">clone_sql</a></dd> + <dd id="Materialize.Generator.describe_sql" class="function"><a href="../generator.html#Generator.describe_sql">describe_sql</a></dd> + <dd id="Materialize.Generator.heredoc_sql" class="function"><a href="../generator.html#Generator.heredoc_sql">heredoc_sql</a></dd> + <dd id="Materialize.Generator.prepend_ctes" class="function"><a href="../generator.html#Generator.prepend_ctes">prepend_ctes</a></dd> + <dd id="Materialize.Generator.with_sql" class="function"><a href="../generator.html#Generator.with_sql">with_sql</a></dd> + <dd id="Materialize.Generator.cte_sql" class="function"><a href="../generator.html#Generator.cte_sql">cte_sql</a></dd> + <dd id="Materialize.Generator.tablealias_sql" class="function"><a href="../generator.html#Generator.tablealias_sql">tablealias_sql</a></dd> + <dd id="Materialize.Generator.bitstring_sql" class="function"><a href="../generator.html#Generator.bitstring_sql">bitstring_sql</a></dd> + <dd id="Materialize.Generator.hexstring_sql" class="function"><a href="../generator.html#Generator.hexstring_sql">hexstring_sql</a></dd> + <dd id="Materialize.Generator.bytestring_sql" class="function"><a href="../generator.html#Generator.bytestring_sql">bytestring_sql</a></dd> + <dd id="Materialize.Generator.unicodestring_sql" class="function"><a href="../generator.html#Generator.unicodestring_sql">unicodestring_sql</a></dd> + <dd id="Materialize.Generator.rawstring_sql" class="function"><a href="../generator.html#Generator.rawstring_sql">rawstring_sql</a></dd> + <dd id="Materialize.Generator.datatypeparam_sql" class="function"><a href="../generator.html#Generator.datatypeparam_sql">datatypeparam_sql</a></dd> + <dd id="Materialize.Generator.directory_sql" class="function"><a href="../generator.html#Generator.directory_sql">directory_sql</a></dd> + <dd id="Materialize.Generator.delete_sql" class="function"><a href="../generator.html#Generator.delete_sql">delete_sql</a></dd> + <dd id="Materialize.Generator.drop_sql" class="function"><a href="../generator.html#Generator.drop_sql">drop_sql</a></dd> + <dd id="Materialize.Generator.except_sql" class="function"><a href="../generator.html#Generator.except_sql">except_sql</a></dd> + <dd id="Materialize.Generator.except_op" class="function"><a href="../generator.html#Generator.except_op">except_op</a></dd> + <dd id="Materialize.Generator.fetch_sql" class="function"><a href="../generator.html#Generator.fetch_sql">fetch_sql</a></dd> + <dd id="Materialize.Generator.filter_sql" class="function"><a href="../generator.html#Generator.filter_sql">filter_sql</a></dd> + <dd id="Materialize.Generator.hint_sql" class="function"><a href="../generator.html#Generator.hint_sql">hint_sql</a></dd> + <dd id="Materialize.Generator.indexparameters_sql" class="function"><a href="../generator.html#Generator.indexparameters_sql">indexparameters_sql</a></dd> + <dd id="Materialize.Generator.index_sql" class="function"><a href="../generator.html#Generator.index_sql">index_sql</a></dd> + <dd id="Materialize.Generator.identifier_sql" class="function"><a href="../generator.html#Generator.identifier_sql">identifier_sql</a></dd> + <dd id="Materialize.Generator.hex_sql" class="function"><a href="../generator.html#Generator.hex_sql">hex_sql</a></dd> + <dd id="Materialize.Generator.lowerhex_sql" class="function"><a href="../generator.html#Generator.lowerhex_sql">lowerhex_sql</a></dd> + <dd id="Materialize.Generator.inputoutputformat_sql" class="function"><a href="../generator.html#Generator.inputoutputformat_sql">inputoutputformat_sql</a></dd> + <dd id="Materialize.Generator.national_sql" class="function"><a href="../generator.html#Generator.national_sql">national_sql</a></dd> + <dd id="Materialize.Generator.partition_sql" class="function"><a href="../generator.html#Generator.partition_sql">partition_sql</a></dd> + <dd id="Materialize.Generator.properties_sql" class="function"><a href="../generator.html#Generator.properties_sql">properties_sql</a></dd> + <dd id="Materialize.Generator.root_properties" class="function"><a href="../generator.html#Generator.root_properties">root_properties</a></dd> + <dd id="Materialize.Generator.properties" class="function"><a href="../generator.html#Generator.properties">properties</a></dd> + <dd id="Materialize.Generator.with_properties" class="function"><a href="../generator.html#Generator.with_properties">with_properties</a></dd> + <dd id="Materialize.Generator.locate_properties" class="function"><a href="../generator.html#Generator.locate_properties">locate_properties</a></dd> + <dd id="Materialize.Generator.property_name" class="function"><a href="../generator.html#Generator.property_name">property_name</a></dd> + <dd id="Materialize.Generator.property_sql" class="function"><a href="../generator.html#Generator.property_sql">property_sql</a></dd> + <dd id="Materialize.Generator.likeproperty_sql" class="function"><a href="../generator.html#Generator.likeproperty_sql">likeproperty_sql</a></dd> + <dd id="Materialize.Generator.fallbackproperty_sql" class="function"><a href="../generator.html#Generator.fallbackproperty_sql">fallbackproperty_sql</a></dd> + <dd id="Materialize.Generator.journalproperty_sql" class="function"><a href="../generator.html#Generator.journalproperty_sql">journalproperty_sql</a></dd> + <dd id="Materialize.Generator.freespaceproperty_sql" class="function"><a href="../generator.html#Generator.freespaceproperty_sql">freespaceproperty_sql</a></dd> + <dd id="Materialize.Generator.checksumproperty_sql" class="function"><a href="../generator.html#Generator.checksumproperty_sql">checksumproperty_sql</a></dd> + <dd id="Materialize.Generator.mergeblockratioproperty_sql" class="function"><a href="../generator.html#Generator.mergeblockratioproperty_sql">mergeblockratioproperty_sql</a></dd> + <dd id="Materialize.Generator.datablocksizeproperty_sql" class="function"><a href="../generator.html#Generator.datablocksizeproperty_sql">datablocksizeproperty_sql</a></dd> + <dd id="Materialize.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> + <dd id="Materialize.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> + <dd id="Materialize.Generator.partitionboundspec_sql" class="function"><a href="../generator.html#Generator.partitionboundspec_sql">partitionboundspec_sql</a></dd> + <dd id="Materialize.Generator.partitionedofproperty_sql" class="function"><a href="../generator.html#Generator.partitionedofproperty_sql">partitionedofproperty_sql</a></dd> + <dd id="Materialize.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Materialize.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> + <dd id="Materialize.Generator.withsystemversioningproperty_sql" class="function"><a href="../generator.html#Generator.withsystemversioningproperty_sql">withsystemversioningproperty_sql</a></dd> + <dd id="Materialize.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> + <dd id="Materialize.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> + <dd id="Materialize.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> + <dd id="Materialize.Generator.introducer_sql" class="function"><a href="../generator.html#Generator.introducer_sql">introducer_sql</a></dd> + <dd id="Materialize.Generator.kill_sql" class="function"><a href="../generator.html#Generator.kill_sql">kill_sql</a></dd> + <dd id="Materialize.Generator.pseudotype_sql" class="function"><a href="../generator.html#Generator.pseudotype_sql">pseudotype_sql</a></dd> + <dd id="Materialize.Generator.objectidentifier_sql" class="function"><a href="../generator.html#Generator.objectidentifier_sql">objectidentifier_sql</a></dd> + <dd id="Materialize.Generator.onconflict_sql" class="function"><a href="../generator.html#Generator.onconflict_sql">onconflict_sql</a></dd> + <dd id="Materialize.Generator.returning_sql" class="function"><a href="../generator.html#Generator.returning_sql">returning_sql</a></dd> + <dd id="Materialize.Generator.rowformatdelimitedproperty_sql" class="function"><a href="../generator.html#Generator.rowformatdelimitedproperty_sql">rowformatdelimitedproperty_sql</a></dd> + <dd id="Materialize.Generator.withtablehint_sql" class="function"><a href="../generator.html#Generator.withtablehint_sql">withtablehint_sql</a></dd> + <dd id="Materialize.Generator.indextablehint_sql" class="function"><a href="../generator.html#Generator.indextablehint_sql">indextablehint_sql</a></dd> + <dd id="Materialize.Generator.historicaldata_sql" class="function"><a href="../generator.html#Generator.historicaldata_sql">historicaldata_sql</a></dd> + <dd id="Materialize.Generator.table_parts" class="function"><a href="../generator.html#Generator.table_parts">table_parts</a></dd> + <dd id="Materialize.Generator.table_sql" class="function"><a href="../generator.html#Generator.table_sql">table_sql</a></dd> + <dd id="Materialize.Generator.tablesample_sql" class="function"><a href="../generator.html#Generator.tablesample_sql">tablesample_sql</a></dd> + <dd id="Materialize.Generator.pivot_sql" class="function"><a href="../generator.html#Generator.pivot_sql">pivot_sql</a></dd> + <dd id="Materialize.Generator.version_sql" class="function"><a href="../generator.html#Generator.version_sql">version_sql</a></dd> + <dd id="Materialize.Generator.tuple_sql" class="function"><a href="../generator.html#Generator.tuple_sql">tuple_sql</a></dd> + <dd id="Materialize.Generator.update_sql" class="function"><a href="../generator.html#Generator.update_sql">update_sql</a></dd> + <dd id="Materialize.Generator.values_sql" class="function"><a href="../generator.html#Generator.values_sql">values_sql</a></dd> + <dd id="Materialize.Generator.var_sql" class="function"><a href="../generator.html#Generator.var_sql">var_sql</a></dd> + <dd id="Materialize.Generator.into_sql" class="function"><a href="../generator.html#Generator.into_sql">into_sql</a></dd> + <dd id="Materialize.Generator.from_sql" class="function"><a href="../generator.html#Generator.from_sql">from_sql</a></dd> + <dd id="Materialize.Generator.group_sql" class="function"><a href="../generator.html#Generator.group_sql">group_sql</a></dd> + <dd id="Materialize.Generator.having_sql" class="function"><a href="../generator.html#Generator.having_sql">having_sql</a></dd> + <dd id="Materialize.Generator.connect_sql" class="function"><a href="../generator.html#Generator.connect_sql">connect_sql</a></dd> + <dd id="Materialize.Generator.prior_sql" class="function"><a href="../generator.html#Generator.prior_sql">prior_sql</a></dd> + <dd id="Materialize.Generator.join_sql" class="function"><a href="../generator.html#Generator.join_sql">join_sql</a></dd> + <dd id="Materialize.Generator.lambda_sql" class="function"><a href="../generator.html#Generator.lambda_sql">lambda_sql</a></dd> + <dd id="Materialize.Generator.lateral_op" class="function"><a href="../generator.html#Generator.lateral_op">lateral_op</a></dd> + <dd id="Materialize.Generator.lateral_sql" class="function"><a href="../generator.html#Generator.lateral_sql">lateral_sql</a></dd> + <dd id="Materialize.Generator.limit_sql" class="function"><a href="../generator.html#Generator.limit_sql">limit_sql</a></dd> + <dd id="Materialize.Generator.offset_sql" class="function"><a href="../generator.html#Generator.offset_sql">offset_sql</a></dd> + <dd id="Materialize.Generator.setitem_sql" class="function"><a href="../generator.html#Generator.setitem_sql">setitem_sql</a></dd> + <dd id="Materialize.Generator.set_sql" class="function"><a href="../generator.html#Generator.set_sql">set_sql</a></dd> + <dd id="Materialize.Generator.pragma_sql" class="function"><a href="../generator.html#Generator.pragma_sql">pragma_sql</a></dd> + <dd id="Materialize.Generator.lock_sql" class="function"><a href="../generator.html#Generator.lock_sql">lock_sql</a></dd> + <dd id="Materialize.Generator.literal_sql" class="function"><a href="../generator.html#Generator.literal_sql">literal_sql</a></dd> + <dd id="Materialize.Generator.escape_str" class="function"><a href="../generator.html#Generator.escape_str">escape_str</a></dd> + <dd id="Materialize.Generator.loaddata_sql" class="function"><a href="../generator.html#Generator.loaddata_sql">loaddata_sql</a></dd> + <dd id="Materialize.Generator.null_sql" class="function"><a href="../generator.html#Generator.null_sql">null_sql</a></dd> + <dd id="Materialize.Generator.boolean_sql" class="function"><a href="../generator.html#Generator.boolean_sql">boolean_sql</a></dd> + <dd id="Materialize.Generator.order_sql" class="function"><a href="../generator.html#Generator.order_sql">order_sql</a></dd> + <dd id="Materialize.Generator.withfill_sql" class="function"><a href="../generator.html#Generator.withfill_sql">withfill_sql</a></dd> + <dd id="Materialize.Generator.cluster_sql" class="function"><a href="../generator.html#Generator.cluster_sql">cluster_sql</a></dd> + <dd id="Materialize.Generator.distribute_sql" class="function"><a href="../generator.html#Generator.distribute_sql">distribute_sql</a></dd> + <dd id="Materialize.Generator.sort_sql" class="function"><a href="../generator.html#Generator.sort_sql">sort_sql</a></dd> + <dd id="Materialize.Generator.ordered_sql" class="function"><a href="../generator.html#Generator.ordered_sql">ordered_sql</a></dd> + <dd id="Materialize.Generator.matchrecognizemeasure_sql" class="function"><a href="../generator.html#Generator.matchrecognizemeasure_sql">matchrecognizemeasure_sql</a></dd> + <dd id="Materialize.Generator.matchrecognize_sql" class="function"><a href="../generator.html#Generator.matchrecognize_sql">matchrecognize_sql</a></dd> + <dd id="Materialize.Generator.query_modifiers" class="function"><a href="../generator.html#Generator.query_modifiers">query_modifiers</a></dd> + <dd id="Materialize.Generator.queryoption_sql" class="function"><a href="../generator.html#Generator.queryoption_sql">queryoption_sql</a></dd> + <dd id="Materialize.Generator.offset_limit_modifiers" class="function"><a href="../generator.html#Generator.offset_limit_modifiers">offset_limit_modifiers</a></dd> + <dd id="Materialize.Generator.after_limit_modifiers" class="function"><a href="../generator.html#Generator.after_limit_modifiers">after_limit_modifiers</a></dd> + <dd id="Materialize.Generator.select_sql" class="function"><a href="../generator.html#Generator.select_sql">select_sql</a></dd> + <dd id="Materialize.Generator.schema_sql" class="function"><a href="../generator.html#Generator.schema_sql">schema_sql</a></dd> + <dd id="Materialize.Generator.schema_columns_sql" class="function"><a href="../generator.html#Generator.schema_columns_sql">schema_columns_sql</a></dd> + <dd id="Materialize.Generator.star_sql" class="function"><a href="../generator.html#Generator.star_sql">star_sql</a></dd> + <dd id="Materialize.Generator.parameter_sql" class="function"><a href="../generator.html#Generator.parameter_sql">parameter_sql</a></dd> + <dd id="Materialize.Generator.sessionparameter_sql" class="function"><a href="../generator.html#Generator.sessionparameter_sql">sessionparameter_sql</a></dd> + <dd id="Materialize.Generator.placeholder_sql" class="function"><a href="../generator.html#Generator.placeholder_sql">placeholder_sql</a></dd> + <dd id="Materialize.Generator.subquery_sql" class="function"><a href="../generator.html#Generator.subquery_sql">subquery_sql</a></dd> + <dd id="Materialize.Generator.qualify_sql" class="function"><a href="../generator.html#Generator.qualify_sql">qualify_sql</a></dd> + <dd id="Materialize.Generator.set_operations" class="function"><a href="../generator.html#Generator.set_operations">set_operations</a></dd> + <dd id="Materialize.Generator.union_sql" class="function"><a href="../generator.html#Generator.union_sql">union_sql</a></dd> + <dd id="Materialize.Generator.union_op" class="function"><a href="../generator.html#Generator.union_op">union_op</a></dd> + <dd id="Materialize.Generator.prewhere_sql" class="function"><a href="../generator.html#Generator.prewhere_sql">prewhere_sql</a></dd> + <dd id="Materialize.Generator.where_sql" class="function"><a href="../generator.html#Generator.where_sql">where_sql</a></dd> + <dd id="Materialize.Generator.window_sql" class="function"><a href="../generator.html#Generator.window_sql">window_sql</a></dd> + <dd id="Materialize.Generator.partition_by_sql" class="function"><a href="../generator.html#Generator.partition_by_sql">partition_by_sql</a></dd> + <dd id="Materialize.Generator.windowspec_sql" class="function"><a href="../generator.html#Generator.windowspec_sql">windowspec_sql</a></dd> + <dd id="Materialize.Generator.withingroup_sql" class="function"><a href="../generator.html#Generator.withingroup_sql">withingroup_sql</a></dd> + <dd id="Materialize.Generator.between_sql" class="function"><a href="../generator.html#Generator.between_sql">between_sql</a></dd> + <dd id="Materialize.Generator.bracket_offset_expressions" class="function"><a href="../generator.html#Generator.bracket_offset_expressions">bracket_offset_expressions</a></dd> + <dd id="Materialize.Generator.all_sql" class="function"><a href="../generator.html#Generator.all_sql">all_sql</a></dd> + <dd id="Materialize.Generator.any_sql" class="function"><a href="../generator.html#Generator.any_sql">any_sql</a></dd> + <dd id="Materialize.Generator.exists_sql" class="function"><a href="../generator.html#Generator.exists_sql">exists_sql</a></dd> + <dd id="Materialize.Generator.case_sql" class="function"><a href="../generator.html#Generator.case_sql">case_sql</a></dd> + <dd id="Materialize.Generator.constraint_sql" class="function"><a href="../generator.html#Generator.constraint_sql">constraint_sql</a></dd> + <dd id="Materialize.Generator.nextvaluefor_sql" class="function"><a href="../generator.html#Generator.nextvaluefor_sql">nextvaluefor_sql</a></dd> + <dd id="Materialize.Generator.extract_sql" class="function"><a href="../generator.html#Generator.extract_sql">extract_sql</a></dd> + <dd id="Materialize.Generator.trim_sql" class="function"><a href="../generator.html#Generator.trim_sql">trim_sql</a></dd> + <dd id="Materialize.Generator.convert_concat_args" class="function"><a href="../generator.html#Generator.convert_concat_args">convert_concat_args</a></dd> + <dd id="Materialize.Generator.concat_sql" class="function"><a href="../generator.html#Generator.concat_sql">concat_sql</a></dd> + <dd id="Materialize.Generator.concatws_sql" class="function"><a href="../generator.html#Generator.concatws_sql">concatws_sql</a></dd> + <dd id="Materialize.Generator.check_sql" class="function"><a href="../generator.html#Generator.check_sql">check_sql</a></dd> + <dd id="Materialize.Generator.foreignkey_sql" class="function"><a href="../generator.html#Generator.foreignkey_sql">foreignkey_sql</a></dd> + <dd id="Materialize.Generator.primarykey_sql" class="function"><a href="../generator.html#Generator.primarykey_sql">primarykey_sql</a></dd> + <dd id="Materialize.Generator.if_sql" class="function"><a href="../generator.html#Generator.if_sql">if_sql</a></dd> + <dd id="Materialize.Generator.jsonkeyvalue_sql" class="function"><a href="../generator.html#Generator.jsonkeyvalue_sql">jsonkeyvalue_sql</a></dd> + <dd id="Materialize.Generator.jsonpath_sql" class="function"><a href="../generator.html#Generator.jsonpath_sql">jsonpath_sql</a></dd> + <dd id="Materialize.Generator.json_path_part" class="function"><a href="../generator.html#Generator.json_path_part">json_path_part</a></dd> + <dd id="Materialize.Generator.formatjson_sql" class="function"><a href="../generator.html#Generator.formatjson_sql">formatjson_sql</a></dd> + <dd id="Materialize.Generator.jsonobject_sql" class="function"><a href="../generator.html#Generator.jsonobject_sql">jsonobject_sql</a></dd> + <dd id="Materialize.Generator.jsonobjectagg_sql" class="function"><a href="../generator.html#Generator.jsonobjectagg_sql">jsonobjectagg_sql</a></dd> + <dd id="Materialize.Generator.jsonarray_sql" class="function"><a href="../generator.html#Generator.jsonarray_sql">jsonarray_sql</a></dd> + <dd id="Materialize.Generator.jsonarrayagg_sql" class="function"><a href="../generator.html#Generator.jsonarrayagg_sql">jsonarrayagg_sql</a></dd> + <dd id="Materialize.Generator.jsoncolumndef_sql" class="function"><a href="../generator.html#Generator.jsoncolumndef_sql">jsoncolumndef_sql</a></dd> + <dd id="Materialize.Generator.jsonschema_sql" class="function"><a href="../generator.html#Generator.jsonschema_sql">jsonschema_sql</a></dd> + <dd id="Materialize.Generator.jsontable_sql" class="function"><a href="../generator.html#Generator.jsontable_sql">jsontable_sql</a></dd> + <dd id="Materialize.Generator.openjsoncolumndef_sql" class="function"><a href="../generator.html#Generator.openjsoncolumndef_sql">openjsoncolumndef_sql</a></dd> + <dd id="Materialize.Generator.openjson_sql" class="function"><a href="../generator.html#Generator.openjson_sql">openjson_sql</a></dd> + <dd id="Materialize.Generator.in_sql" class="function"><a href="../generator.html#Generator.in_sql">in_sql</a></dd> + <dd id="Materialize.Generator.in_unnest_op" class="function"><a href="../generator.html#Generator.in_unnest_op">in_unnest_op</a></dd> + <dd id="Materialize.Generator.interval_sql" class="function"><a href="../generator.html#Generator.interval_sql">interval_sql</a></dd> + <dd id="Materialize.Generator.return_sql" class="function"><a href="../generator.html#Generator.return_sql">return_sql</a></dd> + <dd id="Materialize.Generator.reference_sql" class="function"><a href="../generator.html#Generator.reference_sql">reference_sql</a></dd> + <dd id="Materialize.Generator.anonymous_sql" class="function"><a href="../generator.html#Generator.anonymous_sql">anonymous_sql</a></dd> + <dd id="Materialize.Generator.paren_sql" class="function"><a href="../generator.html#Generator.paren_sql">paren_sql</a></dd> + <dd id="Materialize.Generator.neg_sql" class="function"><a href="../generator.html#Generator.neg_sql">neg_sql</a></dd> + <dd id="Materialize.Generator.not_sql" class="function"><a href="../generator.html#Generator.not_sql">not_sql</a></dd> + <dd id="Materialize.Generator.alias_sql" class="function"><a href="../generator.html#Generator.alias_sql">alias_sql</a></dd> + <dd id="Materialize.Generator.pivotalias_sql" class="function"><a href="../generator.html#Generator.pivotalias_sql">pivotalias_sql</a></dd> + <dd id="Materialize.Generator.aliases_sql" class="function"><a href="../generator.html#Generator.aliases_sql">aliases_sql</a></dd> + <dd id="Materialize.Generator.atindex_sql" class="function"><a href="../generator.html#Generator.atindex_sql">atindex_sql</a></dd> + <dd id="Materialize.Generator.attimezone_sql" class="function"><a href="../generator.html#Generator.attimezone_sql">attimezone_sql</a></dd> + <dd id="Materialize.Generator.fromtimezone_sql" class="function"><a href="../generator.html#Generator.fromtimezone_sql">fromtimezone_sql</a></dd> + <dd id="Materialize.Generator.add_sql" class="function"><a href="../generator.html#Generator.add_sql">add_sql</a></dd> + <dd id="Materialize.Generator.and_sql" class="function"><a href="../generator.html#Generator.and_sql">and_sql</a></dd> + <dd id="Materialize.Generator.or_sql" class="function"><a href="../generator.html#Generator.or_sql">or_sql</a></dd> + <dd id="Materialize.Generator.xor_sql" class="function"><a href="../generator.html#Generator.xor_sql">xor_sql</a></dd> + <dd id="Materialize.Generator.connector_sql" class="function"><a href="../generator.html#Generator.connector_sql">connector_sql</a></dd> + <dd id="Materialize.Generator.bitwiseand_sql" class="function"><a href="../generator.html#Generator.bitwiseand_sql">bitwiseand_sql</a></dd> + <dd id="Materialize.Generator.bitwiseleftshift_sql" class="function"><a href="../generator.html#Generator.bitwiseleftshift_sql">bitwiseleftshift_sql</a></dd> + <dd id="Materialize.Generator.bitwisenot_sql" class="function"><a href="../generator.html#Generator.bitwisenot_sql">bitwisenot_sql</a></dd> + <dd id="Materialize.Generator.bitwiseor_sql" class="function"><a href="../generator.html#Generator.bitwiseor_sql">bitwiseor_sql</a></dd> + <dd id="Materialize.Generator.bitwiserightshift_sql" class="function"><a href="../generator.html#Generator.bitwiserightshift_sql">bitwiserightshift_sql</a></dd> + <dd id="Materialize.Generator.bitwisexor_sql" class="function"><a href="../generator.html#Generator.bitwisexor_sql">bitwisexor_sql</a></dd> + <dd id="Materialize.Generator.cast_sql" class="function"><a href="../generator.html#Generator.cast_sql">cast_sql</a></dd> + <dd id="Materialize.Generator.currentdate_sql" class="function"><a href="../generator.html#Generator.currentdate_sql">currentdate_sql</a></dd> + <dd id="Materialize.Generator.currenttimestamp_sql" class="function"><a href="../generator.html#Generator.currenttimestamp_sql">currenttimestamp_sql</a></dd> + <dd id="Materialize.Generator.collate_sql" class="function"><a href="../generator.html#Generator.collate_sql">collate_sql</a></dd> + <dd id="Materialize.Generator.command_sql" class="function"><a href="../generator.html#Generator.command_sql">command_sql</a></dd> + <dd id="Materialize.Generator.comment_sql" class="function"><a href="../generator.html#Generator.comment_sql">comment_sql</a></dd> + <dd id="Materialize.Generator.mergetreettlaction_sql" class="function"><a href="../generator.html#Generator.mergetreettlaction_sql">mergetreettlaction_sql</a></dd> + <dd id="Materialize.Generator.mergetreettl_sql" class="function"><a href="../generator.html#Generator.mergetreettl_sql">mergetreettl_sql</a></dd> + <dd id="Materialize.Generator.transaction_sql" class="function"><a href="../generator.html#Generator.transaction_sql">transaction_sql</a></dd> + <dd id="Materialize.Generator.commit_sql" class="function"><a href="../generator.html#Generator.commit_sql">commit_sql</a></dd> + <dd id="Materialize.Generator.rollback_sql" class="function"><a href="../generator.html#Generator.rollback_sql">rollback_sql</a></dd> + <dd id="Materialize.Generator.altercolumn_sql" class="function"><a href="../generator.html#Generator.altercolumn_sql">altercolumn_sql</a></dd> + <dd id="Materialize.Generator.alterdiststyle_sql" class="function"><a href="../generator.html#Generator.alterdiststyle_sql">alterdiststyle_sql</a></dd> + <dd id="Materialize.Generator.altersortkey_sql" class="function"><a href="../generator.html#Generator.altersortkey_sql">altersortkey_sql</a></dd> + <dd id="Materialize.Generator.renametable_sql" class="function"><a href="../generator.html#Generator.renametable_sql">renametable_sql</a></dd> + <dd id="Materialize.Generator.renamecolumn_sql" class="function"><a href="../generator.html#Generator.renamecolumn_sql">renamecolumn_sql</a></dd> + <dd id="Materialize.Generator.altertable_sql" class="function"><a href="../generator.html#Generator.altertable_sql">altertable_sql</a></dd> + <dd id="Materialize.Generator.add_column_sql" class="function"><a href="../generator.html#Generator.add_column_sql">add_column_sql</a></dd> + <dd id="Materialize.Generator.droppartition_sql" class="function"><a href="../generator.html#Generator.droppartition_sql">droppartition_sql</a></dd> + <dd id="Materialize.Generator.addconstraint_sql" class="function"><a href="../generator.html#Generator.addconstraint_sql">addconstraint_sql</a></dd> + <dd id="Materialize.Generator.distinct_sql" class="function"><a href="../generator.html#Generator.distinct_sql">distinct_sql</a></dd> + <dd id="Materialize.Generator.ignorenulls_sql" class="function"><a href="../generator.html#Generator.ignorenulls_sql">ignorenulls_sql</a></dd> + <dd id="Materialize.Generator.respectnulls_sql" class="function"><a href="../generator.html#Generator.respectnulls_sql">respectnulls_sql</a></dd> + <dd id="Materialize.Generator.havingmax_sql" class="function"><a href="../generator.html#Generator.havingmax_sql">havingmax_sql</a></dd> + <dd id="Materialize.Generator.intdiv_sql" class="function"><a href="../generator.html#Generator.intdiv_sql">intdiv_sql</a></dd> + <dd id="Materialize.Generator.dpipe_sql" class="function"><a href="../generator.html#Generator.dpipe_sql">dpipe_sql</a></dd> + <dd id="Materialize.Generator.div_sql" class="function"><a href="../generator.html#Generator.div_sql">div_sql</a></dd> + <dd id="Materialize.Generator.overlaps_sql" class="function"><a href="../generator.html#Generator.overlaps_sql">overlaps_sql</a></dd> + <dd id="Materialize.Generator.distance_sql" class="function"><a href="../generator.html#Generator.distance_sql">distance_sql</a></dd> + <dd id="Materialize.Generator.dot_sql" class="function"><a href="../generator.html#Generator.dot_sql">dot_sql</a></dd> + <dd id="Materialize.Generator.eq_sql" class="function"><a href="../generator.html#Generator.eq_sql">eq_sql</a></dd> + <dd id="Materialize.Generator.escape_sql" class="function"><a href="../generator.html#Generator.escape_sql">escape_sql</a></dd> + <dd id="Materialize.Generator.glob_sql" class="function"><a href="../generator.html#Generator.glob_sql">glob_sql</a></dd> + <dd id="Materialize.Generator.gt_sql" class="function"><a href="../generator.html#Generator.gt_sql">gt_sql</a></dd> + <dd id="Materialize.Generator.gte_sql" class="function"><a href="../generator.html#Generator.gte_sql">gte_sql</a></dd> + <dd id="Materialize.Generator.ilike_sql" class="function"><a href="../generator.html#Generator.ilike_sql">ilike_sql</a></dd> + <dd id="Materialize.Generator.ilikeany_sql" class="function"><a href="../generator.html#Generator.ilikeany_sql">ilikeany_sql</a></dd> + <dd id="Materialize.Generator.is_sql" class="function"><a href="../generator.html#Generator.is_sql">is_sql</a></dd> + <dd id="Materialize.Generator.like_sql" class="function"><a href="../generator.html#Generator.like_sql">like_sql</a></dd> + <dd id="Materialize.Generator.likeany_sql" class="function"><a href="../generator.html#Generator.likeany_sql">likeany_sql</a></dd> + <dd id="Materialize.Generator.similarto_sql" class="function"><a href="../generator.html#Generator.similarto_sql">similarto_sql</a></dd> + <dd id="Materialize.Generator.lt_sql" class="function"><a href="../generator.html#Generator.lt_sql">lt_sql</a></dd> + <dd id="Materialize.Generator.lte_sql" class="function"><a href="../generator.html#Generator.lte_sql">lte_sql</a></dd> + <dd id="Materialize.Generator.mod_sql" class="function"><a href="../generator.html#Generator.mod_sql">mod_sql</a></dd> + <dd id="Materialize.Generator.mul_sql" class="function"><a href="../generator.html#Generator.mul_sql">mul_sql</a></dd> + <dd id="Materialize.Generator.neq_sql" class="function"><a href="../generator.html#Generator.neq_sql">neq_sql</a></dd> + <dd id="Materialize.Generator.nullsafeeq_sql" class="function"><a href="../generator.html#Generator.nullsafeeq_sql">nullsafeeq_sql</a></dd> + <dd id="Materialize.Generator.nullsafeneq_sql" class="function"><a href="../generator.html#Generator.nullsafeneq_sql">nullsafeneq_sql</a></dd> + <dd id="Materialize.Generator.slice_sql" class="function"><a href="../generator.html#Generator.slice_sql">slice_sql</a></dd> + <dd id="Materialize.Generator.sub_sql" class="function"><a href="../generator.html#Generator.sub_sql">sub_sql</a></dd> + <dd id="Materialize.Generator.trycast_sql" class="function"><a href="../generator.html#Generator.trycast_sql">trycast_sql</a></dd> + <dd id="Materialize.Generator.try_sql" class="function"><a href="../generator.html#Generator.try_sql">try_sql</a></dd> + <dd id="Materialize.Generator.log_sql" class="function"><a href="../generator.html#Generator.log_sql">log_sql</a></dd> + <dd id="Materialize.Generator.use_sql" class="function"><a href="../generator.html#Generator.use_sql">use_sql</a></dd> + <dd id="Materialize.Generator.binary" class="function"><a href="../generator.html#Generator.binary">binary</a></dd> + <dd id="Materialize.Generator.function_fallback_sql" class="function"><a href="../generator.html#Generator.function_fallback_sql">function_fallback_sql</a></dd> + <dd id="Materialize.Generator.func" class="function"><a href="../generator.html#Generator.func">func</a></dd> + <dd id="Materialize.Generator.format_args" class="function"><a href="../generator.html#Generator.format_args">format_args</a></dd> + <dd id="Materialize.Generator.too_wide" class="function"><a href="../generator.html#Generator.too_wide">too_wide</a></dd> + <dd id="Materialize.Generator.format_time" class="function"><a href="../generator.html#Generator.format_time">format_time</a></dd> + <dd id="Materialize.Generator.expressions" class="function"><a href="../generator.html#Generator.expressions">expressions</a></dd> + <dd id="Materialize.Generator.op_expressions" class="function"><a href="../generator.html#Generator.op_expressions">op_expressions</a></dd> + <dd id="Materialize.Generator.naked_property" class="function"><a href="../generator.html#Generator.naked_property">naked_property</a></dd> + <dd id="Materialize.Generator.tag_sql" class="function"><a href="../generator.html#Generator.tag_sql">tag_sql</a></dd> + <dd id="Materialize.Generator.token_sql" class="function"><a href="../generator.html#Generator.token_sql">token_sql</a></dd> + <dd id="Materialize.Generator.userdefinedfunction_sql" class="function"><a href="../generator.html#Generator.userdefinedfunction_sql">userdefinedfunction_sql</a></dd> + <dd id="Materialize.Generator.joinhint_sql" class="function"><a href="../generator.html#Generator.joinhint_sql">joinhint_sql</a></dd> + <dd id="Materialize.Generator.kwarg_sql" class="function"><a href="../generator.html#Generator.kwarg_sql">kwarg_sql</a></dd> + <dd id="Materialize.Generator.when_sql" class="function"><a href="../generator.html#Generator.when_sql">when_sql</a></dd> + <dd id="Materialize.Generator.merge_sql" class="function"><a href="../generator.html#Generator.merge_sql">merge_sql</a></dd> + <dd id="Materialize.Generator.tochar_sql" class="function"><a href="../generator.html#Generator.tochar_sql">tochar_sql</a></dd> + <dd id="Materialize.Generator.tonumber_sql" class="function"><a href="../generator.html#Generator.tonumber_sql">tonumber_sql</a></dd> + <dd id="Materialize.Generator.dictproperty_sql" class="function"><a href="../generator.html#Generator.dictproperty_sql">dictproperty_sql</a></dd> + <dd id="Materialize.Generator.dictrange_sql" class="function"><a href="../generator.html#Generator.dictrange_sql">dictrange_sql</a></dd> + <dd id="Materialize.Generator.dictsubproperty_sql" class="function"><a href="../generator.html#Generator.dictsubproperty_sql">dictsubproperty_sql</a></dd> + <dd id="Materialize.Generator.oncluster_sql" class="function"><a href="../generator.html#Generator.oncluster_sql">oncluster_sql</a></dd> + <dd id="Materialize.Generator.clusteredbyproperty_sql" class="function"><a href="../generator.html#Generator.clusteredbyproperty_sql">clusteredbyproperty_sql</a></dd> + <dd id="Materialize.Generator.anyvalue_sql" class="function"><a href="../generator.html#Generator.anyvalue_sql">anyvalue_sql</a></dd> + <dd id="Materialize.Generator.querytransform_sql" class="function"><a href="../generator.html#Generator.querytransform_sql">querytransform_sql</a></dd> + <dd id="Materialize.Generator.indexconstraintoption_sql" class="function"><a href="../generator.html#Generator.indexconstraintoption_sql">indexconstraintoption_sql</a></dd> + <dd id="Materialize.Generator.checkcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.checkcolumnconstraint_sql">checkcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.indexcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.indexcolumnconstraint_sql">indexcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.nvl2_sql" class="function"><a href="../generator.html#Generator.nvl2_sql">nvl2_sql</a></dd> + <dd id="Materialize.Generator.comprehension_sql" class="function"><a href="../generator.html#Generator.comprehension_sql">comprehension_sql</a></dd> + <dd id="Materialize.Generator.columnprefix_sql" class="function"><a href="../generator.html#Generator.columnprefix_sql">columnprefix_sql</a></dd> + <dd id="Materialize.Generator.opclass_sql" class="function"><a href="../generator.html#Generator.opclass_sql">opclass_sql</a></dd> + <dd id="Materialize.Generator.predict_sql" class="function"><a href="../generator.html#Generator.predict_sql">predict_sql</a></dd> + <dd id="Materialize.Generator.forin_sql" class="function"><a href="../generator.html#Generator.forin_sql">forin_sql</a></dd> + <dd id="Materialize.Generator.refresh_sql" class="function"><a href="../generator.html#Generator.refresh_sql">refresh_sql</a></dd> + <dd id="Materialize.Generator.operator_sql" class="function"><a href="../generator.html#Generator.operator_sql">operator_sql</a></dd> + <dd id="Materialize.Generator.toarray_sql" class="function"><a href="../generator.html#Generator.toarray_sql">toarray_sql</a></dd> + <dd id="Materialize.Generator.tsordstotime_sql" class="function"><a href="../generator.html#Generator.tsordstotime_sql">tsordstotime_sql</a></dd> + <dd id="Materialize.Generator.tsordstotimestamp_sql" class="function"><a href="../generator.html#Generator.tsordstotimestamp_sql">tsordstotimestamp_sql</a></dd> + <dd id="Materialize.Generator.tsordstodate_sql" class="function"><a href="../generator.html#Generator.tsordstodate_sql">tsordstodate_sql</a></dd> + <dd id="Materialize.Generator.unixdate_sql" class="function"><a href="../generator.html#Generator.unixdate_sql">unixdate_sql</a></dd> + <dd id="Materialize.Generator.lastday_sql" class="function"><a href="../generator.html#Generator.lastday_sql">lastday_sql</a></dd> + <dd id="Materialize.Generator.dateadd_sql" class="function"><a href="../generator.html#Generator.dateadd_sql">dateadd_sql</a></dd> + <dd id="Materialize.Generator.arrayany_sql" class="function"><a href="../generator.html#Generator.arrayany_sql">arrayany_sql</a></dd> + <dd id="Materialize.Generator.generateseries_sql" class="function"><a href="../generator.html#Generator.generateseries_sql">generateseries_sql</a></dd> + <dd id="Materialize.Generator.struct_sql" class="function"><a href="../generator.html#Generator.struct_sql">struct_sql</a></dd> + <dd id="Materialize.Generator.partitionrange_sql" class="function"><a href="../generator.html#Generator.partitionrange_sql">partitionrange_sql</a></dd> + <dd id="Materialize.Generator.truncatetable_sql" class="function"><a href="../generator.html#Generator.truncatetable_sql">truncatetable_sql</a></dd> + <dd id="Materialize.Generator.convert_sql" class="function"><a href="../generator.html#Generator.convert_sql">convert_sql</a></dd> + <dd id="Materialize.Generator.copyparameter_sql" class="function"><a href="../generator.html#Generator.copyparameter_sql">copyparameter_sql</a></dd> + <dd id="Materialize.Generator.credentials_sql" class="function"><a href="../generator.html#Generator.credentials_sql">credentials_sql</a></dd> + <dd id="Materialize.Generator.copy_sql" class="function"><a href="../generator.html#Generator.copy_sql">copy_sql</a></dd> + <dd id="Materialize.Generator.semicolon_sql" class="function"><a href="../generator.html#Generator.semicolon_sql">semicolon_sql</a></dd> + <dd id="Materialize.Generator.datadeletionproperty_sql" class="function"><a href="../generator.html#Generator.datadeletionproperty_sql">datadeletionproperty_sql</a></dd> + <dd id="Materialize.Generator.maskingpolicycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.gapfill_sql" class="function"><a href="../generator.html#Generator.gapfill_sql">gapfill_sql</a></dd> + + </div> + <div><dt><a href="postgres.html#Postgres.Generator">sqlglot.dialects.postgres.Postgres.Generator</a></dt> + <dd id="Materialize.Generator.SINGLE_STRING_INTERVAL" class="variable"><a href="postgres.html#Postgres.Generator.SINGLE_STRING_INTERVAL">SINGLE_STRING_INTERVAL</a></dd> + <dd id="Materialize.Generator.RENAME_TABLE_WITH_DB" class="variable"><a href="postgres.html#Postgres.Generator.RENAME_TABLE_WITH_DB">RENAME_TABLE_WITH_DB</a></dd> + <dd id="Materialize.Generator.LOCKING_READS_SUPPORTED" class="variable"><a href="postgres.html#Postgres.Generator.LOCKING_READS_SUPPORTED">LOCKING_READS_SUPPORTED</a></dd> + <dd id="Materialize.Generator.JOIN_HINTS" class="variable"><a href="postgres.html#Postgres.Generator.JOIN_HINTS">JOIN_HINTS</a></dd> + <dd id="Materialize.Generator.TABLE_HINTS" class="variable"><a href="postgres.html#Postgres.Generator.TABLE_HINTS">TABLE_HINTS</a></dd> + <dd id="Materialize.Generator.QUERY_HINTS" class="variable"><a href="postgres.html#Postgres.Generator.QUERY_HINTS">QUERY_HINTS</a></dd> + <dd id="Materialize.Generator.NVL2_SUPPORTED" class="variable"><a href="postgres.html#Postgres.Generator.NVL2_SUPPORTED">NVL2_SUPPORTED</a></dd> + <dd id="Materialize.Generator.PARAMETER_TOKEN" class="variable"><a href="postgres.html#Postgres.Generator.PARAMETER_TOKEN">PARAMETER_TOKEN</a></dd> + <dd id="Materialize.Generator.TABLESAMPLE_SIZE_IS_ROWS" class="variable"><a href="postgres.html#Postgres.Generator.TABLESAMPLE_SIZE_IS_ROWS">TABLESAMPLE_SIZE_IS_ROWS</a></dd> + <dd id="Materialize.Generator.TABLESAMPLE_SEED_KEYWORD" class="variable"><a href="postgres.html#Postgres.Generator.TABLESAMPLE_SEED_KEYWORD">TABLESAMPLE_SEED_KEYWORD</a></dd> + <dd id="Materialize.Generator.SUPPORTS_SELECT_INTO" class="variable"><a href="postgres.html#Postgres.Generator.SUPPORTS_SELECT_INTO">SUPPORTS_SELECT_INTO</a></dd> + <dd id="Materialize.Generator.JSON_TYPE_REQUIRED_FOR_EXTRACTION" class="variable"><a href="postgres.html#Postgres.Generator.JSON_TYPE_REQUIRED_FOR_EXTRACTION">JSON_TYPE_REQUIRED_FOR_EXTRACTION</a></dd> + <dd id="Materialize.Generator.SUPPORTS_UNLOGGED_TABLES" class="variable"><a href="postgres.html#Postgres.Generator.SUPPORTS_UNLOGGED_TABLES">SUPPORTS_UNLOGGED_TABLES</a></dd> + <dd id="Materialize.Generator.LIKE_PROPERTY_INSIDE_SCHEMA" class="variable"><a href="postgres.html#Postgres.Generator.LIKE_PROPERTY_INSIDE_SCHEMA">LIKE_PROPERTY_INSIDE_SCHEMA</a></dd> + <dd id="Materialize.Generator.MULTI_ARG_DISTINCT" class="variable"><a href="postgres.html#Postgres.Generator.MULTI_ARG_DISTINCT">MULTI_ARG_DISTINCT</a></dd> + <dd id="Materialize.Generator.CAN_IMPLEMENT_ARRAY_ANY" class="variable"><a href="postgres.html#Postgres.Generator.CAN_IMPLEMENT_ARRAY_ANY">CAN_IMPLEMENT_ARRAY_ANY</a></dd> + <dd id="Materialize.Generator.COPY_HAS_INTO_KEYWORD" class="variable"><a href="postgres.html#Postgres.Generator.COPY_HAS_INTO_KEYWORD">COPY_HAS_INTO_KEYWORD</a></dd> + <dd id="Materialize.Generator.SUPPORTED_JSON_PATH_PARTS" class="variable"><a href="postgres.html#Postgres.Generator.SUPPORTED_JSON_PATH_PARTS">SUPPORTED_JSON_PATH_PARTS</a></dd> + <dd id="Materialize.Generator.TYPE_MAPPING" class="variable"><a href="postgres.html#Postgres.Generator.TYPE_MAPPING">TYPE_MAPPING</a></dd> + <dd id="Materialize.Generator.PROPERTIES_LOCATION" class="variable"><a href="postgres.html#Postgres.Generator.PROPERTIES_LOCATION">PROPERTIES_LOCATION</a></dd> + <dd id="Materialize.Generator.schemacommentproperty_sql" class="function"><a href="postgres.html#Postgres.Generator.schemacommentproperty_sql">schemacommentproperty_sql</a></dd> + <dd id="Materialize.Generator.commentcolumnconstraint_sql" class="function"><a href="postgres.html#Postgres.Generator.commentcolumnconstraint_sql">commentcolumnconstraint_sql</a></dd> + <dd id="Materialize.Generator.unnest_sql" class="function"><a href="postgres.html#Postgres.Generator.unnest_sql">unnest_sql</a></dd> + <dd id="Materialize.Generator.bracket_sql" class="function"><a href="postgres.html#Postgres.Generator.bracket_sql">bracket_sql</a></dd> + <dd id="Materialize.Generator.matchagainst_sql" class="function"><a href="postgres.html#Postgres.Generator.matchagainst_sql">matchagainst_sql</a></dd> + <dd id="Materialize.Generator.alterset_sql" class="function"><a href="postgres.html#Postgres.Generator.alterset_sql">alterset_sql</a></dd> + + </div> + </dl> + </div> + </section> + </main> +<script> + function escapeHTML(html) { + return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML; + } + + const originalContent = document.querySelector("main.pdoc"); + let currentContent = originalContent; + + function setContent(innerHTML) { + let elem; + if (innerHTML) { + elem = document.createElement("main"); + elem.classList.add("pdoc"); + elem.innerHTML = innerHTML; + } else { + elem = originalContent; + } + if (currentContent !== elem) { + currentContent.replaceWith(elem); + currentContent = elem; + } + } + + function getSearchTerm() { + return (new URL(window.location)).searchParams.get("search"); + } + + const searchBox = document.querySelector(".pdoc input[type=search]"); + searchBox.addEventListener("input", function () { + let url = new URL(window.location); + if (searchBox.value.trim()) { + url.hash = ""; + url.searchParams.set("search", searchBox.value); + } else { + url.searchParams.delete("search"); + } + history.replaceState("", "", url.toString()); + onInput(); + }); + window.addEventListener("popstate", onInput); + + + let search, searchErr; + + async function initialize() { + try { + search = await new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.type = "text/javascript"; + script.async = true; + script.onload = () => resolve(window.pdocSearch); + script.onerror = (e) => reject(e); + script.src = "../../search.js"; + document.getElementsByTagName("head")[0].appendChild(script); + }); + } catch (e) { + console.error("Cannot fetch pdoc search index"); + searchErr = "Cannot fetch search index."; + } + onInput(); + + document.querySelector("nav.pdoc").addEventListener("click", e => { + if (e.target.hash) { + searchBox.value = ""; + searchBox.dispatchEvent(new Event("input")); + } + }); + } + + function onInput() { + setContent((() => { + const term = getSearchTerm(); + if (!term) { + return null + } + if (searchErr) { + return `<h3>Error: ${searchErr}</h3>` + } + if (!search) { + return "<h3>Searching...</h3>" + } + + window.scrollTo({top: 0, left: 0, behavior: 'auto'}); + + const results = search(term); + + let html; + if (results.length === 0) { + html = `No search results for '${escapeHTML(term)}'.` + } else { + html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`; + } + for (let result of results.slice(0, 10)) { + let doc = result.doc; + let url = `../../${doc.modulename.replaceAll(".", "/")}.html`; + if (doc.qualname) { + url += `#${doc.qualname}`; + } + + let heading; + switch (result.doc.kind) { + case "function": + if (doc.fullname.endsWith(".__init__")) { + heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`; + } else { + heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`; + } + break; + case "class": + heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`; + if (doc.bases) + heading += `<wbr>(<span class="base">${doc.bases}</span>)`; + heading += `:`; + break; + case "variable": + heading = `<span class="name">${doc.fullname}</span>`; + if (doc.annotation) + heading += `<span class="annotation">${doc.annotation}</span>`; + if (doc.default_value) + heading += `<span class="default_value"> = ${doc.default_value}</span>`; + break; + default: + heading = `<span class="name">${doc.fullname}</span>`; + break; + } + html += ` + <section class="search-result"> + <a href="${url}" class="attr ${doc.kind}">${heading}</a> + <div class="docstring">${doc.doc}</div> + </section> + `; + + } + return html; + })()); + } + + if (getSearchTerm()) { + initialize(); + searchBox.value = getSearchTerm(); + onInput(); + } else { + searchBox.addEventListener("focus", initialize, {once: true}); + } + + searchBox.addEventListener("keydown", e => { + if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) { + let focused = currentContent.querySelector(".search-result.focused"); + if (!focused) { + currentContent.querySelector(".search-result").classList.add("focused"); + } else if ( + e.key === "ArrowDown" + && focused.nextElementSibling + && focused.nextElementSibling.classList.contains("search-result") + ) { + focused.classList.remove("focused"); + focused.nextElementSibling.classList.add("focused"); + focused.nextElementSibling.scrollIntoView({ + behavior: "smooth", + block: "nearest", + inline: "nearest" + }); + } else if ( + e.key === "ArrowUp" + && focused.previousElementSibling + && focused.previousElementSibling.classList.contains("search-result") + ) { + focused.classList.remove("focused"); + focused.previousElementSibling.classList.add("focused"); + focused.previousElementSibling.scrollIntoView({ + behavior: "smooth", + block: "nearest", + inline: "nearest" + }); + } else if ( + e.key === "Enter" + ) { + focused.querySelector("a").click(); + } + } + }); +</script></body> +</html>
\ No newline at end of file diff --git a/docs/sqlglot/dialects/mysql.html b/docs/sqlglot/dialects/mysql.html index 0835817..3aaffc6 100644 --- a/docs/sqlglot/dialects/mysql.html +++ b/docs/sqlglot/dialects/mysql.html @@ -1625,7 +1625,7 @@ <section id="TIME_SPECIFIERS"> <div class="attr variable"> <span class="name">TIME_SPECIFIERS</span> = -<span class="default_value">{'I', 's', 'i', 'f', 'l', 'H', 'k', 'r', 'T', 'p', 'h', 'S'}</span> +<span class="default_value">{'r', 'l', 'I', 'p', 'H', 'h', 'i', 's', 'T', 'f', 'S', 'k'}</span> </div> @@ -3338,7 +3338,7 @@ <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="MySQL.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'CHARSET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'FORCE': <TokenType.FORCE: 'FORCE'>, 'IGNORE': <TokenType.IGNORE: 'IGNORE'>, 'LOCK TABLES': <TokenType.COMMAND: 'COMMAND'>, 'MEMBER OF': <TokenType.MEMBER_OF: 'MEMBER_OF'>, 'SEPARATOR': <TokenType.SEPARATOR: 'SEPARATOR'>, 'START': <TokenType.BEGIN: 'BEGIN'>, 'SIGNED': <TokenType.BIGINT: 'BIGINT'>, 'SIGNED INTEGER': <TokenType.BIGINT: 'BIGINT'>, 'UNLOCK TABLES': <TokenType.COMMAND: 'COMMAND'>, 'UNSIGNED': <TokenType.UBIGINT: 'UBIGINT'>, 'UNSIGNED INTEGER': <TokenType.UBIGINT: 'UBIGINT'>, 'YEAR': <TokenType.YEAR: 'YEAR'>, '_ARMSCII8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_ASCII': <TokenType.INTRODUCER: 'INTRODUCER'>, '_BIG5': <TokenType.INTRODUCER: 'INTRODUCER'>, '_BINARY': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1250': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1251': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1256': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1257': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP850': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP852': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP866': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP932': <TokenType.INTRODUCER: 'INTRODUCER'>, '_DEC8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_EUCJPMS': <TokenType.INTRODUCER: 'INTRODUCER'>, '_EUCKR': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GB18030': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GB2312': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GBK': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GEOSTD8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GREEK': <TokenType.INTRODUCER: 'INTRODUCER'>, '_HEBREW': <TokenType.INTRODUCER: 'INTRODUCER'>, '_HP8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_KEYBCS2': <TokenType.INTRODUCER: 'INTRODUCER'>, '_KOI8R': <TokenType.INTRODUCER: 'INTRODUCER'>, '_KOI8U': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN1': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN2': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN5': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN7': <TokenType.INTRODUCER: 'INTRODUCER'>, '_MACCE': <TokenType.INTRODUCER: 'INTRODUCER'>, '_MACROMAN': <TokenType.INTRODUCER: 'INTRODUCER'>, '_SJIS': <TokenType.INTRODUCER: 'INTRODUCER'>, '_SWE7': <TokenType.INTRODUCER: 'INTRODUCER'>, '_TIS620': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UCS2': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UJIS': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF16': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF16LE': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF32': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF8MB3': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF8MB4': <TokenType.INTRODUCER: 'INTRODUCER'>, '@@': <TokenType.SESSION_PARAMETER: 'SESSION_PARAMETER'>}</span> + <label class="view-value-button pdoc-button" for="MySQL.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'CHARSET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'FORCE': <TokenType.FORCE: 'FORCE'>, 'IGNORE': <TokenType.IGNORE: 'IGNORE'>, 'LOCK TABLES': <TokenType.COMMAND: 'COMMAND'>, 'MEMBER OF': <TokenType.MEMBER_OF: 'MEMBER_OF'>, 'SEPARATOR': <TokenType.SEPARATOR: 'SEPARATOR'>, 'START': <TokenType.BEGIN: 'BEGIN'>, 'SIGNED': <TokenType.BIGINT: 'BIGINT'>, 'SIGNED INTEGER': <TokenType.BIGINT: 'BIGINT'>, 'UNLOCK TABLES': <TokenType.COMMAND: 'COMMAND'>, 'UNSIGNED': <TokenType.UBIGINT: 'UBIGINT'>, 'UNSIGNED INTEGER': <TokenType.UBIGINT: 'UBIGINT'>, 'YEAR': <TokenType.YEAR: 'YEAR'>, '_ARMSCII8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_ASCII': <TokenType.INTRODUCER: 'INTRODUCER'>, '_BIG5': <TokenType.INTRODUCER: 'INTRODUCER'>, '_BINARY': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1250': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1251': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1256': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP1257': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP850': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP852': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP866': <TokenType.INTRODUCER: 'INTRODUCER'>, '_CP932': <TokenType.INTRODUCER: 'INTRODUCER'>, '_DEC8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_EUCJPMS': <TokenType.INTRODUCER: 'INTRODUCER'>, '_EUCKR': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GB18030': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GB2312': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GBK': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GEOSTD8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_GREEK': <TokenType.INTRODUCER: 'INTRODUCER'>, '_HEBREW': <TokenType.INTRODUCER: 'INTRODUCER'>, '_HP8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_KEYBCS2': <TokenType.INTRODUCER: 'INTRODUCER'>, '_KOI8R': <TokenType.INTRODUCER: 'INTRODUCER'>, '_KOI8U': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN1': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN2': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN5': <TokenType.INTRODUCER: 'INTRODUCER'>, '_LATIN7': <TokenType.INTRODUCER: 'INTRODUCER'>, '_MACCE': <TokenType.INTRODUCER: 'INTRODUCER'>, '_MACROMAN': <TokenType.INTRODUCER: 'INTRODUCER'>, '_SJIS': <TokenType.INTRODUCER: 'INTRODUCER'>, '_SWE7': <TokenType.INTRODUCER: 'INTRODUCER'>, '_TIS620': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UCS2': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UJIS': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF8': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF16': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF16LE': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF32': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF8MB3': <TokenType.INTRODUCER: 'INTRODUCER'>, '_UTF8MB4': <TokenType.INTRODUCER: 'INTRODUCER'>, '@@': <TokenType.SESSION_PARAMETER: 'SESSION_PARAMETER'>}</span> </div> @@ -3351,7 +3351,7 @@ <div class="attr variable"> <span class="name">COMMANDS</span> = <input id="MySQL.Tokenizer.COMMANDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<TokenType.FETCH: 'FETCH'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.EXECUTE: 'EXECUTE'>}</span> + <label class="view-value-button pdoc-button" for="MySQL.Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<TokenType.EXECUTE: 'EXECUTE'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FETCH: 'FETCH'>}</span> </div> @@ -3829,7 +3829,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNC_TOKENS</span> = <input id="MySQL.Parser.FUNC_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.ALL: 'ALL'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.UINT256: 'UINT256'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.INDEX: 'INDEX'>, <TokenType.LIKE: 'LIKE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.GLOB: 'GLOB'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.VALUES: 'VALUES'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.XML: 'XML'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.XOR: 'XOR'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="MySQL.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.MONEY: 'MONEY'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.XOR: 'XOR'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.GLOB: 'GLOB'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.LEFT: 'LEFT'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.SOME: 'SOME'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.ROW: 'ROW'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.INT256: 'INT256'>, <TokenType.VALUES: 'VALUES'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.LIKE: 'LIKE'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3868,7 +3868,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="MySQL.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="MySQL.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3894,7 +3894,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="MySQL.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'INSTR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MONTHNAME': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="MySQL.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'INSTR': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MONTHNAME': <function <a href="#MySQL.Parser">MySQL.Parser</a>.<lambda>>}</span> </div> @@ -3998,7 +3998,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">SCHEMA_UNNAMED_CONSTRAINTS</span> = <input id="MySQL.Parser.SCHEMA_UNNAMED_CONSTRAINTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Parser.SCHEMA_UNNAMED_CONSTRAINTS-view-value"></label><span class="default_value">{'LIKE', 'INDEX', 'PERIOD', 'SPATIAL', 'CHECK', 'EXCLUDE', 'PRIMARY KEY', 'FULLTEXT', 'FOREIGN KEY', 'UNIQUE', 'KEY'}</span> + <label class="view-value-button pdoc-button" for="MySQL.Parser.SCHEMA_UNNAMED_CONSTRAINTS-view-value"></label><span class="default_value">{'PRIMARY KEY', 'KEY', 'EXCLUDE', 'UNIQUE', 'PERIOD', 'INDEX', 'FULLTEXT', 'SPATIAL', 'CHECK', 'LIKE', 'FOREIGN KEY'}</span> </div> @@ -4024,7 +4024,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TYPE_TOKENS</span> = <input id="MySQL.Parser.TYPE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Parser.TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.IMAGE: 'IMAGE'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.NESTED: 'NESTED'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.IPV6: 'IPV6'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.UUID: 'UUID'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.INT256: 'INT256'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>}</span> + <label class="view-value-button pdoc-button" for="MySQL.Parser.TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.NAME: 'NAME'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.MAP: 'MAP'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.INT128: 'INT128'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.NESTED: 'NESTED'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.INT: 'INT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.BIT: 'BIT'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>}</span> </div> @@ -4137,6 +4137,7 @@ Default: 3</li> <dd id="MySQL.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="MySQL.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="MySQL.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="MySQL.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="MySQL.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="MySQL.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="MySQL.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -5157,7 +5158,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="MySQL.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="MySQL.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'over', 'spatial', 'character', 'if', 'day_hour', 'inout', 'is', 'hour_microsecond', 'sql_big_result', 'to', 'get', 'from', 'sql_calc_found_rows', 'with', 'window', 'fulltext', 'asensitive', 'index', 'dec', 'constraint', 'cume_dist', 'of', 'grouping', 'json_table', 'add', 'hour_minute', 'accessible', 'last_value', 'join', 'long', 'write', 'optimizer_costs', 'lag', 'longtext', 'row', 'bigint', 'resignal', 'iterate', 'mod', 'schema', 'insert', 'keys', 'cursor', 'both', 'call', 'high_priority', 'varcharacter', 'int', 'lines', 'loop', 'precision', 'numeric', 'convert', 'force', 'asc', 'rank', 'outfile', 'sql', 'null', 'signal', 'row_number', 'regexp', 'io_before_gtids', 'groups', 'show', 'then', 'purge', 'natural', 'int8', 'desc', 'float4', 'select', 'first_value', 'tinytext', 'varbinary', 'starting', 'leave', 'percent_rank', 'using', 'procedure', 'varchar', 'div', 'while', 'foreign', 'databases', 'drop', 'sqlstate', 'generated', 'describe', 'double', 'second_microsecond', 'values', 'elseif', 'grant', 'dual', 'no_write_to_binlog', 'current_timestamp', 'decimal', 'nth_value', 'update', 'day_second', 'separator', 'replace', 'low_priority', 'not', 'tinyint', 'out', 'set', 'schemas', 'virtual', 'and', 'day_minute', 'database', 'kill', 'restrict', 'sqlexception', 'lateral', 'minute_second', 'change', 'current_time', 'declare', 'utc_date', 'enclosed', 'io_after_gtids', 'right', 'having', 'int1', 'optimize', 'except', 'revoke', 'unlock', 'localtime', 'left', 'real', 'empty', 'mediumblob', 'rows', 'sqlwarning', 'case', 'cube', 'distinct', 'outer', 'escaped', 'rlike', 'when', 'use', 'interval', 'modifies', 'continue', 'table', 'mediumint', 'create', 'utc_time', 'middleint', 'zerofill', 'cross', 'trailing', 'ssl', 'distinctrow', 'ntile', 'on', 'like', 'localtimestamp', 'terminated', 'analyze', 'require', 'rename', 'undo', 'unique', 'order', 'else', 'inner', 'usage', 'int3', 'before', 'as', 'blob', 'return', 'specific', 'union', 'smallint', 'float8', 'sensitive', 'intersect', 'unsigned', 'condition', 'or', 'for', 'int4', 'deterministic', 'range', 'alter', 'int2', 'straight_join', 'check', 'current_user', 'read', 'integer', 'fetch', 'load', 'cascade', 'recursive', 'char', 'repeat', 'system', 'lead', 'hour_second', 'trigger', 'into', 'tinyblob', 'primary', 'all', 'day_microsecond', 'float', 'reads', 'delete', 'collate', 'release', 'explain', 'dense_rank', 'read_write', 'leading', 'by', 'mediumtext', 'stored', 'default', 'column', 'utc_timestamp', 'infile', 'group', 'minute_microsecond', 'insensitive', 'master_bind', 'binary', 'exists', 'in', 'ignore', 'references', 'xor', 'true', 'linear', 'function', 'exit', 'current_date', 'maxvalue', 'where', 'lock', 'each', 'limit', 'delayed', 'longblob', 'optionally', 'between', 'varying', 'key', 'false', 'match', 'master_ssl_verify_server_cert', 'option', 'partition', 'year_month', 'sql_small_result'}</span> + <label class="view-value-button pdoc-button" for="MySQL.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'day_minute', 'minute_second', 'when', 'over', 'read_write', 'no_write_to_binlog', 'use', 'in', 'sql_small_result', 'describe', 'out', 'having', 'limit', 'option', 'int4', 'schemas', 'then', 'mod', 'show', 'linear', 'as', 'io_before_gtids', 'collate', 'natural', 'alter', 'virtual', 'convert', 'distinctrow', 'localtime', 'lag', 'union', 'require', 'create', 'nth_value', 'delayed', 'real', 'regexp', 'dual', 'insert', 'spatial', 'stored', 'high_priority', 'trailing', 'intersect', 'inout', 'binary', 'groups', 'year_month', 'day_microsecond', 'ntile', 'false', 'references', 'sqlstate', 'int3', 'table', 'usage', 'varying', 'update', 'rename', 'tinytext', 'rows', 'all', 'iterate', 'order', 'primary', 'fetch', 'asensitive', 'by', 'inner', 'second_microsecond', 'right', 'change', 'sqlexception', 'left', 'escaped', 'double', 'set', 'div', 'mediumblob', 'sql_calc_found_rows', 'and', 'condition', 'current_time', 'zerofill', 'unlock', 'like', 'else', 'read', 'empty', 'day_second', 'cume_dist', 'separator', 'load', 'current_date', 'if', 'cascade', 'write', 'tinyint', 'null', 'continue', 'current_user', 'middleint', 'index', 'asc', 'each', 'true', 'straight_join', 'replace', 'insensitive', 'except', 'recursive', 'float', 'rlike', 'function', 'longblob', 'grouping', 'desc', 'loop', 'precision', 'utc_timestamp', 'char', 'foreign', 'int8', 'key', 'trigger', 'unsigned', 'row', 'master_bind', 'drop', 'float4', 'localtimestamp', 'system', 'constraint', 'select', 'percent_rank', 'between', 'for', 'blob', 'where', 'group', 'dec', 'utc_time', 'sqlwarning', 'dense_rank', 'ignore', 'lock', 'accessible', 'purge', 'decimal', 'enclosed', 'schema', 'starting', 'databases', 'or', 'both', 'lines', 'outfile', 'reads', 'row_number', 'repeat', 'not', 'add', 'restrict', 'values', 'float8', 'exit', 'deterministic', 'distinct', 'partition', 'on', 'match', 'hour_second', 'cross', 'kill', 'window', 'day_hour', 'of', 'sql', 'mediumtext', 'last_value', 'ssl', 'terminated', 'int', 'int1', 'revoke', 'hour_minute', 'resignal', 'force', 'signal', 'integer', 'elseif', 'bigint', 'minute_microsecond', 'column', 'get', 'leave', 'generated', 'range', 'is', 'utc_date', 'low_priority', 'fulltext', 'using', 'maxvalue', 'io_after_gtids', 'procedure', 'json_table', 'modifies', 'return', 'character', 'int2', 'leading', 'smallint', 'explain', 'numeric', 'optimizer_costs', 'case', 'to', 'default', 'long', 'first_value', 'grant', 'cube', 'undo', 'longtext', 'unique', 'release', 'call', 'from', 'sql_big_result', 'infile', 'cursor', 'specific', 'check', 'hour_microsecond', 'varbinary', 'keys', 'lateral', 'lead', 'exists', 'rank', 'optimize', 'analyze', 'mediumint', 'varchar', 'declare', 'into', 'tinyblob', 'outer', 'database', 'varcharacter', 'master_ssl_verify_server_cert', 'with', 'optionally', 'before', 'interval', 'join', 'while', 'delete', 'xor', 'current_timestamp', 'sensitive'}</span> </div> diff --git a/docs/sqlglot/dialects/oracle.html b/docs/sqlglot/dialects/oracle.html index 31db7ed..0cda4ab 100644 --- a/docs/sqlglot/dialects/oracle.html +++ b/docs/sqlglot/dialects/oracle.html @@ -1210,7 +1210,7 @@ <div id="Oracle.Tokenizer.VAR_SINGLE_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">VAR_SINGLE_TOKENS</span> = -<span class="default_value">{'$', '@', '#'}</span> +<span class="default_value">{'#', '$', '@'}</span> </div> @@ -1223,7 +1223,7 @@ <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Oracle.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Oracle.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '(+)': <TokenType.JOIN_MARKER: 'JOIN_MARKER'>, 'BINARY_DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'BINARY_FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'COLUMNS': <TokenType.COLUMN: 'COLUMN'>, 'MATCH_RECOGNIZE': <TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>, 'ORDER SIBLINGS BY': <TokenType.ORDER_SIBLINGS_BY: 'ORDER_SIBLINGS_BY'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'START': <TokenType.BEGIN: 'BEGIN'>, 'SYSDATE': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'TOP': <TokenType.TOP: 'TOP'>}</span> + <label class="view-value-button pdoc-button" for="Oracle.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '(+)': <TokenType.JOIN_MARKER: 'JOIN_MARKER'>, 'BINARY_DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'BINARY_FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'COLUMNS': <TokenType.COLUMN: 'COLUMN'>, 'MATCH_RECOGNIZE': <TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>, 'ORDER SIBLINGS BY': <TokenType.ORDER_SIBLINGS_BY: 'ORDER_SIBLINGS_BY'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'START': <TokenType.BEGIN: 'BEGIN'>, 'SYSDATE': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'TOP': <TokenType.TOP: 'TOP'>}</span> </div> @@ -1443,7 +1443,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Oracle.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Oracle.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function _build_timetostr_or_tochar>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'SQUARE': <function <a href="#Oracle.Parser">Oracle.Parser</a>.<lambda>>, 'TO_TIMESTAMP': <function build_formatted_time.<locals>._builder>, 'TO_DATE': <function build_formatted_time.<locals>._builder>}</span> + <label class="view-value-button pdoc-button" for="Oracle.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function _build_timetostr_or_tochar>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'SQUARE': <function <a href="#Oracle.Parser">Oracle.Parser</a>.<lambda>>, 'TO_TIMESTAMP': <function build_formatted_time.<locals>._builder>, 'TO_DATE': <function build_formatted_time.<locals>._builder>}</span> </div> @@ -1519,7 +1519,7 @@ Default: 3</li> <div id="Oracle.Parser.DISTINCT_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">DISTINCT_TOKENS</span> = -<span class="default_value">{<TokenType.DISTINCT: 'DISTINCT'>, <TokenType.UNIQUE: 'UNIQUE'>}</span> +<span class="default_value">{<TokenType.UNIQUE: 'UNIQUE'>, <TokenType.DISTINCT: 'DISTINCT'>}</span> </div> @@ -1572,6 +1572,7 @@ Default: 3</li> <dd id="Oracle.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Oracle.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Oracle.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Oracle.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Oracle.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Oracle.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Oracle.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/postgres.html b/docs/sqlglot/dialects/postgres.html index b1bf926..2b3dad3 100644 --- a/docs/sqlglot/dialects/postgres.html +++ b/docs/sqlglot/dialects/postgres.html @@ -214,6 +214,9 @@ <a class="function" href="#Postgres.Generator.alterset_sql">alterset_sql</a> </li> <li> + <a class="function" href="#Postgres.Generator.datatype_sql">datatype_sql</a> + </li> + <li> <a class="variable" href="#Postgres.Generator.SELECT_KINDS">SELECT_KINDS</a> </li> <li> @@ -427,515 +430,513 @@ </span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"STRING_AGG(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</span><span class="p">(</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">separator</span><span class="p">)</span><span class="si">}{</span><span class="n">order</span><span class="si">}</span><span class="s2">)"</span> </span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> </span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> -</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a><span class="k">def</span> <span class="nf">_datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array"</span><span class="p">):</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"values"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="k">return</span> <span class="s2">"ARRAY"</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a><span class="k">def</span> <span class="nf">_auto_increment_to_serial</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">auto</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">)</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="k">if</span> <span class="n">auto</span><span class="p">:</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"constraints"</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">auto</span><span class="o">.</span><span class="n">parent</span><span class="p">)</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a><span class="k">def</span> <span class="nf">_auto_increment_to_serial</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="n">auto</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">)</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="k">if</span> <span class="n">auto</span><span class="p">:</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"constraints"</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">auto</span><span class="o">.</span><span class="n">parent</span><span class="p">)</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">:</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">kind</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">))</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">kind</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">))</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">kind</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">))</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="n">expression</span> </span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">:</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">kind</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">))</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">kind</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">))</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">kind</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">))</span> -</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="k">return</span> <span class="n">expression</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> -</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> -</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a><span class="k">def</span> <span class="nf">_serial_to_generated</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">):</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a><span class="k">def</span> <span class="nf">_serial_to_generated</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">):</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">:</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">)</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">:</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">)</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">:</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">)</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">:</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">)</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">:</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">)</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">:</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">)</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> -</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="p">:</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"constraints"</span><span class="p">]</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="n">generated</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">notnull</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">())</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> -</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">if</span> <span class="n">notnull</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">notnull</span><span class="p">)</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="k">if</span> <span class="n">generated</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">generated</span><span class="p">)</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> -</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="p">:</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"constraints"</span><span class="p">]</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">generated</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">notnull</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">())</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="k">if</span> <span class="n">notnull</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">notnull</span><span class="p">)</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="k">if</span> <span class="n">generated</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">generated</span><span class="p">)</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> +</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> +</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a><span class="k">def</span> <span class="nf">_build_generate_series</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">:</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="c1"># The goal is to convert step values like '1 day' or INTERVAL '1 day' into INTERVAL '1' day</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> +</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="k">if</span> <span class="n">step</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="c1"># Postgres allows calls with just two arguments -- the "step" argument defaults to 1</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a><span class="k">def</span> <span class="nf">_build_generate_series</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">:</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="c1"># The goal is to convert step values like '1 day' or INTERVAL '1 day' into INTERVAL '1' day</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">if</span> <span class="n">step</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_interval</span><span class="p">(</span><span class="n">step</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">step</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">step</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">):</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_interval</span><span class="p">(</span><span class="n">step</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> -</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="k">if</span> <span class="n">step</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="c1"># Postgres allows calls with just two arguments -- the "step" argument defaults to 1</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> -</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="k">if</span> <span class="n">step</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_interval</span><span class="p">(</span><span class="n">step</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">step</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">step</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">):</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_interval</span><span class="p">(</span><span class="n">step</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> +</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> +</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a><span class="k">def</span> <span class="nf">_build_to_timestamp</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="c1"># TO_TIMESTAMP accepts either a single double argument or (text, text)</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="c1"># https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-TABLE</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> </span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> -</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> +</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="c1"># https://www.postgresql.org/docs/current/functions-formatting.html</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="k">return</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">)(</span><span class="n">args</span><span class="p">)</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="k">def</span> <span class="nf">_build_to_timestamp</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="c1"># TO_TIMESTAMP accepts either a single double argument or (text, text)</span> -</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="c1"># https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-TABLE</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> -</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="c1"># https://www.postgresql.org/docs/current/functions-formatting.html</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="k">return</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> +</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a><span class="k">def</span> <span class="nf">_json_extract_sql</span><span class="p">(</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">def</span> <span class="nf">_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"only_json_types"</span><span class="p">):</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="k">return</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">op</span><span class="o">=</span><span class="n">op</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="k">return</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> -</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> -</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a><span class="k">def</span> <span class="nf">_json_extract_sql</span><span class="p">(</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="k">def</span> <span class="nf">_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">JSON_EXTRACT_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"only_json_types"</span><span class="p">):</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="k">return</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted_index</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">op</span><span class="o">=</span><span class="n">op</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="k">return</span> <span class="n">json_extract_segments</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-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="k">return</span> <span class="n">_generate</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> -</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> -</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a><span class="k">def</span> <span class="nf">_build_regexp_replace</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="c1"># The signature of REGEXP_REPLACE is:</span> -</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="c1"># regexp_replace(source, pattern, replacement [, start [, N ]] [, flags ])</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="c1">#</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="c1"># Any one of `start`, `N` and `flags` can be column references, meaning that</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="c1"># unless we can statically see that the last argument is a non-integer string</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="c1"># (eg. not '0'), then it's not possible to construct the correct AST</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">></span> <span class="mi">3</span><span class="p">:</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">last</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_int</span><span class="p">(</span><span class="n">last</span><span class="o">.</span><span class="n">name</span><span class="p">):</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">last</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">last</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="k">return</span> <span class="n">_generate</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> +</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> +</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a><span class="k">def</span> <span class="nf">_build_regexp_replace</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="c1"># The signature of REGEXP_REPLACE is:</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="c1"># regexp_replace(source, pattern, replacement [, start [, N ]] [, flags ])</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="c1">#</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="c1"># Any one of `start`, `N` and `flags` can be column references, meaning that</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="c1"># unless we can statically see that the last argument is a non-integer string</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="c1"># (eg. not '0'), then it's not possible to construct the correct AST</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">></span> <span class="mi">3</span><span class="p">:</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="n">last</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_int</span><span class="p">(</span><span class="n">last</span><span class="o">.</span><span class="n">name</span><span class="p">):</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">last</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">last</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</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="n">last</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">last</span><span class="p">)</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> +</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="k">if</span> <span class="n">last</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</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">TEXT_TYPES</span><span class="p">):</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="n">regexp_replace</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">regexp_replace</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"modifiers"</span><span class="p">,</span> <span class="n">last</span><span class="p">)</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="k">return</span> <span class="n">regexp_replace</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> +</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</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">last</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">last</span><span class="p">)</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> -</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="k">if</span> <span class="n">last</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</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">TEXT_TYPES</span><span class="p">):</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="n">regexp_replace</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="n">regexp_replace</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"modifiers"</span><span class="p">,</span> <span class="n">last</span><span class="p">)</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="k">return</span> <span class="n">regexp_replace</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> -</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> -</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> -</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a><span class="k">def</span> <span class="nf">_unix_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"scale"</span><span class="p">)</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="n">timestamp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> +</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a><span class="k">def</span> <span class="nf">_unix_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"scale"</span><span class="p">)</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="n">timestamp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> +</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span><span class="p">):</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> +</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"POW"</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="n">scale</span><span class="p">)),</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="p">)</span> </span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> -</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span><span class="p">):</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> -</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"POW"</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="n">scale</span><span class="p">)),</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="p">)</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> +</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'YYYY-MM-DD HH24:MI:SS'"</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> -</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> -</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'YYYY-MM-DD HH24:MI:SS'"</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> -</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="s2">"AM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="s2">"PM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%u</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># 1-based day of week</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># day of month</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="s2">"DDD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> <span class="c1"># zero padded day of year</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="s2">"FMDD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="s2">"FMDDD"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> <span class="c1"># day of year</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="s2">"FMHH12"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> <span class="c1"># 9</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="s2">"FMHH24"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> <span class="c1"># 9</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="s2">"FMMI"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> <span class="c1"># Minute</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="s2">"FMMM"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> <span class="c1"># 1</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="s2">"FMSS"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> <span class="c1"># Second</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> <span class="c1"># 09</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> <span class="c1"># 09</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> <span class="c1"># zero padded minute</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> <span class="c1"># 01</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="s2">"OF"</span><span class="p">:</span> <span class="s2">"%z"</span><span class="p">,</span> <span class="c1"># utc offset</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> <span class="c1"># zero padded second</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="s2">"TMDay"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <span class="s2">"TMDy"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="s2">"TMMon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> <span class="c1"># Sep</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="s2">"TMMonth"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> <span class="c1"># September</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="s2">"TZ"</span><span class="p">:</span> <span class="s2">"%Z"</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="s2">"WW"</span><span class="p">:</span> <span class="s2">"%U"</span><span class="p">,</span> <span class="c1"># 1-based week of year</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> <span class="c1"># 15</span> -</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> <span class="c1"># 2015</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="p">}</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="s2">"AM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="s2">"PM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%u</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># 1-based day of week</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># day of month</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="s2">"DDD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> <span class="c1"># zero padded day of year</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="s2">"FMDD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="s2">"FMDDD"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> <span class="c1"># day of year</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="s2">"FMHH12"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> <span class="c1"># 9</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="s2">"FMHH24"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> <span class="c1"># 9</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="s2">"FMMI"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> <span class="c1"># Minute</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="s2">"FMMM"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> <span class="c1"># 1</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="s2">"FMSS"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> <span class="c1"># Second</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> <span class="c1"># 09</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> <span class="c1"># 09</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> <span class="c1"># zero padded minute</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> <span class="c1"># 01</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="s2">"OF"</span><span class="p">:</span> <span class="s2">"%z"</span><span class="p">,</span> <span class="c1"># utc offset</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> <span class="c1"># zero padded second</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="s2">"TMDay"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="s2">"TMDy"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="s2">"TMMon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> <span class="c1"># Sep</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="s2">"TMMonth"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> <span class="c1"># September</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="s2">"TZ"</span><span class="p">:</span> <span class="s2">"%Z"</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="s2">"WW"</span><span class="p">:</span> <span class="s2">"%U"</span><span class="p">,</span> <span class="c1"># 1-based week of year</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> <span class="c1"># 15</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> <span class="c1"># 2015</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="p">}</span> +</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> +</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="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-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"b'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"B'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"x'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"e'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"E'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> +</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> </span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> -</span><span id="L-285"><a href="#L-285"><span class="linenos">285</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-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"b'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"B'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"x'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"e'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"E'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> -</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> -</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos">295</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-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="s2">"~~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="s2">"~~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="s2">"~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="s2">"@@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">,</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="s2">"@>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span> -</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="s2">"<@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span> -</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a> <span class="s2">"|/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">,</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="s2">"||/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">,</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="s2">"BEGIN"</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-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="s2">"BEGIN TRANSACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="s2">"BIGSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="s2">"CHARACTER VARYING"</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-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="s2">"CONSTRAINT TRIGGER"</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-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="s2">"CSTRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="s2">"DECLARE"</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-312"><a href="#L-312"><span class="linenos">312</span></a> <span class="s2">"DO"</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-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="s2">"EXEC"</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-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="s2">"HSTORE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> -</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="s2">"MONEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="s2">"NAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="s2">"OID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="s2">"OPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="s2">"REFRESH"</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-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="s2">"REINDEX"</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-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="s2">"RESET"</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-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="s2">"REVOKE"</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-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="s2">"SERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="s2">"SMALLSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="s2">"REGCLASS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="s2">"REGCOLLATION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a> <span class="s2">"REGCONFIG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a> <span class="s2">"REGDICTIONARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="s2">"REGNAMESPACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="s2">"REGOPER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="s2">"REGOPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="s2">"REGPROC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="s2">"REGPROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="s2">"REGROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="s2">"REGTYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a> <span class="p">}</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> -</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="p">}</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos">286</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-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="s2">"~~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="s2">"~~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="s2">"~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="s2">"@@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">,</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="s2">"@>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="s2">"<@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="s2">"|/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">,</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="s2">"||/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">,</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="s2">"BEGIN"</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-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="s2">"BEGIN TRANSACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="s2">"BIGSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="s2">"CHARACTER VARYING"</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-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="s2">"CONSTRAINT TRIGGER"</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-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="s2">"CSTRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="s2">"DECLARE"</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-303"><a href="#L-303"><span class="linenos">303</span></a> <span class="s2">"DO"</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-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="s2">"EXEC"</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-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="s2">"HSTORE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="s2">"MONEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="s2">"NAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="s2">"OID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="s2">"OPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> +</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a> <span class="s2">"REFRESH"</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-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="s2">"REINDEX"</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-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="s2">"RESET"</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-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="s2">"REVOKE"</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-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="s2">"SERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> +</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="s2">"SMALLSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="s2">"REGCLASS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="s2">"REGCOLLATION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="s2">"REGCONFIG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="s2">"REGDICTIONARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="s2">"REGNAMESPACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="s2">"REGOPER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="s2">"REGOPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="s2">"REGPROC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="s2">"REGPROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="s2">"REGROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="s2">"REGTYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a> <span class="p">}</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> +</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="p">}</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> +</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"$"</span><span class="p">}</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> +</span><span id="L-340"><a href="#L-340"><span class="linenos">340</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-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos">342</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">PROPERTY_PARSERS</span><span class="p">,</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetConfigProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">()),</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="p">}</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"INPUT"</span><span class="p">)</span> </span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a> -</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"$"</span><span class="p">}</span> -</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a> -</span><span id="L-349"><a href="#L-349"><span class="linenos">349</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-350"><a href="#L-350"><span class="linenos">350</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos">351</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">PROPERTY_PARSERS</span><span class="p">,</span> -</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetConfigProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">()),</span> -</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a> <span class="p">}</span> -</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"INPUT"</span><span class="p">)</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> -</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos">357</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-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">:</span> <span class="n">build_timestamp_trunc</span><span class="p">,</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="s2">"GENERATE_SERIES"</span><span class="p">:</span> <span class="n">_build_generate_series</span><span class="p">,</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">),</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">),</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="s2">"MAKE_TIME"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a> <span class="s2">"MAKE_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="s2">"NOW"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">:</span> <span class="n">_build_regexp_replace</span><span class="p">,</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">),</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_build_to_timestamp</span><span class="p">,</span> -</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="p">}</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> -</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos">348</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-349"><a href="#L-349"><span class="linenos">349</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">:</span> <span class="n">build_timestamp_trunc</span><span class="p">,</span> +</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a> <span class="s2">"GENERATE_SERIES"</span><span class="p">:</span> <span class="n">_build_generate_series</span><span class="p">,</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a> <span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">),</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">),</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a> <span class="s2">"MAKE_TIME"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="s2">"MAKE_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> <span class="s2">"NOW"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">:</span> <span class="n">_build_regexp_replace</span><span class="p">,</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">),</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_build_to_timestamp</span><span class="p">,</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="p">}</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> +</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="p">}</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> +</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos">368</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-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> <span class="p">}</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> +</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span> </span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="p">}</span> </span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> -</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos">377</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-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> -</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="p">}</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a> -</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a> <span class="p">}</span> -</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> -</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">),</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">]</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="p">),</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">,</span> <span class="n">reverse_args</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_operator</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="p">}</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> -</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-397"><a href="#L-397"><span class="linenos">397</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">STATEMENT_PARSERS</span><span class="p">,</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="p">}</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> -</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">True</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">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos">404</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">COLUMN_OPERATORS</span><span class="p">,</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> -</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <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="k">def</span> <span class="nf">_parse_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="k">break</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> -</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">op</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> -</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Operator</span><span class="p">,</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="n">operator</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="p">)</span> -</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> -</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">):</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="k">break</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> -</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> -</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> -</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> -</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> -</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="n">RENAME_TABLE_WITH_DB</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="n">TABLESAMPLE_SEED_KEYWORD</span> <span class="o">=</span> <span class="s2">"REPEATABLE"</span> -</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="n">SUPPORTS_SELECT_INTO</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="n">SUPPORTS_UNLOGGED_TABLES</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">COPY_HAS_INTO_KEYWORD</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> -</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span> -</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="p">}</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> -</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span> -</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"SMALLINT"</span><span class="p">,</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"REAL"</span><span class="p">,</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"DOUBLE PRECISION"</span><span class="p">,</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="p">}</span> -</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a> -</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">any_value_to_max_sql</span><span class="p">,</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="p">),</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</span><span class="p">),</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"@>"</span><span class="p">),</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"&&"</span><span class="p">),</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="n">filter_array_using_unnest</span><span class="p">,</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY_LENGTH"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span> <span class="ow">or</span> <span class="s2">"1"</span><span class="p">),</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">),</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentUser</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_USER"</span><span class="p">,</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> -</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"-"</span><span class="p">),</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">,</span> <span class="s2">"->"</span><span class="p">),</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">,</span> <span class="s2">"->>"</span><span class="p">),</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>"</span><span class="p">),</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>>"</span><span class="p">),</span> -</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"?"</span><span class="p">),</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">)),</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">:</span> <span class="n">no_last_day_sql</span><span class="p">,</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_OR"</span><span class="p">),</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_AND"</span><span class="p">),</span> -</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> <span class="n">merge_without_target_sql</span><span class="p">,</span> -</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</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">"PARTITION BY </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="p">),</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="p">),</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">),</span> -</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"RANDOM"</span><span class="p">),</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">),</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~*"</span><span class="p">),</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a> <span class="p">[</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a> <span class="p">]</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a> <span class="p">),</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos">542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_DATE"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos">543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos">544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span> -</span><span id="L-545"><a href="#L-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span> -</span><span id="L-546"><a href="#L-546"><span class="linenos">546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIME"</span><span class="p">),</span> -</span><span id="L-547"><a href="#L-547"><span class="linenos">547</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIMESTAMP"</span><span class="p">),</span> -</span><span id="L-548"><a href="#L-548"><span class="linenos">548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-549"><a href="#L-549"><span class="linenos">549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_CHAR"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos">551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos">552</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos">553</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> -</span><span id="L-554"><a href="#L-554"><span class="linenos">554</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos">555</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos">556</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos">557</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos">558</span></a> <span class="s2">"DATE_PART"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"epoch"</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-559"><a href="#L-559"><span class="linenos">559</span></a> <span class="p">),</span> -</span><span id="L-560"><a href="#L-560"><span class="linenos">560</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_POP"</span><span class="p">),</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_SAMP"</span><span class="p">),</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a> <span class="p">}</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a> -</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos">571</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> -</span><span id="L-572"><a href="#L-572"><span class="linenos">572</span></a> <span class="p">}</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a> -</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a> -</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-581"><a href="#L-581"><span class="linenos">581</span></a> -</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a> -</span><span id="L-586"><a href="#L-586"><span class="linenos">586</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="L-587"><a href="#L-587"><span class="linenos">587</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos">588</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos">589</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a> -</span><span id="L-591"><a href="#L-591"><span class="linenos">591</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-594"><a href="#L-594"><span class="linenos">594</span></a> -</span><span id="L-595"><a href="#L-595"><span class="linenos">595</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> -</span><span id="L-596"><a href="#L-596"><span class="linenos">596</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos">597</span></a> -</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-599"><a href="#L-599"><span class="linenos">599</span></a> -</span><span id="L-600"><a href="#L-600"><span class="linenos">600</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos">601</span></a> -</span><span id="L-602"><a href="#L-602"><span class="linenos">602</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos">603</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos">604</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos">605</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos">606</span></a> -</span><span id="L-607"><a href="#L-607"><span class="linenos">607</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">),</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">]</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="p">),</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">,</span> <span class="n">reverse_args</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_operator</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="p">}</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> +</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos">388</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">STATEMENT_PARSERS</span><span class="p">,</span> +</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="p">}</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> +</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> +</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-395"><a href="#L-395"><span class="linenos">395</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">COLUMN_OPERATORS</span><span class="p">,</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> +</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> +</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="p">}</span> +</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> +</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="k">def</span> <span class="nf">_parse_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="k">break</span> +</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> +</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="n">op</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> +</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Operator</span><span class="p">,</span> +</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="n">operator</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="p">)</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> +</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">):</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="k">break</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> +</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> +</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-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">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> +</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-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 class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">RENAME_TABLE_WITH_DB</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="n">TABLESAMPLE_SEED_KEYWORD</span> <span class="o">=</span> <span class="s2">"REPEATABLE"</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="n">SUPPORTS_SELECT_INTO</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="n">SUPPORTS_UNLOGGED_TABLES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="n">COPY_HAS_INTO_KEYWORD</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> +</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span> +</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span> +</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span> +</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a> <span class="p">}</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> +</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"SMALLINT"</span><span class="p">,</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"REAL"</span><span class="p">,</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"DOUBLE PRECISION"</span><span class="p">,</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="p">}</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> +</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">any_value_to_max_sql</span><span class="p">,</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="p">),</span> +</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</span><span class="p">),</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"@>"</span><span class="p">),</span> +</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"&&"</span><span class="p">),</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="n">filter_array_using_unnest</span><span class="p">,</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY_LENGTH"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span> <span class="ow">or</span> <span class="s2">"1"</span><span class="p">),</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">),</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentUser</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_USER"</span><span class="p">,</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"-"</span><span class="p">),</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">,</span> <span class="s2">"->"</span><span class="p">),</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">,</span> <span class="s2">"->>"</span><span class="p">),</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>"</span><span class="p">),</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>>"</span><span class="p">),</span> +</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"?"</span><span class="p">),</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">)),</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span> +</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">:</span> <span class="n">no_last_day_sql</span><span class="p">,</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_OR"</span><span class="p">),</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_AND"</span><span class="p">),</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span> +</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> <span class="n">merge_without_target_sql</span><span class="p">,</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</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">"PARTITION BY </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> +</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a> <span class="p">),</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="p">),</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">),</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"RANDOM"</span><span class="p">),</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">),</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~*"</span><span class="p">),</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="p">[</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="p">]</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="p">),</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_DATE"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIME"</span><span class="p">),</span> +</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIMESTAMP"</span><span class="p">),</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_CHAR"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos">542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> +</span><span id="L-543"><a href="#L-543"><span class="linenos">543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos">544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> +</span><span id="L-546"><a href="#L-546"><span class="linenos">546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-547"><a href="#L-547"><span class="linenos">547</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos">548</span></a> <span class="s2">"DATE_PART"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"epoch"</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-549"><a href="#L-549"><span class="linenos">549</span></a> <span class="p">),</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_POP"</span><span class="p">),</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos">551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_SAMP"</span><span class="p">),</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos">552</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span> +</span><span id="L-553"><a href="#L-553"><span class="linenos">553</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos">554</span></a> <span class="p">}</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos">555</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> +</span><span id="L-556"><a href="#L-556"><span class="linenos">556</span></a> +</span><span id="L-557"><a href="#L-557"><span class="linenos">557</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos">558</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos">559</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-560"><a href="#L-560"><span class="linenos">560</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a> <span class="p">}</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a> +</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a> +</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos">571</span></a> +</span><span id="L-572"><a href="#L-572"><span class="linenos">572</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a> +</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a> +</span><span id="L-581"><a href="#L-581"><span class="linenos">581</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> +</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a> +</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos">586</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> +</span><span id="L-587"><a href="#L-587"><span class="linenos">587</span></a> +</span><span id="L-588"><a href="#L-588"><span class="linenos">588</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos">589</span></a> +</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-591"><a href="#L-591"><span class="linenos">591</span></a> +</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos">594</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos">595</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="L-596"><a href="#L-596"><span class="linenos">596</span></a> +</span><span id="L-597"><a href="#L-597"><span class="linenos">597</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a> +</span><span id="L-599"><a href="#L-599"><span class="linenos">599</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-600"><a href="#L-600"><span class="linenos">600</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos">601</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos">602</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-603"><a href="#L-603"><span class="linenos">603</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos">604</span></a> +</span><span id="L-605"><a href="#L-605"><span class="linenos">605</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos">606</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos">607</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> </span><span id="L-608"><a href="#L-608"><span class="linenos">608</span></a> -</span><span id="L-609"><a href="#L-609"><span class="linenos">609</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-610"><a href="#L-610"><span class="linenos">610</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos">611</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos">612</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-613"><a href="#L-613"><span class="linenos">613</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="L-609"><a href="#L-609"><span class="linenos">609</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos">610</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos">611</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos">612</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-613"><a href="#L-613"><span class="linenos">613</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> </span><span id="L-614"><a href="#L-614"><span class="linenos">614</span></a> -</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos">616</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos">617</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos">618</span></a> -</span><span id="L-619"><a href="#L-619"><span class="linenos">619</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> -</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos">622</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos">623</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a> -</span><span id="L-625"><a href="#L-625"><span class="linenos">625</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-616"><a href="#L-616"><span class="linenos">616</span></a> +</span><span id="L-617"><a href="#L-617"><span class="linenos">617</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos">618</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">):</span> +</span><span id="L-619"><a href="#L-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"values"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-622"><a href="#L-622"><span class="linenos">622</span></a> <span class="k">return</span> <span class="s2">"ARRAY"</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos">623</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -964,385 +965,392 @@ </div> <a class="headerlink" href="#Postgres"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres-248"><a href="#Postgres-248"><span class="linenos">248</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="Postgres-249"><a href="#Postgres-249"><span class="linenos">249</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Postgres-250"><a href="#Postgres-250"><span class="linenos">250</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-251"><a href="#Postgres-251"><span class="linenos">251</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-252"><a href="#Postgres-252"><span class="linenos">252</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> -</span><span id="Postgres-253"><a href="#Postgres-253"><span class="linenos">253</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'YYYY-MM-DD HH24:MI:SS'"</span> -</span><span id="Postgres-254"><a href="#Postgres-254"><span class="linenos">254</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-255"><a href="#Postgres-255"><span class="linenos">255</span></a> -</span><span id="Postgres-256"><a href="#Postgres-256"><span class="linenos">256</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-257"><a href="#Postgres-257"><span class="linenos">257</span></a> <span class="s2">"AM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> -</span><span id="Postgres-258"><a href="#Postgres-258"><span class="linenos">258</span></a> <span class="s2">"PM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> -</span><span id="Postgres-259"><a href="#Postgres-259"><span class="linenos">259</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%u</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># 1-based day of week</span> -</span><span id="Postgres-260"><a href="#Postgres-260"><span class="linenos">260</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># day of month</span> -</span><span id="Postgres-261"><a href="#Postgres-261"><span class="linenos">261</span></a> <span class="s2">"DDD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> <span class="c1"># zero padded day of year</span> -</span><span id="Postgres-262"><a href="#Postgres-262"><span class="linenos">262</span></a> <span class="s2">"FMDD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span> -</span><span id="Postgres-263"><a href="#Postgres-263"><span class="linenos">263</span></a> <span class="s2">"FMDDD"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> <span class="c1"># day of year</span> -</span><span id="Postgres-264"><a href="#Postgres-264"><span class="linenos">264</span></a> <span class="s2">"FMHH12"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> <span class="c1"># 9</span> -</span><span id="Postgres-265"><a href="#Postgres-265"><span class="linenos">265</span></a> <span class="s2">"FMHH24"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> <span class="c1"># 9</span> -</span><span id="Postgres-266"><a href="#Postgres-266"><span class="linenos">266</span></a> <span class="s2">"FMMI"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> <span class="c1"># Minute</span> -</span><span id="Postgres-267"><a href="#Postgres-267"><span class="linenos">267</span></a> <span class="s2">"FMMM"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> <span class="c1"># 1</span> -</span><span id="Postgres-268"><a href="#Postgres-268"><span class="linenos">268</span></a> <span class="s2">"FMSS"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> <span class="c1"># Second</span> -</span><span id="Postgres-269"><a href="#Postgres-269"><span class="linenos">269</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> <span class="c1"># 09</span> -</span><span id="Postgres-270"><a href="#Postgres-270"><span class="linenos">270</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> <span class="c1"># 09</span> -</span><span id="Postgres-271"><a href="#Postgres-271"><span class="linenos">271</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> <span class="c1"># zero padded minute</span> -</span><span id="Postgres-272"><a href="#Postgres-272"><span class="linenos">272</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> <span class="c1"># 01</span> -</span><span id="Postgres-273"><a href="#Postgres-273"><span class="linenos">273</span></a> <span class="s2">"OF"</span><span class="p">:</span> <span class="s2">"%z"</span><span class="p">,</span> <span class="c1"># utc offset</span> -</span><span id="Postgres-274"><a href="#Postgres-274"><span class="linenos">274</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> <span class="c1"># zero padded second</span> -</span><span id="Postgres-275"><a href="#Postgres-275"><span class="linenos">275</span></a> <span class="s2">"TMDay"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span> -</span><span id="Postgres-276"><a href="#Postgres-276"><span class="linenos">276</span></a> <span class="s2">"TMDy"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Postgres-277"><a href="#Postgres-277"><span class="linenos">277</span></a> <span class="s2">"TMMon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> <span class="c1"># Sep</span> -</span><span id="Postgres-278"><a href="#Postgres-278"><span class="linenos">278</span></a> <span class="s2">"TMMonth"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> <span class="c1"># September</span> -</span><span id="Postgres-279"><a href="#Postgres-279"><span class="linenos">279</span></a> <span class="s2">"TZ"</span><span class="p">:</span> <span class="s2">"%Z"</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span> -</span><span id="Postgres-280"><a href="#Postgres-280"><span class="linenos">280</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span> -</span><span id="Postgres-281"><a href="#Postgres-281"><span class="linenos">281</span></a> <span class="s2">"WW"</span><span class="p">:</span> <span class="s2">"%U"</span><span class="p">,</span> <span class="c1"># 1-based week of year</span> -</span><span id="Postgres-282"><a href="#Postgres-282"><span class="linenos">282</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> <span class="c1"># 15</span> -</span><span id="Postgres-283"><a href="#Postgres-283"><span class="linenos">283</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> <span class="c1"># 2015</span> -</span><span id="Postgres-284"><a href="#Postgres-284"><span class="linenos">284</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres-239"><a href="#Postgres-239"><span class="linenos">239</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="Postgres-240"><a href="#Postgres-240"><span class="linenos">240</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Postgres-241"><a href="#Postgres-241"><span class="linenos">241</span></a> <span class="n">TYPED_DIVISION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-242"><a href="#Postgres-242"><span class="linenos">242</span></a> <span class="n">CONCAT_COALESCE</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-243"><a href="#Postgres-243"><span class="linenos">243</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> +</span><span id="Postgres-244"><a href="#Postgres-244"><span class="linenos">244</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">"'YYYY-MM-DD HH24:MI:SS'"</span> +</span><span id="Postgres-245"><a href="#Postgres-245"><span class="linenos">245</span></a> <span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-246"><a href="#Postgres-246"><span class="linenos">246</span></a> +</span><span id="Postgres-247"><a href="#Postgres-247"><span class="linenos">247</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-248"><a href="#Postgres-248"><span class="linenos">248</span></a> <span class="s2">"AM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> +</span><span id="Postgres-249"><a href="#Postgres-249"><span class="linenos">249</span></a> <span class="s2">"PM"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> +</span><span id="Postgres-250"><a href="#Postgres-250"><span class="linenos">250</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%u</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># 1-based day of week</span> +</span><span id="Postgres-251"><a href="#Postgres-251"><span class="linenos">251</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># day of month</span> +</span><span id="Postgres-252"><a href="#Postgres-252"><span class="linenos">252</span></a> <span class="s2">"DDD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> <span class="c1"># zero padded day of year</span> +</span><span id="Postgres-253"><a href="#Postgres-253"><span class="linenos">253</span></a> <span class="s2">"FMDD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span> +</span><span id="Postgres-254"><a href="#Postgres-254"><span class="linenos">254</span></a> <span class="s2">"FMDDD"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> <span class="c1"># day of year</span> +</span><span id="Postgres-255"><a href="#Postgres-255"><span class="linenos">255</span></a> <span class="s2">"FMHH12"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> <span class="c1"># 9</span> +</span><span id="Postgres-256"><a href="#Postgres-256"><span class="linenos">256</span></a> <span class="s2">"FMHH24"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> <span class="c1"># 9</span> +</span><span id="Postgres-257"><a href="#Postgres-257"><span class="linenos">257</span></a> <span class="s2">"FMMI"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> <span class="c1"># Minute</span> +</span><span id="Postgres-258"><a href="#Postgres-258"><span class="linenos">258</span></a> <span class="s2">"FMMM"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> <span class="c1"># 1</span> +</span><span id="Postgres-259"><a href="#Postgres-259"><span class="linenos">259</span></a> <span class="s2">"FMSS"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> <span class="c1"># Second</span> +</span><span id="Postgres-260"><a href="#Postgres-260"><span class="linenos">260</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> <span class="c1"># 09</span> +</span><span id="Postgres-261"><a href="#Postgres-261"><span class="linenos">261</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> <span class="c1"># 09</span> +</span><span id="Postgres-262"><a href="#Postgres-262"><span class="linenos">262</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> <span class="c1"># zero padded minute</span> +</span><span id="Postgres-263"><a href="#Postgres-263"><span class="linenos">263</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> <span class="c1"># 01</span> +</span><span id="Postgres-264"><a href="#Postgres-264"><span class="linenos">264</span></a> <span class="s2">"OF"</span><span class="p">:</span> <span class="s2">"%z"</span><span class="p">,</span> <span class="c1"># utc offset</span> +</span><span id="Postgres-265"><a href="#Postgres-265"><span class="linenos">265</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> <span class="c1"># zero padded second</span> +</span><span id="Postgres-266"><a href="#Postgres-266"><span class="linenos">266</span></a> <span class="s2">"TMDay"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span> +</span><span id="Postgres-267"><a href="#Postgres-267"><span class="linenos">267</span></a> <span class="s2">"TMDy"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Postgres-268"><a href="#Postgres-268"><span class="linenos">268</span></a> <span class="s2">"TMMon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> <span class="c1"># Sep</span> +</span><span id="Postgres-269"><a href="#Postgres-269"><span class="linenos">269</span></a> <span class="s2">"TMMonth"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> <span class="c1"># September</span> +</span><span id="Postgres-270"><a href="#Postgres-270"><span class="linenos">270</span></a> <span class="s2">"TZ"</span><span class="p">:</span> <span class="s2">"%Z"</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span> +</span><span id="Postgres-271"><a href="#Postgres-271"><span class="linenos">271</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span> +</span><span id="Postgres-272"><a href="#Postgres-272"><span class="linenos">272</span></a> <span class="s2">"WW"</span><span class="p">:</span> <span class="s2">"%U"</span><span class="p">,</span> <span class="c1"># 1-based week of year</span> +</span><span id="Postgres-273"><a href="#Postgres-273"><span class="linenos">273</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> <span class="c1"># 15</span> +</span><span id="Postgres-274"><a href="#Postgres-274"><span class="linenos">274</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> <span class="c1"># 2015</span> +</span><span id="Postgres-275"><a href="#Postgres-275"><span class="linenos">275</span></a> <span class="p">}</span> +</span><span id="Postgres-276"><a href="#Postgres-276"><span class="linenos">276</span></a> +</span><span id="Postgres-277"><a href="#Postgres-277"><span class="linenos">277</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> +</span><span id="Postgres-278"><a href="#Postgres-278"><span class="linenos">278</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"b'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"B'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Postgres-279"><a href="#Postgres-279"><span class="linenos">279</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"x'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Postgres-280"><a href="#Postgres-280"><span class="linenos">280</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"e'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"E'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Postgres-281"><a href="#Postgres-281"><span class="linenos">281</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> +</span><span id="Postgres-282"><a href="#Postgres-282"><span class="linenos">282</span></a> +</span><span id="Postgres-283"><a href="#Postgres-283"><span class="linenos">283</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-284"><a href="#Postgres-284"><span class="linenos">284</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> </span><span id="Postgres-285"><a href="#Postgres-285"><span class="linenos">285</span></a> -</span><span id="Postgres-286"><a href="#Postgres-286"><span class="linenos">286</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> -</span><span id="Postgres-287"><a href="#Postgres-287"><span class="linenos">287</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"b'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"B'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="Postgres-288"><a href="#Postgres-288"><span class="linenos">288</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"x'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="Postgres-289"><a href="#Postgres-289"><span class="linenos">289</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"e'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"E'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="Postgres-290"><a href="#Postgres-290"><span class="linenos">290</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> -</span><span id="Postgres-291"><a href="#Postgres-291"><span class="linenos">291</span></a> -</span><span id="Postgres-292"><a href="#Postgres-292"><span class="linenos">292</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-293"><a href="#Postgres-293"><span class="linenos">293</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="Postgres-294"><a href="#Postgres-294"><span class="linenos">294</span></a> -</span><span id="Postgres-295"><a href="#Postgres-295"><span class="linenos">295</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-296"><a href="#Postgres-296"><span class="linenos">296</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> -</span><span id="Postgres-297"><a href="#Postgres-297"><span class="linenos">297</span></a> <span class="s2">"~~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="Postgres-298"><a href="#Postgres-298"><span class="linenos">298</span></a> <span class="s2">"~~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="Postgres-299"><a href="#Postgres-299"><span class="linenos">299</span></a> <span class="s2">"~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span> -</span><span id="Postgres-300"><a href="#Postgres-300"><span class="linenos">300</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Postgres-301"><a href="#Postgres-301"><span class="linenos">301</span></a> <span class="s2">"@@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">,</span> -</span><span id="Postgres-302"><a href="#Postgres-302"><span class="linenos">302</span></a> <span class="s2">"@>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span> -</span><span id="Postgres-303"><a href="#Postgres-303"><span class="linenos">303</span></a> <span class="s2">"<@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span> -</span><span id="Postgres-304"><a href="#Postgres-304"><span class="linenos">304</span></a> <span class="s2">"|/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">,</span> -</span><span id="Postgres-305"><a href="#Postgres-305"><span class="linenos">305</span></a> <span class="s2">"||/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">,</span> -</span><span id="Postgres-306"><a href="#Postgres-306"><span class="linenos">306</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-307"><a href="#Postgres-307"><span class="linenos">307</span></a> <span class="s2">"BEGIN TRANSACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="Postgres-308"><a href="#Postgres-308"><span class="linenos">308</span></a> <span class="s2">"BIGSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> -</span><span id="Postgres-309"><a href="#Postgres-309"><span class="linenos">309</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="Postgres-310"><a href="#Postgres-310"><span class="linenos">310</span></a> <span class="s2">"CONSTRAINT TRIGGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-311"><a href="#Postgres-311"><span class="linenos">311</span></a> <span class="s2">"CSTRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> -</span><span id="Postgres-312"><a href="#Postgres-312"><span class="linenos">312</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-313"><a href="#Postgres-313"><span class="linenos">313</span></a> <span class="s2">"DO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-314"><a href="#Postgres-314"><span class="linenos">314</span></a> <span class="s2">"EXEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-315"><a href="#Postgres-315"><span class="linenos">315</span></a> <span class="s2">"HSTORE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> -</span><span id="Postgres-316"><a href="#Postgres-316"><span class="linenos">316</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Postgres-317"><a href="#Postgres-317"><span class="linenos">317</span></a> <span class="s2">"MONEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="Postgres-318"><a href="#Postgres-318"><span class="linenos">318</span></a> <span class="s2">"NAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="Postgres-319"><a href="#Postgres-319"><span class="linenos">319</span></a> <span class="s2">"OID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-320"><a href="#Postgres-320"><span class="linenos">320</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="Postgres-321"><a href="#Postgres-321"><span class="linenos">321</span></a> <span class="s2">"OPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> -</span><span id="Postgres-322"><a href="#Postgres-322"><span class="linenos">322</span></a> <span class="s2">"REFRESH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-323"><a href="#Postgres-323"><span class="linenos">323</span></a> <span class="s2">"REINDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-324"><a href="#Postgres-324"><span class="linenos">324</span></a> <span class="s2">"RESET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-325"><a href="#Postgres-325"><span class="linenos">325</span></a> <span class="s2">"REVOKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres-326"><a href="#Postgres-326"><span class="linenos">326</span></a> <span class="s2">"SERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> -</span><span id="Postgres-327"><a href="#Postgres-327"><span class="linenos">327</span></a> <span class="s2">"SMALLSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> -</span><span id="Postgres-328"><a href="#Postgres-328"><span class="linenos">328</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Postgres-329"><a href="#Postgres-329"><span class="linenos">329</span></a> <span class="s2">"REGCLASS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-330"><a href="#Postgres-330"><span class="linenos">330</span></a> <span class="s2">"REGCOLLATION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-331"><a href="#Postgres-331"><span class="linenos">331</span></a> <span class="s2">"REGCONFIG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-332"><a href="#Postgres-332"><span class="linenos">332</span></a> <span class="s2">"REGDICTIONARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-333"><a href="#Postgres-333"><span class="linenos">333</span></a> <span class="s2">"REGNAMESPACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-334"><a href="#Postgres-334"><span class="linenos">334</span></a> <span class="s2">"REGOPER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-335"><a href="#Postgres-335"><span class="linenos">335</span></a> <span class="s2">"REGOPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-336"><a href="#Postgres-336"><span class="linenos">336</span></a> <span class="s2">"REGPROC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-337"><a href="#Postgres-337"><span class="linenos">337</span></a> <span class="s2">"REGPROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-338"><a href="#Postgres-338"><span class="linenos">338</span></a> <span class="s2">"REGROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-339"><a href="#Postgres-339"><span class="linenos">339</span></a> <span class="s2">"REGTYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres-340"><a href="#Postgres-340"><span class="linenos">340</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Postgres-341"><a href="#Postgres-341"><span class="linenos">341</span></a> <span class="p">}</span> -</span><span id="Postgres-342"><a href="#Postgres-342"><span class="linenos">342</span></a> -</span><span id="Postgres-343"><a href="#Postgres-343"><span class="linenos">343</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-344"><a href="#Postgres-344"><span class="linenos">344</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="Postgres-345"><a href="#Postgres-345"><span class="linenos">345</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> -</span><span id="Postgres-346"><a href="#Postgres-346"><span class="linenos">346</span></a> <span class="p">}</span> +</span><span id="Postgres-286"><a href="#Postgres-286"><span class="linenos">286</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-287"><a href="#Postgres-287"><span class="linenos">287</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> +</span><span id="Postgres-288"><a href="#Postgres-288"><span class="linenos">288</span></a> <span class="s2">"~~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="Postgres-289"><a href="#Postgres-289"><span class="linenos">289</span></a> <span class="s2">"~~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="Postgres-290"><a href="#Postgres-290"><span class="linenos">290</span></a> <span class="s2">"~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span> +</span><span id="Postgres-291"><a href="#Postgres-291"><span class="linenos">291</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Postgres-292"><a href="#Postgres-292"><span class="linenos">292</span></a> <span class="s2">"@@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">,</span> +</span><span id="Postgres-293"><a href="#Postgres-293"><span class="linenos">293</span></a> <span class="s2">"@>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span> +</span><span id="Postgres-294"><a href="#Postgres-294"><span class="linenos">294</span></a> <span class="s2">"<@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span> +</span><span id="Postgres-295"><a href="#Postgres-295"><span class="linenos">295</span></a> <span class="s2">"|/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">,</span> +</span><span id="Postgres-296"><a href="#Postgres-296"><span class="linenos">296</span></a> <span class="s2">"||/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">,</span> +</span><span id="Postgres-297"><a href="#Postgres-297"><span class="linenos">297</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-298"><a href="#Postgres-298"><span class="linenos">298</span></a> <span class="s2">"BEGIN TRANSACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="Postgres-299"><a href="#Postgres-299"><span class="linenos">299</span></a> <span class="s2">"BIGSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> +</span><span id="Postgres-300"><a href="#Postgres-300"><span class="linenos">300</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="Postgres-301"><a href="#Postgres-301"><span class="linenos">301</span></a> <span class="s2">"CONSTRAINT TRIGGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-302"><a href="#Postgres-302"><span class="linenos">302</span></a> <span class="s2">"CSTRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> +</span><span id="Postgres-303"><a href="#Postgres-303"><span class="linenos">303</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-304"><a href="#Postgres-304"><span class="linenos">304</span></a> <span class="s2">"DO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-305"><a href="#Postgres-305"><span class="linenos">305</span></a> <span class="s2">"EXEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-306"><a href="#Postgres-306"><span class="linenos">306</span></a> <span class="s2">"HSTORE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> +</span><span id="Postgres-307"><a href="#Postgres-307"><span class="linenos">307</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Postgres-308"><a href="#Postgres-308"><span class="linenos">308</span></a> <span class="s2">"MONEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="Postgres-309"><a href="#Postgres-309"><span class="linenos">309</span></a> <span class="s2">"NAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="Postgres-310"><a href="#Postgres-310"><span class="linenos">310</span></a> <span class="s2">"OID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-311"><a href="#Postgres-311"><span class="linenos">311</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="Postgres-312"><a href="#Postgres-312"><span class="linenos">312</span></a> <span class="s2">"OPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> +</span><span id="Postgres-313"><a href="#Postgres-313"><span class="linenos">313</span></a> <span class="s2">"REFRESH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-314"><a href="#Postgres-314"><span class="linenos">314</span></a> <span class="s2">"REINDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-315"><a href="#Postgres-315"><span class="linenos">315</span></a> <span class="s2">"RESET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-316"><a href="#Postgres-316"><span class="linenos">316</span></a> <span class="s2">"REVOKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres-317"><a href="#Postgres-317"><span class="linenos">317</span></a> <span class="s2">"SERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> +</span><span id="Postgres-318"><a href="#Postgres-318"><span class="linenos">318</span></a> <span class="s2">"SMALLSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> +</span><span id="Postgres-319"><a href="#Postgres-319"><span class="linenos">319</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Postgres-320"><a href="#Postgres-320"><span class="linenos">320</span></a> <span class="s2">"REGCLASS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-321"><a href="#Postgres-321"><span class="linenos">321</span></a> <span class="s2">"REGCOLLATION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-322"><a href="#Postgres-322"><span class="linenos">322</span></a> <span class="s2">"REGCONFIG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-323"><a href="#Postgres-323"><span class="linenos">323</span></a> <span class="s2">"REGDICTIONARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-324"><a href="#Postgres-324"><span class="linenos">324</span></a> <span class="s2">"REGNAMESPACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-325"><a href="#Postgres-325"><span class="linenos">325</span></a> <span class="s2">"REGOPER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-326"><a href="#Postgres-326"><span class="linenos">326</span></a> <span class="s2">"REGOPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-327"><a href="#Postgres-327"><span class="linenos">327</span></a> <span class="s2">"REGPROC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-328"><a href="#Postgres-328"><span class="linenos">328</span></a> <span class="s2">"REGPROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-329"><a href="#Postgres-329"><span class="linenos">329</span></a> <span class="s2">"REGROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-330"><a href="#Postgres-330"><span class="linenos">330</span></a> <span class="s2">"REGTYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres-331"><a href="#Postgres-331"><span class="linenos">331</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Postgres-332"><a href="#Postgres-332"><span class="linenos">332</span></a> <span class="p">}</span> +</span><span id="Postgres-333"><a href="#Postgres-333"><span class="linenos">333</span></a> +</span><span id="Postgres-334"><a href="#Postgres-334"><span class="linenos">334</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-335"><a href="#Postgres-335"><span class="linenos">335</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="Postgres-336"><a href="#Postgres-336"><span class="linenos">336</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> +</span><span id="Postgres-337"><a href="#Postgres-337"><span class="linenos">337</span></a> <span class="p">}</span> +</span><span id="Postgres-338"><a href="#Postgres-338"><span class="linenos">338</span></a> +</span><span id="Postgres-339"><a href="#Postgres-339"><span class="linenos">339</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"$"</span><span class="p">}</span> +</span><span id="Postgres-340"><a href="#Postgres-340"><span class="linenos">340</span></a> +</span><span id="Postgres-341"><a href="#Postgres-341"><span class="linenos">341</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="Postgres-342"><a href="#Postgres-342"><span class="linenos">342</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-343"><a href="#Postgres-343"><span class="linenos">343</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">PROPERTY_PARSERS</span><span class="p">,</span> +</span><span id="Postgres-344"><a href="#Postgres-344"><span class="linenos">344</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetConfigProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">()),</span> +</span><span id="Postgres-345"><a href="#Postgres-345"><span class="linenos">345</span></a> <span class="p">}</span> +</span><span id="Postgres-346"><a href="#Postgres-346"><span class="linenos">346</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"INPUT"</span><span class="p">)</span> </span><span id="Postgres-347"><a href="#Postgres-347"><span class="linenos">347</span></a> -</span><span id="Postgres-348"><a href="#Postgres-348"><span class="linenos">348</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"$"</span><span class="p">}</span> -</span><span id="Postgres-349"><a href="#Postgres-349"><span class="linenos">349</span></a> -</span><span id="Postgres-350"><a href="#Postgres-350"><span class="linenos">350</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> -</span><span id="Postgres-351"><a href="#Postgres-351"><span class="linenos">351</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-352"><a href="#Postgres-352"><span class="linenos">352</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">PROPERTY_PARSERS</span><span class="p">,</span> -</span><span id="Postgres-353"><a href="#Postgres-353"><span class="linenos">353</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetConfigProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">()),</span> -</span><span id="Postgres-354"><a href="#Postgres-354"><span class="linenos">354</span></a> <span class="p">}</span> -</span><span id="Postgres-355"><a href="#Postgres-355"><span class="linenos">355</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"INPUT"</span><span class="p">)</span> -</span><span id="Postgres-356"><a href="#Postgres-356"><span class="linenos">356</span></a> -</span><span id="Postgres-357"><a href="#Postgres-357"><span class="linenos">357</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-358"><a href="#Postgres-358"><span class="linenos">358</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> -</span><span id="Postgres-359"><a href="#Postgres-359"><span class="linenos">359</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">:</span> <span class="n">build_timestamp_trunc</span><span class="p">,</span> -</span><span id="Postgres-360"><a href="#Postgres-360"><span class="linenos">360</span></a> <span class="s2">"GENERATE_SERIES"</span><span class="p">:</span> <span class="n">_build_generate_series</span><span class="p">,</span> -</span><span id="Postgres-361"><a href="#Postgres-361"><span class="linenos">361</span></a> <span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">),</span> -</span><span id="Postgres-362"><a href="#Postgres-362"><span class="linenos">362</span></a> <span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">),</span> -</span><span id="Postgres-363"><a href="#Postgres-363"><span class="linenos">363</span></a> <span class="s2">"MAKE_TIME"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres-364"><a href="#Postgres-364"><span class="linenos">364</span></a> <span class="s2">"MAKE_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres-365"><a href="#Postgres-365"><span class="linenos">365</span></a> <span class="s2">"NOW"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres-366"><a href="#Postgres-366"><span class="linenos">366</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">:</span> <span class="n">_build_regexp_replace</span><span class="p">,</span> -</span><span id="Postgres-367"><a href="#Postgres-367"><span class="linenos">367</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">),</span> -</span><span id="Postgres-368"><a href="#Postgres-368"><span class="linenos">368</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_build_to_timestamp</span><span class="p">,</span> -</span><span id="Postgres-369"><a href="#Postgres-369"><span class="linenos">369</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres-370"><a href="#Postgres-370"><span class="linenos">370</span></a> <span class="p">}</span> -</span><span id="Postgres-371"><a href="#Postgres-371"><span class="linenos">371</span></a> -</span><span id="Postgres-372"><a href="#Postgres-372"><span class="linenos">372</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-373"><a href="#Postgres-373"><span class="linenos">373</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> -</span><span id="Postgres-374"><a href="#Postgres-374"><span class="linenos">374</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span> +</span><span id="Postgres-348"><a href="#Postgres-348"><span class="linenos">348</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-349"><a href="#Postgres-349"><span class="linenos">349</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> +</span><span id="Postgres-350"><a href="#Postgres-350"><span class="linenos">350</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">:</span> <span class="n">build_timestamp_trunc</span><span class="p">,</span> +</span><span id="Postgres-351"><a href="#Postgres-351"><span class="linenos">351</span></a> <span class="s2">"GENERATE_SERIES"</span><span class="p">:</span> <span class="n">_build_generate_series</span><span class="p">,</span> +</span><span id="Postgres-352"><a href="#Postgres-352"><span class="linenos">352</span></a> <span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">),</span> +</span><span id="Postgres-353"><a href="#Postgres-353"><span class="linenos">353</span></a> <span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">),</span> +</span><span id="Postgres-354"><a href="#Postgres-354"><span class="linenos">354</span></a> <span class="s2">"MAKE_TIME"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres-355"><a href="#Postgres-355"><span class="linenos">355</span></a> <span class="s2">"MAKE_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres-356"><a href="#Postgres-356"><span class="linenos">356</span></a> <span class="s2">"NOW"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres-357"><a href="#Postgres-357"><span class="linenos">357</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">:</span> <span class="n">_build_regexp_replace</span><span class="p">,</span> +</span><span id="Postgres-358"><a href="#Postgres-358"><span class="linenos">358</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">),</span> +</span><span id="Postgres-359"><a href="#Postgres-359"><span class="linenos">359</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_build_to_timestamp</span><span class="p">,</span> +</span><span id="Postgres-360"><a href="#Postgres-360"><span class="linenos">360</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres-361"><a href="#Postgres-361"><span class="linenos">361</span></a> <span class="p">}</span> +</span><span id="Postgres-362"><a href="#Postgres-362"><span class="linenos">362</span></a> +</span><span id="Postgres-363"><a href="#Postgres-363"><span class="linenos">363</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-364"><a href="#Postgres-364"><span class="linenos">364</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="Postgres-365"><a href="#Postgres-365"><span class="linenos">365</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span> +</span><span id="Postgres-366"><a href="#Postgres-366"><span class="linenos">366</span></a> <span class="p">}</span> +</span><span id="Postgres-367"><a href="#Postgres-367"><span class="linenos">367</span></a> +</span><span id="Postgres-368"><a href="#Postgres-368"><span class="linenos">368</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-369"><a href="#Postgres-369"><span class="linenos">369</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span> +</span><span id="Postgres-370"><a href="#Postgres-370"><span class="linenos">370</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> +</span><span id="Postgres-371"><a href="#Postgres-371"><span class="linenos">371</span></a> <span class="p">}</span> +</span><span id="Postgres-372"><a href="#Postgres-372"><span class="linenos">372</span></a> +</span><span id="Postgres-373"><a href="#Postgres-373"><span class="linenos">373</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-374"><a href="#Postgres-374"><span class="linenos">374</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span> </span><span id="Postgres-375"><a href="#Postgres-375"><span class="linenos">375</span></a> <span class="p">}</span> </span><span id="Postgres-376"><a href="#Postgres-376"><span class="linenos">376</span></a> -</span><span id="Postgres-377"><a href="#Postgres-377"><span class="linenos">377</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-378"><a href="#Postgres-378"><span class="linenos">378</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span> -</span><span id="Postgres-379"><a href="#Postgres-379"><span class="linenos">379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> -</span><span id="Postgres-380"><a href="#Postgres-380"><span class="linenos">380</span></a> <span class="p">}</span> -</span><span id="Postgres-381"><a href="#Postgres-381"><span class="linenos">381</span></a> -</span><span id="Postgres-382"><a href="#Postgres-382"><span class="linenos">382</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-383"><a href="#Postgres-383"><span class="linenos">383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span> -</span><span id="Postgres-384"><a href="#Postgres-384"><span class="linenos">384</span></a> <span class="p">}</span> -</span><span id="Postgres-385"><a href="#Postgres-385"><span class="linenos">385</span></a> -</span><span id="Postgres-386"><a href="#Postgres-386"><span class="linenos">386</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-387"><a href="#Postgres-387"><span class="linenos">387</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> -</span><span id="Postgres-388"><a href="#Postgres-388"><span class="linenos">388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">),</span> -</span><span id="Postgres-389"><a href="#Postgres-389"><span class="linenos">389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span> -</span><span id="Postgres-390"><a href="#Postgres-390"><span class="linenos">390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Postgres-391"><a href="#Postgres-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">]</span> -</span><span id="Postgres-392"><a href="#Postgres-392"><span class="linenos">392</span></a> <span class="p">),</span> -</span><span id="Postgres-393"><a href="#Postgres-393"><span class="linenos">393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">,</span> <span class="n">reverse_args</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Postgres-394"><a href="#Postgres-394"><span class="linenos">394</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_operator</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Postgres-395"><a href="#Postgres-395"><span class="linenos">395</span></a> <span class="p">}</span> -</span><span id="Postgres-396"><a href="#Postgres-396"><span class="linenos">396</span></a> -</span><span id="Postgres-397"><a href="#Postgres-397"><span class="linenos">397</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-398"><a href="#Postgres-398"><span class="linenos">398</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">STATEMENT_PARSERS</span><span class="p">,</span> -</span><span id="Postgres-399"><a href="#Postgres-399"><span class="linenos">399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Postgres-400"><a href="#Postgres-400"><span class="linenos">400</span></a> <span class="p">}</span> -</span><span id="Postgres-401"><a href="#Postgres-401"><span class="linenos">401</span></a> -</span><span id="Postgres-402"><a href="#Postgres-402"><span class="linenos">402</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-403"><a href="#Postgres-403"><span class="linenos">403</span></a> -</span><span id="Postgres-404"><a href="#Postgres-404"><span class="linenos">404</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-405"><a href="#Postgres-405"><span class="linenos">405</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">COLUMN_OPERATORS</span><span class="p">,</span> -</span><span id="Postgres-406"><a href="#Postgres-406"><span class="linenos">406</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> -</span><span id="Postgres-407"><a href="#Postgres-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> -</span><span id="Postgres-408"><a href="#Postgres-408"><span class="linenos">408</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> -</span><span id="Postgres-409"><a href="#Postgres-409"><span class="linenos">409</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> -</span><span id="Postgres-410"><a href="#Postgres-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> -</span><span id="Postgres-411"><a href="#Postgres-411"><span class="linenos">411</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> -</span><span id="Postgres-412"><a href="#Postgres-412"><span class="linenos">412</span></a> <span class="p">}</span> -</span><span id="Postgres-413"><a href="#Postgres-413"><span class="linenos">413</span></a> -</span><span id="Postgres-414"><a href="#Postgres-414"><span class="linenos">414</span></a> <span class="k">def</span> <span class="nf">_parse_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Postgres-415"><a href="#Postgres-415"><span class="linenos">415</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Postgres-416"><a href="#Postgres-416"><span class="linenos">416</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Postgres-417"><a href="#Postgres-417"><span class="linenos">417</span></a> <span class="k">break</span> -</span><span id="Postgres-418"><a href="#Postgres-418"><span class="linenos">418</span></a> -</span><span id="Postgres-419"><a href="#Postgres-419"><span class="linenos">419</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Postgres-420"><a href="#Postgres-420"><span class="linenos">420</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Postgres-421"><a href="#Postgres-421"><span class="linenos">421</span></a> <span class="n">op</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="Postgres-422"><a href="#Postgres-422"><span class="linenos">422</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Postgres-423"><a href="#Postgres-423"><span class="linenos">423</span></a> -</span><span id="Postgres-424"><a href="#Postgres-424"><span class="linenos">424</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Postgres-425"><a href="#Postgres-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Operator</span><span class="p">,</span> -</span><span id="Postgres-426"><a href="#Postgres-426"><span class="linenos">426</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="Postgres-427"><a href="#Postgres-427"><span class="linenos">427</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Postgres-428"><a href="#Postgres-428"><span class="linenos">428</span></a> <span class="n">operator</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> -</span><span id="Postgres-429"><a href="#Postgres-429"><span class="linenos">429</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Postgres-430"><a href="#Postgres-430"><span class="linenos">430</span></a> <span class="p">)</span> -</span><span id="Postgres-431"><a href="#Postgres-431"><span class="linenos">431</span></a> -</span><span id="Postgres-432"><a href="#Postgres-432"><span class="linenos">432</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">):</span> -</span><span id="Postgres-433"><a href="#Postgres-433"><span class="linenos">433</span></a> <span class="k">break</span> -</span><span id="Postgres-434"><a href="#Postgres-434"><span class="linenos">434</span></a> -</span><span id="Postgres-435"><a href="#Postgres-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Postgres-436"><a href="#Postgres-436"><span class="linenos">436</span></a> -</span><span id="Postgres-437"><a href="#Postgres-437"><span class="linenos">437</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Postgres-438"><a href="#Postgres-438"><span class="linenos">438</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Postgres-439"><a href="#Postgres-439"><span class="linenos">439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Postgres-440"><a href="#Postgres-440"><span class="linenos">440</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Postgres-441"><a href="#Postgres-441"><span class="linenos">441</span></a> -</span><span id="Postgres-442"><a href="#Postgres-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Postgres-443"><a href="#Postgres-443"><span class="linenos">443</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Postgres-444"><a href="#Postgres-444"><span class="linenos">444</span></a> -</span><span id="Postgres-445"><a href="#Postgres-445"><span class="linenos">445</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="Postgres-446"><a href="#Postgres-446"><span class="linenos">446</span></a> -</span><span id="Postgres-447"><a href="#Postgres-447"><span class="linenos">447</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> -</span><span id="Postgres-448"><a href="#Postgres-448"><span class="linenos">448</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-449"><a href="#Postgres-449"><span class="linenos">449</span></a> <span class="n">RENAME_TABLE_WITH_DB</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-450"><a href="#Postgres-450"><span class="linenos">450</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-451"><a href="#Postgres-451"><span class="linenos">451</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-452"><a href="#Postgres-452"><span class="linenos">452</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-453"><a href="#Postgres-453"><span class="linenos">453</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-454"><a href="#Postgres-454"><span class="linenos">454</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-455"><a href="#Postgres-455"><span class="linenos">455</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> -</span><span id="Postgres-456"><a href="#Postgres-456"><span class="linenos">456</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-457"><a href="#Postgres-457"><span class="linenos">457</span></a> <span class="n">TABLESAMPLE_SEED_KEYWORD</span> <span class="o">=</span> <span class="s2">"REPEATABLE"</span> -</span><span id="Postgres-458"><a href="#Postgres-458"><span class="linenos">458</span></a> <span class="n">SUPPORTS_SELECT_INTO</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-459"><a href="#Postgres-459"><span class="linenos">459</span></a> <span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-460"><a href="#Postgres-460"><span class="linenos">460</span></a> <span class="n">SUPPORTS_UNLOGGED_TABLES</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-461"><a href="#Postgres-461"><span class="linenos">461</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-462"><a href="#Postgres-462"><span class="linenos">462</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-463"><a href="#Postgres-463"><span class="linenos">463</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres-464"><a href="#Postgres-464"><span class="linenos">464</span></a> <span class="n">COPY_HAS_INTO_KEYWORD</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres-465"><a href="#Postgres-465"><span class="linenos">465</span></a> -</span><span id="Postgres-466"><a href="#Postgres-466"><span class="linenos">466</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-467"><a href="#Postgres-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span> -</span><span id="Postgres-468"><a href="#Postgres-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span> -</span><span id="Postgres-469"><a href="#Postgres-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span> -</span><span id="Postgres-470"><a href="#Postgres-470"><span class="linenos">470</span></a> <span class="p">}</span> -</span><span id="Postgres-471"><a href="#Postgres-471"><span class="linenos">471</span></a> -</span><span id="Postgres-472"><a href="#Postgres-472"><span class="linenos">472</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-473"><a href="#Postgres-473"><span class="linenos">473</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span> -</span><span id="Postgres-474"><a href="#Postgres-474"><span class="linenos">474</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"SMALLINT"</span><span class="p">,</span> -</span><span id="Postgres-475"><a href="#Postgres-475"><span class="linenos">475</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"REAL"</span><span class="p">,</span> -</span><span id="Postgres-476"><a href="#Postgres-476"><span class="linenos">476</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"DOUBLE PRECISION"</span><span class="p">,</span> -</span><span id="Postgres-477"><a href="#Postgres-477"><span class="linenos">477</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="Postgres-478"><a href="#Postgres-478"><span class="linenos">478</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="Postgres-479"><a href="#Postgres-479"><span class="linenos">479</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="Postgres-480"><a href="#Postgres-480"><span class="linenos">480</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Postgres-481"><a href="#Postgres-481"><span class="linenos">481</span></a> <span class="p">}</span> -</span><span id="Postgres-482"><a href="#Postgres-482"><span class="linenos">482</span></a> -</span><span id="Postgres-483"><a href="#Postgres-483"><span class="linenos">483</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-484"><a href="#Postgres-484"><span class="linenos">484</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> -</span><span id="Postgres-485"><a href="#Postgres-485"><span class="linenos">485</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">any_value_to_max_sql</span><span class="p">,</span> -</span><span id="Postgres-486"><a href="#Postgres-486"><span class="linenos">486</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Postgres-487"><a href="#Postgres-487"><span class="linenos">487</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Postgres-488"><a href="#Postgres-488"><span class="linenos">488</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> -</span><span id="Postgres-489"><a href="#Postgres-489"><span class="linenos">489</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="Postgres-490"><a href="#Postgres-490"><span class="linenos">490</span></a> <span class="p">),</span> -</span><span id="Postgres-491"><a href="#Postgres-491"><span class="linenos">491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</span><span class="p">),</span> -</span><span id="Postgres-492"><a href="#Postgres-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"@>"</span><span class="p">),</span> -</span><span id="Postgres-493"><a href="#Postgres-493"><span class="linenos">493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"&&"</span><span class="p">),</span> -</span><span id="Postgres-494"><a href="#Postgres-494"><span class="linenos">494</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="n">filter_array_using_unnest</span><span class="p">,</span> -</span><span id="Postgres-495"><a href="#Postgres-495"><span class="linenos">495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY_LENGTH"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span> <span class="ow">or</span> <span class="s2">"1"</span><span class="p">),</span> -</span><span id="Postgres-496"><a href="#Postgres-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">),</span> -</span><span id="Postgres-497"><a href="#Postgres-497"><span class="linenos">497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span> -</span><span id="Postgres-498"><a href="#Postgres-498"><span class="linenos">498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span> -</span><span id="Postgres-499"><a href="#Postgres-499"><span class="linenos">499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">,</span> -</span><span id="Postgres-500"><a href="#Postgres-500"><span class="linenos">500</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentUser</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_USER"</span><span class="p">,</span> -</span><span id="Postgres-501"><a href="#Postgres-501"><span class="linenos">501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> -</span><span id="Postgres-502"><a href="#Postgres-502"><span class="linenos">502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> -</span><span id="Postgres-503"><a href="#Postgres-503"><span class="linenos">503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span> -</span><span id="Postgres-504"><a href="#Postgres-504"><span class="linenos">504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="Postgres-505"><a href="#Postgres-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"-"</span><span class="p">),</span> -</span><span id="Postgres-506"><a href="#Postgres-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> -</span><span id="Postgres-507"><a href="#Postgres-507"><span class="linenos">507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span> -</span><span id="Postgres-508"><a href="#Postgres-508"><span class="linenos">508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">,</span> <span class="s2">"->"</span><span class="p">),</span> -</span><span id="Postgres-509"><a href="#Postgres-509"><span class="linenos">509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">,</span> <span class="s2">"->>"</span><span class="p">),</span> -</span><span id="Postgres-510"><a href="#Postgres-510"><span class="linenos">510</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>"</span><span class="p">),</span> -</span><span id="Postgres-511"><a href="#Postgres-511"><span class="linenos">511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>>"</span><span class="p">),</span> -</span><span id="Postgres-512"><a href="#Postgres-512"><span class="linenos">512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"?"</span><span class="p">),</span> -</span><span id="Postgres-513"><a href="#Postgres-513"><span class="linenos">513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">)),</span> -</span><span id="Postgres-514"><a href="#Postgres-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span> -</span><span id="Postgres-515"><a href="#Postgres-515"><span class="linenos">515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Postgres-516"><a href="#Postgres-516"><span class="linenos">516</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> -</span><span id="Postgres-517"><a href="#Postgres-517"><span class="linenos">517</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">:</span> <span class="n">no_last_day_sql</span><span class="p">,</span> -</span><span id="Postgres-518"><a href="#Postgres-518"><span class="linenos">518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_OR"</span><span class="p">),</span> -</span><span id="Postgres-519"><a href="#Postgres-519"><span class="linenos">519</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_AND"</span><span class="p">),</span> -</span><span id="Postgres-520"><a href="#Postgres-520"><span class="linenos">520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span> -</span><span id="Postgres-521"><a href="#Postgres-521"><span class="linenos">521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span> -</span><span id="Postgres-522"><a href="#Postgres-522"><span class="linenos">522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span> -</span><span id="Postgres-523"><a href="#Postgres-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> <span class="n">merge_without_target_sql</span><span class="p">,</span> -</span><span id="Postgres-524"><a href="#Postgres-524"><span class="linenos">524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</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">"PARTITION BY </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Postgres-525"><a href="#Postgres-525"><span class="linenos">525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="Postgres-526"><a href="#Postgres-526"><span class="linenos">526</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> -</span><span id="Postgres-527"><a href="#Postgres-527"><span class="linenos">527</span></a> <span class="p">),</span> -</span><span id="Postgres-528"><a href="#Postgres-528"><span class="linenos">528</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="Postgres-529"><a href="#Postgres-529"><span class="linenos">529</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> -</span><span id="Postgres-530"><a href="#Postgres-530"><span class="linenos">530</span></a> <span class="p">),</span> -</span><span id="Postgres-531"><a href="#Postgres-531"><span class="linenos">531</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span> -</span><span id="Postgres-532"><a href="#Postgres-532"><span class="linenos">532</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">),</span> -</span><span id="Postgres-533"><a href="#Postgres-533"><span class="linenos">533</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"RANDOM"</span><span class="p">),</span> -</span><span id="Postgres-534"><a href="#Postgres-534"><span class="linenos">534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">),</span> -</span><span id="Postgres-535"><a href="#Postgres-535"><span class="linenos">535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~*"</span><span class="p">),</span> -</span><span id="Postgres-536"><a href="#Postgres-536"><span class="linenos">536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="Postgres-537"><a href="#Postgres-537"><span class="linenos">537</span></a> <span class="p">[</span> -</span><span id="Postgres-538"><a href="#Postgres-538"><span class="linenos">538</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span> -</span><span id="Postgres-539"><a href="#Postgres-539"><span class="linenos">539</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span> -</span><span id="Postgres-540"><a href="#Postgres-540"><span class="linenos">540</span></a> <span class="p">]</span> -</span><span id="Postgres-541"><a href="#Postgres-541"><span class="linenos">541</span></a> <span class="p">),</span> -</span><span id="Postgres-542"><a href="#Postgres-542"><span class="linenos">542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="Postgres-543"><a href="#Postgres-543"><span class="linenos">543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_DATE"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="Postgres-544"><a href="#Postgres-544"><span class="linenos">544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="Postgres-545"><a href="#Postgres-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span> -</span><span id="Postgres-546"><a href="#Postgres-546"><span class="linenos">546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span> -</span><span id="Postgres-547"><a href="#Postgres-547"><span class="linenos">547</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIME"</span><span class="p">),</span> -</span><span id="Postgres-548"><a href="#Postgres-548"><span class="linenos">548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIMESTAMP"</span><span class="p">),</span> -</span><span id="Postgres-549"><a href="#Postgres-549"><span class="linenos">549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Postgres-550"><a href="#Postgres-550"><span class="linenos">550</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="Postgres-551"><a href="#Postgres-551"><span class="linenos">551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_CHAR"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="Postgres-552"><a href="#Postgres-552"><span class="linenos">552</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> -</span><span id="Postgres-553"><a href="#Postgres-553"><span class="linenos">553</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> -</span><span id="Postgres-554"><a href="#Postgres-554"><span class="linenos">554</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> -</span><span id="Postgres-555"><a href="#Postgres-555"><span class="linenos">555</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> -</span><span id="Postgres-556"><a href="#Postgres-556"><span class="linenos">556</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> -</span><span id="Postgres-557"><a href="#Postgres-557"><span class="linenos">557</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> -</span><span id="Postgres-558"><a href="#Postgres-558"><span class="linenos">558</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="Postgres-559"><a href="#Postgres-559"><span class="linenos">559</span></a> <span class="s2">"DATE_PART"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"epoch"</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> -</span><span id="Postgres-560"><a href="#Postgres-560"><span class="linenos">560</span></a> <span class="p">),</span> -</span><span id="Postgres-561"><a href="#Postgres-561"><span class="linenos">561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_POP"</span><span class="p">),</span> -</span><span id="Postgres-562"><a href="#Postgres-562"><span class="linenos">562</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_SAMP"</span><span class="p">),</span> -</span><span id="Postgres-563"><a href="#Postgres-563"><span class="linenos">563</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span> -</span><span id="Postgres-564"><a href="#Postgres-564"><span class="linenos">564</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span> -</span><span id="Postgres-565"><a href="#Postgres-565"><span class="linenos">565</span></a> <span class="p">}</span> -</span><span id="Postgres-566"><a href="#Postgres-566"><span class="linenos">566</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> -</span><span id="Postgres-567"><a href="#Postgres-567"><span class="linenos">567</span></a> -</span><span id="Postgres-568"><a href="#Postgres-568"><span class="linenos">568</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres-569"><a href="#Postgres-569"><span class="linenos">569</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span> -</span><span id="Postgres-570"><a href="#Postgres-570"><span class="linenos">570</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Postgres-571"><a href="#Postgres-571"><span class="linenos">571</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> -</span><span id="Postgres-572"><a href="#Postgres-572"><span class="linenos">572</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> -</span><span id="Postgres-573"><a href="#Postgres-573"><span class="linenos">573</span></a> <span class="p">}</span> -</span><span id="Postgres-574"><a href="#Postgres-574"><span class="linenos">574</span></a> -</span><span id="Postgres-575"><a href="#Postgres-575"><span class="linenos">575</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres-576"><a href="#Postgres-576"><span class="linenos">576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="Postgres-577"><a href="#Postgres-577"><span class="linenos">577</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Postgres-578"><a href="#Postgres-578"><span class="linenos">578</span></a> -</span><span id="Postgres-579"><a href="#Postgres-579"><span class="linenos">579</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres-580"><a href="#Postgres-580"><span class="linenos">580</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="Postgres-581"><a href="#Postgres-581"><span class="linenos">581</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Postgres-582"><a href="#Postgres-582"><span class="linenos">582</span></a> -</span><span id="Postgres-583"><a href="#Postgres-583"><span class="linenos">583</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres-584"><a href="#Postgres-584"><span class="linenos">584</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Postgres-585"><a href="#Postgres-585"><span class="linenos">585</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="Postgres-586"><a href="#Postgres-586"><span class="linenos">586</span></a> -</span><span id="Postgres-587"><a href="#Postgres-587"><span class="linenos">587</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Postgres-588"><a href="#Postgres-588"><span class="linenos">588</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> -</span><span id="Postgres-589"><a href="#Postgres-589"><span class="linenos">589</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="Postgres-590"><a href="#Postgres-590"><span class="linenos">590</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> -</span><span id="Postgres-591"><a href="#Postgres-591"><span class="linenos">591</span></a> -</span><span id="Postgres-592"><a href="#Postgres-592"><span class="linenos">592</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> -</span><span id="Postgres-593"><a href="#Postgres-593"><span class="linenos">593</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Postgres-594"><a href="#Postgres-594"><span class="linenos">594</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres-595"><a href="#Postgres-595"><span class="linenos">595</span></a> -</span><span id="Postgres-596"><a href="#Postgres-596"><span class="linenos">596</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> -</span><span id="Postgres-597"><a href="#Postgres-597"><span class="linenos">597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> -</span><span id="Postgres-598"><a href="#Postgres-598"><span class="linenos">598</span></a> -</span><span id="Postgres-599"><a href="#Postgres-599"><span class="linenos">599</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Postgres-600"><a href="#Postgres-600"><span class="linenos">600</span></a> -</span><span id="Postgres-601"><a href="#Postgres-601"><span class="linenos">601</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Postgres-602"><a href="#Postgres-602"><span class="linenos">602</span></a> -</span><span id="Postgres-603"><a href="#Postgres-603"><span class="linenos">603</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres-604"><a href="#Postgres-604"><span class="linenos">604</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> -</span><span id="Postgres-605"><a href="#Postgres-605"><span class="linenos">605</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> -</span><span id="Postgres-606"><a href="#Postgres-606"><span class="linenos">606</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Postgres-607"><a href="#Postgres-607"><span class="linenos">607</span></a> -</span><span id="Postgres-608"><a href="#Postgres-608"><span class="linenos">608</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Postgres-377"><a href="#Postgres-377"><span class="linenos">377</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-378"><a href="#Postgres-378"><span class="linenos">378</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> +</span><span id="Postgres-379"><a href="#Postgres-379"><span class="linenos">379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">),</span> +</span><span id="Postgres-380"><a href="#Postgres-380"><span class="linenos">380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span> +</span><span id="Postgres-381"><a href="#Postgres-381"><span class="linenos">381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Postgres-382"><a href="#Postgres-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">]</span> +</span><span id="Postgres-383"><a href="#Postgres-383"><span class="linenos">383</span></a> <span class="p">),</span> +</span><span id="Postgres-384"><a href="#Postgres-384"><span class="linenos">384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">,</span> <span class="n">reverse_args</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Postgres-385"><a href="#Postgres-385"><span class="linenos">385</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_operator</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Postgres-386"><a href="#Postgres-386"><span class="linenos">386</span></a> <span class="p">}</span> +</span><span id="Postgres-387"><a href="#Postgres-387"><span class="linenos">387</span></a> +</span><span id="Postgres-388"><a href="#Postgres-388"><span class="linenos">388</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-389"><a href="#Postgres-389"><span class="linenos">389</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">STATEMENT_PARSERS</span><span class="p">,</span> +</span><span id="Postgres-390"><a href="#Postgres-390"><span class="linenos">390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Postgres-391"><a href="#Postgres-391"><span class="linenos">391</span></a> <span class="p">}</span> +</span><span id="Postgres-392"><a href="#Postgres-392"><span class="linenos">392</span></a> +</span><span id="Postgres-393"><a href="#Postgres-393"><span class="linenos">393</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-394"><a href="#Postgres-394"><span class="linenos">394</span></a> +</span><span id="Postgres-395"><a href="#Postgres-395"><span class="linenos">395</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-396"><a href="#Postgres-396"><span class="linenos">396</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">COLUMN_OPERATORS</span><span class="p">,</span> +</span><span id="Postgres-397"><a href="#Postgres-397"><span class="linenos">397</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> +</span><span id="Postgres-398"><a href="#Postgres-398"><span class="linenos">398</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> +</span><span id="Postgres-399"><a href="#Postgres-399"><span class="linenos">399</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> +</span><span id="Postgres-400"><a href="#Postgres-400"><span class="linenos">400</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> +</span><span id="Postgres-401"><a href="#Postgres-401"><span class="linenos">401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> +</span><span id="Postgres-402"><a href="#Postgres-402"><span class="linenos">402</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> +</span><span id="Postgres-403"><a href="#Postgres-403"><span class="linenos">403</span></a> <span class="p">}</span> +</span><span id="Postgres-404"><a href="#Postgres-404"><span class="linenos">404</span></a> +</span><span id="Postgres-405"><a href="#Postgres-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">_parse_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Postgres-406"><a href="#Postgres-406"><span class="linenos">406</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Postgres-407"><a href="#Postgres-407"><span class="linenos">407</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Postgres-408"><a href="#Postgres-408"><span class="linenos">408</span></a> <span class="k">break</span> +</span><span id="Postgres-409"><a href="#Postgres-409"><span class="linenos">409</span></a> +</span><span id="Postgres-410"><a href="#Postgres-410"><span class="linenos">410</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Postgres-411"><a href="#Postgres-411"><span class="linenos">411</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Postgres-412"><a href="#Postgres-412"><span class="linenos">412</span></a> <span class="n">op</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="Postgres-413"><a href="#Postgres-413"><span class="linenos">413</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Postgres-414"><a href="#Postgres-414"><span class="linenos">414</span></a> +</span><span id="Postgres-415"><a href="#Postgres-415"><span class="linenos">415</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Postgres-416"><a href="#Postgres-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Operator</span><span class="p">,</span> +</span><span id="Postgres-417"><a href="#Postgres-417"><span class="linenos">417</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="Postgres-418"><a href="#Postgres-418"><span class="linenos">418</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Postgres-419"><a href="#Postgres-419"><span class="linenos">419</span></a> <span class="n">operator</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> +</span><span id="Postgres-420"><a href="#Postgres-420"><span class="linenos">420</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Postgres-421"><a href="#Postgres-421"><span class="linenos">421</span></a> <span class="p">)</span> +</span><span id="Postgres-422"><a href="#Postgres-422"><span class="linenos">422</span></a> +</span><span id="Postgres-423"><a href="#Postgres-423"><span class="linenos">423</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">):</span> +</span><span id="Postgres-424"><a href="#Postgres-424"><span class="linenos">424</span></a> <span class="k">break</span> +</span><span id="Postgres-425"><a href="#Postgres-425"><span class="linenos">425</span></a> +</span><span id="Postgres-426"><a href="#Postgres-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Postgres-427"><a href="#Postgres-427"><span class="linenos">427</span></a> +</span><span id="Postgres-428"><a href="#Postgres-428"><span class="linenos">428</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Postgres-429"><a href="#Postgres-429"><span class="linenos">429</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="Postgres-430"><a href="#Postgres-430"><span class="linenos">430</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Postgres-431"><a href="#Postgres-431"><span class="linenos">431</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Postgres-432"><a href="#Postgres-432"><span class="linenos">432</span></a> +</span><span id="Postgres-433"><a href="#Postgres-433"><span class="linenos">433</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Postgres-434"><a href="#Postgres-434"><span class="linenos">434</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Postgres-435"><a href="#Postgres-435"><span class="linenos">435</span></a> +</span><span id="Postgres-436"><a href="#Postgres-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="Postgres-437"><a href="#Postgres-437"><span class="linenos">437</span></a> +</span><span id="Postgres-438"><a href="#Postgres-438"><span class="linenos">438</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="Postgres-439"><a href="#Postgres-439"><span class="linenos">439</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-440"><a href="#Postgres-440"><span class="linenos">440</span></a> <span class="n">RENAME_TABLE_WITH_DB</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-441"><a href="#Postgres-441"><span class="linenos">441</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-442"><a href="#Postgres-442"><span class="linenos">442</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-443"><a href="#Postgres-443"><span class="linenos">443</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-444"><a href="#Postgres-444"><span class="linenos">444</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-445"><a href="#Postgres-445"><span class="linenos">445</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-446"><a href="#Postgres-446"><span class="linenos">446</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> +</span><span id="Postgres-447"><a href="#Postgres-447"><span class="linenos">447</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-448"><a href="#Postgres-448"><span class="linenos">448</span></a> <span class="n">TABLESAMPLE_SEED_KEYWORD</span> <span class="o">=</span> <span class="s2">"REPEATABLE"</span> +</span><span id="Postgres-449"><a href="#Postgres-449"><span class="linenos">449</span></a> <span class="n">SUPPORTS_SELECT_INTO</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-450"><a href="#Postgres-450"><span class="linenos">450</span></a> <span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-451"><a href="#Postgres-451"><span class="linenos">451</span></a> <span class="n">SUPPORTS_UNLOGGED_TABLES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-452"><a href="#Postgres-452"><span class="linenos">452</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-453"><a href="#Postgres-453"><span class="linenos">453</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-454"><a href="#Postgres-454"><span class="linenos">454</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres-455"><a href="#Postgres-455"><span class="linenos">455</span></a> <span class="n">COPY_HAS_INTO_KEYWORD</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres-456"><a href="#Postgres-456"><span class="linenos">456</span></a> +</span><span id="Postgres-457"><a href="#Postgres-457"><span class="linenos">457</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-458"><a href="#Postgres-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span> +</span><span id="Postgres-459"><a href="#Postgres-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span> +</span><span id="Postgres-460"><a href="#Postgres-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span> +</span><span id="Postgres-461"><a href="#Postgres-461"><span class="linenos">461</span></a> <span class="p">}</span> +</span><span id="Postgres-462"><a href="#Postgres-462"><span class="linenos">462</span></a> +</span><span id="Postgres-463"><a href="#Postgres-463"><span class="linenos">463</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-464"><a href="#Postgres-464"><span class="linenos">464</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span> +</span><span id="Postgres-465"><a href="#Postgres-465"><span class="linenos">465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"SMALLINT"</span><span class="p">,</span> +</span><span id="Postgres-466"><a href="#Postgres-466"><span class="linenos">466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"REAL"</span><span class="p">,</span> +</span><span id="Postgres-467"><a href="#Postgres-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"DOUBLE PRECISION"</span><span class="p">,</span> +</span><span id="Postgres-468"><a href="#Postgres-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="Postgres-469"><a href="#Postgres-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="Postgres-470"><a href="#Postgres-470"><span class="linenos">470</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="Postgres-471"><a href="#Postgres-471"><span class="linenos">471</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Postgres-472"><a href="#Postgres-472"><span class="linenos">472</span></a> <span class="p">}</span> +</span><span id="Postgres-473"><a href="#Postgres-473"><span class="linenos">473</span></a> +</span><span id="Postgres-474"><a href="#Postgres-474"><span class="linenos">474</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-475"><a href="#Postgres-475"><span class="linenos">475</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> +</span><span id="Postgres-476"><a href="#Postgres-476"><span class="linenos">476</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">any_value_to_max_sql</span><span class="p">,</span> +</span><span id="Postgres-477"><a href="#Postgres-477"><span class="linenos">477</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Postgres-478"><a href="#Postgres-478"><span class="linenos">478</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Postgres-479"><a href="#Postgres-479"><span class="linenos">479</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> +</span><span id="Postgres-480"><a href="#Postgres-480"><span class="linenos">480</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Postgres-481"><a href="#Postgres-481"><span class="linenos">481</span></a> <span class="p">),</span> +</span><span id="Postgres-482"><a href="#Postgres-482"><span class="linenos">482</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</span><span class="p">),</span> +</span><span id="Postgres-483"><a href="#Postgres-483"><span class="linenos">483</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"@>"</span><span class="p">),</span> +</span><span id="Postgres-484"><a href="#Postgres-484"><span class="linenos">484</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"&&"</span><span class="p">),</span> +</span><span id="Postgres-485"><a href="#Postgres-485"><span class="linenos">485</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="n">filter_array_using_unnest</span><span class="p">,</span> +</span><span id="Postgres-486"><a href="#Postgres-486"><span class="linenos">486</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY_LENGTH"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span> <span class="ow">or</span> <span class="s2">"1"</span><span class="p">),</span> +</span><span id="Postgres-487"><a href="#Postgres-487"><span class="linenos">487</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">),</span> +</span><span id="Postgres-488"><a href="#Postgres-488"><span class="linenos">488</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span> +</span><span id="Postgres-489"><a href="#Postgres-489"><span class="linenos">489</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span> +</span><span id="Postgres-490"><a href="#Postgres-490"><span class="linenos">490</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">,</span> +</span><span id="Postgres-491"><a href="#Postgres-491"><span class="linenos">491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentUser</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_USER"</span><span class="p">,</span> +</span><span id="Postgres-492"><a href="#Postgres-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> +</span><span id="Postgres-493"><a href="#Postgres-493"><span class="linenos">493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> +</span><span id="Postgres-494"><a href="#Postgres-494"><span class="linenos">494</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span> +</span><span id="Postgres-495"><a href="#Postgres-495"><span class="linenos">495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"-"</span><span class="p">),</span> +</span><span id="Postgres-496"><a href="#Postgres-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> +</span><span id="Postgres-497"><a href="#Postgres-497"><span class="linenos">497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span> +</span><span id="Postgres-498"><a href="#Postgres-498"><span class="linenos">498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">,</span> <span class="s2">"->"</span><span class="p">),</span> +</span><span id="Postgres-499"><a href="#Postgres-499"><span class="linenos">499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">,</span> <span class="s2">"->>"</span><span class="p">),</span> +</span><span id="Postgres-500"><a href="#Postgres-500"><span class="linenos">500</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>"</span><span class="p">),</span> +</span><span id="Postgres-501"><a href="#Postgres-501"><span class="linenos">501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>>"</span><span class="p">),</span> +</span><span id="Postgres-502"><a href="#Postgres-502"><span class="linenos">502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"?"</span><span class="p">),</span> +</span><span id="Postgres-503"><a href="#Postgres-503"><span class="linenos">503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">)),</span> +</span><span id="Postgres-504"><a href="#Postgres-504"><span class="linenos">504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span> +</span><span id="Postgres-505"><a href="#Postgres-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Postgres-506"><a href="#Postgres-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> +</span><span id="Postgres-507"><a href="#Postgres-507"><span class="linenos">507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">:</span> <span class="n">no_last_day_sql</span><span class="p">,</span> +</span><span id="Postgres-508"><a href="#Postgres-508"><span class="linenos">508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_OR"</span><span class="p">),</span> +</span><span id="Postgres-509"><a href="#Postgres-509"><span class="linenos">509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_AND"</span><span class="p">),</span> +</span><span id="Postgres-510"><a href="#Postgres-510"><span class="linenos">510</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span> +</span><span id="Postgres-511"><a href="#Postgres-511"><span class="linenos">511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span> +</span><span id="Postgres-512"><a href="#Postgres-512"><span class="linenos">512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span> +</span><span id="Postgres-513"><a href="#Postgres-513"><span class="linenos">513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> <span class="n">merge_without_target_sql</span><span class="p">,</span> +</span><span id="Postgres-514"><a href="#Postgres-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</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">"PARTITION BY </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Postgres-515"><a href="#Postgres-515"><span class="linenos">515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="Postgres-516"><a href="#Postgres-516"><span class="linenos">516</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> +</span><span id="Postgres-517"><a href="#Postgres-517"><span class="linenos">517</span></a> <span class="p">),</span> +</span><span id="Postgres-518"><a href="#Postgres-518"><span class="linenos">518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="Postgres-519"><a href="#Postgres-519"><span class="linenos">519</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> +</span><span id="Postgres-520"><a href="#Postgres-520"><span class="linenos">520</span></a> <span class="p">),</span> +</span><span id="Postgres-521"><a href="#Postgres-521"><span class="linenos">521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span> +</span><span id="Postgres-522"><a href="#Postgres-522"><span class="linenos">522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">),</span> +</span><span id="Postgres-523"><a href="#Postgres-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"RANDOM"</span><span class="p">),</span> +</span><span id="Postgres-524"><a href="#Postgres-524"><span class="linenos">524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">),</span> +</span><span id="Postgres-525"><a href="#Postgres-525"><span class="linenos">525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~*"</span><span class="p">),</span> +</span><span id="Postgres-526"><a href="#Postgres-526"><span class="linenos">526</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="Postgres-527"><a href="#Postgres-527"><span class="linenos">527</span></a> <span class="p">[</span> +</span><span id="Postgres-528"><a href="#Postgres-528"><span class="linenos">528</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span> +</span><span id="Postgres-529"><a href="#Postgres-529"><span class="linenos">529</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span> +</span><span id="Postgres-530"><a href="#Postgres-530"><span class="linenos">530</span></a> <span class="p">]</span> +</span><span id="Postgres-531"><a href="#Postgres-531"><span class="linenos">531</span></a> <span class="p">),</span> +</span><span id="Postgres-532"><a href="#Postgres-532"><span class="linenos">532</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="Postgres-533"><a href="#Postgres-533"><span class="linenos">533</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_DATE"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="Postgres-534"><a href="#Postgres-534"><span class="linenos">534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="Postgres-535"><a href="#Postgres-535"><span class="linenos">535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span> +</span><span id="Postgres-536"><a href="#Postgres-536"><span class="linenos">536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span> +</span><span id="Postgres-537"><a href="#Postgres-537"><span class="linenos">537</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIME"</span><span class="p">),</span> +</span><span id="Postgres-538"><a href="#Postgres-538"><span class="linenos">538</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIMESTAMP"</span><span class="p">),</span> +</span><span id="Postgres-539"><a href="#Postgres-539"><span class="linenos">539</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Postgres-540"><a href="#Postgres-540"><span class="linenos">540</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span> +</span><span id="Postgres-541"><a href="#Postgres-541"><span class="linenos">541</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_CHAR"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="Postgres-542"><a href="#Postgres-542"><span class="linenos">542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> +</span><span id="Postgres-543"><a href="#Postgres-543"><span class="linenos">543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> +</span><span id="Postgres-544"><a href="#Postgres-544"><span class="linenos">544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> +</span><span id="Postgres-545"><a href="#Postgres-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> +</span><span id="Postgres-546"><a href="#Postgres-546"><span class="linenos">546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> +</span><span id="Postgres-547"><a href="#Postgres-547"><span class="linenos">547</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> +</span><span id="Postgres-548"><a href="#Postgres-548"><span class="linenos">548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="Postgres-549"><a href="#Postgres-549"><span class="linenos">549</span></a> <span class="s2">"DATE_PART"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"epoch"</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> +</span><span id="Postgres-550"><a href="#Postgres-550"><span class="linenos">550</span></a> <span class="p">),</span> +</span><span id="Postgres-551"><a href="#Postgres-551"><span class="linenos">551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_POP"</span><span class="p">),</span> +</span><span id="Postgres-552"><a href="#Postgres-552"><span class="linenos">552</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_SAMP"</span><span class="p">),</span> +</span><span id="Postgres-553"><a href="#Postgres-553"><span class="linenos">553</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span> +</span><span id="Postgres-554"><a href="#Postgres-554"><span class="linenos">554</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span> +</span><span id="Postgres-555"><a href="#Postgres-555"><span class="linenos">555</span></a> <span class="p">}</span> +</span><span id="Postgres-556"><a href="#Postgres-556"><span class="linenos">556</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> +</span><span id="Postgres-557"><a href="#Postgres-557"><span class="linenos">557</span></a> +</span><span id="Postgres-558"><a href="#Postgres-558"><span class="linenos">558</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-559"><a href="#Postgres-559"><span class="linenos">559</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span> +</span><span id="Postgres-560"><a href="#Postgres-560"><span class="linenos">560</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Postgres-561"><a href="#Postgres-561"><span class="linenos">561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> +</span><span id="Postgres-562"><a href="#Postgres-562"><span class="linenos">562</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> +</span><span id="Postgres-563"><a href="#Postgres-563"><span class="linenos">563</span></a> <span class="p">}</span> +</span><span id="Postgres-564"><a href="#Postgres-564"><span class="linenos">564</span></a> +</span><span id="Postgres-565"><a href="#Postgres-565"><span class="linenos">565</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-566"><a href="#Postgres-566"><span class="linenos">566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="Postgres-567"><a href="#Postgres-567"><span class="linenos">567</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Postgres-568"><a href="#Postgres-568"><span class="linenos">568</span></a> +</span><span id="Postgres-569"><a href="#Postgres-569"><span class="linenos">569</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-570"><a href="#Postgres-570"><span class="linenos">570</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="Postgres-571"><a href="#Postgres-571"><span class="linenos">571</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Postgres-572"><a href="#Postgres-572"><span class="linenos">572</span></a> +</span><span id="Postgres-573"><a href="#Postgres-573"><span class="linenos">573</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-574"><a href="#Postgres-574"><span class="linenos">574</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Postgres-575"><a href="#Postgres-575"><span class="linenos">575</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="Postgres-576"><a href="#Postgres-576"><span class="linenos">576</span></a> +</span><span id="Postgres-577"><a href="#Postgres-577"><span class="linenos">577</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Postgres-578"><a href="#Postgres-578"><span class="linenos">578</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> +</span><span id="Postgres-579"><a href="#Postgres-579"><span class="linenos">579</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="Postgres-580"><a href="#Postgres-580"><span class="linenos">580</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Postgres-581"><a href="#Postgres-581"><span class="linenos">581</span></a> +</span><span id="Postgres-582"><a href="#Postgres-582"><span class="linenos">582</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> +</span><span id="Postgres-583"><a href="#Postgres-583"><span class="linenos">583</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Postgres-584"><a href="#Postgres-584"><span class="linenos">584</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres-585"><a href="#Postgres-585"><span class="linenos">585</span></a> +</span><span id="Postgres-586"><a href="#Postgres-586"><span class="linenos">586</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> +</span><span id="Postgres-587"><a href="#Postgres-587"><span class="linenos">587</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> +</span><span id="Postgres-588"><a href="#Postgres-588"><span class="linenos">588</span></a> +</span><span id="Postgres-589"><a href="#Postgres-589"><span class="linenos">589</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres-590"><a href="#Postgres-590"><span class="linenos">590</span></a> +</span><span id="Postgres-591"><a href="#Postgres-591"><span class="linenos">591</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Postgres-592"><a href="#Postgres-592"><span class="linenos">592</span></a> +</span><span id="Postgres-593"><a href="#Postgres-593"><span class="linenos">593</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-594"><a href="#Postgres-594"><span class="linenos">594</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> +</span><span id="Postgres-595"><a href="#Postgres-595"><span class="linenos">595</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> +</span><span id="Postgres-596"><a href="#Postgres-596"><span class="linenos">596</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Postgres-597"><a href="#Postgres-597"><span class="linenos">597</span></a> +</span><span id="Postgres-598"><a href="#Postgres-598"><span class="linenos">598</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Postgres-599"><a href="#Postgres-599"><span class="linenos">599</span></a> +</span><span id="Postgres-600"><a href="#Postgres-600"><span class="linenos">600</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-601"><a href="#Postgres-601"><span class="linenos">601</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Postgres-602"><a href="#Postgres-602"><span class="linenos">602</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> +</span><span id="Postgres-603"><a href="#Postgres-603"><span class="linenos">603</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Postgres-604"><a href="#Postgres-604"><span class="linenos">604</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="Postgres-605"><a href="#Postgres-605"><span class="linenos">605</span></a> +</span><span id="Postgres-606"><a href="#Postgres-606"><span class="linenos">606</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-607"><a href="#Postgres-607"><span class="linenos">607</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Postgres-608"><a href="#Postgres-608"><span class="linenos">608</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> </span><span id="Postgres-609"><a href="#Postgres-609"><span class="linenos">609</span></a> -</span><span id="Postgres-610"><a href="#Postgres-610"><span class="linenos">610</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres-611"><a href="#Postgres-611"><span class="linenos">611</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Postgres-612"><a href="#Postgres-612"><span class="linenos">612</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> -</span><span id="Postgres-613"><a href="#Postgres-613"><span class="linenos">613</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Postgres-614"><a href="#Postgres-614"><span class="linenos">614</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="Postgres-610"><a href="#Postgres-610"><span class="linenos">610</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> +</span><span id="Postgres-611"><a href="#Postgres-611"><span class="linenos">611</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres-612"><a href="#Postgres-612"><span class="linenos">612</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> +</span><span id="Postgres-613"><a href="#Postgres-613"><span class="linenos">613</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres-614"><a href="#Postgres-614"><span class="linenos">614</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> </span><span id="Postgres-615"><a href="#Postgres-615"><span class="linenos">615</span></a> -</span><span id="Postgres-616"><a href="#Postgres-616"><span class="linenos">616</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres-617"><a href="#Postgres-617"><span class="linenos">617</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Postgres-618"><a href="#Postgres-618"><span class="linenos">618</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres-619"><a href="#Postgres-619"><span class="linenos">619</span></a> -</span><span id="Postgres-620"><a href="#Postgres-620"><span class="linenos">620</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> -</span><span id="Postgres-621"><a href="#Postgres-621"><span class="linenos">621</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres-622"><a href="#Postgres-622"><span class="linenos">622</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> -</span><span id="Postgres-623"><a href="#Postgres-623"><span class="linenos">623</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres-624"><a href="#Postgres-624"><span class="linenos">624</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> -</span><span id="Postgres-625"><a href="#Postgres-625"><span class="linenos">625</span></a> -</span><span id="Postgres-626"><a href="#Postgres-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres-616"><a href="#Postgres-616"><span class="linenos">616</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres-617"><a href="#Postgres-617"><span class="linenos">617</span></a> +</span><span id="Postgres-618"><a href="#Postgres-618"><span class="linenos">618</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres-619"><a href="#Postgres-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">):</span> +</span><span id="Postgres-620"><a href="#Postgres-620"><span class="linenos">620</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Postgres-621"><a href="#Postgres-621"><span class="linenos">621</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"values"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Postgres-622"><a href="#Postgres-622"><span class="linenos">622</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Postgres-623"><a href="#Postgres-623"><span class="linenos">623</span></a> <span class="k">return</span> <span class="s2">"ARRAY"</span> +</span><span id="Postgres-624"><a href="#Postgres-624"><span class="linenos">624</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1748,69 +1756,69 @@ Possible values: <code>"nulls_are_small"</code>, <code>"nulls_are_large"</code>, </div> <a class="headerlink" href="#Postgres.Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Tokenizer-286"><a href="#Postgres.Tokenizer-286"><span class="linenos">286</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> -</span><span id="Postgres.Tokenizer-287"><a href="#Postgres.Tokenizer-287"><span class="linenos">287</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"b'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"B'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="Postgres.Tokenizer-288"><a href="#Postgres.Tokenizer-288"><span class="linenos">288</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"x'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="Postgres.Tokenizer-289"><a href="#Postgres.Tokenizer-289"><span class="linenos">289</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"e'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"E'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> -</span><span id="Postgres.Tokenizer-290"><a href="#Postgres.Tokenizer-290"><span class="linenos">290</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> -</span><span id="Postgres.Tokenizer-291"><a href="#Postgres.Tokenizer-291"><span class="linenos">291</span></a> -</span><span id="Postgres.Tokenizer-292"><a href="#Postgres.Tokenizer-292"><span class="linenos">292</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Tokenizer-293"><a href="#Postgres.Tokenizer-293"><span class="linenos">293</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="Postgres.Tokenizer-294"><a href="#Postgres.Tokenizer-294"><span class="linenos">294</span></a> -</span><span id="Postgres.Tokenizer-295"><a href="#Postgres.Tokenizer-295"><span class="linenos">295</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Tokenizer-296"><a href="#Postgres.Tokenizer-296"><span class="linenos">296</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-297"><a href="#Postgres.Tokenizer-297"><span class="linenos">297</span></a> <span class="s2">"~~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-298"><a href="#Postgres.Tokenizer-298"><span class="linenos">298</span></a> <span class="s2">"~~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-299"><a href="#Postgres.Tokenizer-299"><span class="linenos">299</span></a> <span class="s2">"~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-300"><a href="#Postgres.Tokenizer-300"><span class="linenos">300</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-301"><a href="#Postgres.Tokenizer-301"><span class="linenos">301</span></a> <span class="s2">"@@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-302"><a href="#Postgres.Tokenizer-302"><span class="linenos">302</span></a> <span class="s2">"@>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-303"><a href="#Postgres.Tokenizer-303"><span class="linenos">303</span></a> <span class="s2">"<@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-304"><a href="#Postgres.Tokenizer-304"><span class="linenos">304</span></a> <span class="s2">"|/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-305"><a href="#Postgres.Tokenizer-305"><span class="linenos">305</span></a> <span class="s2">"||/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-306"><a href="#Postgres.Tokenizer-306"><span class="linenos">306</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-307"><a href="#Postgres.Tokenizer-307"><span class="linenos">307</span></a> <span class="s2">"BEGIN TRANSACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-308"><a href="#Postgres.Tokenizer-308"><span class="linenos">308</span></a> <span class="s2">"BIGSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-309"><a href="#Postgres.Tokenizer-309"><span class="linenos">309</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-310"><a href="#Postgres.Tokenizer-310"><span class="linenos">310</span></a> <span class="s2">"CONSTRAINT TRIGGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-311"><a href="#Postgres.Tokenizer-311"><span class="linenos">311</span></a> <span class="s2">"CSTRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-312"><a href="#Postgres.Tokenizer-312"><span class="linenos">312</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-313"><a href="#Postgres.Tokenizer-313"><span class="linenos">313</span></a> <span class="s2">"DO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-314"><a href="#Postgres.Tokenizer-314"><span class="linenos">314</span></a> <span class="s2">"EXEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-315"><a href="#Postgres.Tokenizer-315"><span class="linenos">315</span></a> <span class="s2">"HSTORE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-316"><a href="#Postgres.Tokenizer-316"><span class="linenos">316</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-317"><a href="#Postgres.Tokenizer-317"><span class="linenos">317</span></a> <span class="s2">"MONEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-318"><a href="#Postgres.Tokenizer-318"><span class="linenos">318</span></a> <span class="s2">"NAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-319"><a href="#Postgres.Tokenizer-319"><span class="linenos">319</span></a> <span class="s2">"OID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-320"><a href="#Postgres.Tokenizer-320"><span class="linenos">320</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-321"><a href="#Postgres.Tokenizer-321"><span class="linenos">321</span></a> <span class="s2">"OPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-322"><a href="#Postgres.Tokenizer-322"><span class="linenos">322</span></a> <span class="s2">"REFRESH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-323"><a href="#Postgres.Tokenizer-323"><span class="linenos">323</span></a> <span class="s2">"REINDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-324"><a href="#Postgres.Tokenizer-324"><span class="linenos">324</span></a> <span class="s2">"RESET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-325"><a href="#Postgres.Tokenizer-325"><span class="linenos">325</span></a> <span class="s2">"REVOKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-326"><a href="#Postgres.Tokenizer-326"><span class="linenos">326</span></a> <span class="s2">"SERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-327"><a href="#Postgres.Tokenizer-327"><span class="linenos">327</span></a> <span class="s2">"SMALLSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-328"><a href="#Postgres.Tokenizer-328"><span class="linenos">328</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-329"><a href="#Postgres.Tokenizer-329"><span class="linenos">329</span></a> <span class="s2">"REGCLASS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-330"><a href="#Postgres.Tokenizer-330"><span class="linenos">330</span></a> <span class="s2">"REGCOLLATION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-331"><a href="#Postgres.Tokenizer-331"><span class="linenos">331</span></a> <span class="s2">"REGCONFIG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-332"><a href="#Postgres.Tokenizer-332"><span class="linenos">332</span></a> <span class="s2">"REGDICTIONARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-333"><a href="#Postgres.Tokenizer-333"><span class="linenos">333</span></a> <span class="s2">"REGNAMESPACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-334"><a href="#Postgres.Tokenizer-334"><span class="linenos">334</span></a> <span class="s2">"REGOPER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-335"><a href="#Postgres.Tokenizer-335"><span class="linenos">335</span></a> <span class="s2">"REGOPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-336"><a href="#Postgres.Tokenizer-336"><span class="linenos">336</span></a> <span class="s2">"REGPROC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-337"><a href="#Postgres.Tokenizer-337"><span class="linenos">337</span></a> <span class="s2">"REGPROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-338"><a href="#Postgres.Tokenizer-338"><span class="linenos">338</span></a> <span class="s2">"REGROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-339"><a href="#Postgres.Tokenizer-339"><span class="linenos">339</span></a> <span class="s2">"REGTYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-340"><a href="#Postgres.Tokenizer-340"><span class="linenos">340</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-341"><a href="#Postgres.Tokenizer-341"><span class="linenos">341</span></a> <span class="p">}</span> -</span><span id="Postgres.Tokenizer-342"><a href="#Postgres.Tokenizer-342"><span class="linenos">342</span></a> -</span><span id="Postgres.Tokenizer-343"><a href="#Postgres.Tokenizer-343"><span class="linenos">343</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Tokenizer-344"><a href="#Postgres.Tokenizer-344"><span class="linenos">344</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-345"><a href="#Postgres.Tokenizer-345"><span class="linenos">345</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> -</span><span id="Postgres.Tokenizer-346"><a href="#Postgres.Tokenizer-346"><span class="linenos">346</span></a> <span class="p">}</span> -</span><span id="Postgres.Tokenizer-347"><a href="#Postgres.Tokenizer-347"><span class="linenos">347</span></a> -</span><span id="Postgres.Tokenizer-348"><a href="#Postgres.Tokenizer-348"><span class="linenos">348</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"$"</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Tokenizer-277"><a href="#Postgres.Tokenizer-277"><span class="linenos">277</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> +</span><span id="Postgres.Tokenizer-278"><a href="#Postgres.Tokenizer-278"><span class="linenos">278</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"b'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"B'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Postgres.Tokenizer-279"><a href="#Postgres.Tokenizer-279"><span class="linenos">279</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"x'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Postgres.Tokenizer-280"><a href="#Postgres.Tokenizer-280"><span class="linenos">280</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"e'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"E'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Postgres.Tokenizer-281"><a href="#Postgres.Tokenizer-281"><span class="linenos">281</span></a> <span class="n">HEREDOC_STRINGS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> +</span><span id="Postgres.Tokenizer-282"><a href="#Postgres.Tokenizer-282"><span class="linenos">282</span></a> +</span><span id="Postgres.Tokenizer-283"><a href="#Postgres.Tokenizer-283"><span class="linenos">283</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Tokenizer-284"><a href="#Postgres.Tokenizer-284"><span class="linenos">284</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> +</span><span id="Postgres.Tokenizer-285"><a href="#Postgres.Tokenizer-285"><span class="linenos">285</span></a> +</span><span id="Postgres.Tokenizer-286"><a href="#Postgres.Tokenizer-286"><span class="linenos">286</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Tokenizer-287"><a href="#Postgres.Tokenizer-287"><span class="linenos">287</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-288"><a href="#Postgres.Tokenizer-288"><span class="linenos">288</span></a> <span class="s2">"~~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-289"><a href="#Postgres.Tokenizer-289"><span class="linenos">289</span></a> <span class="s2">"~~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-290"><a href="#Postgres.Tokenizer-290"><span class="linenos">290</span></a> <span class="s2">"~*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-291"><a href="#Postgres.Tokenizer-291"><span class="linenos">291</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-292"><a href="#Postgres.Tokenizer-292"><span class="linenos">292</span></a> <span class="s2">"@@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-293"><a href="#Postgres.Tokenizer-293"><span class="linenos">293</span></a> <span class="s2">"@>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-294"><a href="#Postgres.Tokenizer-294"><span class="linenos">294</span></a> <span class="s2">"<@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-295"><a href="#Postgres.Tokenizer-295"><span class="linenos">295</span></a> <span class="s2">"|/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-296"><a href="#Postgres.Tokenizer-296"><span class="linenos">296</span></a> <span class="s2">"||/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-297"><a href="#Postgres.Tokenizer-297"><span class="linenos">297</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-298"><a href="#Postgres.Tokenizer-298"><span class="linenos">298</span></a> <span class="s2">"BEGIN TRANSACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-299"><a href="#Postgres.Tokenizer-299"><span class="linenos">299</span></a> <span class="s2">"BIGSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-300"><a href="#Postgres.Tokenizer-300"><span class="linenos">300</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-301"><a href="#Postgres.Tokenizer-301"><span class="linenos">301</span></a> <span class="s2">"CONSTRAINT TRIGGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-302"><a href="#Postgres.Tokenizer-302"><span class="linenos">302</span></a> <span class="s2">"CSTRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-303"><a href="#Postgres.Tokenizer-303"><span class="linenos">303</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-304"><a href="#Postgres.Tokenizer-304"><span class="linenos">304</span></a> <span class="s2">"DO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-305"><a href="#Postgres.Tokenizer-305"><span class="linenos">305</span></a> <span class="s2">"EXEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-306"><a href="#Postgres.Tokenizer-306"><span class="linenos">306</span></a> <span class="s2">"HSTORE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-307"><a href="#Postgres.Tokenizer-307"><span class="linenos">307</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-308"><a href="#Postgres.Tokenizer-308"><span class="linenos">308</span></a> <span class="s2">"MONEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-309"><a href="#Postgres.Tokenizer-309"><span class="linenos">309</span></a> <span class="s2">"NAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-310"><a href="#Postgres.Tokenizer-310"><span class="linenos">310</span></a> <span class="s2">"OID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-311"><a href="#Postgres.Tokenizer-311"><span class="linenos">311</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-312"><a href="#Postgres.Tokenizer-312"><span class="linenos">312</span></a> <span class="s2">"OPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-313"><a href="#Postgres.Tokenizer-313"><span class="linenos">313</span></a> <span class="s2">"REFRESH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-314"><a href="#Postgres.Tokenizer-314"><span class="linenos">314</span></a> <span class="s2">"REINDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-315"><a href="#Postgres.Tokenizer-315"><span class="linenos">315</span></a> <span class="s2">"RESET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-316"><a href="#Postgres.Tokenizer-316"><span class="linenos">316</span></a> <span class="s2">"REVOKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-317"><a href="#Postgres.Tokenizer-317"><span class="linenos">317</span></a> <span class="s2">"SERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-318"><a href="#Postgres.Tokenizer-318"><span class="linenos">318</span></a> <span class="s2">"SMALLSERIAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-319"><a href="#Postgres.Tokenizer-319"><span class="linenos">319</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-320"><a href="#Postgres.Tokenizer-320"><span class="linenos">320</span></a> <span class="s2">"REGCLASS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-321"><a href="#Postgres.Tokenizer-321"><span class="linenos">321</span></a> <span class="s2">"REGCOLLATION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-322"><a href="#Postgres.Tokenizer-322"><span class="linenos">322</span></a> <span class="s2">"REGCONFIG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-323"><a href="#Postgres.Tokenizer-323"><span class="linenos">323</span></a> <span class="s2">"REGDICTIONARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-324"><a href="#Postgres.Tokenizer-324"><span class="linenos">324</span></a> <span class="s2">"REGNAMESPACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-325"><a href="#Postgres.Tokenizer-325"><span class="linenos">325</span></a> <span class="s2">"REGOPER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-326"><a href="#Postgres.Tokenizer-326"><span class="linenos">326</span></a> <span class="s2">"REGOPERATOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-327"><a href="#Postgres.Tokenizer-327"><span class="linenos">327</span></a> <span class="s2">"REGPROC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-328"><a href="#Postgres.Tokenizer-328"><span class="linenos">328</span></a> <span class="s2">"REGPROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-329"><a href="#Postgres.Tokenizer-329"><span class="linenos">329</span></a> <span class="s2">"REGROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-330"><a href="#Postgres.Tokenizer-330"><span class="linenos">330</span></a> <span class="s2">"REGTYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-331"><a href="#Postgres.Tokenizer-331"><span class="linenos">331</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-332"><a href="#Postgres.Tokenizer-332"><span class="linenos">332</span></a> <span class="p">}</span> +</span><span id="Postgres.Tokenizer-333"><a href="#Postgres.Tokenizer-333"><span class="linenos">333</span></a> +</span><span id="Postgres.Tokenizer-334"><a href="#Postgres.Tokenizer-334"><span class="linenos">334</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Tokenizer-335"><a href="#Postgres.Tokenizer-335"><span class="linenos">335</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-336"><a href="#Postgres.Tokenizer-336"><span class="linenos">336</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> +</span><span id="Postgres.Tokenizer-337"><a href="#Postgres.Tokenizer-337"><span class="linenos">337</span></a> <span class="p">}</span> +</span><span id="Postgres.Tokenizer-338"><a href="#Postgres.Tokenizer-338"><span class="linenos">338</span></a> +</span><span id="Postgres.Tokenizer-339"><a href="#Postgres.Tokenizer-339"><span class="linenos">339</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"$"</span><span class="p">}</span> </span></pre></div> @@ -1892,7 +1900,7 @@ Possible values: <code>"nulls_are_small"</code>, <code>"nulls_are_large"</code>, <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Postgres.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Postgres.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.COMMAND: 'COMMAND'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.BIGINT: 'BIGINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.DOUBLE: 'DOUBLE'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '~~': <TokenType.LIKE: 'LIKE'>, '~~*': <TokenType.ILIKE: 'ILIKE'>, '~*': <TokenType.IRLIKE: 'IRLIKE'>, '~': <TokenType.RLIKE: 'RLIKE'>, '@@': <TokenType.DAT: 'DAT'>, '@>': <TokenType.AT_GT: 'AT_GT'>, '<@': <TokenType.LT_AT: 'LT_AT'>, '|/': <TokenType.PIPE_SLASH: 'PIPE_SLASH'>, '||/': <TokenType.DPIPE_SLASH: 'DPIPE_SLASH'>, 'BEGIN TRANSACTION': <TokenType.BEGIN: 'BEGIN'>, 'BIGSERIAL': <TokenType.BIGSERIAL: 'BIGSERIAL'>, 'CHARACTER VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'CONSTRAINT TRIGGER': <TokenType.COMMAND: 'COMMAND'>, 'CSTRING': <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, 'DECLARE': <TokenType.COMMAND: 'COMMAND'>, 'DO': <TokenType.COMMAND: 'COMMAND'>, 'EXEC': <TokenType.COMMAND: 'COMMAND'>, 'HSTORE': <TokenType.HSTORE: 'HSTORE'>, 'MONEY': <TokenType.MONEY: 'MONEY'>, 'NAME': <TokenType.NAME: 'NAME'>, 'OID': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'ONLY': <TokenType.ONLY: 'ONLY'>, 'OPERATOR': <TokenType.OPERATOR: 'OPERATOR'>, 'REFRESH': <TokenType.COMMAND: 'COMMAND'>, 'REINDEX': <TokenType.COMMAND: 'COMMAND'>, 'RESET': <TokenType.COMMAND: 'COMMAND'>, 'REVOKE': <TokenType.COMMAND: 'COMMAND'>, 'SERIAL': <TokenType.SERIAL: 'SERIAL'>, 'SMALLSERIAL': <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, 'REGCLASS': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCOLLATION': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCONFIG': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGDICTIONARY': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGNAMESPACE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPER': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPERATOR': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROC': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROCEDURE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGROLE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGTYPE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>}</span> + <label class="view-value-button pdoc-button" for="Postgres.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.COMMAND: 'COMMAND'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.BIGINT: 'BIGINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.DOUBLE: 'DOUBLE'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '~~': <TokenType.LIKE: 'LIKE'>, '~~*': <TokenType.ILIKE: 'ILIKE'>, '~*': <TokenType.IRLIKE: 'IRLIKE'>, '~': <TokenType.RLIKE: 'RLIKE'>, '@@': <TokenType.DAT: 'DAT'>, '@>': <TokenType.AT_GT: 'AT_GT'>, '<@': <TokenType.LT_AT: 'LT_AT'>, '|/': <TokenType.PIPE_SLASH: 'PIPE_SLASH'>, '||/': <TokenType.DPIPE_SLASH: 'DPIPE_SLASH'>, 'BEGIN TRANSACTION': <TokenType.BEGIN: 'BEGIN'>, 'BIGSERIAL': <TokenType.BIGSERIAL: 'BIGSERIAL'>, 'CHARACTER VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'CONSTRAINT TRIGGER': <TokenType.COMMAND: 'COMMAND'>, 'CSTRING': <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, 'DECLARE': <TokenType.COMMAND: 'COMMAND'>, 'DO': <TokenType.COMMAND: 'COMMAND'>, 'EXEC': <TokenType.COMMAND: 'COMMAND'>, 'HSTORE': <TokenType.HSTORE: 'HSTORE'>, 'MONEY': <TokenType.MONEY: 'MONEY'>, 'NAME': <TokenType.NAME: 'NAME'>, 'OID': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'ONLY': <TokenType.ONLY: 'ONLY'>, 'OPERATOR': <TokenType.OPERATOR: 'OPERATOR'>, 'REFRESH': <TokenType.COMMAND: 'COMMAND'>, 'REINDEX': <TokenType.COMMAND: 'COMMAND'>, 'RESET': <TokenType.COMMAND: 'COMMAND'>, 'REVOKE': <TokenType.COMMAND: 'COMMAND'>, 'SERIAL': <TokenType.SERIAL: 'SERIAL'>, 'SMALLSERIAL': <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, 'REGCLASS': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCOLLATION': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCONFIG': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGDICTIONARY': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGNAMESPACE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPER': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPERATOR': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROC': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROCEDURE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGROLE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGTYPE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>}</span> </div> @@ -1965,102 +1973,102 @@ Possible values: <code>"nulls_are_small"</code>, <code>"nulls_are_large"</code>, </div> <a class="headerlink" href="#Postgres.Parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Parser-350"><a href="#Postgres.Parser-350"><span class="linenos">350</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> -</span><span id="Postgres.Parser-351"><a href="#Postgres.Parser-351"><span class="linenos">351</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-352"><a href="#Postgres.Parser-352"><span class="linenos">352</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">PROPERTY_PARSERS</span><span class="p">,</span> -</span><span id="Postgres.Parser-353"><a href="#Postgres.Parser-353"><span class="linenos">353</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetConfigProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">()),</span> -</span><span id="Postgres.Parser-354"><a href="#Postgres.Parser-354"><span class="linenos">354</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-355"><a href="#Postgres.Parser-355"><span class="linenos">355</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"INPUT"</span><span class="p">)</span> -</span><span id="Postgres.Parser-356"><a href="#Postgres.Parser-356"><span class="linenos">356</span></a> -</span><span id="Postgres.Parser-357"><a href="#Postgres.Parser-357"><span class="linenos">357</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-358"><a href="#Postgres.Parser-358"><span class="linenos">358</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> -</span><span id="Postgres.Parser-359"><a href="#Postgres.Parser-359"><span class="linenos">359</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">:</span> <span class="n">build_timestamp_trunc</span><span class="p">,</span> -</span><span id="Postgres.Parser-360"><a href="#Postgres.Parser-360"><span class="linenos">360</span></a> <span class="s2">"GENERATE_SERIES"</span><span class="p">:</span> <span class="n">_build_generate_series</span><span class="p">,</span> -</span><span id="Postgres.Parser-361"><a href="#Postgres.Parser-361"><span class="linenos">361</span></a> <span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">),</span> -</span><span id="Postgres.Parser-362"><a href="#Postgres.Parser-362"><span class="linenos">362</span></a> <span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">),</span> -</span><span id="Postgres.Parser-363"><a href="#Postgres.Parser-363"><span class="linenos">363</span></a> <span class="s2">"MAKE_TIME"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres.Parser-364"><a href="#Postgres.Parser-364"><span class="linenos">364</span></a> <span class="s2">"MAKE_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres.Parser-365"><a href="#Postgres.Parser-365"><span class="linenos">365</span></a> <span class="s2">"NOW"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres.Parser-366"><a href="#Postgres.Parser-366"><span class="linenos">366</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">:</span> <span class="n">_build_regexp_replace</span><span class="p">,</span> -</span><span id="Postgres.Parser-367"><a href="#Postgres.Parser-367"><span class="linenos">367</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">),</span> -</span><span id="Postgres.Parser-368"><a href="#Postgres.Parser-368"><span class="linenos">368</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_build_to_timestamp</span><span class="p">,</span> -</span><span id="Postgres.Parser-369"><a href="#Postgres.Parser-369"><span class="linenos">369</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Postgres.Parser-370"><a href="#Postgres.Parser-370"><span class="linenos">370</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-371"><a href="#Postgres.Parser-371"><span class="linenos">371</span></a> -</span><span id="Postgres.Parser-372"><a href="#Postgres.Parser-372"><span class="linenos">372</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-373"><a href="#Postgres.Parser-373"><span class="linenos">373</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> -</span><span id="Postgres.Parser-374"><a href="#Postgres.Parser-374"><span class="linenos">374</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Parser-341"><a href="#Postgres.Parser-341"><span class="linenos">341</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="Postgres.Parser-342"><a href="#Postgres.Parser-342"><span class="linenos">342</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-343"><a href="#Postgres.Parser-343"><span class="linenos">343</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">PROPERTY_PARSERS</span><span class="p">,</span> +</span><span id="Postgres.Parser-344"><a href="#Postgres.Parser-344"><span class="linenos">344</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetConfigProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">()),</span> +</span><span id="Postgres.Parser-345"><a href="#Postgres.Parser-345"><span class="linenos">345</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-346"><a href="#Postgres.Parser-346"><span class="linenos">346</span></a> <span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"INPUT"</span><span class="p">)</span> +</span><span id="Postgres.Parser-347"><a href="#Postgres.Parser-347"><span class="linenos">347</span></a> +</span><span id="Postgres.Parser-348"><a href="#Postgres.Parser-348"><span class="linenos">348</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-349"><a href="#Postgres.Parser-349"><span class="linenos">349</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> +</span><span id="Postgres.Parser-350"><a href="#Postgres.Parser-350"><span class="linenos">350</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">:</span> <span class="n">build_timestamp_trunc</span><span class="p">,</span> +</span><span id="Postgres.Parser-351"><a href="#Postgres.Parser-351"><span class="linenos">351</span></a> <span class="s2">"GENERATE_SERIES"</span><span class="p">:</span> <span class="n">_build_generate_series</span><span class="p">,</span> +</span><span id="Postgres.Parser-352"><a href="#Postgres.Parser-352"><span class="linenos">352</span></a> <span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">),</span> +</span><span id="Postgres.Parser-353"><a href="#Postgres.Parser-353"><span class="linenos">353</span></a> <span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">),</span> +</span><span id="Postgres.Parser-354"><a href="#Postgres.Parser-354"><span class="linenos">354</span></a> <span class="s2">"MAKE_TIME"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres.Parser-355"><a href="#Postgres.Parser-355"><span class="linenos">355</span></a> <span class="s2">"MAKE_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres.Parser-356"><a href="#Postgres.Parser-356"><span class="linenos">356</span></a> <span class="s2">"NOW"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres.Parser-357"><a href="#Postgres.Parser-357"><span class="linenos">357</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">:</span> <span class="n">_build_regexp_replace</span><span class="p">,</span> +</span><span id="Postgres.Parser-358"><a href="#Postgres.Parser-358"><span class="linenos">358</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">build_formatted_time</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">"postgres"</span><span class="p">),</span> +</span><span id="Postgres.Parser-359"><a href="#Postgres.Parser-359"><span class="linenos">359</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_build_to_timestamp</span><span class="p">,</span> +</span><span id="Postgres.Parser-360"><a href="#Postgres.Parser-360"><span class="linenos">360</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Postgres.Parser-361"><a href="#Postgres.Parser-361"><span class="linenos">361</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-362"><a href="#Postgres.Parser-362"><span class="linenos">362</span></a> +</span><span id="Postgres.Parser-363"><a href="#Postgres.Parser-363"><span class="linenos">363</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-364"><a href="#Postgres.Parser-364"><span class="linenos">364</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="Postgres.Parser-365"><a href="#Postgres.Parser-365"><span class="linenos">365</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span> +</span><span id="Postgres.Parser-366"><a href="#Postgres.Parser-366"><span class="linenos">366</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-367"><a href="#Postgres.Parser-367"><span class="linenos">367</span></a> +</span><span id="Postgres.Parser-368"><a href="#Postgres.Parser-368"><span class="linenos">368</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-369"><a href="#Postgres.Parser-369"><span class="linenos">369</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span> +</span><span id="Postgres.Parser-370"><a href="#Postgres.Parser-370"><span class="linenos">370</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> +</span><span id="Postgres.Parser-371"><a href="#Postgres.Parser-371"><span class="linenos">371</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-372"><a href="#Postgres.Parser-372"><span class="linenos">372</span></a> +</span><span id="Postgres.Parser-373"><a href="#Postgres.Parser-373"><span class="linenos">373</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-374"><a href="#Postgres.Parser-374"><span class="linenos">374</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span> </span><span id="Postgres.Parser-375"><a href="#Postgres.Parser-375"><span class="linenos">375</span></a> <span class="p">}</span> </span><span id="Postgres.Parser-376"><a href="#Postgres.Parser-376"><span class="linenos">376</span></a> -</span><span id="Postgres.Parser-377"><a href="#Postgres.Parser-377"><span class="linenos">377</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-378"><a href="#Postgres.Parser-378"><span class="linenos">378</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span> -</span><span id="Postgres.Parser-379"><a href="#Postgres.Parser-379"><span class="linenos">379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> -</span><span id="Postgres.Parser-380"><a href="#Postgres.Parser-380"><span class="linenos">380</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-381"><a href="#Postgres.Parser-381"><span class="linenos">381</span></a> -</span><span id="Postgres.Parser-382"><a href="#Postgres.Parser-382"><span class="linenos">382</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-383"><a href="#Postgres.Parser-383"><span class="linenos">383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span> -</span><span id="Postgres.Parser-384"><a href="#Postgres.Parser-384"><span class="linenos">384</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-385"><a href="#Postgres.Parser-385"><span class="linenos">385</span></a> -</span><span id="Postgres.Parser-386"><a href="#Postgres.Parser-386"><span class="linenos">386</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-387"><a href="#Postgres.Parser-387"><span class="linenos">387</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> -</span><span id="Postgres.Parser-388"><a href="#Postgres.Parser-388"><span class="linenos">388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">),</span> -</span><span id="Postgres.Parser-389"><a href="#Postgres.Parser-389"><span class="linenos">389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span> -</span><span id="Postgres.Parser-390"><a href="#Postgres.Parser-390"><span class="linenos">390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Postgres.Parser-391"><a href="#Postgres.Parser-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">]</span> -</span><span id="Postgres.Parser-392"><a href="#Postgres.Parser-392"><span class="linenos">392</span></a> <span class="p">),</span> -</span><span id="Postgres.Parser-393"><a href="#Postgres.Parser-393"><span class="linenos">393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">,</span> <span class="n">reverse_args</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Postgres.Parser-394"><a href="#Postgres.Parser-394"><span class="linenos">394</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_operator</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Postgres.Parser-395"><a href="#Postgres.Parser-395"><span class="linenos">395</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-396"><a href="#Postgres.Parser-396"><span class="linenos">396</span></a> -</span><span id="Postgres.Parser-397"><a href="#Postgres.Parser-397"><span class="linenos">397</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-398"><a href="#Postgres.Parser-398"><span class="linenos">398</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">STATEMENT_PARSERS</span><span class="p">,</span> -</span><span id="Postgres.Parser-399"><a href="#Postgres.Parser-399"><span class="linenos">399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Postgres.Parser-400"><a href="#Postgres.Parser-400"><span class="linenos">400</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-401"><a href="#Postgres.Parser-401"><span class="linenos">401</span></a> -</span><span id="Postgres.Parser-402"><a href="#Postgres.Parser-402"><span class="linenos">402</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Parser-403"><a href="#Postgres.Parser-403"><span class="linenos">403</span></a> -</span><span id="Postgres.Parser-404"><a href="#Postgres.Parser-404"><span class="linenos">404</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Parser-405"><a href="#Postgres.Parser-405"><span class="linenos">405</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">COLUMN_OPERATORS</span><span class="p">,</span> -</span><span id="Postgres.Parser-406"><a href="#Postgres.Parser-406"><span class="linenos">406</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> -</span><span id="Postgres.Parser-407"><a href="#Postgres.Parser-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> -</span><span id="Postgres.Parser-408"><a href="#Postgres.Parser-408"><span class="linenos">408</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> -</span><span id="Postgres.Parser-409"><a href="#Postgres.Parser-409"><span class="linenos">409</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> -</span><span id="Postgres.Parser-410"><a href="#Postgres.Parser-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> -</span><span id="Postgres.Parser-411"><a href="#Postgres.Parser-411"><span class="linenos">411</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> -</span><span id="Postgres.Parser-412"><a href="#Postgres.Parser-412"><span class="linenos">412</span></a> <span class="p">}</span> -</span><span id="Postgres.Parser-413"><a href="#Postgres.Parser-413"><span class="linenos">413</span></a> -</span><span id="Postgres.Parser-414"><a href="#Postgres.Parser-414"><span class="linenos">414</span></a> <span class="k">def</span> <span class="nf">_parse_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Postgres.Parser-415"><a href="#Postgres.Parser-415"><span class="linenos">415</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Postgres.Parser-416"><a href="#Postgres.Parser-416"><span class="linenos">416</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Postgres.Parser-417"><a href="#Postgres.Parser-417"><span class="linenos">417</span></a> <span class="k">break</span> -</span><span id="Postgres.Parser-418"><a href="#Postgres.Parser-418"><span class="linenos">418</span></a> -</span><span id="Postgres.Parser-419"><a href="#Postgres.Parser-419"><span class="linenos">419</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Postgres.Parser-420"><a href="#Postgres.Parser-420"><span class="linenos">420</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Postgres.Parser-421"><a href="#Postgres.Parser-421"><span class="linenos">421</span></a> <span class="n">op</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="Postgres.Parser-422"><a href="#Postgres.Parser-422"><span class="linenos">422</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Postgres.Parser-423"><a href="#Postgres.Parser-423"><span class="linenos">423</span></a> -</span><span id="Postgres.Parser-424"><a href="#Postgres.Parser-424"><span class="linenos">424</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Postgres.Parser-425"><a href="#Postgres.Parser-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Operator</span><span class="p">,</span> -</span><span id="Postgres.Parser-426"><a href="#Postgres.Parser-426"><span class="linenos">426</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="Postgres.Parser-427"><a href="#Postgres.Parser-427"><span class="linenos">427</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Postgres.Parser-428"><a href="#Postgres.Parser-428"><span class="linenos">428</span></a> <span class="n">operator</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> -</span><span id="Postgres.Parser-429"><a href="#Postgres.Parser-429"><span class="linenos">429</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Postgres.Parser-430"><a href="#Postgres.Parser-430"><span class="linenos">430</span></a> <span class="p">)</span> -</span><span id="Postgres.Parser-431"><a href="#Postgres.Parser-431"><span class="linenos">431</span></a> -</span><span id="Postgres.Parser-432"><a href="#Postgres.Parser-432"><span class="linenos">432</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">):</span> -</span><span id="Postgres.Parser-433"><a href="#Postgres.Parser-433"><span class="linenos">433</span></a> <span class="k">break</span> -</span><span id="Postgres.Parser-434"><a href="#Postgres.Parser-434"><span class="linenos">434</span></a> -</span><span id="Postgres.Parser-435"><a href="#Postgres.Parser-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Postgres.Parser-436"><a href="#Postgres.Parser-436"><span class="linenos">436</span></a> -</span><span id="Postgres.Parser-437"><a href="#Postgres.Parser-437"><span class="linenos">437</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Postgres.Parser-438"><a href="#Postgres.Parser-438"><span class="linenos">438</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Postgres.Parser-439"><a href="#Postgres.Parser-439"><span class="linenos">439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Postgres.Parser-440"><a href="#Postgres.Parser-440"><span class="linenos">440</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Postgres.Parser-441"><a href="#Postgres.Parser-441"><span class="linenos">441</span></a> -</span><span id="Postgres.Parser-442"><a href="#Postgres.Parser-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Postgres.Parser-443"><a href="#Postgres.Parser-443"><span class="linenos">443</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Postgres.Parser-444"><a href="#Postgres.Parser-444"><span class="linenos">444</span></a> -</span><span id="Postgres.Parser-445"><a href="#Postgres.Parser-445"><span class="linenos">445</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="Postgres.Parser-377"><a href="#Postgres.Parser-377"><span class="linenos">377</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-378"><a href="#Postgres.Parser-378"><span class="linenos">378</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> +</span><span id="Postgres.Parser-379"><a href="#Postgres.Parser-379"><span class="linenos">379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">),</span> +</span><span id="Postgres.Parser-380"><a href="#Postgres.Parser-380"><span class="linenos">380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span> +</span><span id="Postgres.Parser-381"><a href="#Postgres.Parser-381"><span class="linenos">381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Postgres.Parser-382"><a href="#Postgres.Parser-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">]</span> +</span><span id="Postgres.Parser-383"><a href="#Postgres.Parser-383"><span class="linenos">383</span></a> <span class="p">),</span> +</span><span id="Postgres.Parser-384"><a href="#Postgres.Parser-384"><span class="linenos">384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">,</span> <span class="n">reverse_args</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Postgres.Parser-385"><a href="#Postgres.Parser-385"><span class="linenos">385</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_operator</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Postgres.Parser-386"><a href="#Postgres.Parser-386"><span class="linenos">386</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-387"><a href="#Postgres.Parser-387"><span class="linenos">387</span></a> +</span><span id="Postgres.Parser-388"><a href="#Postgres.Parser-388"><span class="linenos">388</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-389"><a href="#Postgres.Parser-389"><span class="linenos">389</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">STATEMENT_PARSERS</span><span class="p">,</span> +</span><span id="Postgres.Parser-390"><a href="#Postgres.Parser-390"><span class="linenos">390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Postgres.Parser-391"><a href="#Postgres.Parser-391"><span class="linenos">391</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-392"><a href="#Postgres.Parser-392"><span class="linenos">392</span></a> +</span><span id="Postgres.Parser-393"><a href="#Postgres.Parser-393"><span class="linenos">393</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Parser-394"><a href="#Postgres.Parser-394"><span class="linenos">394</span></a> +</span><span id="Postgres.Parser-395"><a href="#Postgres.Parser-395"><span class="linenos">395</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Parser-396"><a href="#Postgres.Parser-396"><span class="linenos">396</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">COLUMN_OPERATORS</span><span class="p">,</span> +</span><span id="Postgres.Parser-397"><a href="#Postgres.Parser-397"><span class="linenos">397</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> +</span><span id="Postgres.Parser-398"><a href="#Postgres.Parser-398"><span class="linenos">398</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> +</span><span id="Postgres.Parser-399"><a href="#Postgres.Parser-399"><span class="linenos">399</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> +</span><span id="Postgres.Parser-400"><a href="#Postgres.Parser-400"><span class="linenos">400</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="n">build_json_extract_path</span><span class="p">(</span> +</span><span id="Postgres.Parser-401"><a href="#Postgres.Parser-401"><span class="linenos">401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> <span class="n">arrow_req_json_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> +</span><span id="Postgres.Parser-402"><a href="#Postgres.Parser-402"><span class="linenos">402</span></a> <span class="p">)([</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">]),</span> +</span><span id="Postgres.Parser-403"><a href="#Postgres.Parser-403"><span class="linenos">403</span></a> <span class="p">}</span> +</span><span id="Postgres.Parser-404"><a href="#Postgres.Parser-404"><span class="linenos">404</span></a> +</span><span id="Postgres.Parser-405"><a href="#Postgres.Parser-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">_parse_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Postgres.Parser-406"><a href="#Postgres.Parser-406"><span class="linenos">406</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Postgres.Parser-407"><a href="#Postgres.Parser-407"><span class="linenos">407</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Postgres.Parser-408"><a href="#Postgres.Parser-408"><span class="linenos">408</span></a> <span class="k">break</span> +</span><span id="Postgres.Parser-409"><a href="#Postgres.Parser-409"><span class="linenos">409</span></a> +</span><span id="Postgres.Parser-410"><a href="#Postgres.Parser-410"><span class="linenos">410</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Postgres.Parser-411"><a href="#Postgres.Parser-411"><span class="linenos">411</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Postgres.Parser-412"><a href="#Postgres.Parser-412"><span class="linenos">412</span></a> <span class="n">op</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="Postgres.Parser-413"><a href="#Postgres.Parser-413"><span class="linenos">413</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Postgres.Parser-414"><a href="#Postgres.Parser-414"><span class="linenos">414</span></a> +</span><span id="Postgres.Parser-415"><a href="#Postgres.Parser-415"><span class="linenos">415</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Postgres.Parser-416"><a href="#Postgres.Parser-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Operator</span><span class="p">,</span> +</span><span id="Postgres.Parser-417"><a href="#Postgres.Parser-417"><span class="linenos">417</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="Postgres.Parser-418"><a href="#Postgres.Parser-418"><span class="linenos">418</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Postgres.Parser-419"><a href="#Postgres.Parser-419"><span class="linenos">419</span></a> <span class="n">operator</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> +</span><span id="Postgres.Parser-420"><a href="#Postgres.Parser-420"><span class="linenos">420</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Postgres.Parser-421"><a href="#Postgres.Parser-421"><span class="linenos">421</span></a> <span class="p">)</span> +</span><span id="Postgres.Parser-422"><a href="#Postgres.Parser-422"><span class="linenos">422</span></a> +</span><span id="Postgres.Parser-423"><a href="#Postgres.Parser-423"><span class="linenos">423</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">):</span> +</span><span id="Postgres.Parser-424"><a href="#Postgres.Parser-424"><span class="linenos">424</span></a> <span class="k">break</span> +</span><span id="Postgres.Parser-425"><a href="#Postgres.Parser-425"><span class="linenos">425</span></a> +</span><span id="Postgres.Parser-426"><a href="#Postgres.Parser-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Postgres.Parser-427"><a href="#Postgres.Parser-427"><span class="linenos">427</span></a> +</span><span id="Postgres.Parser-428"><a href="#Postgres.Parser-428"><span class="linenos">428</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Postgres.Parser-429"><a href="#Postgres.Parser-429"><span class="linenos">429</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="Postgres.Parser-430"><a href="#Postgres.Parser-430"><span class="linenos">430</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Postgres.Parser-431"><a href="#Postgres.Parser-431"><span class="linenos">431</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Postgres.Parser-432"><a href="#Postgres.Parser-432"><span class="linenos">432</span></a> +</span><span id="Postgres.Parser-433"><a href="#Postgres.Parser-433"><span class="linenos">433</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Postgres.Parser-434"><a href="#Postgres.Parser-434"><span class="linenos">434</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Postgres.Parser-435"><a href="#Postgres.Parser-435"><span class="linenos">435</span></a> +</span><span id="Postgres.Parser-436"><a href="#Postgres.Parser-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> </span></pre></div> @@ -2098,7 +2106,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Postgres.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Postgres.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <function _build_generate_series>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function _build_regexp_replace>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function build_formatted_time.<locals>._builder>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_json_extract_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'JSON_EXTRACT_PATH': <function build_json_extract_path.<locals>._builder>, 'MAKE_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MAKE_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'NOW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'TO_TIMESTAMP': <function _build_to_timestamp>, 'UNNEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>}</span> + <label class="view-value-button pdoc-button" for="Postgres.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <function _build_generate_series>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function _build_regexp_replace>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function build_formatted_time.<locals>._builder>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_json_extract_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'JSON_EXTRACT_PATH': <function build_json_extract_path.<locals>._builder>, 'MAKE_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MAKE_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'NOW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'TO_TIMESTAMP': <function _build_to_timestamp>, 'UNNEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>}</span> </div> @@ -2240,6 +2248,7 @@ Default: 3</li> <dd id="Postgres.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Postgres.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Postgres.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Postgres.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Postgres.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Postgres.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Postgres.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -2352,186 +2361,193 @@ Default: 3</li> </div> <a class="headerlink" href="#Postgres.Generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator-447"><a href="#Postgres.Generator-447"><span class="linenos">447</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> -</span><span id="Postgres.Generator-448"><a href="#Postgres.Generator-448"><span class="linenos">448</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-449"><a href="#Postgres.Generator-449"><span class="linenos">449</span></a> <span class="n">RENAME_TABLE_WITH_DB</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-450"><a href="#Postgres.Generator-450"><span class="linenos">450</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-451"><a href="#Postgres.Generator-451"><span class="linenos">451</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-452"><a href="#Postgres.Generator-452"><span class="linenos">452</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-453"><a href="#Postgres.Generator-453"><span class="linenos">453</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-454"><a href="#Postgres.Generator-454"><span class="linenos">454</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-455"><a href="#Postgres.Generator-455"><span class="linenos">455</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> -</span><span id="Postgres.Generator-456"><a href="#Postgres.Generator-456"><span class="linenos">456</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-457"><a href="#Postgres.Generator-457"><span class="linenos">457</span></a> <span class="n">TABLESAMPLE_SEED_KEYWORD</span> <span class="o">=</span> <span class="s2">"REPEATABLE"</span> -</span><span id="Postgres.Generator-458"><a href="#Postgres.Generator-458"><span class="linenos">458</span></a> <span class="n">SUPPORTS_SELECT_INTO</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-459"><a href="#Postgres.Generator-459"><span class="linenos">459</span></a> <span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-460"><a href="#Postgres.Generator-460"><span class="linenos">460</span></a> <span class="n">SUPPORTS_UNLOGGED_TABLES</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-461"><a href="#Postgres.Generator-461"><span class="linenos">461</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-462"><a href="#Postgres.Generator-462"><span class="linenos">462</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-463"><a href="#Postgres.Generator-463"><span class="linenos">463</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Postgres.Generator-464"><a href="#Postgres.Generator-464"><span class="linenos">464</span></a> <span class="n">COPY_HAS_INTO_KEYWORD</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Postgres.Generator-465"><a href="#Postgres.Generator-465"><span class="linenos">465</span></a> -</span><span id="Postgres.Generator-466"><a href="#Postgres.Generator-466"><span class="linenos">466</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Generator-467"><a href="#Postgres.Generator-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span> -</span><span id="Postgres.Generator-468"><a href="#Postgres.Generator-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span> -</span><span id="Postgres.Generator-469"><a href="#Postgres.Generator-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span> -</span><span id="Postgres.Generator-470"><a href="#Postgres.Generator-470"><span class="linenos">470</span></a> <span class="p">}</span> -</span><span id="Postgres.Generator-471"><a href="#Postgres.Generator-471"><span class="linenos">471</span></a> -</span><span id="Postgres.Generator-472"><a href="#Postgres.Generator-472"><span class="linenos">472</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Generator-473"><a href="#Postgres.Generator-473"><span class="linenos">473</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span> -</span><span id="Postgres.Generator-474"><a href="#Postgres.Generator-474"><span class="linenos">474</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"SMALLINT"</span><span class="p">,</span> -</span><span id="Postgres.Generator-475"><a href="#Postgres.Generator-475"><span class="linenos">475</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"REAL"</span><span class="p">,</span> -</span><span id="Postgres.Generator-476"><a href="#Postgres.Generator-476"><span class="linenos">476</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"DOUBLE PRECISION"</span><span class="p">,</span> -</span><span id="Postgres.Generator-477"><a href="#Postgres.Generator-477"><span class="linenos">477</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="Postgres.Generator-478"><a href="#Postgres.Generator-478"><span class="linenos">478</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="Postgres.Generator-479"><a href="#Postgres.Generator-479"><span class="linenos">479</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> -</span><span id="Postgres.Generator-480"><a href="#Postgres.Generator-480"><span class="linenos">480</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Postgres.Generator-481"><a href="#Postgres.Generator-481"><span class="linenos">481</span></a> <span class="p">}</span> -</span><span id="Postgres.Generator-482"><a href="#Postgres.Generator-482"><span class="linenos">482</span></a> -</span><span id="Postgres.Generator-483"><a href="#Postgres.Generator-483"><span class="linenos">483</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Generator-484"><a href="#Postgres.Generator-484"><span class="linenos">484</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> -</span><span id="Postgres.Generator-485"><a href="#Postgres.Generator-485"><span class="linenos">485</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">any_value_to_max_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-486"><a href="#Postgres.Generator-486"><span class="linenos">486</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Postgres.Generator-487"><a href="#Postgres.Generator-487"><span class="linenos">487</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Postgres.Generator-488"><a href="#Postgres.Generator-488"><span class="linenos">488</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> -</span><span id="Postgres.Generator-489"><a href="#Postgres.Generator-489"><span class="linenos">489</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="Postgres.Generator-490"><a href="#Postgres.Generator-490"><span class="linenos">490</span></a> <span class="p">),</span> -</span><span id="Postgres.Generator-491"><a href="#Postgres.Generator-491"><span class="linenos">491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</span><span class="p">),</span> -</span><span id="Postgres.Generator-492"><a href="#Postgres.Generator-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"@>"</span><span class="p">),</span> -</span><span id="Postgres.Generator-493"><a href="#Postgres.Generator-493"><span class="linenos">493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"&&"</span><span class="p">),</span> -</span><span id="Postgres.Generator-494"><a href="#Postgres.Generator-494"><span class="linenos">494</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="n">filter_array_using_unnest</span><span class="p">,</span> -</span><span id="Postgres.Generator-495"><a href="#Postgres.Generator-495"><span class="linenos">495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY_LENGTH"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span> <span class="ow">or</span> <span class="s2">"1"</span><span class="p">),</span> -</span><span id="Postgres.Generator-496"><a href="#Postgres.Generator-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">),</span> -</span><span id="Postgres.Generator-497"><a href="#Postgres.Generator-497"><span class="linenos">497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span> -</span><span id="Postgres.Generator-498"><a href="#Postgres.Generator-498"><span class="linenos">498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-499"><a href="#Postgres.Generator-499"><span class="linenos">499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">,</span> -</span><span id="Postgres.Generator-500"><a href="#Postgres.Generator-500"><span class="linenos">500</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentUser</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_USER"</span><span class="p">,</span> -</span><span id="Postgres.Generator-501"><a href="#Postgres.Generator-501"><span class="linenos">501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> -</span><span id="Postgres.Generator-502"><a href="#Postgres.Generator-502"><span class="linenos">502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-503"><a href="#Postgres.Generator-503"><span class="linenos">503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-504"><a href="#Postgres.Generator-504"><span class="linenos">504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-505"><a href="#Postgres.Generator-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"-"</span><span class="p">),</span> -</span><span id="Postgres.Generator-506"><a href="#Postgres.Generator-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> -</span><span id="Postgres.Generator-507"><a href="#Postgres.Generator-507"><span class="linenos">507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-508"><a href="#Postgres.Generator-508"><span class="linenos">508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">,</span> <span class="s2">"->"</span><span class="p">),</span> -</span><span id="Postgres.Generator-509"><a href="#Postgres.Generator-509"><span class="linenos">509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">,</span> <span class="s2">"->>"</span><span class="p">),</span> -</span><span id="Postgres.Generator-510"><a href="#Postgres.Generator-510"><span class="linenos">510</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>"</span><span class="p">),</span> -</span><span id="Postgres.Generator-511"><a href="#Postgres.Generator-511"><span class="linenos">511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>>"</span><span class="p">),</span> -</span><span id="Postgres.Generator-512"><a href="#Postgres.Generator-512"><span class="linenos">512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"?"</span><span class="p">),</span> -</span><span id="Postgres.Generator-513"><a href="#Postgres.Generator-513"><span class="linenos">513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">)),</span> -</span><span id="Postgres.Generator-514"><a href="#Postgres.Generator-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span> -</span><span id="Postgres.Generator-515"><a href="#Postgres.Generator-515"><span class="linenos">515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Postgres.Generator-516"><a href="#Postgres.Generator-516"><span class="linenos">516</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> -</span><span id="Postgres.Generator-517"><a href="#Postgres.Generator-517"><span class="linenos">517</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">:</span> <span class="n">no_last_day_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-518"><a href="#Postgres.Generator-518"><span class="linenos">518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_OR"</span><span class="p">),</span> -</span><span id="Postgres.Generator-519"><a href="#Postgres.Generator-519"><span class="linenos">519</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_AND"</span><span class="p">),</span> -</span><span id="Postgres.Generator-520"><a href="#Postgres.Generator-520"><span class="linenos">520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span> -</span><span id="Postgres.Generator-521"><a href="#Postgres.Generator-521"><span class="linenos">521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-522"><a href="#Postgres.Generator-522"><span class="linenos">522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span> -</span><span id="Postgres.Generator-523"><a href="#Postgres.Generator-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> <span class="n">merge_without_target_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-524"><a href="#Postgres.Generator-524"><span class="linenos">524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</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">"PARTITION BY </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Postgres.Generator-525"><a href="#Postgres.Generator-525"><span class="linenos">525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="Postgres.Generator-526"><a href="#Postgres.Generator-526"><span class="linenos">526</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> -</span><span id="Postgres.Generator-527"><a href="#Postgres.Generator-527"><span class="linenos">527</span></a> <span class="p">),</span> -</span><span id="Postgres.Generator-528"><a href="#Postgres.Generator-528"><span class="linenos">528</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="Postgres.Generator-529"><a href="#Postgres.Generator-529"><span class="linenos">529</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> -</span><span id="Postgres.Generator-530"><a href="#Postgres.Generator-530"><span class="linenos">530</span></a> <span class="p">),</span> -</span><span id="Postgres.Generator-531"><a href="#Postgres.Generator-531"><span class="linenos">531</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-532"><a href="#Postgres.Generator-532"><span class="linenos">532</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">),</span> -</span><span id="Postgres.Generator-533"><a href="#Postgres.Generator-533"><span class="linenos">533</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"RANDOM"</span><span class="p">),</span> -</span><span id="Postgres.Generator-534"><a href="#Postgres.Generator-534"><span class="linenos">534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">),</span> -</span><span id="Postgres.Generator-535"><a href="#Postgres.Generator-535"><span class="linenos">535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~*"</span><span class="p">),</span> -</span><span id="Postgres.Generator-536"><a href="#Postgres.Generator-536"><span class="linenos">536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> -</span><span id="Postgres.Generator-537"><a href="#Postgres.Generator-537"><span class="linenos">537</span></a> <span class="p">[</span> -</span><span id="Postgres.Generator-538"><a href="#Postgres.Generator-538"><span class="linenos">538</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span> -</span><span id="Postgres.Generator-539"><a href="#Postgres.Generator-539"><span class="linenos">539</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span> -</span><span id="Postgres.Generator-540"><a href="#Postgres.Generator-540"><span class="linenos">540</span></a> <span class="p">]</span> -</span><span id="Postgres.Generator-541"><a href="#Postgres.Generator-541"><span class="linenos">541</span></a> <span class="p">),</span> -</span><span id="Postgres.Generator-542"><a href="#Postgres.Generator-542"><span class="linenos">542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-543"><a href="#Postgres.Generator-543"><span class="linenos">543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_DATE"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="Postgres.Generator-544"><a href="#Postgres.Generator-544"><span class="linenos">544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="Postgres.Generator-545"><a href="#Postgres.Generator-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-546"><a href="#Postgres.Generator-546"><span class="linenos">546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-547"><a href="#Postgres.Generator-547"><span class="linenos">547</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIME"</span><span class="p">),</span> -</span><span id="Postgres.Generator-548"><a href="#Postgres.Generator-548"><span class="linenos">548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIMESTAMP"</span><span class="p">),</span> -</span><span id="Postgres.Generator-549"><a href="#Postgres.Generator-549"><span class="linenos">549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Postgres.Generator-550"><a href="#Postgres.Generator-550"><span class="linenos">550</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-551"><a href="#Postgres.Generator-551"><span class="linenos">551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_CHAR"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> -</span><span id="Postgres.Generator-552"><a href="#Postgres.Generator-552"><span class="linenos">552</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> -</span><span id="Postgres.Generator-553"><a href="#Postgres.Generator-553"><span class="linenos">553</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-554"><a href="#Postgres.Generator-554"><span class="linenos">554</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-555"><a href="#Postgres.Generator-555"><span class="linenos">555</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> -</span><span id="Postgres.Generator-556"><a href="#Postgres.Generator-556"><span class="linenos">556</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-557"><a href="#Postgres.Generator-557"><span class="linenos">557</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> -</span><span id="Postgres.Generator-558"><a href="#Postgres.Generator-558"><span class="linenos">558</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="Postgres.Generator-559"><a href="#Postgres.Generator-559"><span class="linenos">559</span></a> <span class="s2">"DATE_PART"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"epoch"</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> -</span><span id="Postgres.Generator-560"><a href="#Postgres.Generator-560"><span class="linenos">560</span></a> <span class="p">),</span> -</span><span id="Postgres.Generator-561"><a href="#Postgres.Generator-561"><span class="linenos">561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_POP"</span><span class="p">),</span> -</span><span id="Postgres.Generator-562"><a href="#Postgres.Generator-562"><span class="linenos">562</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_SAMP"</span><span class="p">),</span> -</span><span id="Postgres.Generator-563"><a href="#Postgres.Generator-563"><span class="linenos">563</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-564"><a href="#Postgres.Generator-564"><span class="linenos">564</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span> -</span><span id="Postgres.Generator-565"><a href="#Postgres.Generator-565"><span class="linenos">565</span></a> <span class="p">}</span> -</span><span id="Postgres.Generator-566"><a href="#Postgres.Generator-566"><span class="linenos">566</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> -</span><span id="Postgres.Generator-567"><a href="#Postgres.Generator-567"><span class="linenos">567</span></a> -</span><span id="Postgres.Generator-568"><a href="#Postgres.Generator-568"><span class="linenos">568</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Postgres.Generator-569"><a href="#Postgres.Generator-569"><span class="linenos">569</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span> -</span><span id="Postgres.Generator-570"><a href="#Postgres.Generator-570"><span class="linenos">570</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Postgres.Generator-571"><a href="#Postgres.Generator-571"><span class="linenos">571</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> -</span><span id="Postgres.Generator-572"><a href="#Postgres.Generator-572"><span class="linenos">572</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> -</span><span id="Postgres.Generator-573"><a href="#Postgres.Generator-573"><span class="linenos">573</span></a> <span class="p">}</span> -</span><span id="Postgres.Generator-574"><a href="#Postgres.Generator-574"><span class="linenos">574</span></a> -</span><span id="Postgres.Generator-575"><a href="#Postgres.Generator-575"><span class="linenos">575</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator-576"><a href="#Postgres.Generator-576"><span class="linenos">576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="Postgres.Generator-577"><a href="#Postgres.Generator-577"><span class="linenos">577</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Postgres.Generator-578"><a href="#Postgres.Generator-578"><span class="linenos">578</span></a> -</span><span id="Postgres.Generator-579"><a href="#Postgres.Generator-579"><span class="linenos">579</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator-580"><a href="#Postgres.Generator-580"><span class="linenos">580</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="Postgres.Generator-581"><a href="#Postgres.Generator-581"><span class="linenos">581</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Postgres.Generator-582"><a href="#Postgres.Generator-582"><span class="linenos">582</span></a> -</span><span id="Postgres.Generator-583"><a href="#Postgres.Generator-583"><span class="linenos">583</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator-584"><a href="#Postgres.Generator-584"><span class="linenos">584</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Postgres.Generator-585"><a href="#Postgres.Generator-585"><span class="linenos">585</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="Postgres.Generator-586"><a href="#Postgres.Generator-586"><span class="linenos">586</span></a> -</span><span id="Postgres.Generator-587"><a href="#Postgres.Generator-587"><span class="linenos">587</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Postgres.Generator-588"><a href="#Postgres.Generator-588"><span class="linenos">588</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> -</span><span id="Postgres.Generator-589"><a href="#Postgres.Generator-589"><span class="linenos">589</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="Postgres.Generator-590"><a href="#Postgres.Generator-590"><span class="linenos">590</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> -</span><span id="Postgres.Generator-591"><a href="#Postgres.Generator-591"><span class="linenos">591</span></a> -</span><span id="Postgres.Generator-592"><a href="#Postgres.Generator-592"><span class="linenos">592</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> -</span><span id="Postgres.Generator-593"><a href="#Postgres.Generator-593"><span class="linenos">593</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Postgres.Generator-594"><a href="#Postgres.Generator-594"><span class="linenos">594</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator-595"><a href="#Postgres.Generator-595"><span class="linenos">595</span></a> -</span><span id="Postgres.Generator-596"><a href="#Postgres.Generator-596"><span class="linenos">596</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> -</span><span id="Postgres.Generator-597"><a href="#Postgres.Generator-597"><span class="linenos">597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> -</span><span id="Postgres.Generator-598"><a href="#Postgres.Generator-598"><span class="linenos">598</span></a> -</span><span id="Postgres.Generator-599"><a href="#Postgres.Generator-599"><span class="linenos">599</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Postgres.Generator-600"><a href="#Postgres.Generator-600"><span class="linenos">600</span></a> -</span><span id="Postgres.Generator-601"><a href="#Postgres.Generator-601"><span class="linenos">601</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Postgres.Generator-602"><a href="#Postgres.Generator-602"><span class="linenos">602</span></a> -</span><span id="Postgres.Generator-603"><a href="#Postgres.Generator-603"><span class="linenos">603</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator-604"><a href="#Postgres.Generator-604"><span class="linenos">604</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> -</span><span id="Postgres.Generator-605"><a href="#Postgres.Generator-605"><span class="linenos">605</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> -</span><span id="Postgres.Generator-606"><a href="#Postgres.Generator-606"><span class="linenos">606</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Postgres.Generator-607"><a href="#Postgres.Generator-607"><span class="linenos">607</span></a> -</span><span id="Postgres.Generator-608"><a href="#Postgres.Generator-608"><span class="linenos">608</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator-438"><a href="#Postgres.Generator-438"><span class="linenos">438</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="Postgres.Generator-439"><a href="#Postgres.Generator-439"><span class="linenos">439</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-440"><a href="#Postgres.Generator-440"><span class="linenos">440</span></a> <span class="n">RENAME_TABLE_WITH_DB</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-441"><a href="#Postgres.Generator-441"><span class="linenos">441</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-442"><a href="#Postgres.Generator-442"><span class="linenos">442</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-443"><a href="#Postgres.Generator-443"><span class="linenos">443</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-444"><a href="#Postgres.Generator-444"><span class="linenos">444</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-445"><a href="#Postgres.Generator-445"><span class="linenos">445</span></a> <span class="n">NVL2_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-446"><a href="#Postgres.Generator-446"><span class="linenos">446</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> +</span><span id="Postgres.Generator-447"><a href="#Postgres.Generator-447"><span class="linenos">447</span></a> <span class="n">TABLESAMPLE_SIZE_IS_ROWS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-448"><a href="#Postgres.Generator-448"><span class="linenos">448</span></a> <span class="n">TABLESAMPLE_SEED_KEYWORD</span> <span class="o">=</span> <span class="s2">"REPEATABLE"</span> +</span><span id="Postgres.Generator-449"><a href="#Postgres.Generator-449"><span class="linenos">449</span></a> <span class="n">SUPPORTS_SELECT_INTO</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-450"><a href="#Postgres.Generator-450"><span class="linenos">450</span></a> <span class="n">JSON_TYPE_REQUIRED_FOR_EXTRACTION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-451"><a href="#Postgres.Generator-451"><span class="linenos">451</span></a> <span class="n">SUPPORTS_UNLOGGED_TABLES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-452"><a href="#Postgres.Generator-452"><span class="linenos">452</span></a> <span class="n">LIKE_PROPERTY_INSIDE_SCHEMA</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-453"><a href="#Postgres.Generator-453"><span class="linenos">453</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-454"><a href="#Postgres.Generator-454"><span class="linenos">454</span></a> <span class="n">CAN_IMPLEMENT_ARRAY_ANY</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Postgres.Generator-455"><a href="#Postgres.Generator-455"><span class="linenos">455</span></a> <span class="n">COPY_HAS_INTO_KEYWORD</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Postgres.Generator-456"><a href="#Postgres.Generator-456"><span class="linenos">456</span></a> +</span><span id="Postgres.Generator-457"><a href="#Postgres.Generator-457"><span class="linenos">457</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Generator-458"><a href="#Postgres.Generator-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span> +</span><span id="Postgres.Generator-459"><a href="#Postgres.Generator-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span> +</span><span id="Postgres.Generator-460"><a href="#Postgres.Generator-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span> +</span><span id="Postgres.Generator-461"><a href="#Postgres.Generator-461"><span class="linenos">461</span></a> <span class="p">}</span> +</span><span id="Postgres.Generator-462"><a href="#Postgres.Generator-462"><span class="linenos">462</span></a> +</span><span id="Postgres.Generator-463"><a href="#Postgres.Generator-463"><span class="linenos">463</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Generator-464"><a href="#Postgres.Generator-464"><span class="linenos">464</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span> +</span><span id="Postgres.Generator-465"><a href="#Postgres.Generator-465"><span class="linenos">465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"SMALLINT"</span><span class="p">,</span> +</span><span id="Postgres.Generator-466"><a href="#Postgres.Generator-466"><span class="linenos">466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">"REAL"</span><span class="p">,</span> +</span><span id="Postgres.Generator-467"><a href="#Postgres.Generator-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"DOUBLE PRECISION"</span><span class="p">,</span> +</span><span id="Postgres.Generator-468"><a href="#Postgres.Generator-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="Postgres.Generator-469"><a href="#Postgres.Generator-469"><span class="linenos">469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="Postgres.Generator-470"><a href="#Postgres.Generator-470"><span class="linenos">470</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">:</span> <span class="s2">"BYTEA"</span><span class="p">,</span> +</span><span id="Postgres.Generator-471"><a href="#Postgres.Generator-471"><span class="linenos">471</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Postgres.Generator-472"><a href="#Postgres.Generator-472"><span class="linenos">472</span></a> <span class="p">}</span> +</span><span id="Postgres.Generator-473"><a href="#Postgres.Generator-473"><span class="linenos">473</span></a> +</span><span id="Postgres.Generator-474"><a href="#Postgres.Generator-474"><span class="linenos">474</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Generator-475"><a href="#Postgres.Generator-475"><span class="linenos">475</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> +</span><span id="Postgres.Generator-476"><a href="#Postgres.Generator-476"><span class="linenos">476</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AnyValue</span><span class="p">:</span> <span class="n">any_value_to_max_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-477"><a href="#Postgres.Generator-477"><span class="linenos">477</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Postgres.Generator-478"><a href="#Postgres.Generator-478"><span class="linenos">478</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Postgres.Generator-479"><a href="#Postgres.Generator-479"><span class="linenos">479</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> +</span><span id="Postgres.Generator-480"><a href="#Postgres.Generator-480"><span class="linenos">480</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Postgres.Generator-481"><a href="#Postgres.Generator-481"><span class="linenos">481</span></a> <span class="p">),</span> +</span><span id="Postgres.Generator-482"><a href="#Postgres.Generator-482"><span class="linenos">482</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</span><span class="p">),</span> +</span><span id="Postgres.Generator-483"><a href="#Postgres.Generator-483"><span class="linenos">483</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContainsAll</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"@>"</span><span class="p">),</span> +</span><span id="Postgres.Generator-484"><a href="#Postgres.Generator-484"><span class="linenos">484</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"&&"</span><span class="p">),</span> +</span><span id="Postgres.Generator-485"><a href="#Postgres.Generator-485"><span class="linenos">485</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayFilter</span><span class="p">:</span> <span class="n">filter_array_using_unnest</span><span class="p">,</span> +</span><span id="Postgres.Generator-486"><a href="#Postgres.Generator-486"><span class="linenos">486</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY_LENGTH"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span> <span class="ow">or</span> <span class="s2">"1"</span><span class="p">),</span> +</span><span id="Postgres.Generator-487"><a href="#Postgres.Generator-487"><span class="linenos">487</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">),</span> +</span><span id="Postgres.Generator-488"><a href="#Postgres.Generator-488"><span class="linenos">488</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span> +</span><span id="Postgres.Generator-489"><a href="#Postgres.Generator-489"><span class="linenos">489</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-490"><a href="#Postgres.Generator-490"><span class="linenos">490</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">,</span> +</span><span id="Postgres.Generator-491"><a href="#Postgres.Generator-491"><span class="linenos">491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentUser</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"CURRENT_USER"</span><span class="p">,</span> +</span><span id="Postgres.Generator-492"><a href="#Postgres.Generator-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> +</span><span id="Postgres.Generator-493"><a href="#Postgres.Generator-493"><span class="linenos">493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-494"><a href="#Postgres.Generator-494"><span class="linenos">494</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-495"><a href="#Postgres.Generator-495"><span class="linenos">495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"-"</span><span class="p">),</span> +</span><span id="Postgres.Generator-496"><a href="#Postgres.Generator-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> +</span><span id="Postgres.Generator-497"><a href="#Postgres.Generator-497"><span class="linenos">497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-498"><a href="#Postgres.Generator-498"><span class="linenos">498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH"</span><span class="p">,</span> <span class="s2">"->"</span><span class="p">),</span> +</span><span id="Postgres.Generator-499"><a href="#Postgres.Generator-499"><span class="linenos">499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">_json_extract_sql</span><span class="p">(</span><span class="s2">"JSON_EXTRACT_PATH_TEXT"</span><span class="p">,</span> <span class="s2">"->>"</span><span class="p">),</span> +</span><span id="Postgres.Generator-500"><a href="#Postgres.Generator-500"><span class="linenos">500</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>"</span><span class="p">),</span> +</span><span id="Postgres.Generator-501"><a href="#Postgres.Generator-501"><span class="linenos">501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"#>>"</span><span class="p">),</span> +</span><span id="Postgres.Generator-502"><a href="#Postgres.Generator-502"><span class="linenos">502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"?"</span><span class="p">),</span> +</span><span id="Postgres.Generator-503"><a href="#Postgres.Generator-503"><span class="linenos">503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">)),</span> +</span><span id="Postgres.Generator-504"><a href="#Postgres.Generator-504"><span class="linenos">504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="n">json_path_key_only_name</span><span class="p">,</span> +</span><span id="Postgres.Generator-505"><a href="#Postgres.Generator-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Postgres.Generator-506"><a href="#Postgres.Generator-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> +</span><span id="Postgres.Generator-507"><a href="#Postgres.Generator-507"><span class="linenos">507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LastDay</span><span class="p">:</span> <span class="n">no_last_day_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-508"><a href="#Postgres.Generator-508"><span class="linenos">508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_OR"</span><span class="p">),</span> +</span><span id="Postgres.Generator-509"><a href="#Postgres.Generator-509"><span class="linenos">509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"BOOL_AND"</span><span class="p">),</span> +</span><span id="Postgres.Generator-510"><a href="#Postgres.Generator-510"><span class="linenos">510</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span> +</span><span id="Postgres.Generator-511"><a href="#Postgres.Generator-511"><span class="linenos">511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-512"><a href="#Postgres.Generator-512"><span class="linenos">512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span> +</span><span id="Postgres.Generator-513"><a href="#Postgres.Generator-513"><span class="linenos">513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> <span class="n">merge_without_target_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-514"><a href="#Postgres.Generator-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</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">"PARTITION BY </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Postgres.Generator-515"><a href="#Postgres.Generator-515"><span class="linenos">515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="Postgres.Generator-516"><a href="#Postgres.Generator-516"><span class="linenos">516</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> +</span><span id="Postgres.Generator-517"><a href="#Postgres.Generator-517"><span class="linenos">517</span></a> <span class="p">),</span> +</span><span id="Postgres.Generator-518"><a href="#Postgres.Generator-518"><span class="linenos">518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="Postgres.Generator-519"><a href="#Postgres.Generator-519"><span class="linenos">519</span></a> <span class="p">[</span><span class="n">transforms</span><span class="o">.</span><span class="n">add_within_group_for_percentiles</span><span class="p">]</span> +</span><span id="Postgres.Generator-520"><a href="#Postgres.Generator-520"><span class="linenos">520</span></a> <span class="p">),</span> +</span><span id="Postgres.Generator-521"><a href="#Postgres.Generator-521"><span class="linenos">521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-522"><a href="#Postgres.Generator-522"><span class="linenos">522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">),</span> +</span><span id="Postgres.Generator-523"><a href="#Postgres.Generator-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"RANDOM"</span><span class="p">),</span> +</span><span id="Postgres.Generator-524"><a href="#Postgres.Generator-524"><span class="linenos">524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">),</span> +</span><span id="Postgres.Generator-525"><a href="#Postgres.Generator-525"><span class="linenos">525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">"~*"</span><span class="p">),</span> +</span><span id="Postgres.Generator-526"><a href="#Postgres.Generator-526"><span class="linenos">526</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> +</span><span id="Postgres.Generator-527"><a href="#Postgres.Generator-527"><span class="linenos">527</span></a> <span class="p">[</span> +</span><span id="Postgres.Generator-528"><a href="#Postgres.Generator-528"><span class="linenos">528</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_semi_and_anti_joins</span><span class="p">,</span> +</span><span id="Postgres.Generator-529"><a href="#Postgres.Generator-529"><span class="linenos">529</span></a> <span class="n">transforms</span><span class="o">.</span><span class="n">eliminate_qualify</span><span class="p">,</span> +</span><span id="Postgres.Generator-530"><a href="#Postgres.Generator-530"><span class="linenos">530</span></a> <span class="p">]</span> +</span><span id="Postgres.Generator-531"><a href="#Postgres.Generator-531"><span class="linenos">531</span></a> <span class="p">),</span> +</span><span id="Postgres.Generator-532"><a href="#Postgres.Generator-532"><span class="linenos">532</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-533"><a href="#Postgres.Generator-533"><span class="linenos">533</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_DATE"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="Postgres.Generator-534"><a href="#Postgres.Generator-534"><span class="linenos">534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="Postgres.Generator-535"><a href="#Postgres.Generator-535"><span class="linenos">535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructExtract</span><span class="p">:</span> <span class="n">struct_extract_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-536"><a href="#Postgres.Generator-536"><span class="linenos">536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-537"><a href="#Postgres.Generator-537"><span class="linenos">537</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIME"</span><span class="p">),</span> +</span><span id="Postgres.Generator-538"><a href="#Postgres.Generator-538"><span class="linenos">538</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_TIMESTAMP"</span><span class="p">),</span> +</span><span id="Postgres.Generator-539"><a href="#Postgres.Generator-539"><span class="linenos">539</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">(</span><span class="n">zone</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Postgres.Generator-540"><a href="#Postgres.Generator-540"><span class="linenos">540</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-541"><a href="#Postgres.Generator-541"><span class="linenos">541</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_CHAR"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)),</span> +</span><span id="Postgres.Generator-542"><a href="#Postgres.Generator-542"><span class="linenos">542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> +</span><span id="Postgres.Generator-543"><a href="#Postgres.Generator-543"><span class="linenos">543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-544"><a href="#Postgres.Generator-544"><span class="linenos">544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-545"><a href="#Postgres.Generator-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"+"</span><span class="p">),</span> +</span><span id="Postgres.Generator-546"><a href="#Postgres.Generator-546"><span class="linenos">546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-547"><a href="#Postgres.Generator-547"><span class="linenos">547</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> +</span><span id="Postgres.Generator-548"><a href="#Postgres.Generator-548"><span class="linenos">548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="Postgres.Generator-549"><a href="#Postgres.Generator-549"><span class="linenos">549</span></a> <span class="s2">"DATE_PART"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"epoch"</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> +</span><span id="Postgres.Generator-550"><a href="#Postgres.Generator-550"><span class="linenos">550</span></a> <span class="p">),</span> +</span><span id="Postgres.Generator-551"><a href="#Postgres.Generator-551"><span class="linenos">551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_POP"</span><span class="p">),</span> +</span><span id="Postgres.Generator-552"><a href="#Postgres.Generator-552"><span class="linenos">552</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Variance</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"VAR_SAMP"</span><span class="p">),</span> +</span><span id="Postgres.Generator-553"><a href="#Postgres.Generator-553"><span class="linenos">553</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-554"><a href="#Postgres.Generator-554"><span class="linenos">554</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span> +</span><span id="Postgres.Generator-555"><a href="#Postgres.Generator-555"><span class="linenos">555</span></a> <span class="p">}</span> +</span><span id="Postgres.Generator-556"><a href="#Postgres.Generator-556"><span class="linenos">556</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> +</span><span id="Postgres.Generator-557"><a href="#Postgres.Generator-557"><span class="linenos">557</span></a> +</span><span id="Postgres.Generator-558"><a href="#Postgres.Generator-558"><span class="linenos">558</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Generator-559"><a href="#Postgres.Generator-559"><span class="linenos">559</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">,</span> +</span><span id="Postgres.Generator-560"><a href="#Postgres.Generator-560"><span class="linenos">560</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Postgres.Generator-561"><a href="#Postgres.Generator-561"><span class="linenos">561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> +</span><span id="Postgres.Generator-562"><a href="#Postgres.Generator-562"><span class="linenos">562</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span><span class="p">,</span> +</span><span id="Postgres.Generator-563"><a href="#Postgres.Generator-563"><span class="linenos">563</span></a> <span class="p">}</span> +</span><span id="Postgres.Generator-564"><a href="#Postgres.Generator-564"><span class="linenos">564</span></a> +</span><span id="Postgres.Generator-565"><a href="#Postgres.Generator-565"><span class="linenos">565</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-566"><a href="#Postgres.Generator-566"><span class="linenos">566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="Postgres.Generator-567"><a href="#Postgres.Generator-567"><span class="linenos">567</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Postgres.Generator-568"><a href="#Postgres.Generator-568"><span class="linenos">568</span></a> +</span><span id="Postgres.Generator-569"><a href="#Postgres.Generator-569"><span class="linenos">569</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-570"><a href="#Postgres.Generator-570"><span class="linenos">570</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="Postgres.Generator-571"><a href="#Postgres.Generator-571"><span class="linenos">571</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Postgres.Generator-572"><a href="#Postgres.Generator-572"><span class="linenos">572</span></a> +</span><span id="Postgres.Generator-573"><a href="#Postgres.Generator-573"><span class="linenos">573</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-574"><a href="#Postgres.Generator-574"><span class="linenos">574</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Postgres.Generator-575"><a href="#Postgres.Generator-575"><span class="linenos">575</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="Postgres.Generator-576"><a href="#Postgres.Generator-576"><span class="linenos">576</span></a> +</span><span id="Postgres.Generator-577"><a href="#Postgres.Generator-577"><span class="linenos">577</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Postgres.Generator-578"><a href="#Postgres.Generator-578"><span class="linenos">578</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> +</span><span id="Postgres.Generator-579"><a href="#Postgres.Generator-579"><span class="linenos">579</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="Postgres.Generator-580"><a href="#Postgres.Generator-580"><span class="linenos">580</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Postgres.Generator-581"><a href="#Postgres.Generator-581"><span class="linenos">581</span></a> +</span><span id="Postgres.Generator-582"><a href="#Postgres.Generator-582"><span class="linenos">582</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> +</span><span id="Postgres.Generator-583"><a href="#Postgres.Generator-583"><span class="linenos">583</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Postgres.Generator-584"><a href="#Postgres.Generator-584"><span class="linenos">584</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator-585"><a href="#Postgres.Generator-585"><span class="linenos">585</span></a> +</span><span id="Postgres.Generator-586"><a href="#Postgres.Generator-586"><span class="linenos">586</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> +</span><span id="Postgres.Generator-587"><a href="#Postgres.Generator-587"><span class="linenos">587</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> +</span><span id="Postgres.Generator-588"><a href="#Postgres.Generator-588"><span class="linenos">588</span></a> +</span><span id="Postgres.Generator-589"><a href="#Postgres.Generator-589"><span class="linenos">589</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres.Generator-590"><a href="#Postgres.Generator-590"><span class="linenos">590</span></a> +</span><span id="Postgres.Generator-591"><a href="#Postgres.Generator-591"><span class="linenos">591</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Postgres.Generator-592"><a href="#Postgres.Generator-592"><span class="linenos">592</span></a> +</span><span id="Postgres.Generator-593"><a href="#Postgres.Generator-593"><span class="linenos">593</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-594"><a href="#Postgres.Generator-594"><span class="linenos">594</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> +</span><span id="Postgres.Generator-595"><a href="#Postgres.Generator-595"><span class="linenos">595</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> +</span><span id="Postgres.Generator-596"><a href="#Postgres.Generator-596"><span class="linenos">596</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Postgres.Generator-597"><a href="#Postgres.Generator-597"><span class="linenos">597</span></a> +</span><span id="Postgres.Generator-598"><a href="#Postgres.Generator-598"><span class="linenos">598</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Postgres.Generator-599"><a href="#Postgres.Generator-599"><span class="linenos">599</span></a> +</span><span id="Postgres.Generator-600"><a href="#Postgres.Generator-600"><span class="linenos">600</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-601"><a href="#Postgres.Generator-601"><span class="linenos">601</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Postgres.Generator-602"><a href="#Postgres.Generator-602"><span class="linenos">602</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> +</span><span id="Postgres.Generator-603"><a href="#Postgres.Generator-603"><span class="linenos">603</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Postgres.Generator-604"><a href="#Postgres.Generator-604"><span class="linenos">604</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="Postgres.Generator-605"><a href="#Postgres.Generator-605"><span class="linenos">605</span></a> +</span><span id="Postgres.Generator-606"><a href="#Postgres.Generator-606"><span class="linenos">606</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-607"><a href="#Postgres.Generator-607"><span class="linenos">607</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Postgres.Generator-608"><a href="#Postgres.Generator-608"><span class="linenos">608</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> </span><span id="Postgres.Generator-609"><a href="#Postgres.Generator-609"><span class="linenos">609</span></a> -</span><span id="Postgres.Generator-610"><a href="#Postgres.Generator-610"><span class="linenos">610</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator-611"><a href="#Postgres.Generator-611"><span class="linenos">611</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Postgres.Generator-612"><a href="#Postgres.Generator-612"><span class="linenos">612</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> -</span><span id="Postgres.Generator-613"><a href="#Postgres.Generator-613"><span class="linenos">613</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Postgres.Generator-614"><a href="#Postgres.Generator-614"><span class="linenos">614</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="Postgres.Generator-610"><a href="#Postgres.Generator-610"><span class="linenos">610</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> +</span><span id="Postgres.Generator-611"><a href="#Postgres.Generator-611"><span class="linenos">611</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator-612"><a href="#Postgres.Generator-612"><span class="linenos">612</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> +</span><span id="Postgres.Generator-613"><a href="#Postgres.Generator-613"><span class="linenos">613</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator-614"><a href="#Postgres.Generator-614"><span class="linenos">614</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> </span><span id="Postgres.Generator-615"><a href="#Postgres.Generator-615"><span class="linenos">615</span></a> -</span><span id="Postgres.Generator-616"><a href="#Postgres.Generator-616"><span class="linenos">616</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator-617"><a href="#Postgres.Generator-617"><span class="linenos">617</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Postgres.Generator-618"><a href="#Postgres.Generator-618"><span class="linenos">618</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator-619"><a href="#Postgres.Generator-619"><span class="linenos">619</span></a> -</span><span id="Postgres.Generator-620"><a href="#Postgres.Generator-620"><span class="linenos">620</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> -</span><span id="Postgres.Generator-621"><a href="#Postgres.Generator-621"><span class="linenos">621</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator-622"><a href="#Postgres.Generator-622"><span class="linenos">622</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> -</span><span id="Postgres.Generator-623"><a href="#Postgres.Generator-623"><span class="linenos">623</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator-624"><a href="#Postgres.Generator-624"><span class="linenos">624</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> -</span><span id="Postgres.Generator-625"><a href="#Postgres.Generator-625"><span class="linenos">625</span></a> -</span><span id="Postgres.Generator-626"><a href="#Postgres.Generator-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres.Generator-616"><a href="#Postgres.Generator-616"><span class="linenos">616</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres.Generator-617"><a href="#Postgres.Generator-617"><span class="linenos">617</span></a> +</span><span id="Postgres.Generator-618"><a href="#Postgres.Generator-618"><span class="linenos">618</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator-619"><a href="#Postgres.Generator-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">):</span> +</span><span id="Postgres.Generator-620"><a href="#Postgres.Generator-620"><span class="linenos">620</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Postgres.Generator-621"><a href="#Postgres.Generator-621"><span class="linenos">621</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"values"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Postgres.Generator-622"><a href="#Postgres.Generator-622"><span class="linenos">622</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Postgres.Generator-623"><a href="#Postgres.Generator-623"><span class="linenos">623</span></a> <span class="k">return</span> <span class="s2">"ARRAY"</span> +</span><span id="Postgres.Generator-624"><a href="#Postgres.Generator-624"><span class="linenos">624</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -2810,7 +2826,7 @@ Default: True</li> <div class="attr variable"> <span class="name">TRANSFORMS</span> = <input id="Postgres.Generator.TRANSFORMS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Postgres.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function json_path_key_only_name>, <class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CaseSpecificColumnConstraint">sqlglot.expressions.CaseSpecificColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetColumnConstraint">sqlglot.expressions.CharacterSetColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ClusteredColumnConstraint">sqlglot.expressions.ClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CollateColumnConstraint">sqlglot.expressions.CollateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DateFormatColumnConstraint">sqlglot.expressions.DateFormatColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DefaultColumnConstraint">sqlglot.expressions.DefaultColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EncodeColumnConstraint">sqlglot.expressions.EncodeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EphemeralColumnConstraint">sqlglot.expressions.EphemeralColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExcludeColumnConstraint">sqlglot.expressions.ExcludeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InlineLengthColumnConstraint">sqlglot.expressions.InlineLengthColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IntervalSpan">sqlglot.expressions.IntervalSpan</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function _json_extract_sql.<locals>._generate>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function _json_extract_sql.<locals>._generate>, <class '<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NonClusteredColumnConstraint">sqlglot.expressions.NonClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NotForReplicationColumnConstraint">sqlglot.expressions.NotForReplicationColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnUpdateColumnConstraint">sqlglot.expressions.OnUpdateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#PathColumnConstraint">sqlglot.expressions.PathColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ProjectionPolicyColumnConstraint">sqlglot.expressions.ProjectionPolicyColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TagColumnConstraint">sqlglot.expressions.TagColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TitleColumnConstraint">sqlglot.expressions.TitleColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UppercaseColumnConstraint">sqlglot.expressions.UppercaseColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithOperator">sqlglot.expressions.WithOperator</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>: <function any_value_to_max_sql>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function filter_array_using_unnest>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ColumnDef">sqlglot.expressions.ColumnDef</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function no_paren_current_date_sql>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _date_diff_sql>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function datestrtodate_sql>, <class '<a href="../expressions.html#DataType">sqlglot.expressions.DataType</a>'>: <function _datatype_sql>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _string_agg_sql>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>: <function no_last_day_sql>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function max_or_greatest>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function no_map_from_entries_sql>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function min_or_least>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>: <function merge_without_target_sql>, <class '<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#Pivot">sqlglot.expressions.Pivot</a>'>: <function no_pivot_sql>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function str_position_sql>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function struct_extract_sql>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _substring_sql>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function timestamptrunc_sql.<locals>._timestamptrunc_sql>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function timestrtotime_sql>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function trim_sql>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function no_trycast_sql>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function _date_diff_sql>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _unix_to_time_sql>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function bool_xor_sql>}</span> + <label class="view-value-button pdoc-button" for="Postgres.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function json_path_key_only_name>, <class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CaseSpecificColumnConstraint">sqlglot.expressions.CaseSpecificColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetColumnConstraint">sqlglot.expressions.CharacterSetColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ClusteredColumnConstraint">sqlglot.expressions.ClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CollateColumnConstraint">sqlglot.expressions.CollateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DateFormatColumnConstraint">sqlglot.expressions.DateFormatColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DefaultColumnConstraint">sqlglot.expressions.DefaultColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EncodeColumnConstraint">sqlglot.expressions.EncodeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EphemeralColumnConstraint">sqlglot.expressions.EphemeralColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExcludeColumnConstraint">sqlglot.expressions.ExcludeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InlineLengthColumnConstraint">sqlglot.expressions.InlineLengthColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IntervalSpan">sqlglot.expressions.IntervalSpan</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function _json_extract_sql.<locals>._generate>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function _json_extract_sql.<locals>._generate>, <class '<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NonClusteredColumnConstraint">sqlglot.expressions.NonClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NotForReplicationColumnConstraint">sqlglot.expressions.NotForReplicationColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnUpdateColumnConstraint">sqlglot.expressions.OnUpdateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#PathColumnConstraint">sqlglot.expressions.PathColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ProjectionPolicyColumnConstraint">sqlglot.expressions.ProjectionPolicyColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TagColumnConstraint">sqlglot.expressions.TagColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TitleColumnConstraint">sqlglot.expressions.TitleColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UppercaseColumnConstraint">sqlglot.expressions.UppercaseColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithOperator">sqlglot.expressions.WithOperator</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>: <function any_value_to_max_sql>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function filter_array_using_unnest>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ColumnDef">sqlglot.expressions.ColumnDef</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function no_paren_current_date_sql>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _date_diff_sql>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function datestrtodate_sql>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _string_agg_sql>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>: <function no_last_day_sql>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function max_or_greatest>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function no_map_from_entries_sql>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function min_or_least>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>: <function merge_without_target_sql>, <class '<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#Pivot">sqlglot.expressions.Pivot</a>'>: <function no_pivot_sql>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function str_position_sql>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function struct_extract_sql>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _substring_sql>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function timestamptrunc_sql.<locals>._timestamptrunc_sql>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function timestrtotime_sql>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function trim_sql>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function no_trycast_sql>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function _date_diff_sql>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _unix_to_time_sql>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function <a href="#Postgres.Generator">Postgres.Generator</a>.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function bool_xor_sql>}</span> </div> @@ -2843,9 +2859,9 @@ Default: True</li> </div> <a class="headerlink" href="#Postgres.Generator.schemacommentproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.schemacommentproperty_sql-575"><a href="#Postgres.Generator.schemacommentproperty_sql-575"><span class="linenos">575</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator.schemacommentproperty_sql-576"><a href="#Postgres.Generator.schemacommentproperty_sql-576"><span class="linenos">576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="Postgres.Generator.schemacommentproperty_sql-577"><a href="#Postgres.Generator.schemacommentproperty_sql-577"><span class="linenos">577</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.schemacommentproperty_sql-565"><a href="#Postgres.Generator.schemacommentproperty_sql-565"><span class="linenos">565</span></a> <span class="k">def</span> <span class="nf">schemacommentproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.schemacommentproperty_sql-566"><a href="#Postgres.Generator.schemacommentproperty_sql-566"><span class="linenos">566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Table comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="Postgres.Generator.schemacommentproperty_sql-567"><a href="#Postgres.Generator.schemacommentproperty_sql-567"><span class="linenos">567</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -2863,9 +2879,9 @@ Default: True</li> </div> <a class="headerlink" href="#Postgres.Generator.commentcolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.commentcolumnconstraint_sql-579"><a href="#Postgres.Generator.commentcolumnconstraint_sql-579"><span class="linenos">579</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator.commentcolumnconstraint_sql-580"><a href="#Postgres.Generator.commentcolumnconstraint_sql-580"><span class="linenos">580</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> -</span><span id="Postgres.Generator.commentcolumnconstraint_sql-581"><a href="#Postgres.Generator.commentcolumnconstraint_sql-581"><span class="linenos">581</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.commentcolumnconstraint_sql-569"><a href="#Postgres.Generator.commentcolumnconstraint_sql-569"><span class="linenos">569</span></a> <span class="k">def</span> <span class="nf">commentcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.commentcolumnconstraint_sql-570"><a href="#Postgres.Generator.commentcolumnconstraint_sql-570"><span class="linenos">570</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Column comments are not supported in the CREATE statement"</span><span class="p">)</span> +</span><span id="Postgres.Generator.commentcolumnconstraint_sql-571"><a href="#Postgres.Generator.commentcolumnconstraint_sql-571"><span class="linenos">571</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -2883,25 +2899,25 @@ Default: True</li> </div> <a class="headerlink" href="#Postgres.Generator.unnest_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.unnest_sql-583"><a href="#Postgres.Generator.unnest_sql-583"><span class="linenos">583</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator.unnest_sql-584"><a href="#Postgres.Generator.unnest_sql-584"><span class="linenos">584</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Postgres.Generator.unnest_sql-585"><a href="#Postgres.Generator.unnest_sql-585"><span class="linenos">585</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="Postgres.Generator.unnest_sql-586"><a href="#Postgres.Generator.unnest_sql-586"><span class="linenos">586</span></a> -</span><span id="Postgres.Generator.unnest_sql-587"><a href="#Postgres.Generator.unnest_sql-587"><span class="linenos">587</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Postgres.Generator.unnest_sql-588"><a href="#Postgres.Generator.unnest_sql-588"><span class="linenos">588</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> -</span><span id="Postgres.Generator.unnest_sql-589"><a href="#Postgres.Generator.unnest_sql-589"><span class="linenos">589</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="Postgres.Generator.unnest_sql-590"><a href="#Postgres.Generator.unnest_sql-590"><span class="linenos">590</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> -</span><span id="Postgres.Generator.unnest_sql-591"><a href="#Postgres.Generator.unnest_sql-591"><span class="linenos">591</span></a> -</span><span id="Postgres.Generator.unnest_sql-592"><a href="#Postgres.Generator.unnest_sql-592"><span class="linenos">592</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> -</span><span id="Postgres.Generator.unnest_sql-593"><a href="#Postgres.Generator.unnest_sql-593"><span class="linenos">593</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Postgres.Generator.unnest_sql-594"><a href="#Postgres.Generator.unnest_sql-594"><span class="linenos">594</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator.unnest_sql-595"><a href="#Postgres.Generator.unnest_sql-595"><span class="linenos">595</span></a> -</span><span id="Postgres.Generator.unnest_sql-596"><a href="#Postgres.Generator.unnest_sql-596"><span class="linenos">596</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> -</span><span id="Postgres.Generator.unnest_sql-597"><a href="#Postgres.Generator.unnest_sql-597"><span class="linenos">597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> -</span><span id="Postgres.Generator.unnest_sql-598"><a href="#Postgres.Generator.unnest_sql-598"><span class="linenos">598</span></a> -</span><span id="Postgres.Generator.unnest_sql-599"><a href="#Postgres.Generator.unnest_sql-599"><span class="linenos">599</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Postgres.Generator.unnest_sql-600"><a href="#Postgres.Generator.unnest_sql-600"><span class="linenos">600</span></a> -</span><span id="Postgres.Generator.unnest_sql-601"><a href="#Postgres.Generator.unnest_sql-601"><span class="linenos">601</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.unnest_sql-573"><a href="#Postgres.Generator.unnest_sql-573"><span class="linenos">573</span></a> <span class="k">def</span> <span class="nf">unnest_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.unnest_sql-574"><a href="#Postgres.Generator.unnest_sql-574"><span class="linenos">574</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Postgres.Generator.unnest_sql-575"><a href="#Postgres.Generator.unnest_sql-575"><span class="linenos">575</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="Postgres.Generator.unnest_sql-576"><a href="#Postgres.Generator.unnest_sql-576"><span class="linenos">576</span></a> +</span><span id="Postgres.Generator.unnest_sql-577"><a href="#Postgres.Generator.unnest_sql-577"><span class="linenos">577</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Postgres.Generator.unnest_sql-578"><a href="#Postgres.Generator.unnest_sql-578"><span class="linenos">578</span></a> <span class="k">if</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"array<json>"</span><span class="p">):</span> +</span><span id="Postgres.Generator.unnest_sql-579"><a href="#Postgres.Generator.unnest_sql-579"><span class="linenos">579</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="Postgres.Generator.unnest_sql-580"><a href="#Postgres.Generator.unnest_sql-580"><span class="linenos">580</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Postgres.Generator.unnest_sql-581"><a href="#Postgres.Generator.unnest_sql-581"><span class="linenos">581</span></a> +</span><span id="Postgres.Generator.unnest_sql-582"><a href="#Postgres.Generator.unnest_sql-582"><span class="linenos">582</span></a> <span class="n">arg</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">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">))</span> +</span><span id="Postgres.Generator.unnest_sql-583"><a href="#Postgres.Generator.unnest_sql-583"><span class="linenos">583</span></a> <span class="n">alias</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">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Postgres.Generator.unnest_sql-584"><a href="#Postgres.Generator.unnest_sql-584"><span class="linenos">584</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator.unnest_sql-585"><a href="#Postgres.Generator.unnest_sql-585"><span class="linenos">585</span></a> +</span><span id="Postgres.Generator.unnest_sql-586"><a href="#Postgres.Generator.unnest_sql-586"><span class="linenos">586</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">):</span> +</span><span id="Postgres.Generator.unnest_sql-587"><a href="#Postgres.Generator.unnest_sql-587"><span class="linenos">587</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported JSON_ARRAY_ELEMENTS with offset"</span><span class="p">)</span> +</span><span id="Postgres.Generator.unnest_sql-588"><a href="#Postgres.Generator.unnest_sql-588"><span class="linenos">588</span></a> +</span><span id="Postgres.Generator.unnest_sql-589"><a href="#Postgres.Generator.unnest_sql-589"><span class="linenos">589</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"JSON_ARRAY_ELEMENTS(</span><span class="si">{</span><span class="n">arg</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Postgres.Generator.unnest_sql-590"><a href="#Postgres.Generator.unnest_sql-590"><span class="linenos">590</span></a> +</span><span id="Postgres.Generator.unnest_sql-591"><a href="#Postgres.Generator.unnest_sql-591"><span class="linenos">591</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -2919,12 +2935,12 @@ Default: True</li> </div> <a class="headerlink" href="#Postgres.Generator.bracket_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.bracket_sql-603"><a href="#Postgres.Generator.bracket_sql-603"><span class="linenos">603</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator.bracket_sql-604"><a href="#Postgres.Generator.bracket_sql-604"><span class="linenos">604</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> -</span><span id="Postgres.Generator.bracket_sql-605"><a href="#Postgres.Generator.bracket_sql-605"><span class="linenos">605</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> -</span><span id="Postgres.Generator.bracket_sql-606"><a href="#Postgres.Generator.bracket_sql-606"><span class="linenos">606</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Postgres.Generator.bracket_sql-607"><a href="#Postgres.Generator.bracket_sql-607"><span class="linenos">607</span></a> -</span><span id="Postgres.Generator.bracket_sql-608"><a href="#Postgres.Generator.bracket_sql-608"><span class="linenos">608</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.bracket_sql-593"><a href="#Postgres.Generator.bracket_sql-593"><span class="linenos">593</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.bracket_sql-594"><a href="#Postgres.Generator.bracket_sql-594"><span class="linenos">594</span></a><span class="w"> </span><span class="sd">"""Forms like ARRAY[1, 2, 3][3] aren't allowed; we need to wrap the ARRAY."""</span> +</span><span id="Postgres.Generator.bracket_sql-595"><a href="#Postgres.Generator.bracket_sql-595"><span class="linenos">595</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span> +</span><span id="Postgres.Generator.bracket_sql-596"><a href="#Postgres.Generator.bracket_sql-596"><span class="linenos">596</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Postgres.Generator.bracket_sql-597"><a href="#Postgres.Generator.bracket_sql-597"><span class="linenos">597</span></a> +</span><span id="Postgres.Generator.bracket_sql-598"><a href="#Postgres.Generator.bracket_sql-598"><span class="linenos">598</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -2944,11 +2960,11 @@ Default: True</li> </div> <a class="headerlink" href="#Postgres.Generator.matchagainst_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.matchagainst_sql-610"><a href="#Postgres.Generator.matchagainst_sql-610"><span class="linenos">610</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator.matchagainst_sql-611"><a href="#Postgres.Generator.matchagainst_sql-611"><span class="linenos">611</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Postgres.Generator.matchagainst_sql-612"><a href="#Postgres.Generator.matchagainst_sql-612"><span class="linenos">612</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> -</span><span id="Postgres.Generator.matchagainst_sql-613"><a href="#Postgres.Generator.matchagainst_sql-613"><span class="linenos">613</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Postgres.Generator.matchagainst_sql-614"><a href="#Postgres.Generator.matchagainst_sql-614"><span class="linenos">614</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.matchagainst_sql-600"><a href="#Postgres.Generator.matchagainst_sql-600"><span class="linenos">600</span></a> <span class="k">def</span> <span class="nf">matchagainst_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.matchagainst_sql-601"><a href="#Postgres.Generator.matchagainst_sql-601"><span class="linenos">601</span></a> <span class="n">this</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">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Postgres.Generator.matchagainst_sql-602"><a href="#Postgres.Generator.matchagainst_sql-602"><span class="linenos">602</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> @@ </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> +</span><span id="Postgres.Generator.matchagainst_sql-603"><a href="#Postgres.Generator.matchagainst_sql-603"><span class="linenos">603</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="s2">" OR "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Postgres.Generator.matchagainst_sql-604"><a href="#Postgres.Generator.matchagainst_sql-604"><span class="linenos">604</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sql</span> </span></pre></div> @@ -2966,17 +2982,41 @@ Default: True</li> </div> <a class="headerlink" href="#Postgres.Generator.alterset_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.alterset_sql-616"><a href="#Postgres.Generator.alterset_sql-616"><span class="linenos">616</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Postgres.Generator.alterset_sql-617"><a href="#Postgres.Generator.alterset_sql-617"><span class="linenos">617</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Postgres.Generator.alterset_sql-618"><a href="#Postgres.Generator.alterset_sql-618"><span class="linenos">618</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator.alterset_sql-619"><a href="#Postgres.Generator.alterset_sql-619"><span class="linenos">619</span></a> -</span><span id="Postgres.Generator.alterset_sql-620"><a href="#Postgres.Generator.alterset_sql-620"><span class="linenos">620</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> -</span><span id="Postgres.Generator.alterset_sql-621"><a href="#Postgres.Generator.alterset_sql-621"><span class="linenos">621</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator.alterset_sql-622"><a href="#Postgres.Generator.alterset_sql-622"><span class="linenos">622</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> -</span><span id="Postgres.Generator.alterset_sql-623"><a href="#Postgres.Generator.alterset_sql-623"><span class="linenos">623</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Postgres.Generator.alterset_sql-624"><a href="#Postgres.Generator.alterset_sql-624"><span class="linenos">624</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> -</span><span id="Postgres.Generator.alterset_sql-625"><a href="#Postgres.Generator.alterset_sql-625"><span class="linenos">625</span></a> -</span><span id="Postgres.Generator.alterset_sql-626"><a href="#Postgres.Generator.alterset_sql-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.alterset_sql-606"><a href="#Postgres.Generator.alterset_sql-606"><span class="linenos">606</span></a> <span class="k">def</span> <span class="nf">alterset_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.alterset_sql-607"><a href="#Postgres.Generator.alterset_sql-607"><span class="linenos">607</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Postgres.Generator.alterset_sql-608"><a href="#Postgres.Generator.alterset_sql-608"><span class="linenos">608</span></a> <span class="n">exprs</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">exprs</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">exprs</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator.alterset_sql-609"><a href="#Postgres.Generator.alterset_sql-609"><span class="linenos">609</span></a> +</span><span id="Postgres.Generator.alterset_sql-610"><a href="#Postgres.Generator.alterset_sql-610"><span class="linenos">610</span></a> <span class="n">access_method</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">expression</span><span class="p">,</span> <span class="s2">"access_method"</span><span class="p">)</span> +</span><span id="Postgres.Generator.alterset_sql-611"><a href="#Postgres.Generator.alterset_sql-611"><span class="linenos">611</span></a> <span class="n">access_method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ACCESS METHOD </span><span class="si">{</span><span class="n">access_method</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">access_method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator.alterset_sql-612"><a href="#Postgres.Generator.alterset_sql-612"><span class="linenos">612</span></a> <span class="n">tablespace</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">expression</span><span class="p">,</span> <span class="s2">"tablespace"</span><span class="p">)</span> +</span><span id="Postgres.Generator.alterset_sql-613"><a href="#Postgres.Generator.alterset_sql-613"><span class="linenos">613</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLESPACE </span><span class="si">{</span><span class="n">tablespace</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">tablespace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Postgres.Generator.alterset_sql-614"><a href="#Postgres.Generator.alterset_sql-614"><span class="linenos">614</span></a> <span class="n">option</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">expression</span><span class="p">,</span> <span class="s2">"option"</span><span class="p">)</span> +</span><span id="Postgres.Generator.alterset_sql-615"><a href="#Postgres.Generator.alterset_sql-615"><span class="linenos">615</span></a> +</span><span id="Postgres.Generator.alterset_sql-616"><a href="#Postgres.Generator.alterset_sql-616"><span class="linenos">616</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="n">exprs</span><span class="si">}{</span><span class="n">access_method</span><span class="si">}{</span><span class="n">tablespace</span><span class="si">}{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span> +</span></pre></div> + + + + + </div> + <div id="Postgres.Generator.datatype_sql" class="classattr"> + <input id="Postgres.Generator.datatype_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> +<div class="attr function"> + + <span class="def">def</span> + <span class="name">datatype_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#DataType">sqlglot.expressions.DataType</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Postgres.Generator.datatype_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Postgres.Generator.datatype_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.datatype_sql-618"><a href="#Postgres.Generator.datatype_sql-618"><span class="linenos">618</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Postgres.Generator.datatype_sql-619"><a href="#Postgres.Generator.datatype_sql-619"><span class="linenos">619</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">):</span> +</span><span id="Postgres.Generator.datatype_sql-620"><a href="#Postgres.Generator.datatype_sql-620"><span class="linenos">620</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Postgres.Generator.datatype_sql-621"><a href="#Postgres.Generator.datatype_sql-621"><span class="linenos">621</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"values"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Postgres.Generator.datatype_sql-622"><a href="#Postgres.Generator.datatype_sql-622"><span class="linenos">622</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Postgres.Generator.datatype_sql-623"><a href="#Postgres.Generator.datatype_sql-623"><span class="linenos">623</span></a> <span class="k">return</span> <span class="s2">"ARRAY"</span> +</span><span id="Postgres.Generator.datatype_sql-624"><a href="#Postgres.Generator.datatype_sql-624"><span class="linenos">624</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -3142,7 +3182,6 @@ Default: True</li> <dd id="Postgres.Generator.unicodestring_sql" class="function"><a href="../generator.html#Generator.unicodestring_sql">unicodestring_sql</a></dd> <dd id="Postgres.Generator.rawstring_sql" class="function"><a href="../generator.html#Generator.rawstring_sql">rawstring_sql</a></dd> <dd id="Postgres.Generator.datatypeparam_sql" class="function"><a href="../generator.html#Generator.datatypeparam_sql">datatypeparam_sql</a></dd> - <dd id="Postgres.Generator.datatype_sql" class="function"><a href="../generator.html#Generator.datatype_sql">datatype_sql</a></dd> <dd id="Postgres.Generator.directory_sql" class="function"><a href="../generator.html#Generator.directory_sql">directory_sql</a></dd> <dd id="Postgres.Generator.delete_sql" class="function"><a href="../generator.html#Generator.delete_sql">delete_sql</a></dd> <dd id="Postgres.Generator.drop_sql" class="function"><a href="../generator.html#Generator.drop_sql">drop_sql</a></dd> diff --git a/docs/sqlglot/dialects/presto.html b/docs/sqlglot/dialects/presto.html index aa90912..08d09a3 100644 --- a/docs/sqlglot/dialects/presto.html +++ b/docs/sqlglot/dialects/presto.html @@ -1883,7 +1883,7 @@ Possible values: <code>True</code>, <code>False</code>, <code>None</code> (two a <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Presto.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Presto.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.STRUCT: 'STRUCT'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'START': <TokenType.BEGIN: 'BEGIN'>, 'MATCH_RECOGNIZE': <TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>, 'IPADDRESS': <TokenType.IPADDRESS: 'IPADDRESS'>, 'IPPREFIX': <TokenType.IPPREFIX: 'IPPREFIX'>, 'TDIGEST': <TokenType.TDIGEST: 'TDIGEST'>, 'HYPERLOGLOG': <TokenType.HLLSKETCH: 'HLLSKETCH'>}</span> + <label class="view-value-button pdoc-button" for="Presto.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.STRUCT: 'STRUCT'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'START': <TokenType.BEGIN: 'BEGIN'>, 'MATCH_RECOGNIZE': <TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>, 'IPADDRESS': <TokenType.IPADDRESS: 'IPADDRESS'>, 'IPPREFIX': <TokenType.IPPREFIX: 'IPPREFIX'>, 'TDIGEST': <TokenType.TDIGEST: 'TDIGEST'>, 'HYPERLOGLOG': <TokenType.HLLSKETCH: 'HLLSKETCH'>}</span> </div> @@ -2033,7 +2033,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Presto.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Presto.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function date_trunc_to_time>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function _build_to_char>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'ARBITRARY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_PERCENTILE': <function _build_approx_percentile>, 'BITWISE_AND': <function binary_from_function.<locals>.<lambda>>, 'BITWISE_NOT': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'BITWISE_OR': <function binary_from_function.<locals>.<lambda>>, 'BITWISE_XOR': <function binary_from_function.<locals>.<lambda>>, 'CARDINALITY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'DATE_PARSE': <function build_formatted_time.<locals>._builder>, 'ELEMENT_AT': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'FROM_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'FROM_UNIXTIME': <function _build_from_unixtime>, 'FROM_UTF8': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'NOW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'ROW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'SEQUENCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'SET_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'SPLIT_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STRPOS': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'TO_UNIXTIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TO_UTF8': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'SHA256': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'SHA512': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="Presto.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function date_trunc_to_time>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function _build_to_char>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'ARBITRARY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_PERCENTILE': <function _build_approx_percentile>, 'BITWISE_AND': <function binary_from_function.<locals>.<lambda>>, 'BITWISE_NOT': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'BITWISE_OR': <function binary_from_function.<locals>.<lambda>>, 'BITWISE_XOR': <function binary_from_function.<locals>.<lambda>>, 'CARDINALITY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'DATE_PARSE': <function build_formatted_time.<locals>._builder>, 'ELEMENT_AT': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'FROM_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'FROM_UNIXTIME': <function _build_from_unixtime>, 'FROM_UTF8': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'NOW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'ROW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'SEQUENCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'SET_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'SPLIT_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STRPOS': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'TO_UNIXTIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TO_UTF8': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'SHA256': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>, 'SHA512': <function <a href="#Presto.Parser">Presto.Parser</a>.<lambda>>}</span> </div> @@ -2059,7 +2059,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Presto.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Presto.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Presto.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -2111,6 +2111,7 @@ Default: 3</li> <dd id="Presto.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="Presto.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Presto.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Presto.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Presto.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Presto.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Presto.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -2843,7 +2844,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="Presto.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Presto.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'null', 'join', 'else', 'order', 'extract', 'group', 'inner', 'case', 'distinct', 'as', 'outer', 'not', 'union', 'cast', 'then', 'is', 'exists', 'natural', 'in', 'prepare', 'when', 'select', 'true', 'insert', 'and', 'end', 'intersect', 'into', 'from', 'using', 'or', 'for', 'table', 'create', 'with', 'current_time', 'deallocate', 'where', 'cross', 'drop', 'delete', 'right', 'having', 'full', 'escape', 'alter', 'between', 'describe', 'except', 'constraint', 'values', 'by', 'false', 'on', 'like', 'execute', 'left', 'current_timestamp'}</span> + <label class="view-value-button pdoc-button" for="Presto.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'else', 'is', 'from', 'execute', 'when', 'as', 'distinct', 'constraint', 'false', 'on', 'select', 'extract', 'deallocate', 'natural', 'table', 'between', 'alter', 'using', 'cross', 'cast', 'for', 'null', 'where', 'group', 'order', 'in', 'union', 'exists', 'true', 'full', 'create', 'by', 'end', 'escape', 'except', 'describe', 'inner', 'case', 'having', 'into', 'right', 'insert', 'left', 'or', 'outer', 'then', 'intersect', 'with', 'and', 'join', 'current_timestamp', 'prepare', 'delete', 'not', 'current_time', 'values', 'drop', 'like'}</span> </div> diff --git a/docs/sqlglot/dialects/prql.html b/docs/sqlglot/dialects/prql.html index 06fcec9..ab9c849 100644 --- a/docs/sqlglot/dialects/prql.html +++ b/docs/sqlglot/dialects/prql.html @@ -954,7 +954,7 @@ <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="PRQL.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="PRQL.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>}</span> + <label class="view-value-button pdoc-button" for="PRQL.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>}</span> </div> @@ -1239,7 +1239,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="PRQL.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="PRQL.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <function <a href="#PRQL.Parser">PRQL.Parser</a>.<lambda>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'AVERAGE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>}</span> + <label class="view-value-button pdoc-button" for="PRQL.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <function <a href="#PRQL.Parser">PRQL.Parser</a>.<lambda>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'AVERAGE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>}</span> </div> @@ -1292,6 +1292,7 @@ Default: 3</li> <dd id="PRQL.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="PRQL.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="PRQL.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="PRQL.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="PRQL.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="PRQL.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="PRQL.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/redshift.html b/docs/sqlglot/dialects/redshift.html index 8680814..3fe4a7d 100644 --- a/docs/sqlglot/dialects/redshift.html +++ b/docs/sqlglot/dialects/redshift.html @@ -1576,7 +1576,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Redshift.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Redshift.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <function <a href="#Redshift.Parser">Redshift.Parser</a>.<lambda>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function _build_date_delta.<locals>._builder>, 'DATEDIFF': <function _build_date_delta.<locals>._builder>, 'DATE_DIFF': <function _build_date_delta.<locals>._builder>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <function _build_generate_series>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function _build_regexp_replace>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function build_formatted_time.<locals>._builder>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_json_extract_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'JSON_EXTRACT_PATH': <function build_json_extract_path.<locals>._builder>, 'MAKE_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MAKE_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'NOW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'TO_TIMESTAMP': <function _build_to_timestamp>, 'UNNEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'DATEADD': <function _build_date_delta.<locals>._builder>, 'GETDATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'LISTAGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'SPLIT_TO_ARRAY': <function <a href="#Redshift.Parser">Redshift.Parser</a>.<lambda>>, 'STRTOL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>}</span> + <label class="view-value-button pdoc-button" for="Redshift.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <function <a href="#Redshift.Parser">Redshift.Parser</a>.<lambda>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <function _build_date_delta.<locals>._builder>, 'DATEDIFF': <function _build_date_delta.<locals>._builder>, 'DATE_DIFF': <function _build_date_delta.<locals>._builder>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <function _build_generate_series>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function _build_regexp_replace>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <function build_formatted_time.<locals>._builder>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_json_extract_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'JSON_EXTRACT_PATH': <function build_json_extract_path.<locals>._builder>, 'MAKE_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MAKE_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'NOW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'TO_TIMESTAMP': <function _build_to_timestamp>, 'UNNEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'DATEADD': <function _build_date_delta.<locals>._builder>, 'GETDATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'LISTAGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'SPLIT_TO_ARRAY': <function <a href="#Redshift.Parser">Redshift.Parser</a>.<lambda>>, 'STRTOL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>}</span> </div> @@ -1654,6 +1654,7 @@ Default: 3</li> <dd id="Redshift.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Redshift.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Redshift.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Redshift.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Redshift.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Redshift.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Redshift.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -1839,7 +1840,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Redshift.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Redshift.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.COMMAND: 'COMMAND'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.BIGINT: 'BIGINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.DOUBLE: 'DOUBLE'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '~~': <TokenType.LIKE: 'LIKE'>, '~~*': <TokenType.ILIKE: 'ILIKE'>, '~*': <TokenType.IRLIKE: 'IRLIKE'>, '~': <TokenType.RLIKE: 'RLIKE'>, '@@': <TokenType.DAT: 'DAT'>, '@>': <TokenType.AT_GT: 'AT_GT'>, '<@': <TokenType.LT_AT: 'LT_AT'>, '|/': <TokenType.PIPE_SLASH: 'PIPE_SLASH'>, '||/': <TokenType.DPIPE_SLASH: 'DPIPE_SLASH'>, 'BEGIN TRANSACTION': <TokenType.BEGIN: 'BEGIN'>, 'BIGSERIAL': <TokenType.BIGSERIAL: 'BIGSERIAL'>, 'CHARACTER VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'CONSTRAINT TRIGGER': <TokenType.COMMAND: 'COMMAND'>, 'CSTRING': <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, 'DECLARE': <TokenType.COMMAND: 'COMMAND'>, 'DO': <TokenType.COMMAND: 'COMMAND'>, 'EXEC': <TokenType.COMMAND: 'COMMAND'>, 'HSTORE': <TokenType.HSTORE: 'HSTORE'>, 'MONEY': <TokenType.MONEY: 'MONEY'>, 'NAME': <TokenType.NAME: 'NAME'>, 'OID': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'ONLY': <TokenType.ONLY: 'ONLY'>, 'OPERATOR': <TokenType.OPERATOR: 'OPERATOR'>, 'REFRESH': <TokenType.COMMAND: 'COMMAND'>, 'REINDEX': <TokenType.COMMAND: 'COMMAND'>, 'RESET': <TokenType.COMMAND: 'COMMAND'>, 'REVOKE': <TokenType.COMMAND: 'COMMAND'>, 'SERIAL': <TokenType.SERIAL: 'SERIAL'>, 'SMALLSERIAL': <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, 'REGCLASS': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCOLLATION': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCONFIG': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGDICTIONARY': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGNAMESPACE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPER': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPERATOR': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROC': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROCEDURE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGROLE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGTYPE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'HLLSKETCH': <TokenType.HLLSKETCH: 'HLLSKETCH'>, 'SUPER': <TokenType.SUPER: 'SUPER'>, 'TOP': <TokenType.TOP: 'TOP'>, 'UNLOAD': <TokenType.COMMAND: 'COMMAND'>, 'VARBYTE': <TokenType.VARBINARY: 'VARBINARY'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>}</span> + <label class="view-value-button pdoc-button" for="Redshift.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.COMMAND: 'COMMAND'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.BIGINT: 'BIGINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.DOUBLE: 'DOUBLE'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '~~': <TokenType.LIKE: 'LIKE'>, '~~*': <TokenType.ILIKE: 'ILIKE'>, '~*': <TokenType.IRLIKE: 'IRLIKE'>, '~': <TokenType.RLIKE: 'RLIKE'>, '@@': <TokenType.DAT: 'DAT'>, '@>': <TokenType.AT_GT: 'AT_GT'>, '<@': <TokenType.LT_AT: 'LT_AT'>, '|/': <TokenType.PIPE_SLASH: 'PIPE_SLASH'>, '||/': <TokenType.DPIPE_SLASH: 'DPIPE_SLASH'>, 'BEGIN TRANSACTION': <TokenType.BEGIN: 'BEGIN'>, 'BIGSERIAL': <TokenType.BIGSERIAL: 'BIGSERIAL'>, 'CHARACTER VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'CONSTRAINT TRIGGER': <TokenType.COMMAND: 'COMMAND'>, 'CSTRING': <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, 'DECLARE': <TokenType.COMMAND: 'COMMAND'>, 'DO': <TokenType.COMMAND: 'COMMAND'>, 'EXEC': <TokenType.COMMAND: 'COMMAND'>, 'HSTORE': <TokenType.HSTORE: 'HSTORE'>, 'MONEY': <TokenType.MONEY: 'MONEY'>, 'NAME': <TokenType.NAME: 'NAME'>, 'OID': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'ONLY': <TokenType.ONLY: 'ONLY'>, 'OPERATOR': <TokenType.OPERATOR: 'OPERATOR'>, 'REFRESH': <TokenType.COMMAND: 'COMMAND'>, 'REINDEX': <TokenType.COMMAND: 'COMMAND'>, 'RESET': <TokenType.COMMAND: 'COMMAND'>, 'REVOKE': <TokenType.COMMAND: 'COMMAND'>, 'SERIAL': <TokenType.SERIAL: 'SERIAL'>, 'SMALLSERIAL': <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, 'REGCLASS': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCOLLATION': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGCONFIG': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGDICTIONARY': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGNAMESPACE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPER': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGOPERATOR': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROC': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGPROCEDURE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGROLE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'REGTYPE': <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, 'HLLSKETCH': <TokenType.HLLSKETCH: 'HLLSKETCH'>, 'SUPER': <TokenType.SUPER: 'SUPER'>, 'TOP': <TokenType.TOP: 'TOP'>, 'UNLOAD': <TokenType.COMMAND: 'COMMAND'>, 'VARBYTE': <TokenType.VARBINARY: 'VARBINARY'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>}</span> </div> @@ -2379,7 +2380,7 @@ Default: True</li> <div class="attr variable"> <span class="name">TRANSFORMS</span> = <input id="Redshift.Generator.TRANSFORMS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Redshift.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function json_path_key_only_name>, <class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CaseSpecificColumnConstraint">sqlglot.expressions.CaseSpecificColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetColumnConstraint">sqlglot.expressions.CharacterSetColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ClusteredColumnConstraint">sqlglot.expressions.ClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CollateColumnConstraint">sqlglot.expressions.CollateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DateFormatColumnConstraint">sqlglot.expressions.DateFormatColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DefaultColumnConstraint">sqlglot.expressions.DefaultColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EncodeColumnConstraint">sqlglot.expressions.EncodeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EphemeralColumnConstraint">sqlglot.expressions.EphemeralColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExcludeColumnConstraint">sqlglot.expressions.ExcludeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InlineLengthColumnConstraint">sqlglot.expressions.InlineLengthColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IntervalSpan">sqlglot.expressions.IntervalSpan</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function json_extract_segments.<locals>._json_extract_segments>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function json_extract_segments.<locals>._json_extract_segments>, <class '<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NonClusteredColumnConstraint">sqlglot.expressions.NonClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NotForReplicationColumnConstraint">sqlglot.expressions.NotForReplicationColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnUpdateColumnConstraint">sqlglot.expressions.OnUpdateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#PathColumnConstraint">sqlglot.expressions.PathColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ProjectionPolicyColumnConstraint">sqlglot.expressions.ProjectionPolicyColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TagColumnConstraint">sqlglot.expressions.TagColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TitleColumnConstraint">sqlglot.expressions.TitleColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UppercaseColumnConstraint">sqlglot.expressions.UppercaseColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithOperator">sqlglot.expressions.WithOperator</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function filter_array_using_unnest>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ColumnDef">sqlglot.expressions.ColumnDef</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function no_paren_current_date_sql>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function datestrtodate_sql>, <class '<a href="../expressions.html#DataType">sqlglot.expressions.DataType</a>'>: <function _datatype_sql>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function max_or_greatest>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function no_map_from_entries_sql>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function min_or_least>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>: <function merge_without_target_sql>, <class '<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function str_position_sql>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function struct_extract_sql>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _substring_sql>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function timestamptrunc_sql.<locals>._timestamptrunc_sql>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function timestrtotime_sql>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function trim_sql>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function no_trycast_sql>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function bool_xor_sql>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>: <function concat_to_dpipe_sql>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>: <function concat_ws_to_dpipe_sql>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#DistKeyProperty">sqlglot.expressions.DistKeyProperty</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#DistStyleProperty">sqlglot.expressions.DistStyleProperty</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GeneratedAsIdentityColumnConstraint">sqlglot.expressions.GeneratedAsIdentityColumnConstraint</a>'>: <function generatedasidentitycolumnconstraint_sql>, <class '<a href="../expressions.html#Hex">sqlglot.expressions.Hex</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#SortKeyProperty">sqlglot.expressions.SortKeyProperty</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TableSample">sqlglot.expressions.TableSample</a>'>: <function no_tablesample_sql>}</span> + <label class="view-value-button pdoc-button" for="Redshift.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function json_path_key_only_name>, <class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#AllowedValuesProperty">sqlglot.expressions.AllowedValuesProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#AutoRefreshProperty">sqlglot.expressions.AutoRefreshProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#BackupProperty">sqlglot.expressions.BackupProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CaseSpecificColumnConstraint">sqlglot.expressions.CaseSpecificColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetColumnConstraint">sqlglot.expressions.CharacterSetColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CharacterSetProperty">sqlglot.expressions.CharacterSetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ClusteredColumnConstraint">sqlglot.expressions.ClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CollateColumnConstraint">sqlglot.expressions.CollateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#CopyGrantsProperty">sqlglot.expressions.CopyGrantsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DateFormatColumnConstraint">sqlglot.expressions.DateFormatColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#DefaultColumnConstraint">sqlglot.expressions.DefaultColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EncodeColumnConstraint">sqlglot.expressions.EncodeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#EphemeralColumnConstraint">sqlglot.expressions.EphemeralColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExcludeColumnConstraint">sqlglot.expressions.ExcludeColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExecuteAsProperty">sqlglot.expressions.ExecuteAsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ExternalProperty">sqlglot.expressions.ExternalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#GlobalProperty">sqlglot.expressions.GlobalProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#HeapProperty">sqlglot.expressions.HeapProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IcebergProperty">sqlglot.expressions.IcebergProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InheritsProperty">sqlglot.expressions.InheritsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InlineLengthColumnConstraint">sqlglot.expressions.InlineLengthColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#InputModelProperty">sqlglot.expressions.InputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#IntervalSpan">sqlglot.expressions.IntervalSpan</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function json_extract_segments.<locals>._json_extract_segments>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function json_extract_segments.<locals>._json_extract_segments>, <class '<a href="../expressions.html#LanguageProperty">sqlglot.expressions.LanguageProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LocationProperty">sqlglot.expressions.LocationProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#LogProperty">sqlglot.expressions.LogProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#MaterializedProperty">sqlglot.expressions.MaterializedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NonClusteredColumnConstraint">sqlglot.expressions.NonClusteredColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NoPrimaryIndexProperty">sqlglot.expressions.NoPrimaryIndexProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#NotForReplicationColumnConstraint">sqlglot.expressions.NotForReplicationColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnCommitProperty">sqlglot.expressions.OnCommitProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnProperty">sqlglot.expressions.OnProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OnUpdateColumnConstraint">sqlglot.expressions.OnUpdateColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#OutputModelProperty">sqlglot.expressions.OutputModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#PathColumnConstraint">sqlglot.expressions.PathColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ProjectionPolicyColumnConstraint">sqlglot.expressions.ProjectionPolicyColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#RemoteWithConnectionModelProperty">sqlglot.expressions.RemoteWithConnectionModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ReturnsProperty">sqlglot.expressions.ReturnsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SampleProperty">sqlglot.expressions.SampleProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetConfigProperty">sqlglot.expressions.SetConfigProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SetProperty">sqlglot.expressions.SetProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SettingsProperty">sqlglot.expressions.SettingsProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SharingProperty">sqlglot.expressions.SharingProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlReadWriteProperty">sqlglot.expressions.SqlReadWriteProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#SqlSecurityProperty">sqlglot.expressions.SqlSecurityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StabilityProperty">sqlglot.expressions.StabilityProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#StrictProperty">sqlglot.expressions.StrictProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TemporaryProperty">sqlglot.expressions.TemporaryProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TagColumnConstraint">sqlglot.expressions.TagColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TitleColumnConstraint">sqlglot.expressions.TitleColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ToTableProperty">sqlglot.expressions.ToTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransformModelProperty">sqlglot.expressions.TransformModelProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#TransientProperty">sqlglot.expressions.TransientProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UppercaseColumnConstraint">sqlglot.expressions.UppercaseColumnConstraint</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#UnloggedProperty">sqlglot.expressions.UnloggedProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#ViewAttributeProperty">sqlglot.expressions.ViewAttributeProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#VolatileProperty">sqlglot.expressions.VolatileProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithJournalTableProperty">sqlglot.expressions.WithJournalTableProperty</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#WithOperator">sqlglot.expressions.WithOperator</a>'>: <function Generator.<lambda>>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function filter_array_using_unnest>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ColumnDef">sqlglot.expressions.ColumnDef</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function no_paren_current_date_sql>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function datestrtodate_sql>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _date_add_sql.<locals>.func>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function max_or_greatest>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function no_map_from_entries_sql>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function min_or_least>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>: <function merge_without_target_sql>, <class '<a href="../expressions.html#PartitionedByProperty">sqlglot.expressions.PartitionedByProperty</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>: <function preprocess.<locals>._to_sql>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function str_position_sql>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function struct_extract_sql>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _substring_sql>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function timestamptrunc_sql.<locals>._timestamptrunc_sql>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function timestrtotime_sql>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function trim_sql>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function no_trycast_sql>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function date_delta_sql.<locals>._delta_sql>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function Postgres.Generator.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function bool_xor_sql>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>: <function concat_to_dpipe_sql>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>: <function concat_ws_to_dpipe_sql>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#DistKeyProperty">sqlglot.expressions.DistKeyProperty</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#DistStyleProperty">sqlglot.expressions.DistStyleProperty</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#GeneratedAsIdentityColumnConstraint">sqlglot.expressions.GeneratedAsIdentityColumnConstraint</a>'>: <function generatedasidentitycolumnconstraint_sql>, <class '<a href="../expressions.html#Hex">sqlglot.expressions.Hex</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#SortKeyProperty">sqlglot.expressions.SortKeyProperty</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>: <function <a href="#Redshift.Generator">Redshift.Generator</a>.<lambda>>, <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>: <function rename_func.<locals>.<lambda>>, <class '<a href="../expressions.html#TableSample">sqlglot.expressions.TableSample</a>'>: <function no_tablesample_sql>}</span> </div> @@ -2392,7 +2393,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="Redshift.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Redshift.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'minus', 'lzop', 'blanksasnull', 'delta', 'case', 'distinct', 'outer', 'tag', 'oid', 'is', 'when', 'permissions', 'offline', 'respect', 'to', 'timestamp', 'interval', 'from', 'isnull', 'encrypt ', 'table', 'globaldict64k', 'create', 'with', 'cross', 'resort', 'trailing', 'constraint', 'on', 'like', 'localtimestamp', 'deferrable', 'analyze', 'aes128', 'aes256', 'verbose', 'join', 'bzip2', 'else', 'order', 'unique', 'inner', 'as', 'current_user_id', 'union', 'cast', 'text255', 'globaldict256', 'user', 'authorization', 'wallet', 'type', 'recover', 'session_user', 'intersect', 'array', 'both', 'encode', 'or', 'for', 'unnest', 'luns', 'new', 'full', 'rejectlog', 'lun', 'check', 'percent', 'asc', 'restore', 'overlaps', 'current_user', 'null', 'mostly8', 'offset', 'unpivot', 'ilike', 'without', 'then', 'backup', 'credentials', 'natural', 'allowoverwrite', 'desc', 'system', 'select', 'end', 'explicit', 'analyse', 'into', 'mostly16', 'readratio', 'primary', 'parallel', 'mostly32', 'using', 'freeze', 'all', 'disable', 'top', 'foreign', 'encryption', 'placing', 'snapshot', 'collate', 'old', 'emptyasnull', 'leading', 'default', 'grant', 'column', 'current_timestamp', 'initially', 'open', 'nulls', 'group', 'only', 'tdes', 'not', 'binary', 'pivot', 'do', 'delta32k', 'enable', 'in', 'any', 'ignore', 'deflate', 'references', 'true', 'text32k', 'lzo', 'and', 'raw', 'similar', 'gzip', 'current_date', 'off', 'notnull', 'truncatecolumns', 'bytedict', 'current_time', 'where', 'right', 'having', 'limit', 'between', 'except', 'false', 'some', 'identity', 'localtime', 'az64', 'left', 'defrag', 'partition', 'sysdate'}</span> + <label class="view-value-button pdoc-button" for="Redshift.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'notnull', 'placing', 'mostly16', 'when', 'localtimestamp', 'system', 'constraint', 'select', 'between', 'ilike', 'for', 'parallel', 'session_user', 'overlaps', 'where', 'group', 'similar', 'lzo', 'any', 'in', 'minus', 'ignore', 'gzip', 'text255', 'rejectlog', 'having', 'mostly32', 'some', 'restore', 'limit', 'current_user_id', 'freeze', 'timestamp', 'or', 'both', 'snapshot', 'offset', 'percent', 'tdes', 'unpivot', 'not', 'identity', 'then', 'text32k', 'aes256', 'credentials', 'permissions', 'as', 'distinct', 'bytedict', 'on', 'partition', 'collate', 'natural', 'cross', 'oid', 'mostly8', 'old', 'recover', 'truncatecolumns', 'type', 'localtime', 'union', 'wallet', 'nulls', 'full', 'create', 'tag', 'encode', 'blanksasnull', 'aes128', 'enable', 'pivot', 'deferrable', 'bzip2', 'trailing', 'analyse', 'encrypt ', 'intersect', 'backup', 'column', 'do', 'raw', 'binary', 'is', 'false', 'references', 'explicit', 'table', 'authorization', 'using', 'cast', 'readratio', 'allowoverwrite', 'user', 'all', 'order', 'primary', 'leading', 'lun', 'delta', 'lzop', 'end', 'off', 'inner', 'case', 'to', 'default', 'right', 'grant', 'resort', 'left', 'sysdate', 'unnest', 'isnull', 'array', 'delta32k', 'unique', 'new', 'defrag', 'and', 'current_time', 'open', 'like', 'top', 'else', 'from', 'az64', 'check', 'current_date', 'null', 'current_user', 'only', 'disable', 'luns', 'globaldict256', 'asc', 'true', 'analyze', 'initially', 'except', 'without', 'into', 'offline', 'encryption', 'globaldict64k', 'outer', 'desc', 'deflate', 'emptyasnull', 'respect', 'with', 'foreign', 'interval', 'join', 'current_timestamp', 'verbose'}</span> </div> diff --git a/docs/sqlglot/dialects/risingwave.html b/docs/sqlglot/dialects/risingwave.html new file mode 100644 index 0000000..424b4fd --- /dev/null +++ b/docs/sqlglot/dialects/risingwave.html @@ -0,0 +1,1193 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="generator" content="pdoc 14.5.0"/> + <title>sqlglot.dialects.risingwave API documentation</title> + + <style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style> + <style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style> + <style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style> + <style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style> + <style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .pdoc-alert-note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style> + <style>/*! custom.css */</style></head> +<body> + <nav class="pdoc"> + <label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label> + <input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1"> + <div> <a class="pdoc-button module-list-button" href="../dialects.html"> +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/> + <path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/> +</svg> sqlglot.dialects</a> + + + <input type="search" placeholder="Search..." role="searchbox" aria-label="search" + pattern=".+" required> + + + + <h2>API Documentation</h2> + <ul class="memberlist"> + <li> + <a class="class" href="#RisingWave">RisingWave</a> + <ul class="memberlist"> + <li> + <a class="class" href="#RisingWave.Generator">RisingWave.Generator</a> + <ul class="memberlist"> + <li> + <a class="variable" href="#RisingWave.Generator.LOCKING_READS_SUPPORTED">LOCKING_READS_SUPPORTED</a> + </li> + <li> + <a class="variable" href="#RisingWave.Generator.SELECT_KINDS">SELECT_KINDS</a> + </li> + <li> + <a class="variable" href="#RisingWave.Generator.TRY_SUPPORTED">TRY_SUPPORTED</a> + </li> + <li> + <a class="variable" href="#RisingWave.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS">AFTER_HAVING_MODIFIER_TRANSFORMS</a> + </li> + </ul> + + </li> + <li> + <a class="variable" href="#RisingWave.tokenizer_class">tokenizer_class</a> + </li> + <li> + <a class="variable" href="#RisingWave.parser_class">parser_class</a> + </li> + <li> + <a class="variable" href="#RisingWave.generator_class">generator_class</a> + </li> + <li> + <a class="variable" href="#RisingWave.TIME_TRIE">TIME_TRIE</a> + </li> + <li> + <a class="variable" href="#RisingWave.FORMAT_TRIE">FORMAT_TRIE</a> + </li> + <li> + <a class="variable" href="#RisingWave.INVERSE_TIME_MAPPING">INVERSE_TIME_MAPPING</a> + </li> + <li> + <a class="variable" href="#RisingWave.INVERSE_TIME_TRIE">INVERSE_TIME_TRIE</a> + </li> + <li> + <a class="variable" href="#RisingWave.ESCAPED_SEQUENCES">ESCAPED_SEQUENCES</a> + </li> + <li> + <a class="variable" href="#RisingWave.QUOTE_START">QUOTE_START</a> + </li> + <li> + <a class="variable" href="#RisingWave.QUOTE_END">QUOTE_END</a> + </li> + <li> + <a class="variable" href="#RisingWave.IDENTIFIER_START">IDENTIFIER_START</a> + </li> + <li> + <a class="variable" href="#RisingWave.IDENTIFIER_END">IDENTIFIER_END</a> + </li> + <li> + <a class="variable" href="#RisingWave.BIT_START">BIT_START</a> + </li> + <li> + <a class="variable" href="#RisingWave.BIT_END">BIT_END</a> + </li> + <li> + <a class="variable" href="#RisingWave.HEX_START">HEX_START</a> + </li> + <li> + <a class="variable" href="#RisingWave.HEX_END">HEX_END</a> + </li> + <li> + <a class="variable" href="#RisingWave.BYTE_START">BYTE_START</a> + </li> + <li> + <a class="variable" href="#RisingWave.BYTE_END">BYTE_END</a> + </li> + <li> + <a class="variable" href="#RisingWave.UNICODE_START">UNICODE_START</a> + </li> + <li> + <a class="variable" href="#RisingWave.UNICODE_END">UNICODE_END</a> + </li> + </ul> + + </li> + </ul> + + + <footer>Copyright (c) 2023 Toby Mao</footer> + + <a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank"> + built with <span class="visually-hidden">pdoc</span><img + alt="pdoc logo" + src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/> + </a> +</div> + </nav> + <main class="pdoc"> + <section class="module-info"> + <a class="pdoc-button git-button" href="https://github.com/tobymao/sqlglot/tree/main/sqlglot/dialects/risingwave.py">Edit on GitHub</a> + <h1 class="modulename"> +<a href="./../../sqlglot.html">sqlglot</a><wbr>.<a href="./../dialects.html">dialects</a><wbr>.risingwave </h1> + + + <input id="mod-risingwave-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + + <label class="view-source-button" for="mod-risingwave-view-source"><span>View Source</span></label> + + <div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos">1</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.postgres</span> <span class="kn">import</span> <span class="n">Postgres</span> +</span><span id="L-2"><a href="#L-2"><span class="linenos">2</span></a> +</span><span id="L-3"><a href="#L-3"><span class="linenos">3</span></a> +</span><span id="L-4"><a href="#L-4"><span class="linenos">4</span></a><span class="k">class</span> <span class="nc">RisingWave</span><span class="p">(</span><span class="n">Postgres</span><span class="p">):</span> +</span><span id="L-5"><a href="#L-5"><span class="linenos">5</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="L-6"><a href="#L-6"><span class="linenos">6</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span></pre></div> + + + </section> + <section id="RisingWave"> + <input id="RisingWave-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">RisingWave</span><wbr>(<span class="base"><a href="postgres.html#Postgres">sqlglot.dialects.postgres.Postgres</a></span>): + + <label class="view-source-button" for="RisingWave-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#RisingWave"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="RisingWave-5"><a href="#RisingWave-5"><span class="linenos">5</span></a><span class="k">class</span> <span class="nc">RisingWave</span><span class="p">(</span><span class="n">Postgres</span><span class="p">):</span> +</span><span id="RisingWave-6"><a href="#RisingWave-6"><span class="linenos">6</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="RisingWave-7"><a href="#RisingWave-7"><span class="linenos">7</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span></pre></div> + + + + + <div id="RisingWave.tokenizer_class" class="classattr"> + <div class="attr variable"> + <span class="name">tokenizer_class</span> = +<span class="default_value"><class '<a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a>'></span> + + + </div> + <a class="headerlink" href="#RisingWave.tokenizer_class"></a> + + + + </div> + <div id="RisingWave.parser_class" class="classattr"> + <div class="attr variable"> + <span class="name">parser_class</span> = +<span class="default_value"><class '<a href="../parser.html#Parser">sqlglot.parser.Parser</a>'></span> + + + </div> + <a class="headerlink" href="#RisingWave.parser_class"></a> + + + + </div> + <div id="RisingWave.generator_class" class="classattr"> + <div class="attr variable"> + <span class="name">generator_class</span> = +<span class="default_value"><class '<a href="#RisingWave.Generator">RisingWave.Generator</a>'></span> + + + </div> + <a class="headerlink" href="#RisingWave.generator_class"></a> + + + + </div> + <div id="RisingWave.TIME_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">TIME_TRIE</span><span class="annotation">: Dict</span> = +<input id="RisingWave.TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="RisingWave.TIME_TRIE-view-value"></label><span class="default_value">{'A': {'M': {0: True}}, 'P': {'M': {0: True}}, 'D': {0: True, 'D': {0: True, 'D': {0: True}}}, 'F': {'M': {'D': {'D': {0: True, 'D': {0: True}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'S': {'S': {0: True}}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'O': {'F': {0: True}}, 'S': {'S': {0: True}}, 'T': {'M': {'D': {'a': {'y': {0: True}}, 'y': {0: True}}, 'M': {'o': {'n': {0: True, 't': {'h': {0: True}}}}}}, 'Z': {0: True}}, 'U': {'S': {0: True}}, 'W': {'W': {0: True}}, 'Y': {'Y': {0: True, 'Y': {'Y': {0: True}}}}}</span> + + + </div> + <a class="headerlink" href="#RisingWave.TIME_TRIE"></a> + + + + </div> + <div id="RisingWave.FORMAT_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">FORMAT_TRIE</span><span class="annotation">: Dict</span> = +<input id="RisingWave.FORMAT_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="RisingWave.FORMAT_TRIE-view-value"></label><span class="default_value">{'A': {'M': {0: True}}, 'P': {'M': {0: True}}, 'D': {0: True, 'D': {0: True, 'D': {0: True}}}, 'F': {'M': {'D': {'D': {0: True, 'D': {0: True}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'S': {'S': {0: True}}}}, 'H': {'H': {'1': {'2': {0: True}}, '2': {'4': {0: True}}}}, 'M': {'I': {0: True}, 'M': {0: True}}, 'O': {'F': {0: True}}, 'S': {'S': {0: True}}, 'T': {'M': {'D': {'a': {'y': {0: True}}, 'y': {0: True}}, 'M': {'o': {'n': {0: True, 't': {'h': {0: True}}}}}}, 'Z': {0: True}}, 'U': {'S': {0: True}}, 'W': {'W': {0: True}}, 'Y': {'Y': {0: True, 'Y': {'Y': {0: True}}}}}</span> + + + </div> + <a class="headerlink" href="#RisingWave.FORMAT_TRIE"></a> + + + + </div> + <div id="RisingWave.INVERSE_TIME_MAPPING" class="classattr"> + <div class="attr variable"> + <span class="name">INVERSE_TIME_MAPPING</span><span class="annotation">: Dict[str, str]</span> = +<input id="RisingWave.INVERSE_TIME_MAPPING-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="RisingWave.INVERSE_TIME_MAPPING-view-value"></label><span class="default_value">{'%p': 'PM', '%u': 'D', '%d': 'DD', '%j': 'DDD', '%-d': 'FMDD', '%-j': 'FMDDD', '%-I': 'FMHH12', '%-H': 'FMHH24', '%-M': 'FMMI', '%-m': 'FMMM', '%-S': 'FMSS', '%I': 'HH12', '%H': 'HH24', '%M': 'MI', '%m': 'MM', '%z': 'OF', '%S': 'SS', '%A': 'TMDay', '%a': 'TMDy', '%b': 'TMMon', '%B': 'TMMonth', '%Z': 'TZ', '%f': 'US', '%U': 'WW', '%y': 'YY', '%Y': 'YYYY'}</span> + + + </div> + <a class="headerlink" href="#RisingWave.INVERSE_TIME_MAPPING"></a> + + + + </div> + <div id="RisingWave.INVERSE_TIME_TRIE" class="classattr"> + <div class="attr variable"> + <span class="name">INVERSE_TIME_TRIE</span><span class="annotation">: Dict</span> = +<input id="RisingWave.INVERSE_TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <label class="view-value-button pdoc-button" for="RisingWave.INVERSE_TIME_TRIE-view-value"></label><span class="default_value">{'%': {'p': {0: True}, 'u': {0: True}, 'd': {0: True}, 'j': {0: True}, '-': {'d': {0: True}, 'j': {0: True}, 'I': {0: True}, 'H': {0: True}, 'M': {0: True}, 'm': {0: True}, 'S': {0: True}}, 'I': {0: True}, 'H': {0: True}, 'M': {0: True}, 'm': {0: True}, 'z': {0: True}, 'S': {0: True}, 'A': {0: True}, 'a': {0: True}, 'b': {0: True}, 'B': {0: True}, 'Z': {0: True}, 'f': {0: True}, 'U': {0: True}, 'y': {0: True}, 'Y': {0: True}}}</span> + + + </div> + <a class="headerlink" href="#RisingWave.INVERSE_TIME_TRIE"></a> + + + + </div> + <div id="RisingWave.ESCAPED_SEQUENCES" class="classattr"> + <div class="attr variable"> + <span class="name">ESCAPED_SEQUENCES</span><span class="annotation">: Dict[str, str]</span> = +<span class="default_value">{}</span> + + + </div> + <a class="headerlink" href="#RisingWave.ESCAPED_SEQUENCES"></a> + + + + </div> + <div id="RisingWave.QUOTE_START" class="classattr"> + <div class="attr variable"> + <span class="name">QUOTE_START</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.QUOTE_START"></a> + + + + </div> + <div id="RisingWave.QUOTE_END" class="classattr"> + <div class="attr variable"> + <span class="name">QUOTE_END</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.QUOTE_END"></a> + + + + </div> + <div id="RisingWave.IDENTIFIER_START" class="classattr"> + <div class="attr variable"> + <span class="name">IDENTIFIER_START</span> = +<span class="default_value">'"'</span> + + + </div> + <a class="headerlink" href="#RisingWave.IDENTIFIER_START"></a> + + + + </div> + <div id="RisingWave.IDENTIFIER_END" class="classattr"> + <div class="attr variable"> + <span class="name">IDENTIFIER_END</span> = +<span class="default_value">'"'</span> + + + </div> + <a class="headerlink" href="#RisingWave.IDENTIFIER_END"></a> + + + + </div> + <div id="RisingWave.BIT_START" class="classattr"> + <div class="attr variable"> + <span class="name">BIT_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"b'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.BIT_START"></a> + + + + </div> + <div id="RisingWave.BIT_END" class="classattr"> + <div class="attr variable"> + <span class="name">BIT_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.BIT_END"></a> + + + + </div> + <div id="RisingWave.HEX_START" class="classattr"> + <div class="attr variable"> + <span class="name">HEX_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"x'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.HEX_START"></a> + + + + </div> + <div id="RisingWave.HEX_END" class="classattr"> + <div class="attr variable"> + <span class="name">HEX_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.HEX_END"></a> + + + + </div> + <div id="RisingWave.BYTE_START" class="classattr"> + <div class="attr variable"> + <span class="name">BYTE_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"e'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.BYTE_START"></a> + + + + </div> + <div id="RisingWave.BYTE_END" class="classattr"> + <div class="attr variable"> + <span class="name">BYTE_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">"'"</span> + + + </div> + <a class="headerlink" href="#RisingWave.BYTE_END"></a> + + + + </div> + <div id="RisingWave.UNICODE_START" class="classattr"> + <div class="attr variable"> + <span class="name">UNICODE_START</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">None</span> + + + </div> + <a class="headerlink" href="#RisingWave.UNICODE_START"></a> + + + + </div> + <div id="RisingWave.UNICODE_END" class="classattr"> + <div class="attr variable"> + <span class="name">UNICODE_END</span><span class="annotation">: Optional[str]</span> = +<span class="default_value">None</span> + + + </div> + <a class="headerlink" href="#RisingWave.UNICODE_END"></a> + + + + </div> + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></dt> + <dd id="RisingWave.__init__" class="function"><a href="dialect.html#Dialect.__init__">Dialect</a></dd> + <dd id="RisingWave.WEEK_OFFSET" class="variable"><a href="dialect.html#Dialect.WEEK_OFFSET">WEEK_OFFSET</a></dd> + <dd id="RisingWave.UNNEST_COLUMN_ONLY" class="variable"><a href="dialect.html#Dialect.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> + <dd id="RisingWave.ALIAS_POST_TABLESAMPLE" class="variable"><a href="dialect.html#Dialect.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> + <dd id="RisingWave.NORMALIZATION_STRATEGY" class="variable"><a href="dialect.html#Dialect.NORMALIZATION_STRATEGY">NORMALIZATION_STRATEGY</a></dd> + <dd id="RisingWave.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="RisingWave.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> + <dd id="RisingWave.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> + <dd id="RisingWave.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd> + <dd id="RisingWave.SUPPORTS_SEMI_ANTI_JOIN" class="variable"><a href="dialect.html#Dialect.SUPPORTS_SEMI_ANTI_JOIN">SUPPORTS_SEMI_ANTI_JOIN</a></dd> + <dd id="RisingWave.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> + <dd id="RisingWave.LOG_BASE_FIRST" class="variable"><a href="dialect.html#Dialect.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> + <dd id="RisingWave.SAFE_DIVISION" class="variable"><a href="dialect.html#Dialect.SAFE_DIVISION">SAFE_DIVISION</a></dd> + <dd id="RisingWave.HEX_LOWERCASE" class="variable"><a href="dialect.html#Dialect.HEX_LOWERCASE">HEX_LOWERCASE</a></dd> + <dd id="RisingWave.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> + <dd id="RisingWave.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd> + <dd id="RisingWave.FORMAT_MAPPING" class="variable"><a href="dialect.html#Dialect.FORMAT_MAPPING">FORMAT_MAPPING</a></dd> + <dd id="RisingWave.UNESCAPED_SEQUENCES" class="variable"><a href="dialect.html#Dialect.UNESCAPED_SEQUENCES">UNESCAPED_SEQUENCES</a></dd> + <dd id="RisingWave.PSEUDOCOLUMNS" class="variable"><a href="dialect.html#Dialect.PSEUDOCOLUMNS">PSEUDOCOLUMNS</a></dd> + <dd id="RisingWave.PREFER_CTE_ALIAS_COLUMN" class="variable"><a href="dialect.html#Dialect.PREFER_CTE_ALIAS_COLUMN">PREFER_CTE_ALIAS_COLUMN</a></dd> + <dd id="RisingWave.COPY_PARAMS_ARE_CSV" class="variable"><a href="dialect.html#Dialect.COPY_PARAMS_ARE_CSV">COPY_PARAMS_ARE_CSV</a></dd> + <dd id="RisingWave.get_or_raise" class="function"><a href="dialect.html#Dialect.get_or_raise">get_or_raise</a></dd> + <dd id="RisingWave.format_time" class="function"><a href="dialect.html#Dialect.format_time">format_time</a></dd> + <dd id="RisingWave.normalize_identifier" class="function"><a href="dialect.html#Dialect.normalize_identifier">normalize_identifier</a></dd> + <dd id="RisingWave.case_sensitive" class="function"><a href="dialect.html#Dialect.case_sensitive">case_sensitive</a></dd> + <dd id="RisingWave.can_identify" class="function"><a href="dialect.html#Dialect.can_identify">can_identify</a></dd> + <dd id="RisingWave.quote_identifier" class="function"><a href="dialect.html#Dialect.quote_identifier">quote_identifier</a></dd> + <dd id="RisingWave.to_json_path" class="function"><a href="dialect.html#Dialect.to_json_path">to_json_path</a></dd> + <dd id="RisingWave.parse" class="function"><a href="dialect.html#Dialect.parse">parse</a></dd> + <dd id="RisingWave.parse_into" class="function"><a href="dialect.html#Dialect.parse_into">parse_into</a></dd> + <dd id="RisingWave.generate" class="function"><a href="dialect.html#Dialect.generate">generate</a></dd> + <dd id="RisingWave.transpile" class="function"><a href="dialect.html#Dialect.transpile">transpile</a></dd> + <dd id="RisingWave.tokenize" class="function"><a href="dialect.html#Dialect.tokenize">tokenize</a></dd> + <dd id="RisingWave.tokenizer" class="variable"><a href="dialect.html#Dialect.tokenizer">tokenizer</a></dd> + <dd id="RisingWave.parser" class="function"><a href="dialect.html#Dialect.parser">parser</a></dd> + <dd id="RisingWave.generator" class="function"><a href="dialect.html#Dialect.generator">generator</a></dd> + + </div> + <div><dt><a href="postgres.html#Postgres">sqlglot.dialects.postgres.Postgres</a></dt> + <dd id="RisingWave.INDEX_OFFSET" class="variable"><a href="postgres.html#Postgres.INDEX_OFFSET">INDEX_OFFSET</a></dd> + <dd id="RisingWave.TYPED_DIVISION" class="variable"><a href="postgres.html#Postgres.TYPED_DIVISION">TYPED_DIVISION</a></dd> + <dd id="RisingWave.CONCAT_COALESCE" class="variable"><a href="postgres.html#Postgres.CONCAT_COALESCE">CONCAT_COALESCE</a></dd> + <dd id="RisingWave.NULL_ORDERING" class="variable"><a href="postgres.html#Postgres.NULL_ORDERING">NULL_ORDERING</a></dd> + <dd id="RisingWave.TIME_FORMAT" class="variable"><a href="postgres.html#Postgres.TIME_FORMAT">TIME_FORMAT</a></dd> + <dd id="RisingWave.TABLESAMPLE_SIZE_IS_PERCENT" class="variable"><a href="postgres.html#Postgres.TABLESAMPLE_SIZE_IS_PERCENT">TABLESAMPLE_SIZE_IS_PERCENT</a></dd> + <dd id="RisingWave.TIME_MAPPING" class="variable"><a href="postgres.html#Postgres.TIME_MAPPING">TIME_MAPPING</a></dd> + <dd id="RisingWave.Tokenizer" class="class"><a href="postgres.html#Postgres.Tokenizer">Tokenizer</a></dd> + <dd id="RisingWave.Parser" class="class"><a href="postgres.html#Postgres.Parser">Parser</a></dd> + + </div> + </dl> + </div> + </section> + <section id="RisingWave.Generator"> + <input id="RisingWave.Generator-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">RisingWave.Generator</span><wbr>(<span class="base"><a href="postgres.html#Postgres.Generator">sqlglot.dialects.postgres.Postgres.Generator</a></span>): + + <label class="view-source-button" for="RisingWave.Generator-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#RisingWave.Generator"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="RisingWave.Generator-6"><a href="#RisingWave.Generator-6"><span class="linenos">6</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="RisingWave.Generator-7"><a href="#RisingWave.Generator-7"><span class="linenos">7</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span></pre></div> + + + <div class="docstring"><p>Generator converts a given syntax tree to the corresponding SQL string.</p> + +<h6 id="arguments">Arguments:</h6> + +<ul> +<li><strong>pretty:</strong> Whether to format the produced SQL string. +Default: False.</li> +<li><strong>identify:</strong> Determines when an identifier should be quoted. Possible values are: +False (default): Never quote, except in cases where it's mandatory by the dialect. +True or 'always': Always quote. +'safe': Only quote identifiers that are case insensitive.</li> +<li><strong>normalize:</strong> Whether to normalize identifiers to lowercase. +Default: False.</li> +<li><strong>pad:</strong> The pad size in a formatted string. For example, this affects the indentation of +a projection in a query, relative to its nesting level. +Default: 2.</li> +<li><strong>indent:</strong> The indentation size in a formatted string. For example, this affects the +indentation of subqueries and filters under a <code>WHERE</code> clause. +Default: 2.</li> +<li><strong>normalize_functions:</strong> How to normalize function names. Possible values are: +"upper" or True (default): Convert names to uppercase. +"lower": Convert names to lowercase. +False: Disables function name normalization.</li> +<li><strong>unsupported_level:</strong> Determines the generator's behavior when it encounters unsupported expressions. +Default ErrorLevel.WARN.</li> +<li><strong>max_unsupported:</strong> Maximum number of unsupported messages to include in a raised UnsupportedError. +This is only relevant if unsupported_level is ErrorLevel.RAISE. +Default: 3</li> +<li><strong>leading_comma:</strong> Whether the comma is leading or trailing in select expressions. +This is only relevant when generating in pretty mode. +Default: False</li> +<li><strong>max_text_width:</strong> The max number of characters in a segment before creating new lines in pretty mode. +The default is on the smaller end because the length only represents a segment and not the true +line length. +Default: 80</li> +<li><strong>comments:</strong> Whether to preserve comments in the output SQL code. +Default: True</li> +</ul> +</div> + + + <div id="RisingWave.Generator.LOCKING_READS_SUPPORTED" class="classattr"> + <div class="attr variable"> + <span class="name">LOCKING_READS_SUPPORTED</span> = +<span class="default_value">False</span> + + + </div> + <a class="headerlink" href="#RisingWave.Generator.LOCKING_READS_SUPPORTED"></a> + + + + </div> + <div id="RisingWave.Generator.SELECT_KINDS" class="classattr"> + <div class="attr variable"> + <span class="name">SELECT_KINDS</span><span class="annotation">: Tuple[str, ...]</span> = +<span class="default_value">()</span> + + + </div> + <a class="headerlink" href="#RisingWave.Generator.SELECT_KINDS"></a> + + + + </div> + <div id="RisingWave.Generator.TRY_SUPPORTED" class="classattr"> + <div class="attr variable"> + <span class="name">TRY_SUPPORTED</span> = +<span class="default_value">False</span> + + + </div> + <a class="headerlink" href="#RisingWave.Generator.TRY_SUPPORTED"></a> + + + + </div> + <div id="RisingWave.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS" class="classattr"> + <div class="attr variable"> + <span class="name">AFTER_HAVING_MODIFIER_TRANSFORMS</span> = +<span class="default_value">{'qualify': <function Generator.<lambda>>, 'windows': <function Generator.<lambda>>}</span> + + + </div> + <a class="headerlink" href="#RisingWave.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS"></a> + + + + </div> + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="../generator.html#Generator">sqlglot.generator.Generator</a></dt> + <dd id="RisingWave.Generator.__init__" class="function"><a href="../generator.html#Generator.__init__">Generator</a></dd> + <dd id="RisingWave.Generator.NULL_ORDERING_SUPPORTED" class="variable"><a href="../generator.html#Generator.NULL_ORDERING_SUPPORTED">NULL_ORDERING_SUPPORTED</a></dd> + <dd id="RisingWave.Generator.IGNORE_NULLS_IN_FUNC" class="variable"><a href="../generator.html#Generator.IGNORE_NULLS_IN_FUNC">IGNORE_NULLS_IN_FUNC</a></dd> + <dd id="RisingWave.Generator.EXPLICIT_UNION" class="variable"><a href="../generator.html#Generator.EXPLICIT_UNION">EXPLICIT_UNION</a></dd> + <dd id="RisingWave.Generator.WRAP_DERIVED_VALUES" class="variable"><a href="../generator.html#Generator.WRAP_DERIVED_VALUES">WRAP_DERIVED_VALUES</a></dd> + <dd id="RisingWave.Generator.CREATE_FUNCTION_RETURN_AS" class="variable"><a href="../generator.html#Generator.CREATE_FUNCTION_RETURN_AS">CREATE_FUNCTION_RETURN_AS</a></dd> + <dd id="RisingWave.Generator.MATCHED_BY_SOURCE" class="variable"><a href="../generator.html#Generator.MATCHED_BY_SOURCE">MATCHED_BY_SOURCE</a></dd> + <dd id="RisingWave.Generator.INTERVAL_ALLOWS_PLURAL_FORM" class="variable"><a href="../generator.html#Generator.INTERVAL_ALLOWS_PLURAL_FORM">INTERVAL_ALLOWS_PLURAL_FORM</a></dd> + <dd id="RisingWave.Generator.LIMIT_FETCH" class="variable"><a href="../generator.html#Generator.LIMIT_FETCH">LIMIT_FETCH</a></dd> + <dd id="RisingWave.Generator.LIMIT_ONLY_LITERALS" class="variable"><a href="../generator.html#Generator.LIMIT_ONLY_LITERALS">LIMIT_ONLY_LITERALS</a></dd> + <dd id="RisingWave.Generator.GROUPINGS_SEP" class="variable"><a href="../generator.html#Generator.GROUPINGS_SEP">GROUPINGS_SEP</a></dd> + <dd id="RisingWave.Generator.INDEX_ON" class="variable"><a href="../generator.html#Generator.INDEX_ON">INDEX_ON</a></dd> + <dd id="RisingWave.Generator.QUERY_HINT_SEP" class="variable"><a href="../generator.html#Generator.QUERY_HINT_SEP">QUERY_HINT_SEP</a></dd> + <dd id="RisingWave.Generator.IS_BOOL_ALLOWED" class="variable"><a href="../generator.html#Generator.IS_BOOL_ALLOWED">IS_BOOL_ALLOWED</a></dd> + <dd id="RisingWave.Generator.DUPLICATE_KEY_UPDATE_WITH_SET" class="variable"><a href="../generator.html#Generator.DUPLICATE_KEY_UPDATE_WITH_SET">DUPLICATE_KEY_UPDATE_WITH_SET</a></dd> + <dd id="RisingWave.Generator.LIMIT_IS_TOP" class="variable"><a href="../generator.html#Generator.LIMIT_IS_TOP">LIMIT_IS_TOP</a></dd> + <dd id="RisingWave.Generator.RETURNING_END" class="variable"><a href="../generator.html#Generator.RETURNING_END">RETURNING_END</a></dd> + <dd id="RisingWave.Generator.COLUMN_JOIN_MARKS_SUPPORTED" class="variable"><a href="../generator.html#Generator.COLUMN_JOIN_MARKS_SUPPORTED">COLUMN_JOIN_MARKS_SUPPORTED</a></dd> + <dd id="RisingWave.Generator.EXTRACT_ALLOWS_QUOTES" class="variable"><a href="../generator.html#Generator.EXTRACT_ALLOWS_QUOTES">EXTRACT_ALLOWS_QUOTES</a></dd> + <dd id="RisingWave.Generator.TZ_TO_WITH_TIME_ZONE" class="variable"><a href="../generator.html#Generator.TZ_TO_WITH_TIME_ZONE">TZ_TO_WITH_TIME_ZONE</a></dd> + <dd id="RisingWave.Generator.VALUES_AS_TABLE" class="variable"><a href="../generator.html#Generator.VALUES_AS_TABLE">VALUES_AS_TABLE</a></dd> + <dd id="RisingWave.Generator.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD" class="variable"><a href="../generator.html#Generator.ALTER_TABLE_INCLUDE_COLUMN_KEYWORD">ALTER_TABLE_INCLUDE_COLUMN_KEYWORD</a></dd> + <dd id="RisingWave.Generator.UNNEST_WITH_ORDINALITY" class="variable"><a href="../generator.html#Generator.UNNEST_WITH_ORDINALITY">UNNEST_WITH_ORDINALITY</a></dd> + <dd id="RisingWave.Generator.AGGREGATE_FILTER_SUPPORTED" class="variable"><a href="../generator.html#Generator.AGGREGATE_FILTER_SUPPORTED">AGGREGATE_FILTER_SUPPORTED</a></dd> + <dd id="RisingWave.Generator.SEMI_ANTI_JOIN_WITH_SIDE" class="variable"><a href="../generator.html#Generator.SEMI_ANTI_JOIN_WITH_SIDE">SEMI_ANTI_JOIN_WITH_SIDE</a></dd> + <dd id="RisingWave.Generator.COMPUTED_COLUMN_WITH_TYPE" class="variable"><a href="../generator.html#Generator.COMPUTED_COLUMN_WITH_TYPE">COMPUTED_COLUMN_WITH_TYPE</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_TABLE_COPY" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_COPY">SUPPORTS_TABLE_COPY</a></dd> + <dd id="RisingWave.Generator.TABLESAMPLE_REQUIRES_PARENS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_REQUIRES_PARENS">TABLESAMPLE_REQUIRES_PARENS</a></dd> + <dd id="RisingWave.Generator.TABLESAMPLE_KEYWORDS" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_KEYWORDS">TABLESAMPLE_KEYWORDS</a></dd> + <dd id="RisingWave.Generator.TABLESAMPLE_WITH_METHOD" class="variable"><a href="../generator.html#Generator.TABLESAMPLE_WITH_METHOD">TABLESAMPLE_WITH_METHOD</a></dd> + <dd id="RisingWave.Generator.COLLATE_IS_FUNC" class="variable"><a href="../generator.html#Generator.COLLATE_IS_FUNC">COLLATE_IS_FUNC</a></dd> + <dd id="RisingWave.Generator.DATA_TYPE_SPECIFIERS_ALLOWED" class="variable"><a href="../generator.html#Generator.DATA_TYPE_SPECIFIERS_ALLOWED">DATA_TYPE_SPECIFIERS_ALLOWED</a></dd> + <dd id="RisingWave.Generator.ENSURE_BOOLS" class="variable"><a href="../generator.html#Generator.ENSURE_BOOLS">ENSURE_BOOLS</a></dd> + <dd id="RisingWave.Generator.CTE_RECURSIVE_KEYWORD_REQUIRED" class="variable"><a href="../generator.html#Generator.CTE_RECURSIVE_KEYWORD_REQUIRED">CTE_RECURSIVE_KEYWORD_REQUIRED</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_SINGLE_ARG_CONCAT" class="variable"><a href="../generator.html#Generator.SUPPORTS_SINGLE_ARG_CONCAT">SUPPORTS_SINGLE_ARG_CONCAT</a></dd> + <dd id="RisingWave.Generator.LAST_DAY_SUPPORTS_DATE_PART" class="variable"><a href="../generator.html#Generator.LAST_DAY_SUPPORTS_DATE_PART">LAST_DAY_SUPPORTS_DATE_PART</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_TABLE_ALIAS_COLUMNS" class="variable"><a href="../generator.html#Generator.SUPPORTS_TABLE_ALIAS_COLUMNS">SUPPORTS_TABLE_ALIAS_COLUMNS</a></dd> + <dd id="RisingWave.Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS" class="variable"><a href="../generator.html#Generator.UNPIVOT_ALIASES_ARE_IDENTIFIERS">UNPIVOT_ALIASES_ARE_IDENTIFIERS</a></dd> + <dd id="RisingWave.Generator.JSON_KEY_VALUE_PAIR_SEP" class="variable"><a href="../generator.html#Generator.JSON_KEY_VALUE_PAIR_SEP">JSON_KEY_VALUE_PAIR_SEP</a></dd> + <dd id="RisingWave.Generator.INSERT_OVERWRITE" class="variable"><a href="../generator.html#Generator.INSERT_OVERWRITE">INSERT_OVERWRITE</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_CREATE_TABLE_LIKE" class="variable"><a href="../generator.html#Generator.SUPPORTS_CREATE_TABLE_LIKE">SUPPORTS_CREATE_TABLE_LIKE</a></dd> + <dd id="RisingWave.Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED" class="variable"><a href="../generator.html#Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED">JSON_PATH_BRACKETED_KEY_SUPPORTED</a></dd> + <dd id="RisingWave.Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE" class="variable"><a href="../generator.html#Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE">JSON_PATH_SINGLE_QUOTE_ESCAPE</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_TO_NUMBER" class="variable"><a href="../generator.html#Generator.SUPPORTS_TO_NUMBER">SUPPORTS_TO_NUMBER</a></dd> + <dd id="RisingWave.Generator.OUTER_UNION_MODIFIERS" class="variable"><a href="../generator.html#Generator.OUTER_UNION_MODIFIERS">OUTER_UNION_MODIFIERS</a></dd> + <dd id="RisingWave.Generator.COPY_PARAMS_ARE_WRAPPED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_ARE_WRAPPED">COPY_PARAMS_ARE_WRAPPED</a></dd> + <dd id="RisingWave.Generator.COPY_PARAMS_EQ_REQUIRED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_EQ_REQUIRED">COPY_PARAMS_EQ_REQUIRED</a></dd> + <dd id="RisingWave.Generator.STAR_EXCEPT" class="variable"><a href="../generator.html#Generator.STAR_EXCEPT">STAR_EXCEPT</a></dd> + <dd id="RisingWave.Generator.HEX_FUNC" class="variable"><a href="../generator.html#Generator.HEX_FUNC">HEX_FUNC</a></dd> + <dd id="RisingWave.Generator.WITH_PROPERTIES_PREFIX" class="variable"><a href="../generator.html#Generator.WITH_PROPERTIES_PREFIX">WITH_PROPERTIES_PREFIX</a></dd> + <dd id="RisingWave.Generator.TIME_PART_SINGULARS" class="variable"><a href="../generator.html#Generator.TIME_PART_SINGULARS">TIME_PART_SINGULARS</a></dd> + <dd id="RisingWave.Generator.TOKEN_MAPPING" class="variable"><a href="../generator.html#Generator.TOKEN_MAPPING">TOKEN_MAPPING</a></dd> + <dd id="RisingWave.Generator.STRUCT_DELIMITER" class="variable"><a href="../generator.html#Generator.STRUCT_DELIMITER">STRUCT_DELIMITER</a></dd> + <dd id="RisingWave.Generator.NAMED_PLACEHOLDER_TOKEN" class="variable"><a href="../generator.html#Generator.NAMED_PLACEHOLDER_TOKEN">NAMED_PLACEHOLDER_TOKEN</a></dd> + <dd id="RisingWave.Generator.RESERVED_KEYWORDS" class="variable"><a href="../generator.html#Generator.RESERVED_KEYWORDS">RESERVED_KEYWORDS</a></dd> + <dd id="RisingWave.Generator.WITH_SEPARATED_COMMENTS" class="variable"><a href="../generator.html#Generator.WITH_SEPARATED_COMMENTS">WITH_SEPARATED_COMMENTS</a></dd> + <dd id="RisingWave.Generator.EXCLUDE_COMMENTS" class="variable"><a href="../generator.html#Generator.EXCLUDE_COMMENTS">EXCLUDE_COMMENTS</a></dd> + <dd id="RisingWave.Generator.UNWRAPPED_INTERVAL_VALUES" class="variable"><a href="../generator.html#Generator.UNWRAPPED_INTERVAL_VALUES">UNWRAPPED_INTERVAL_VALUES</a></dd> + <dd id="RisingWave.Generator.PARAMETERIZABLE_TEXT_TYPES" class="variable"><a href="../generator.html#Generator.PARAMETERIZABLE_TEXT_TYPES">PARAMETERIZABLE_TEXT_TYPES</a></dd> + <dd id="RisingWave.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES" class="variable"><a href="../generator.html#Generator.EXPRESSIONS_WITHOUT_NESTED_CTES">EXPRESSIONS_WITHOUT_NESTED_CTES</a></dd> + <dd id="RisingWave.Generator.SENTINEL_LINE_BREAK" class="variable"><a href="../generator.html#Generator.SENTINEL_LINE_BREAK">SENTINEL_LINE_BREAK</a></dd> + <dd id="RisingWave.Generator.pretty" class="variable"><a href="../generator.html#Generator.pretty">pretty</a></dd> + <dd id="RisingWave.Generator.identify" class="variable"><a href="../generator.html#Generator.identify">identify</a></dd> + <dd id="RisingWave.Generator.normalize" class="variable"><a href="../generator.html#Generator.normalize">normalize</a></dd> + <dd id="RisingWave.Generator.pad" class="variable"><a href="../generator.html#Generator.pad">pad</a></dd> + <dd id="RisingWave.Generator.unsupported_level" class="variable"><a href="../generator.html#Generator.unsupported_level">unsupported_level</a></dd> + <dd id="RisingWave.Generator.max_unsupported" class="variable"><a href="../generator.html#Generator.max_unsupported">max_unsupported</a></dd> + <dd id="RisingWave.Generator.leading_comma" class="variable"><a href="../generator.html#Generator.leading_comma">leading_comma</a></dd> + <dd id="RisingWave.Generator.max_text_width" class="variable"><a href="../generator.html#Generator.max_text_width">max_text_width</a></dd> + <dd id="RisingWave.Generator.comments" class="variable"><a href="../generator.html#Generator.comments">comments</a></dd> + <dd id="RisingWave.Generator.dialect" class="variable"><a href="../generator.html#Generator.dialect">dialect</a></dd> + <dd id="RisingWave.Generator.normalize_functions" class="variable"><a href="../generator.html#Generator.normalize_functions">normalize_functions</a></dd> + <dd id="RisingWave.Generator.unsupported_messages" class="variable"><a href="../generator.html#Generator.unsupported_messages">unsupported_messages</a></dd> + <dd id="RisingWave.Generator.generate" class="function"><a href="../generator.html#Generator.generate">generate</a></dd> + <dd id="RisingWave.Generator.preprocess" class="function"><a href="../generator.html#Generator.preprocess">preprocess</a></dd> + <dd id="RisingWave.Generator.unsupported" class="function"><a href="../generator.html#Generator.unsupported">unsupported</a></dd> + <dd id="RisingWave.Generator.sep" class="function"><a href="../generator.html#Generator.sep">sep</a></dd> + <dd id="RisingWave.Generator.seg" class="function"><a href="../generator.html#Generator.seg">seg</a></dd> + <dd id="RisingWave.Generator.pad_comment" class="function"><a href="../generator.html#Generator.pad_comment">pad_comment</a></dd> + <dd id="RisingWave.Generator.maybe_comment" class="function"><a href="../generator.html#Generator.maybe_comment">maybe_comment</a></dd> + <dd id="RisingWave.Generator.wrap" class="function"><a href="../generator.html#Generator.wrap">wrap</a></dd> + <dd id="RisingWave.Generator.no_identify" class="function"><a href="../generator.html#Generator.no_identify">no_identify</a></dd> + <dd id="RisingWave.Generator.normalize_func" class="function"><a href="../generator.html#Generator.normalize_func">normalize_func</a></dd> + <dd id="RisingWave.Generator.indent" class="function"><a href="../generator.html#Generator.indent">indent</a></dd> + <dd id="RisingWave.Generator.sql" class="function"><a href="../generator.html#Generator.sql">sql</a></dd> + <dd id="RisingWave.Generator.uncache_sql" class="function"><a href="../generator.html#Generator.uncache_sql">uncache_sql</a></dd> + <dd id="RisingWave.Generator.cache_sql" class="function"><a href="../generator.html#Generator.cache_sql">cache_sql</a></dd> + <dd id="RisingWave.Generator.characterset_sql" class="function"><a href="../generator.html#Generator.characterset_sql">characterset_sql</a></dd> + <dd id="RisingWave.Generator.column_parts" class="function"><a href="../generator.html#Generator.column_parts">column_parts</a></dd> + <dd id="RisingWave.Generator.column_sql" class="function"><a href="../generator.html#Generator.column_sql">column_sql</a></dd> + <dd id="RisingWave.Generator.columnposition_sql" class="function"><a href="../generator.html#Generator.columnposition_sql">columnposition_sql</a></dd> + <dd id="RisingWave.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> + <dd id="RisingWave.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.computedcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.computedcolumnconstraint_sql">computedcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.generatedasrowcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasrowcolumnconstraint_sql">generatedasrowcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.periodforsystemtimeconstraint_sql" class="function"><a href="../generator.html#Generator.periodforsystemtimeconstraint_sql">periodforsystemtimeconstraint_sql</a></dd> + <dd id="RisingWave.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.transformcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.transformcolumnconstraint_sql">transformcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.uniquecolumnconstraint_sql" class="function"><a href="../generator.html#Generator.uniquecolumnconstraint_sql">uniquecolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.createable_sql" class="function"><a href="../generator.html#Generator.createable_sql">createable_sql</a></dd> + <dd id="RisingWave.Generator.create_sql" class="function"><a href="../generator.html#Generator.create_sql">create_sql</a></dd> + <dd id="RisingWave.Generator.sequenceproperties_sql" class="function"><a href="../generator.html#Generator.sequenceproperties_sql">sequenceproperties_sql</a></dd> + <dd id="RisingWave.Generator.clone_sql" class="function"><a href="../generator.html#Generator.clone_sql">clone_sql</a></dd> + <dd id="RisingWave.Generator.describe_sql" class="function"><a href="../generator.html#Generator.describe_sql">describe_sql</a></dd> + <dd id="RisingWave.Generator.heredoc_sql" class="function"><a href="../generator.html#Generator.heredoc_sql">heredoc_sql</a></dd> + <dd id="RisingWave.Generator.prepend_ctes" class="function"><a href="../generator.html#Generator.prepend_ctes">prepend_ctes</a></dd> + <dd id="RisingWave.Generator.with_sql" class="function"><a href="../generator.html#Generator.with_sql">with_sql</a></dd> + <dd id="RisingWave.Generator.cte_sql" class="function"><a href="../generator.html#Generator.cte_sql">cte_sql</a></dd> + <dd id="RisingWave.Generator.tablealias_sql" class="function"><a href="../generator.html#Generator.tablealias_sql">tablealias_sql</a></dd> + <dd id="RisingWave.Generator.bitstring_sql" class="function"><a href="../generator.html#Generator.bitstring_sql">bitstring_sql</a></dd> + <dd id="RisingWave.Generator.hexstring_sql" class="function"><a href="../generator.html#Generator.hexstring_sql">hexstring_sql</a></dd> + <dd id="RisingWave.Generator.bytestring_sql" class="function"><a href="../generator.html#Generator.bytestring_sql">bytestring_sql</a></dd> + <dd id="RisingWave.Generator.unicodestring_sql" class="function"><a href="../generator.html#Generator.unicodestring_sql">unicodestring_sql</a></dd> + <dd id="RisingWave.Generator.rawstring_sql" class="function"><a href="../generator.html#Generator.rawstring_sql">rawstring_sql</a></dd> + <dd id="RisingWave.Generator.datatypeparam_sql" class="function"><a href="../generator.html#Generator.datatypeparam_sql">datatypeparam_sql</a></dd> + <dd id="RisingWave.Generator.directory_sql" class="function"><a href="../generator.html#Generator.directory_sql">directory_sql</a></dd> + <dd id="RisingWave.Generator.delete_sql" class="function"><a href="../generator.html#Generator.delete_sql">delete_sql</a></dd> + <dd id="RisingWave.Generator.drop_sql" class="function"><a href="../generator.html#Generator.drop_sql">drop_sql</a></dd> + <dd id="RisingWave.Generator.except_sql" class="function"><a href="../generator.html#Generator.except_sql">except_sql</a></dd> + <dd id="RisingWave.Generator.except_op" class="function"><a href="../generator.html#Generator.except_op">except_op</a></dd> + <dd id="RisingWave.Generator.fetch_sql" class="function"><a href="../generator.html#Generator.fetch_sql">fetch_sql</a></dd> + <dd id="RisingWave.Generator.filter_sql" class="function"><a href="../generator.html#Generator.filter_sql">filter_sql</a></dd> + <dd id="RisingWave.Generator.hint_sql" class="function"><a href="../generator.html#Generator.hint_sql">hint_sql</a></dd> + <dd id="RisingWave.Generator.indexparameters_sql" class="function"><a href="../generator.html#Generator.indexparameters_sql">indexparameters_sql</a></dd> + <dd id="RisingWave.Generator.index_sql" class="function"><a href="../generator.html#Generator.index_sql">index_sql</a></dd> + <dd id="RisingWave.Generator.identifier_sql" class="function"><a href="../generator.html#Generator.identifier_sql">identifier_sql</a></dd> + <dd id="RisingWave.Generator.hex_sql" class="function"><a href="../generator.html#Generator.hex_sql">hex_sql</a></dd> + <dd id="RisingWave.Generator.lowerhex_sql" class="function"><a href="../generator.html#Generator.lowerhex_sql">lowerhex_sql</a></dd> + <dd id="RisingWave.Generator.inputoutputformat_sql" class="function"><a href="../generator.html#Generator.inputoutputformat_sql">inputoutputformat_sql</a></dd> + <dd id="RisingWave.Generator.national_sql" class="function"><a href="../generator.html#Generator.national_sql">national_sql</a></dd> + <dd id="RisingWave.Generator.partition_sql" class="function"><a href="../generator.html#Generator.partition_sql">partition_sql</a></dd> + <dd id="RisingWave.Generator.properties_sql" class="function"><a href="../generator.html#Generator.properties_sql">properties_sql</a></dd> + <dd id="RisingWave.Generator.root_properties" class="function"><a href="../generator.html#Generator.root_properties">root_properties</a></dd> + <dd id="RisingWave.Generator.properties" class="function"><a href="../generator.html#Generator.properties">properties</a></dd> + <dd id="RisingWave.Generator.with_properties" class="function"><a href="../generator.html#Generator.with_properties">with_properties</a></dd> + <dd id="RisingWave.Generator.locate_properties" class="function"><a href="../generator.html#Generator.locate_properties">locate_properties</a></dd> + <dd id="RisingWave.Generator.property_name" class="function"><a href="../generator.html#Generator.property_name">property_name</a></dd> + <dd id="RisingWave.Generator.property_sql" class="function"><a href="../generator.html#Generator.property_sql">property_sql</a></dd> + <dd id="RisingWave.Generator.likeproperty_sql" class="function"><a href="../generator.html#Generator.likeproperty_sql">likeproperty_sql</a></dd> + <dd id="RisingWave.Generator.fallbackproperty_sql" class="function"><a href="../generator.html#Generator.fallbackproperty_sql">fallbackproperty_sql</a></dd> + <dd id="RisingWave.Generator.journalproperty_sql" class="function"><a href="../generator.html#Generator.journalproperty_sql">journalproperty_sql</a></dd> + <dd id="RisingWave.Generator.freespaceproperty_sql" class="function"><a href="../generator.html#Generator.freespaceproperty_sql">freespaceproperty_sql</a></dd> + <dd id="RisingWave.Generator.checksumproperty_sql" class="function"><a href="../generator.html#Generator.checksumproperty_sql">checksumproperty_sql</a></dd> + <dd id="RisingWave.Generator.mergeblockratioproperty_sql" class="function"><a href="../generator.html#Generator.mergeblockratioproperty_sql">mergeblockratioproperty_sql</a></dd> + <dd id="RisingWave.Generator.datablocksizeproperty_sql" class="function"><a href="../generator.html#Generator.datablocksizeproperty_sql">datablocksizeproperty_sql</a></dd> + <dd id="RisingWave.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> + <dd id="RisingWave.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> + <dd id="RisingWave.Generator.partitionboundspec_sql" class="function"><a href="../generator.html#Generator.partitionboundspec_sql">partitionboundspec_sql</a></dd> + <dd id="RisingWave.Generator.partitionedofproperty_sql" class="function"><a href="../generator.html#Generator.partitionedofproperty_sql">partitionedofproperty_sql</a></dd> + <dd id="RisingWave.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="RisingWave.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> + <dd id="RisingWave.Generator.withsystemversioningproperty_sql" class="function"><a href="../generator.html#Generator.withsystemversioningproperty_sql">withsystemversioningproperty_sql</a></dd> + <dd id="RisingWave.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> + <dd id="RisingWave.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> + <dd id="RisingWave.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> + <dd id="RisingWave.Generator.introducer_sql" class="function"><a href="../generator.html#Generator.introducer_sql">introducer_sql</a></dd> + <dd id="RisingWave.Generator.kill_sql" class="function"><a href="../generator.html#Generator.kill_sql">kill_sql</a></dd> + <dd id="RisingWave.Generator.pseudotype_sql" class="function"><a href="../generator.html#Generator.pseudotype_sql">pseudotype_sql</a></dd> + <dd id="RisingWave.Generator.objectidentifier_sql" class="function"><a href="../generator.html#Generator.objectidentifier_sql">objectidentifier_sql</a></dd> + <dd id="RisingWave.Generator.onconflict_sql" class="function"><a href="../generator.html#Generator.onconflict_sql">onconflict_sql</a></dd> + <dd id="RisingWave.Generator.returning_sql" class="function"><a href="../generator.html#Generator.returning_sql">returning_sql</a></dd> + <dd id="RisingWave.Generator.rowformatdelimitedproperty_sql" class="function"><a href="../generator.html#Generator.rowformatdelimitedproperty_sql">rowformatdelimitedproperty_sql</a></dd> + <dd id="RisingWave.Generator.withtablehint_sql" class="function"><a href="../generator.html#Generator.withtablehint_sql">withtablehint_sql</a></dd> + <dd id="RisingWave.Generator.indextablehint_sql" class="function"><a href="../generator.html#Generator.indextablehint_sql">indextablehint_sql</a></dd> + <dd id="RisingWave.Generator.historicaldata_sql" class="function"><a href="../generator.html#Generator.historicaldata_sql">historicaldata_sql</a></dd> + <dd id="RisingWave.Generator.table_parts" class="function"><a href="../generator.html#Generator.table_parts">table_parts</a></dd> + <dd id="RisingWave.Generator.table_sql" class="function"><a href="../generator.html#Generator.table_sql">table_sql</a></dd> + <dd id="RisingWave.Generator.tablesample_sql" class="function"><a href="../generator.html#Generator.tablesample_sql">tablesample_sql</a></dd> + <dd id="RisingWave.Generator.pivot_sql" class="function"><a href="../generator.html#Generator.pivot_sql">pivot_sql</a></dd> + <dd id="RisingWave.Generator.version_sql" class="function"><a href="../generator.html#Generator.version_sql">version_sql</a></dd> + <dd id="RisingWave.Generator.tuple_sql" class="function"><a href="../generator.html#Generator.tuple_sql">tuple_sql</a></dd> + <dd id="RisingWave.Generator.update_sql" class="function"><a href="../generator.html#Generator.update_sql">update_sql</a></dd> + <dd id="RisingWave.Generator.values_sql" class="function"><a href="../generator.html#Generator.values_sql">values_sql</a></dd> + <dd id="RisingWave.Generator.var_sql" class="function"><a href="../generator.html#Generator.var_sql">var_sql</a></dd> + <dd id="RisingWave.Generator.into_sql" class="function"><a href="../generator.html#Generator.into_sql">into_sql</a></dd> + <dd id="RisingWave.Generator.from_sql" class="function"><a href="../generator.html#Generator.from_sql">from_sql</a></dd> + <dd id="RisingWave.Generator.group_sql" class="function"><a href="../generator.html#Generator.group_sql">group_sql</a></dd> + <dd id="RisingWave.Generator.having_sql" class="function"><a href="../generator.html#Generator.having_sql">having_sql</a></dd> + <dd id="RisingWave.Generator.connect_sql" class="function"><a href="../generator.html#Generator.connect_sql">connect_sql</a></dd> + <dd id="RisingWave.Generator.prior_sql" class="function"><a href="../generator.html#Generator.prior_sql">prior_sql</a></dd> + <dd id="RisingWave.Generator.join_sql" class="function"><a href="../generator.html#Generator.join_sql">join_sql</a></dd> + <dd id="RisingWave.Generator.lambda_sql" class="function"><a href="../generator.html#Generator.lambda_sql">lambda_sql</a></dd> + <dd id="RisingWave.Generator.lateral_op" class="function"><a href="../generator.html#Generator.lateral_op">lateral_op</a></dd> + <dd id="RisingWave.Generator.lateral_sql" class="function"><a href="../generator.html#Generator.lateral_sql">lateral_sql</a></dd> + <dd id="RisingWave.Generator.limit_sql" class="function"><a href="../generator.html#Generator.limit_sql">limit_sql</a></dd> + <dd id="RisingWave.Generator.offset_sql" class="function"><a href="../generator.html#Generator.offset_sql">offset_sql</a></dd> + <dd id="RisingWave.Generator.setitem_sql" class="function"><a href="../generator.html#Generator.setitem_sql">setitem_sql</a></dd> + <dd id="RisingWave.Generator.set_sql" class="function"><a href="../generator.html#Generator.set_sql">set_sql</a></dd> + <dd id="RisingWave.Generator.pragma_sql" class="function"><a href="../generator.html#Generator.pragma_sql">pragma_sql</a></dd> + <dd id="RisingWave.Generator.lock_sql" class="function"><a href="../generator.html#Generator.lock_sql">lock_sql</a></dd> + <dd id="RisingWave.Generator.literal_sql" class="function"><a href="../generator.html#Generator.literal_sql">literal_sql</a></dd> + <dd id="RisingWave.Generator.escape_str" class="function"><a href="../generator.html#Generator.escape_str">escape_str</a></dd> + <dd id="RisingWave.Generator.loaddata_sql" class="function"><a href="../generator.html#Generator.loaddata_sql">loaddata_sql</a></dd> + <dd id="RisingWave.Generator.null_sql" class="function"><a href="../generator.html#Generator.null_sql">null_sql</a></dd> + <dd id="RisingWave.Generator.boolean_sql" class="function"><a href="../generator.html#Generator.boolean_sql">boolean_sql</a></dd> + <dd id="RisingWave.Generator.order_sql" class="function"><a href="../generator.html#Generator.order_sql">order_sql</a></dd> + <dd id="RisingWave.Generator.withfill_sql" class="function"><a href="../generator.html#Generator.withfill_sql">withfill_sql</a></dd> + <dd id="RisingWave.Generator.cluster_sql" class="function"><a href="../generator.html#Generator.cluster_sql">cluster_sql</a></dd> + <dd id="RisingWave.Generator.distribute_sql" class="function"><a href="../generator.html#Generator.distribute_sql">distribute_sql</a></dd> + <dd id="RisingWave.Generator.sort_sql" class="function"><a href="../generator.html#Generator.sort_sql">sort_sql</a></dd> + <dd id="RisingWave.Generator.ordered_sql" class="function"><a href="../generator.html#Generator.ordered_sql">ordered_sql</a></dd> + <dd id="RisingWave.Generator.matchrecognizemeasure_sql" class="function"><a href="../generator.html#Generator.matchrecognizemeasure_sql">matchrecognizemeasure_sql</a></dd> + <dd id="RisingWave.Generator.matchrecognize_sql" class="function"><a href="../generator.html#Generator.matchrecognize_sql">matchrecognize_sql</a></dd> + <dd id="RisingWave.Generator.query_modifiers" class="function"><a href="../generator.html#Generator.query_modifiers">query_modifiers</a></dd> + <dd id="RisingWave.Generator.queryoption_sql" class="function"><a href="../generator.html#Generator.queryoption_sql">queryoption_sql</a></dd> + <dd id="RisingWave.Generator.offset_limit_modifiers" class="function"><a href="../generator.html#Generator.offset_limit_modifiers">offset_limit_modifiers</a></dd> + <dd id="RisingWave.Generator.after_limit_modifiers" class="function"><a href="../generator.html#Generator.after_limit_modifiers">after_limit_modifiers</a></dd> + <dd id="RisingWave.Generator.select_sql" class="function"><a href="../generator.html#Generator.select_sql">select_sql</a></dd> + <dd id="RisingWave.Generator.schema_sql" class="function"><a href="../generator.html#Generator.schema_sql">schema_sql</a></dd> + <dd id="RisingWave.Generator.schema_columns_sql" class="function"><a href="../generator.html#Generator.schema_columns_sql">schema_columns_sql</a></dd> + <dd id="RisingWave.Generator.star_sql" class="function"><a href="../generator.html#Generator.star_sql">star_sql</a></dd> + <dd id="RisingWave.Generator.parameter_sql" class="function"><a href="../generator.html#Generator.parameter_sql">parameter_sql</a></dd> + <dd id="RisingWave.Generator.sessionparameter_sql" class="function"><a href="../generator.html#Generator.sessionparameter_sql">sessionparameter_sql</a></dd> + <dd id="RisingWave.Generator.placeholder_sql" class="function"><a href="../generator.html#Generator.placeholder_sql">placeholder_sql</a></dd> + <dd id="RisingWave.Generator.subquery_sql" class="function"><a href="../generator.html#Generator.subquery_sql">subquery_sql</a></dd> + <dd id="RisingWave.Generator.qualify_sql" class="function"><a href="../generator.html#Generator.qualify_sql">qualify_sql</a></dd> + <dd id="RisingWave.Generator.set_operations" class="function"><a href="../generator.html#Generator.set_operations">set_operations</a></dd> + <dd id="RisingWave.Generator.union_sql" class="function"><a href="../generator.html#Generator.union_sql">union_sql</a></dd> + <dd id="RisingWave.Generator.union_op" class="function"><a href="../generator.html#Generator.union_op">union_op</a></dd> + <dd id="RisingWave.Generator.prewhere_sql" class="function"><a href="../generator.html#Generator.prewhere_sql">prewhere_sql</a></dd> + <dd id="RisingWave.Generator.where_sql" class="function"><a href="../generator.html#Generator.where_sql">where_sql</a></dd> + <dd id="RisingWave.Generator.window_sql" class="function"><a href="../generator.html#Generator.window_sql">window_sql</a></dd> + <dd id="RisingWave.Generator.partition_by_sql" class="function"><a href="../generator.html#Generator.partition_by_sql">partition_by_sql</a></dd> + <dd id="RisingWave.Generator.windowspec_sql" class="function"><a href="../generator.html#Generator.windowspec_sql">windowspec_sql</a></dd> + <dd id="RisingWave.Generator.withingroup_sql" class="function"><a href="../generator.html#Generator.withingroup_sql">withingroup_sql</a></dd> + <dd id="RisingWave.Generator.between_sql" class="function"><a href="../generator.html#Generator.between_sql">between_sql</a></dd> + <dd id="RisingWave.Generator.bracket_offset_expressions" class="function"><a href="../generator.html#Generator.bracket_offset_expressions">bracket_offset_expressions</a></dd> + <dd id="RisingWave.Generator.all_sql" class="function"><a href="../generator.html#Generator.all_sql">all_sql</a></dd> + <dd id="RisingWave.Generator.any_sql" class="function"><a href="../generator.html#Generator.any_sql">any_sql</a></dd> + <dd id="RisingWave.Generator.exists_sql" class="function"><a href="../generator.html#Generator.exists_sql">exists_sql</a></dd> + <dd id="RisingWave.Generator.case_sql" class="function"><a href="../generator.html#Generator.case_sql">case_sql</a></dd> + <dd id="RisingWave.Generator.constraint_sql" class="function"><a href="../generator.html#Generator.constraint_sql">constraint_sql</a></dd> + <dd id="RisingWave.Generator.nextvaluefor_sql" class="function"><a href="../generator.html#Generator.nextvaluefor_sql">nextvaluefor_sql</a></dd> + <dd id="RisingWave.Generator.extract_sql" class="function"><a href="../generator.html#Generator.extract_sql">extract_sql</a></dd> + <dd id="RisingWave.Generator.trim_sql" class="function"><a href="../generator.html#Generator.trim_sql">trim_sql</a></dd> + <dd id="RisingWave.Generator.convert_concat_args" class="function"><a href="../generator.html#Generator.convert_concat_args">convert_concat_args</a></dd> + <dd id="RisingWave.Generator.concat_sql" class="function"><a href="../generator.html#Generator.concat_sql">concat_sql</a></dd> + <dd id="RisingWave.Generator.concatws_sql" class="function"><a href="../generator.html#Generator.concatws_sql">concatws_sql</a></dd> + <dd id="RisingWave.Generator.check_sql" class="function"><a href="../generator.html#Generator.check_sql">check_sql</a></dd> + <dd id="RisingWave.Generator.foreignkey_sql" class="function"><a href="../generator.html#Generator.foreignkey_sql">foreignkey_sql</a></dd> + <dd id="RisingWave.Generator.primarykey_sql" class="function"><a href="../generator.html#Generator.primarykey_sql">primarykey_sql</a></dd> + <dd id="RisingWave.Generator.if_sql" class="function"><a href="../generator.html#Generator.if_sql">if_sql</a></dd> + <dd id="RisingWave.Generator.jsonkeyvalue_sql" class="function"><a href="../generator.html#Generator.jsonkeyvalue_sql">jsonkeyvalue_sql</a></dd> + <dd id="RisingWave.Generator.jsonpath_sql" class="function"><a href="../generator.html#Generator.jsonpath_sql">jsonpath_sql</a></dd> + <dd id="RisingWave.Generator.json_path_part" class="function"><a href="../generator.html#Generator.json_path_part">json_path_part</a></dd> + <dd id="RisingWave.Generator.formatjson_sql" class="function"><a href="../generator.html#Generator.formatjson_sql">formatjson_sql</a></dd> + <dd id="RisingWave.Generator.jsonobject_sql" class="function"><a href="../generator.html#Generator.jsonobject_sql">jsonobject_sql</a></dd> + <dd id="RisingWave.Generator.jsonobjectagg_sql" class="function"><a href="../generator.html#Generator.jsonobjectagg_sql">jsonobjectagg_sql</a></dd> + <dd id="RisingWave.Generator.jsonarray_sql" class="function"><a href="../generator.html#Generator.jsonarray_sql">jsonarray_sql</a></dd> + <dd id="RisingWave.Generator.jsonarrayagg_sql" class="function"><a href="../generator.html#Generator.jsonarrayagg_sql">jsonarrayagg_sql</a></dd> + <dd id="RisingWave.Generator.jsoncolumndef_sql" class="function"><a href="../generator.html#Generator.jsoncolumndef_sql">jsoncolumndef_sql</a></dd> + <dd id="RisingWave.Generator.jsonschema_sql" class="function"><a href="../generator.html#Generator.jsonschema_sql">jsonschema_sql</a></dd> + <dd id="RisingWave.Generator.jsontable_sql" class="function"><a href="../generator.html#Generator.jsontable_sql">jsontable_sql</a></dd> + <dd id="RisingWave.Generator.openjsoncolumndef_sql" class="function"><a href="../generator.html#Generator.openjsoncolumndef_sql">openjsoncolumndef_sql</a></dd> + <dd id="RisingWave.Generator.openjson_sql" class="function"><a href="../generator.html#Generator.openjson_sql">openjson_sql</a></dd> + <dd id="RisingWave.Generator.in_sql" class="function"><a href="../generator.html#Generator.in_sql">in_sql</a></dd> + <dd id="RisingWave.Generator.in_unnest_op" class="function"><a href="../generator.html#Generator.in_unnest_op">in_unnest_op</a></dd> + <dd id="RisingWave.Generator.interval_sql" class="function"><a href="../generator.html#Generator.interval_sql">interval_sql</a></dd> + <dd id="RisingWave.Generator.return_sql" class="function"><a href="../generator.html#Generator.return_sql">return_sql</a></dd> + <dd id="RisingWave.Generator.reference_sql" class="function"><a href="../generator.html#Generator.reference_sql">reference_sql</a></dd> + <dd id="RisingWave.Generator.anonymous_sql" class="function"><a href="../generator.html#Generator.anonymous_sql">anonymous_sql</a></dd> + <dd id="RisingWave.Generator.paren_sql" class="function"><a href="../generator.html#Generator.paren_sql">paren_sql</a></dd> + <dd id="RisingWave.Generator.neg_sql" class="function"><a href="../generator.html#Generator.neg_sql">neg_sql</a></dd> + <dd id="RisingWave.Generator.not_sql" class="function"><a href="../generator.html#Generator.not_sql">not_sql</a></dd> + <dd id="RisingWave.Generator.alias_sql" class="function"><a href="../generator.html#Generator.alias_sql">alias_sql</a></dd> + <dd id="RisingWave.Generator.pivotalias_sql" class="function"><a href="../generator.html#Generator.pivotalias_sql">pivotalias_sql</a></dd> + <dd id="RisingWave.Generator.aliases_sql" class="function"><a href="../generator.html#Generator.aliases_sql">aliases_sql</a></dd> + <dd id="RisingWave.Generator.atindex_sql" class="function"><a href="../generator.html#Generator.atindex_sql">atindex_sql</a></dd> + <dd id="RisingWave.Generator.attimezone_sql" class="function"><a href="../generator.html#Generator.attimezone_sql">attimezone_sql</a></dd> + <dd id="RisingWave.Generator.fromtimezone_sql" class="function"><a href="../generator.html#Generator.fromtimezone_sql">fromtimezone_sql</a></dd> + <dd id="RisingWave.Generator.add_sql" class="function"><a href="../generator.html#Generator.add_sql">add_sql</a></dd> + <dd id="RisingWave.Generator.and_sql" class="function"><a href="../generator.html#Generator.and_sql">and_sql</a></dd> + <dd id="RisingWave.Generator.or_sql" class="function"><a href="../generator.html#Generator.or_sql">or_sql</a></dd> + <dd id="RisingWave.Generator.xor_sql" class="function"><a href="../generator.html#Generator.xor_sql">xor_sql</a></dd> + <dd id="RisingWave.Generator.connector_sql" class="function"><a href="../generator.html#Generator.connector_sql">connector_sql</a></dd> + <dd id="RisingWave.Generator.bitwiseand_sql" class="function"><a href="../generator.html#Generator.bitwiseand_sql">bitwiseand_sql</a></dd> + <dd id="RisingWave.Generator.bitwiseleftshift_sql" class="function"><a href="../generator.html#Generator.bitwiseleftshift_sql">bitwiseleftshift_sql</a></dd> + <dd id="RisingWave.Generator.bitwisenot_sql" class="function"><a href="../generator.html#Generator.bitwisenot_sql">bitwisenot_sql</a></dd> + <dd id="RisingWave.Generator.bitwiseor_sql" class="function"><a href="../generator.html#Generator.bitwiseor_sql">bitwiseor_sql</a></dd> + <dd id="RisingWave.Generator.bitwiserightshift_sql" class="function"><a href="../generator.html#Generator.bitwiserightshift_sql">bitwiserightshift_sql</a></dd> + <dd id="RisingWave.Generator.bitwisexor_sql" class="function"><a href="../generator.html#Generator.bitwisexor_sql">bitwisexor_sql</a></dd> + <dd id="RisingWave.Generator.cast_sql" class="function"><a href="../generator.html#Generator.cast_sql">cast_sql</a></dd> + <dd id="RisingWave.Generator.currentdate_sql" class="function"><a href="../generator.html#Generator.currentdate_sql">currentdate_sql</a></dd> + <dd id="RisingWave.Generator.currenttimestamp_sql" class="function"><a href="../generator.html#Generator.currenttimestamp_sql">currenttimestamp_sql</a></dd> + <dd id="RisingWave.Generator.collate_sql" class="function"><a href="../generator.html#Generator.collate_sql">collate_sql</a></dd> + <dd id="RisingWave.Generator.command_sql" class="function"><a href="../generator.html#Generator.command_sql">command_sql</a></dd> + <dd id="RisingWave.Generator.comment_sql" class="function"><a href="../generator.html#Generator.comment_sql">comment_sql</a></dd> + <dd id="RisingWave.Generator.mergetreettlaction_sql" class="function"><a href="../generator.html#Generator.mergetreettlaction_sql">mergetreettlaction_sql</a></dd> + <dd id="RisingWave.Generator.mergetreettl_sql" class="function"><a href="../generator.html#Generator.mergetreettl_sql">mergetreettl_sql</a></dd> + <dd id="RisingWave.Generator.transaction_sql" class="function"><a href="../generator.html#Generator.transaction_sql">transaction_sql</a></dd> + <dd id="RisingWave.Generator.commit_sql" class="function"><a href="../generator.html#Generator.commit_sql">commit_sql</a></dd> + <dd id="RisingWave.Generator.rollback_sql" class="function"><a href="../generator.html#Generator.rollback_sql">rollback_sql</a></dd> + <dd id="RisingWave.Generator.altercolumn_sql" class="function"><a href="../generator.html#Generator.altercolumn_sql">altercolumn_sql</a></dd> + <dd id="RisingWave.Generator.alterdiststyle_sql" class="function"><a href="../generator.html#Generator.alterdiststyle_sql">alterdiststyle_sql</a></dd> + <dd id="RisingWave.Generator.altersortkey_sql" class="function"><a href="../generator.html#Generator.altersortkey_sql">altersortkey_sql</a></dd> + <dd id="RisingWave.Generator.renametable_sql" class="function"><a href="../generator.html#Generator.renametable_sql">renametable_sql</a></dd> + <dd id="RisingWave.Generator.renamecolumn_sql" class="function"><a href="../generator.html#Generator.renamecolumn_sql">renamecolumn_sql</a></dd> + <dd id="RisingWave.Generator.altertable_sql" class="function"><a href="../generator.html#Generator.altertable_sql">altertable_sql</a></dd> + <dd id="RisingWave.Generator.add_column_sql" class="function"><a href="../generator.html#Generator.add_column_sql">add_column_sql</a></dd> + <dd id="RisingWave.Generator.droppartition_sql" class="function"><a href="../generator.html#Generator.droppartition_sql">droppartition_sql</a></dd> + <dd id="RisingWave.Generator.addconstraint_sql" class="function"><a href="../generator.html#Generator.addconstraint_sql">addconstraint_sql</a></dd> + <dd id="RisingWave.Generator.distinct_sql" class="function"><a href="../generator.html#Generator.distinct_sql">distinct_sql</a></dd> + <dd id="RisingWave.Generator.ignorenulls_sql" class="function"><a href="../generator.html#Generator.ignorenulls_sql">ignorenulls_sql</a></dd> + <dd id="RisingWave.Generator.respectnulls_sql" class="function"><a href="../generator.html#Generator.respectnulls_sql">respectnulls_sql</a></dd> + <dd id="RisingWave.Generator.havingmax_sql" class="function"><a href="../generator.html#Generator.havingmax_sql">havingmax_sql</a></dd> + <dd id="RisingWave.Generator.intdiv_sql" class="function"><a href="../generator.html#Generator.intdiv_sql">intdiv_sql</a></dd> + <dd id="RisingWave.Generator.dpipe_sql" class="function"><a href="../generator.html#Generator.dpipe_sql">dpipe_sql</a></dd> + <dd id="RisingWave.Generator.div_sql" class="function"><a href="../generator.html#Generator.div_sql">div_sql</a></dd> + <dd id="RisingWave.Generator.overlaps_sql" class="function"><a href="../generator.html#Generator.overlaps_sql">overlaps_sql</a></dd> + <dd id="RisingWave.Generator.distance_sql" class="function"><a href="../generator.html#Generator.distance_sql">distance_sql</a></dd> + <dd id="RisingWave.Generator.dot_sql" class="function"><a href="../generator.html#Generator.dot_sql">dot_sql</a></dd> + <dd id="RisingWave.Generator.eq_sql" class="function"><a href="../generator.html#Generator.eq_sql">eq_sql</a></dd> + <dd id="RisingWave.Generator.propertyeq_sql" class="function"><a href="../generator.html#Generator.propertyeq_sql">propertyeq_sql</a></dd> + <dd id="RisingWave.Generator.escape_sql" class="function"><a href="../generator.html#Generator.escape_sql">escape_sql</a></dd> + <dd id="RisingWave.Generator.glob_sql" class="function"><a href="../generator.html#Generator.glob_sql">glob_sql</a></dd> + <dd id="RisingWave.Generator.gt_sql" class="function"><a href="../generator.html#Generator.gt_sql">gt_sql</a></dd> + <dd id="RisingWave.Generator.gte_sql" class="function"><a href="../generator.html#Generator.gte_sql">gte_sql</a></dd> + <dd id="RisingWave.Generator.ilike_sql" class="function"><a href="../generator.html#Generator.ilike_sql">ilike_sql</a></dd> + <dd id="RisingWave.Generator.ilikeany_sql" class="function"><a href="../generator.html#Generator.ilikeany_sql">ilikeany_sql</a></dd> + <dd id="RisingWave.Generator.is_sql" class="function"><a href="../generator.html#Generator.is_sql">is_sql</a></dd> + <dd id="RisingWave.Generator.like_sql" class="function"><a href="../generator.html#Generator.like_sql">like_sql</a></dd> + <dd id="RisingWave.Generator.likeany_sql" class="function"><a href="../generator.html#Generator.likeany_sql">likeany_sql</a></dd> + <dd id="RisingWave.Generator.similarto_sql" class="function"><a href="../generator.html#Generator.similarto_sql">similarto_sql</a></dd> + <dd id="RisingWave.Generator.lt_sql" class="function"><a href="../generator.html#Generator.lt_sql">lt_sql</a></dd> + <dd id="RisingWave.Generator.lte_sql" class="function"><a href="../generator.html#Generator.lte_sql">lte_sql</a></dd> + <dd id="RisingWave.Generator.mod_sql" class="function"><a href="../generator.html#Generator.mod_sql">mod_sql</a></dd> + <dd id="RisingWave.Generator.mul_sql" class="function"><a href="../generator.html#Generator.mul_sql">mul_sql</a></dd> + <dd id="RisingWave.Generator.neq_sql" class="function"><a href="../generator.html#Generator.neq_sql">neq_sql</a></dd> + <dd id="RisingWave.Generator.nullsafeeq_sql" class="function"><a href="../generator.html#Generator.nullsafeeq_sql">nullsafeeq_sql</a></dd> + <dd id="RisingWave.Generator.nullsafeneq_sql" class="function"><a href="../generator.html#Generator.nullsafeneq_sql">nullsafeneq_sql</a></dd> + <dd id="RisingWave.Generator.slice_sql" class="function"><a href="../generator.html#Generator.slice_sql">slice_sql</a></dd> + <dd id="RisingWave.Generator.sub_sql" class="function"><a href="../generator.html#Generator.sub_sql">sub_sql</a></dd> + <dd id="RisingWave.Generator.trycast_sql" class="function"><a href="../generator.html#Generator.trycast_sql">trycast_sql</a></dd> + <dd id="RisingWave.Generator.try_sql" class="function"><a href="../generator.html#Generator.try_sql">try_sql</a></dd> + <dd id="RisingWave.Generator.log_sql" class="function"><a href="../generator.html#Generator.log_sql">log_sql</a></dd> + <dd id="RisingWave.Generator.use_sql" class="function"><a href="../generator.html#Generator.use_sql">use_sql</a></dd> + <dd id="RisingWave.Generator.binary" class="function"><a href="../generator.html#Generator.binary">binary</a></dd> + <dd id="RisingWave.Generator.function_fallback_sql" class="function"><a href="../generator.html#Generator.function_fallback_sql">function_fallback_sql</a></dd> + <dd id="RisingWave.Generator.func" class="function"><a href="../generator.html#Generator.func">func</a></dd> + <dd id="RisingWave.Generator.format_args" class="function"><a href="../generator.html#Generator.format_args">format_args</a></dd> + <dd id="RisingWave.Generator.too_wide" class="function"><a href="../generator.html#Generator.too_wide">too_wide</a></dd> + <dd id="RisingWave.Generator.format_time" class="function"><a href="../generator.html#Generator.format_time">format_time</a></dd> + <dd id="RisingWave.Generator.expressions" class="function"><a href="../generator.html#Generator.expressions">expressions</a></dd> + <dd id="RisingWave.Generator.op_expressions" class="function"><a href="../generator.html#Generator.op_expressions">op_expressions</a></dd> + <dd id="RisingWave.Generator.naked_property" class="function"><a href="../generator.html#Generator.naked_property">naked_property</a></dd> + <dd id="RisingWave.Generator.tag_sql" class="function"><a href="../generator.html#Generator.tag_sql">tag_sql</a></dd> + <dd id="RisingWave.Generator.token_sql" class="function"><a href="../generator.html#Generator.token_sql">token_sql</a></dd> + <dd id="RisingWave.Generator.userdefinedfunction_sql" class="function"><a href="../generator.html#Generator.userdefinedfunction_sql">userdefinedfunction_sql</a></dd> + <dd id="RisingWave.Generator.joinhint_sql" class="function"><a href="../generator.html#Generator.joinhint_sql">joinhint_sql</a></dd> + <dd id="RisingWave.Generator.kwarg_sql" class="function"><a href="../generator.html#Generator.kwarg_sql">kwarg_sql</a></dd> + <dd id="RisingWave.Generator.when_sql" class="function"><a href="../generator.html#Generator.when_sql">when_sql</a></dd> + <dd id="RisingWave.Generator.merge_sql" class="function"><a href="../generator.html#Generator.merge_sql">merge_sql</a></dd> + <dd id="RisingWave.Generator.tochar_sql" class="function"><a href="../generator.html#Generator.tochar_sql">tochar_sql</a></dd> + <dd id="RisingWave.Generator.tonumber_sql" class="function"><a href="../generator.html#Generator.tonumber_sql">tonumber_sql</a></dd> + <dd id="RisingWave.Generator.dictproperty_sql" class="function"><a href="../generator.html#Generator.dictproperty_sql">dictproperty_sql</a></dd> + <dd id="RisingWave.Generator.dictrange_sql" class="function"><a href="../generator.html#Generator.dictrange_sql">dictrange_sql</a></dd> + <dd id="RisingWave.Generator.dictsubproperty_sql" class="function"><a href="../generator.html#Generator.dictsubproperty_sql">dictsubproperty_sql</a></dd> + <dd id="RisingWave.Generator.oncluster_sql" class="function"><a href="../generator.html#Generator.oncluster_sql">oncluster_sql</a></dd> + <dd id="RisingWave.Generator.clusteredbyproperty_sql" class="function"><a href="../generator.html#Generator.clusteredbyproperty_sql">clusteredbyproperty_sql</a></dd> + <dd id="RisingWave.Generator.anyvalue_sql" class="function"><a href="../generator.html#Generator.anyvalue_sql">anyvalue_sql</a></dd> + <dd id="RisingWave.Generator.querytransform_sql" class="function"><a href="../generator.html#Generator.querytransform_sql">querytransform_sql</a></dd> + <dd id="RisingWave.Generator.indexconstraintoption_sql" class="function"><a href="../generator.html#Generator.indexconstraintoption_sql">indexconstraintoption_sql</a></dd> + <dd id="RisingWave.Generator.checkcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.checkcolumnconstraint_sql">checkcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.indexcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.indexcolumnconstraint_sql">indexcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.nvl2_sql" class="function"><a href="../generator.html#Generator.nvl2_sql">nvl2_sql</a></dd> + <dd id="RisingWave.Generator.comprehension_sql" class="function"><a href="../generator.html#Generator.comprehension_sql">comprehension_sql</a></dd> + <dd id="RisingWave.Generator.columnprefix_sql" class="function"><a href="../generator.html#Generator.columnprefix_sql">columnprefix_sql</a></dd> + <dd id="RisingWave.Generator.opclass_sql" class="function"><a href="../generator.html#Generator.opclass_sql">opclass_sql</a></dd> + <dd id="RisingWave.Generator.predict_sql" class="function"><a href="../generator.html#Generator.predict_sql">predict_sql</a></dd> + <dd id="RisingWave.Generator.forin_sql" class="function"><a href="../generator.html#Generator.forin_sql">forin_sql</a></dd> + <dd id="RisingWave.Generator.refresh_sql" class="function"><a href="../generator.html#Generator.refresh_sql">refresh_sql</a></dd> + <dd id="RisingWave.Generator.operator_sql" class="function"><a href="../generator.html#Generator.operator_sql">operator_sql</a></dd> + <dd id="RisingWave.Generator.toarray_sql" class="function"><a href="../generator.html#Generator.toarray_sql">toarray_sql</a></dd> + <dd id="RisingWave.Generator.tsordstotime_sql" class="function"><a href="../generator.html#Generator.tsordstotime_sql">tsordstotime_sql</a></dd> + <dd id="RisingWave.Generator.tsordstotimestamp_sql" class="function"><a href="../generator.html#Generator.tsordstotimestamp_sql">tsordstotimestamp_sql</a></dd> + <dd id="RisingWave.Generator.tsordstodate_sql" class="function"><a href="../generator.html#Generator.tsordstodate_sql">tsordstodate_sql</a></dd> + <dd id="RisingWave.Generator.unixdate_sql" class="function"><a href="../generator.html#Generator.unixdate_sql">unixdate_sql</a></dd> + <dd id="RisingWave.Generator.lastday_sql" class="function"><a href="../generator.html#Generator.lastday_sql">lastday_sql</a></dd> + <dd id="RisingWave.Generator.dateadd_sql" class="function"><a href="../generator.html#Generator.dateadd_sql">dateadd_sql</a></dd> + <dd id="RisingWave.Generator.arrayany_sql" class="function"><a href="../generator.html#Generator.arrayany_sql">arrayany_sql</a></dd> + <dd id="RisingWave.Generator.generateseries_sql" class="function"><a href="../generator.html#Generator.generateseries_sql">generateseries_sql</a></dd> + <dd id="RisingWave.Generator.struct_sql" class="function"><a href="../generator.html#Generator.struct_sql">struct_sql</a></dd> + <dd id="RisingWave.Generator.partitionrange_sql" class="function"><a href="../generator.html#Generator.partitionrange_sql">partitionrange_sql</a></dd> + <dd id="RisingWave.Generator.truncatetable_sql" class="function"><a href="../generator.html#Generator.truncatetable_sql">truncatetable_sql</a></dd> + <dd id="RisingWave.Generator.convert_sql" class="function"><a href="../generator.html#Generator.convert_sql">convert_sql</a></dd> + <dd id="RisingWave.Generator.copyparameter_sql" class="function"><a href="../generator.html#Generator.copyparameter_sql">copyparameter_sql</a></dd> + <dd id="RisingWave.Generator.credentials_sql" class="function"><a href="../generator.html#Generator.credentials_sql">credentials_sql</a></dd> + <dd id="RisingWave.Generator.copy_sql" class="function"><a href="../generator.html#Generator.copy_sql">copy_sql</a></dd> + <dd id="RisingWave.Generator.semicolon_sql" class="function"><a href="../generator.html#Generator.semicolon_sql">semicolon_sql</a></dd> + <dd id="RisingWave.Generator.datadeletionproperty_sql" class="function"><a href="../generator.html#Generator.datadeletionproperty_sql">datadeletionproperty_sql</a></dd> + <dd id="RisingWave.Generator.maskingpolicycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.gapfill_sql" class="function"><a href="../generator.html#Generator.gapfill_sql">gapfill_sql</a></dd> + + </div> + <div><dt><a href="postgres.html#Postgres.Generator">sqlglot.dialects.postgres.Postgres.Generator</a></dt> + <dd id="RisingWave.Generator.SINGLE_STRING_INTERVAL" class="variable"><a href="postgres.html#Postgres.Generator.SINGLE_STRING_INTERVAL">SINGLE_STRING_INTERVAL</a></dd> + <dd id="RisingWave.Generator.RENAME_TABLE_WITH_DB" class="variable"><a href="postgres.html#Postgres.Generator.RENAME_TABLE_WITH_DB">RENAME_TABLE_WITH_DB</a></dd> + <dd id="RisingWave.Generator.JOIN_HINTS" class="variable"><a href="postgres.html#Postgres.Generator.JOIN_HINTS">JOIN_HINTS</a></dd> + <dd id="RisingWave.Generator.TABLE_HINTS" class="variable"><a href="postgres.html#Postgres.Generator.TABLE_HINTS">TABLE_HINTS</a></dd> + <dd id="RisingWave.Generator.QUERY_HINTS" class="variable"><a href="postgres.html#Postgres.Generator.QUERY_HINTS">QUERY_HINTS</a></dd> + <dd id="RisingWave.Generator.NVL2_SUPPORTED" class="variable"><a href="postgres.html#Postgres.Generator.NVL2_SUPPORTED">NVL2_SUPPORTED</a></dd> + <dd id="RisingWave.Generator.PARAMETER_TOKEN" class="variable"><a href="postgres.html#Postgres.Generator.PARAMETER_TOKEN">PARAMETER_TOKEN</a></dd> + <dd id="RisingWave.Generator.TABLESAMPLE_SIZE_IS_ROWS" class="variable"><a href="postgres.html#Postgres.Generator.TABLESAMPLE_SIZE_IS_ROWS">TABLESAMPLE_SIZE_IS_ROWS</a></dd> + <dd id="RisingWave.Generator.TABLESAMPLE_SEED_KEYWORD" class="variable"><a href="postgres.html#Postgres.Generator.TABLESAMPLE_SEED_KEYWORD">TABLESAMPLE_SEED_KEYWORD</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_SELECT_INTO" class="variable"><a href="postgres.html#Postgres.Generator.SUPPORTS_SELECT_INTO">SUPPORTS_SELECT_INTO</a></dd> + <dd id="RisingWave.Generator.JSON_TYPE_REQUIRED_FOR_EXTRACTION" class="variable"><a href="postgres.html#Postgres.Generator.JSON_TYPE_REQUIRED_FOR_EXTRACTION">JSON_TYPE_REQUIRED_FOR_EXTRACTION</a></dd> + <dd id="RisingWave.Generator.SUPPORTS_UNLOGGED_TABLES" class="variable"><a href="postgres.html#Postgres.Generator.SUPPORTS_UNLOGGED_TABLES">SUPPORTS_UNLOGGED_TABLES</a></dd> + <dd id="RisingWave.Generator.LIKE_PROPERTY_INSIDE_SCHEMA" class="variable"><a href="postgres.html#Postgres.Generator.LIKE_PROPERTY_INSIDE_SCHEMA">LIKE_PROPERTY_INSIDE_SCHEMA</a></dd> + <dd id="RisingWave.Generator.MULTI_ARG_DISTINCT" class="variable"><a href="postgres.html#Postgres.Generator.MULTI_ARG_DISTINCT">MULTI_ARG_DISTINCT</a></dd> + <dd id="RisingWave.Generator.CAN_IMPLEMENT_ARRAY_ANY" class="variable"><a href="postgres.html#Postgres.Generator.CAN_IMPLEMENT_ARRAY_ANY">CAN_IMPLEMENT_ARRAY_ANY</a></dd> + <dd id="RisingWave.Generator.COPY_HAS_INTO_KEYWORD" class="variable"><a href="postgres.html#Postgres.Generator.COPY_HAS_INTO_KEYWORD">COPY_HAS_INTO_KEYWORD</a></dd> + <dd id="RisingWave.Generator.SUPPORTED_JSON_PATH_PARTS" class="variable"><a href="postgres.html#Postgres.Generator.SUPPORTED_JSON_PATH_PARTS">SUPPORTED_JSON_PATH_PARTS</a></dd> + <dd id="RisingWave.Generator.TYPE_MAPPING" class="variable"><a href="postgres.html#Postgres.Generator.TYPE_MAPPING">TYPE_MAPPING</a></dd> + <dd id="RisingWave.Generator.TRANSFORMS" class="variable"><a href="postgres.html#Postgres.Generator.TRANSFORMS">TRANSFORMS</a></dd> + <dd id="RisingWave.Generator.PROPERTIES_LOCATION" class="variable"><a href="postgres.html#Postgres.Generator.PROPERTIES_LOCATION">PROPERTIES_LOCATION</a></dd> + <dd id="RisingWave.Generator.schemacommentproperty_sql" class="function"><a href="postgres.html#Postgres.Generator.schemacommentproperty_sql">schemacommentproperty_sql</a></dd> + <dd id="RisingWave.Generator.commentcolumnconstraint_sql" class="function"><a href="postgres.html#Postgres.Generator.commentcolumnconstraint_sql">commentcolumnconstraint_sql</a></dd> + <dd id="RisingWave.Generator.unnest_sql" class="function"><a href="postgres.html#Postgres.Generator.unnest_sql">unnest_sql</a></dd> + <dd id="RisingWave.Generator.bracket_sql" class="function"><a href="postgres.html#Postgres.Generator.bracket_sql">bracket_sql</a></dd> + <dd id="RisingWave.Generator.matchagainst_sql" class="function"><a href="postgres.html#Postgres.Generator.matchagainst_sql">matchagainst_sql</a></dd> + <dd id="RisingWave.Generator.alterset_sql" class="function"><a href="postgres.html#Postgres.Generator.alterset_sql">alterset_sql</a></dd> + <dd id="RisingWave.Generator.datatype_sql" class="function"><a href="postgres.html#Postgres.Generator.datatype_sql">datatype_sql</a></dd> + + </div> + </dl> + </div> + </section> + </main> +<script> + function escapeHTML(html) { + return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML; + } + + const originalContent = document.querySelector("main.pdoc"); + let currentContent = originalContent; + + function setContent(innerHTML) { + let elem; + if (innerHTML) { + elem = document.createElement("main"); + elem.classList.add("pdoc"); + elem.innerHTML = innerHTML; + } else { + elem = originalContent; + } + if (currentContent !== elem) { + currentContent.replaceWith(elem); + currentContent = elem; + } + } + + function getSearchTerm() { + return (new URL(window.location)).searchParams.get("search"); + } + + const searchBox = document.querySelector(".pdoc input[type=search]"); + searchBox.addEventListener("input", function () { + let url = new URL(window.location); + if (searchBox.value.trim()) { + url.hash = ""; + url.searchParams.set("search", searchBox.value); + } else { + url.searchParams.delete("search"); + } + history.replaceState("", "", url.toString()); + onInput(); + }); + window.addEventListener("popstate", onInput); + + + let search, searchErr; + + async function initialize() { + try { + search = await new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.type = "text/javascript"; + script.async = true; + script.onload = () => resolve(window.pdocSearch); + script.onerror = (e) => reject(e); + script.src = "../../search.js"; + document.getElementsByTagName("head")[0].appendChild(script); + }); + } catch (e) { + console.error("Cannot fetch pdoc search index"); + searchErr = "Cannot fetch search index."; + } + onInput(); + + document.querySelector("nav.pdoc").addEventListener("click", e => { + if (e.target.hash) { + searchBox.value = ""; + searchBox.dispatchEvent(new Event("input")); + } + }); + } + + function onInput() { + setContent((() => { + const term = getSearchTerm(); + if (!term) { + return null + } + if (searchErr) { + return `<h3>Error: ${searchErr}</h3>` + } + if (!search) { + return "<h3>Searching...</h3>" + } + + window.scrollTo({top: 0, left: 0, behavior: 'auto'}); + + const results = search(term); + + let html; + if (results.length === 0) { + html = `No search results for '${escapeHTML(term)}'.` + } else { + html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`; + } + for (let result of results.slice(0, 10)) { + let doc = result.doc; + let url = `../../${doc.modulename.replaceAll(".", "/")}.html`; + if (doc.qualname) { + url += `#${doc.qualname}`; + } + + let heading; + switch (result.doc.kind) { + case "function": + if (doc.fullname.endsWith(".__init__")) { + heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`; + } else { + heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`; + } + break; + case "class": + heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`; + if (doc.bases) + heading += `<wbr>(<span class="base">${doc.bases}</span>)`; + heading += `:`; + break; + case "variable": + heading = `<span class="name">${doc.fullname}</span>`; + if (doc.annotation) + heading += `<span class="annotation">${doc.annotation}</span>`; + if (doc.default_value) + heading += `<span class="default_value"> = ${doc.default_value}</span>`; + break; + default: + heading = `<span class="name">${doc.fullname}</span>`; + break; + } + html += ` + <section class="search-result"> + <a href="${url}" class="attr ${doc.kind}">${heading}</a> + <div class="docstring">${doc.doc}</div> + </section> + `; + + } + return html; + })()); + } + + if (getSearchTerm()) { + initialize(); + searchBox.value = getSearchTerm(); + onInput(); + } else { + searchBox.addEventListener("focus", initialize, {once: true}); + } + + searchBox.addEventListener("keydown", e => { + if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) { + let focused = currentContent.querySelector(".search-result.focused"); + if (!focused) { + currentContent.querySelector(".search-result").classList.add("focused"); + } else if ( + e.key === "ArrowDown" + && focused.nextElementSibling + && focused.nextElementSibling.classList.contains("search-result") + ) { + focused.classList.remove("focused"); + focused.nextElementSibling.classList.add("focused"); + focused.nextElementSibling.scrollIntoView({ + behavior: "smooth", + block: "nearest", + inline: "nearest" + }); + } else if ( + e.key === "ArrowUp" + && focused.previousElementSibling + && focused.previousElementSibling.classList.contains("search-result") + ) { + focused.classList.remove("focused"); + focused.previousElementSibling.classList.add("focused"); + focused.previousElementSibling.scrollIntoView({ + behavior: "smooth", + block: "nearest", + inline: "nearest" + }); + } else if ( + e.key === "Enter" + ) { + focused.querySelector("a").click(); + } + } + }); +</script></body> +</html>
\ No newline at end of file diff --git a/docs/sqlglot/dialects/snowflake.html b/docs/sqlglot/dialects/snowflake.html index e7233dc..3e301e4 100644 --- a/docs/sqlglot/dialects/snowflake.html +++ b/docs/sqlglot/dialects/snowflake.html @@ -3332,7 +3332,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">ID_VAR_TOKENS</span> = <input id="Snowflake.Parser.ID_VAR_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Snowflake.Parser.ID_VAR_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.MATCH_CONDITION: 'MATCH_CONDITION'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Snowflake.Parser.ID_VAR_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.MATCH_CONDITION: 'MATCH_CONDITION'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3345,7 +3345,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Snowflake.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Snowflake.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Snowflake.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3358,7 +3358,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Snowflake.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Snowflake.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_datetime.<locals>._builder>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <function _build_datediff>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function _date_trunc_to_time>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function _build_regexp_replace>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function _build_datediff>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <function _build_timestamp_from_parts>, 'TIMESTAMPFROMPARTS': <function _build_timestamp_from_parts>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'ARRAYAGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_CONSTRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_GENERATE_RANGE': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'BITXOR': <function binary_from_function.<locals>.<lambda>>, 'BIT_XOR': <function binary_from_function.<locals>.<lambda>>, 'BOOLXOR': <function binary_from_function.<locals>.<lambda>>, 'CONVERT_TIMEZONE': <function _build_convert_timezone>, 'DATEADD': <function _build_date_time_add.<locals>._builder>, 'DIV0': <function _build_if_from_div0>, 'GET_PATH': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'IFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'LISTAGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'MEDIAN': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'NULLIFZERO': <function _build_if_from_nullifzero>, 'OBJECT_CONSTRUCT': <function _build_object_construct>, 'REGEXP_SUBSTR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SQUARE': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'TIMEADD': <function _build_date_time_add.<locals>._builder>, 'TIMEDIFF': <function _build_datediff>, 'TIMESTAMPADD': <function _build_date_time_add.<locals>._builder>, 'TRY_TO_DATE': <function _build_datetime.<locals>._builder>, 'TO_DATE': <function _build_datetime.<locals>._builder>, 'TO_TIME': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP_LTZ': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP_NTZ': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP_TZ': <function _build_datetime.<locals>._builder>, 'TO_VARCHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'ZEROIFNULL': <function _build_if_from_zeroifnull>}</span> + <label class="view-value-button pdoc-button" for="Snowflake.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_datetime.<locals>._builder>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <function _build_datediff>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function _date_trunc_to_time>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <function _build_regexp_replace>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function _build_datediff>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <function _build_timestamp_from_parts>, 'TIMESTAMPFROMPARTS': <function _build_timestamp_from_parts>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'ARRAYAGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_CONSTRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_GENERATE_RANGE': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'BITXOR': <function binary_from_function.<locals>.<lambda>>, 'BIT_XOR': <function binary_from_function.<locals>.<lambda>>, 'BOOLXOR': <function binary_from_function.<locals>.<lambda>>, 'CONVERT_TIMEZONE': <function _build_convert_timezone>, 'DATEADD': <function _build_date_time_add.<locals>._builder>, 'DIV0': <function _build_if_from_div0>, 'GET_PATH': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'IFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'LISTAGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'MEDIAN': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'NULLIFZERO': <function _build_if_from_nullifzero>, 'OBJECT_CONSTRUCT': <function _build_object_construct>, 'REGEXP_SUBSTR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SQUARE': <function <a href="#Snowflake.Parser">Snowflake.Parser</a>.<lambda>>, 'TIMEADD': <function _build_date_time_add.<locals>._builder>, 'TIMEDIFF': <function _build_datediff>, 'TIMESTAMPADD': <function _build_date_time_add.<locals>._builder>, 'TRY_TO_DATE': <function _build_datetime.<locals>._builder>, 'TO_DATE': <function _build_datetime.<locals>._builder>, 'TO_TIME': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP_LTZ': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP_NTZ': <function _build_datetime.<locals>._builder>, 'TO_TIMESTAMP_TZ': <function _build_datetime.<locals>._builder>, 'TO_VARCHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'ZEROIFNULL': <function _build_if_from_zeroifnull>}</span> </div> @@ -3384,7 +3384,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TIMESTAMPS</span> = <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">{<TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TIMETZ: 'TIMETZ'>}</span> + <label class="view-value-button pdoc-button" for="Snowflake.Parser.TIMESTAMPS-view-value"></label><span class="default_value">{<TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>}</span> </div> @@ -3486,7 +3486,7 @@ Default: 3</li> <div id="Snowflake.Parser.STAGED_FILE_SINGLE_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">STAGED_FILE_SINGLE_TOKENS</span> = -<span class="default_value">{<TokenType.DOT: 'DOT'>, <TokenType.MOD: 'MOD'>, <TokenType.SLASH: 'SLASH'>}</span> +<span class="default_value">{<TokenType.DOT: 'DOT'>, <TokenType.SLASH: 'SLASH'>, <TokenType.MOD: 'MOD'>}</span> </div> @@ -3510,7 +3510,7 @@ Default: 3</li> <div id="Snowflake.Parser.SCHEMA_KINDS" class="classattr"> <div class="attr variable"> <span class="name">SCHEMA_KINDS</span> = -<span class="default_value">{'UNIQUE KEYS', 'TABLES', 'OBJECTS', 'VIEWS', 'IMPORTED KEYS', 'SEQUENCES'}</span> +<span class="default_value">{'OBJECTS', 'IMPORTED KEYS', 'TABLES', 'VIEWS', 'UNIQUE KEYS', 'SEQUENCES'}</span> </div> @@ -3522,7 +3522,7 @@ Default: 3</li> <div id="Snowflake.Parser.NON_TABLE_CREATABLES" class="classattr"> <div class="attr variable"> <span class="name">NON_TABLE_CREATABLES</span> = -<span class="default_value">{'TAG', 'STREAMLIT', 'STORAGE INTEGRATION', 'WAREHOUSE'}</span> +<span class="default_value">{'STORAGE INTEGRATION', 'STREAMLIT', 'TAG', 'WAREHOUSE'}</span> </div> @@ -3587,6 +3587,7 @@ Default: 3</li> <dd id="Snowflake.Parser.CREATABLES" class="variable"><a href="../parser.html#Parser.CREATABLES">CREATABLES</a></dd> <dd id="Snowflake.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Snowflake.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Snowflake.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Snowflake.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Snowflake.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Snowflake.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -3791,7 +3792,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Snowflake.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Snowflake.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'BYTEINT': <TokenType.INT: 'INT'>, 'CHAR VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'CHARACTER VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'EXCLUDE': <TokenType.EXCEPT: 'EXCEPT'>, 'ILIKE ANY': <TokenType.ILIKE_ANY: 'ILIKE_ANY'>, 'LIKE ANY': <TokenType.LIKE_ANY: 'LIKE_ANY'>, 'MATCH_CONDITION': <TokenType.MATCH_CONDITION: 'MATCH_CONDITION'>, 'MATCH_RECOGNIZE': <TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>, 'NCHAR VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'PUT': <TokenType.COMMAND: 'COMMAND'>, 'REMOVE': <TokenType.COMMAND: 'COMMAND'>, 'RM': <TokenType.COMMAND: 'COMMAND'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'SQL_DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'SQL_VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'STORAGE INTEGRATION': <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, 'TAG': <TokenType.TAG: 'TAG'>, 'TIMESTAMP_TZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TOP': <TokenType.TOP: 'TOP'>, 'WAREHOUSE': <TokenType.WAREHOUSE: 'WAREHOUSE'>, 'STREAMLIT': <TokenType.STREAMLIT: 'STREAMLIT'>}</span> + <label class="view-value-button pdoc-button" for="Snowflake.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'BYTEINT': <TokenType.INT: 'INT'>, 'CHAR VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'CHARACTER VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'EXCLUDE': <TokenType.EXCEPT: 'EXCEPT'>, 'ILIKE ANY': <TokenType.ILIKE_ANY: 'ILIKE_ANY'>, 'LIKE ANY': <TokenType.LIKE_ANY: 'LIKE_ANY'>, 'MATCH_CONDITION': <TokenType.MATCH_CONDITION: 'MATCH_CONDITION'>, 'MATCH_RECOGNIZE': <TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>, 'NCHAR VARYING': <TokenType.VARCHAR: 'VARCHAR'>, 'PUT': <TokenType.COMMAND: 'COMMAND'>, 'REMOVE': <TokenType.COMMAND: 'COMMAND'>, 'RM': <TokenType.COMMAND: 'COMMAND'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'SQL_DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'SQL_VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'STORAGE INTEGRATION': <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, 'TAG': <TokenType.TAG: 'TAG'>, 'TIMESTAMP_TZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TOP': <TokenType.TOP: 'TOP'>, 'WAREHOUSE': <TokenType.WAREHOUSE: 'WAREHOUSE'>, 'STREAMLIT': <TokenType.STREAMLIT: 'STREAMLIT'>}</span> </div> @@ -3828,7 +3829,7 @@ Default: 3</li> <div id="Snowflake.Tokenizer.COMMANDS" class="classattr"> <div class="attr variable"> <span class="name">COMMANDS</span> = -<span class="default_value">{<TokenType.COMMAND: 'COMMAND'>, <TokenType.FETCH: 'FETCH'>, <TokenType.EXECUTE: 'EXECUTE'>}</span> +<span class="default_value">{<TokenType.EXECUTE: 'EXECUTE'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.FETCH: 'FETCH'>}</span> </div> @@ -4496,7 +4497,7 @@ Default: True</li> <div class="attr variable"> <span class="name">UNSUPPORTED_VALUES_EXPRESSIONS</span> = <input id="Snowflake.Generator.UNSUPPORTED_VALUES_EXPRESSIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Snowflake.Generator.UNSUPPORTED_VALUES_EXPRESSIONS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>, <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>, <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>}</span> + <label class="view-value-button pdoc-button" for="Snowflake.Generator.UNSUPPORTED_VALUES_EXPRESSIONS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>, <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>, <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>}</span> </div> diff --git a/docs/sqlglot/dialects/spark.html b/docs/sqlglot/dialects/spark.html index f06f1e9..f40d3ce 100644 --- a/docs/sqlglot/dialects/spark.html +++ b/docs/sqlglot/dialects/spark.html @@ -886,7 +886,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Spark.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Spark.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_as_cast.<locals>.<lambda>>, 'DATE_ADD': <function Hive.Parser.<lambda>>, 'DATEDIFF': <function _build_datediff>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function Hive.Parser.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function Spark2.Parser.<lambda>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function Hive.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function Spark2.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function Spark2.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function Spark2.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function Hive.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function Hive.Parser.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function Hive.Parser.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function Spark2.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function Hive.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function Hive.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <function Spark2.Parser.<lambda>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function Hive.Parser.<lambda>>, 'AGGREGATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'BOOLEAN': <function _build_as_cast.<locals>.<lambda>>, 'DOUBLE': <function _build_as_cast.<locals>.<lambda>>, 'FLOAT': <function _build_as_cast.<locals>.<lambda>>, 'FROM_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'INT': <function _build_as_cast.<locals>.<lambda>>, 'MAP_FROM_ARRAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHIFTLEFT': <function binary_from_function.<locals>.<lambda>>, 'SHIFTRIGHT': <function binary_from_function.<locals>.<lambda>>, 'STRING': <function _build_as_cast.<locals>.<lambda>>, 'TO_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TO_UNIX_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'TO_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TIMESTAMP_LTZ': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_NTZ': <function _build_as_cast.<locals>.<lambda>>, 'TRY_ELEMENT_AT': <function <a href="#Spark.Parser">Spark.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="Spark.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_as_cast.<locals>.<lambda>>, 'DATE_ADD': <function Hive.Parser.<lambda>>, 'DATEDIFF': <function _build_datediff>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function Hive.Parser.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function Spark2.Parser.<lambda>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function Hive.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function Spark2.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function Spark2.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function Spark2.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function Hive.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function Hive.Parser.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function Hive.Parser.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function Spark2.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function Hive.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function Hive.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <function Spark2.Parser.<lambda>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function Hive.Parser.<lambda>>, 'AGGREGATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'BOOLEAN': <function _build_as_cast.<locals>.<lambda>>, 'DOUBLE': <function _build_as_cast.<locals>.<lambda>>, 'FLOAT': <function _build_as_cast.<locals>.<lambda>>, 'FROM_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'INT': <function _build_as_cast.<locals>.<lambda>>, 'MAP_FROM_ARRAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHIFTLEFT': <function binary_from_function.<locals>.<lambda>>, 'SHIFTRIGHT': <function binary_from_function.<locals>.<lambda>>, 'STRING': <function _build_as_cast.<locals>.<lambda>>, 'TO_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TO_UNIX_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'TO_UTC_TIMESTAMP': <function Spark2.Parser.<lambda>>, 'TIMESTAMP_LTZ': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_NTZ': <function _build_as_cast.<locals>.<lambda>>, 'TRY_ELEMENT_AT': <function <a href="#Spark.Parser">Spark.Parser</a>.<lambda>>}</span> </div> @@ -939,6 +939,7 @@ Default: 3</li> <dd id="Spark.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Spark.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Spark.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Spark.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Spark.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Spark.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Spark.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/spark2.html b/docs/sqlglot/dialects/spark2.html index fd18345..7575e1f 100644 --- a/docs/sqlglot/dialects/spark2.html +++ b/docs/sqlglot/dialects/spark2.html @@ -1129,7 +1129,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Spark2.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Spark2.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_as_cast.<locals>.<lambda>>, 'DATE_ADD': <function Hive.Parser.<lambda>>, 'DATEDIFF': <function Hive.Parser.<lambda>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function Hive.Parser.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function Hive.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function Hive.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function Hive.Parser.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function Hive.Parser.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function Hive.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function Hive.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function Hive.Parser.<lambda>>, 'AGGREGATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'BOOLEAN': <function _build_as_cast.<locals>.<lambda>>, 'DOUBLE': <function _build_as_cast.<locals>.<lambda>>, 'FLOAT': <function _build_as_cast.<locals>.<lambda>>, 'FROM_UTC_TIMESTAMP': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'INT': <function _build_as_cast.<locals>.<lambda>>, 'MAP_FROM_ARRAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHIFTLEFT': <function binary_from_function.<locals>.<lambda>>, 'SHIFTRIGHT': <function binary_from_function.<locals>.<lambda>>, 'STRING': <function _build_as_cast.<locals>.<lambda>>, 'TO_TIMESTAMP': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'TO_UNIX_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'TO_UTC_TIMESTAMP': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="Spark2.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_as_cast.<locals>.<lambda>>, 'DATE_ADD': <function Hive.Parser.<lambda>>, 'DATEDIFF': <function Hive.Parser.<lambda>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function Hive.Parser.<lambda>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function Hive.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <function _build_with_ignore_nulls.<locals>._parse>, 'FIRST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <function _build_with_ignore_nulls.<locals>._parse>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <function _build_with_ignore_nulls.<locals>._parse>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <function build_var_map>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function Hive.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function Hive.Parser.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <function Hive.Parser.<lambda>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_as_cast.<locals>.<lambda>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function Hive.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'COLLECT_LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'COLLECT_SET': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'DATE_FORMAT': <function Hive.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'GET_JSON_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>>, 'LOCATE': <function locate_to_strposition>, 'PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'PERCENTILE_APPROX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'TO_DATE': <function build_formatted_time.<locals>._builder>, 'TO_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'TRUNC': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'UNBASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'UNIX_TIMESTAMP': <function Hive.Parser.<lambda>>, 'AGGREGATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'APPROX_PERCENTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'BOOLEAN': <function _build_as_cast.<locals>.<lambda>>, 'DOUBLE': <function _build_as_cast.<locals>.<lambda>>, 'FLOAT': <function _build_as_cast.<locals>.<lambda>>, 'FROM_UTC_TIMESTAMP': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'INT': <function _build_as_cast.<locals>.<lambda>>, 'MAP_FROM_ARRAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'RLIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHIFTLEFT': <function binary_from_function.<locals>.<lambda>>, 'SHIFTRIGHT': <function binary_from_function.<locals>.<lambda>>, 'STRING': <function _build_as_cast.<locals>.<lambda>>, 'TO_TIMESTAMP': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>, 'TO_UNIX_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'TO_UTC_TIMESTAMP': <function <a href="#Spark2.Parser">Spark2.Parser</a>.<lambda>>}</span> </div> @@ -1195,6 +1195,7 @@ Default: 3</li> <dd id="Spark2.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Spark2.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Spark2.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Spark2.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Spark2.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Spark2.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Spark2.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/sqlite.html b/docs/sqlglot/dialects/sqlite.html index a9e601d..c9bc24f 100644 --- a/docs/sqlglot/dialects/sqlite.html +++ b/docs/sqlglot/dialects/sqlite.html @@ -1166,7 +1166,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="SQLite.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="SQLite.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'EDITDIST3': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'STRFTIME': <function _build_strftime>}</span> + <label class="view-value-button pdoc-button" for="SQLite.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'EDITDIST3': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'STRFTIME': <function _build_strftime>}</span> </div> @@ -1191,7 +1191,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="SQLite.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="SQLite.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="SQLite.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -1243,6 +1243,7 @@ Default: 3</li> <dd id="SQLite.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="SQLite.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="SQLite.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="SQLite.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="SQLite.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="SQLite.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="SQLite.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/starrocks.html b/docs/sqlglot/dialects/starrocks.html index 6d6eb88..a7232c6 100644 --- a/docs/sqlglot/dialects/starrocks.html +++ b/docs/sqlglot/dialects/starrocks.html @@ -643,7 +643,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="StarRocks.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="StarRocks.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function MySQL.Parser.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <function <a href="#StarRocks.Parser">StarRocks.Parser</a>.<lambda>>, 'DATE_DIFF': <function <a href="#StarRocks.Parser">StarRocks.Parser</a>.<lambda>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function MySQL.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function MySQL.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function MySQL.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function MySQL.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function MySQL.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <function MySQL.Parser.<lambda>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <function MySQL.Parser.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function MySQL.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function MySQL.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'INSTR': <function MySQL.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MONTHNAME': <function MySQL.Parser.<lambda>>, 'REGEXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>}</span> + <label class="view-value-button pdoc-button" for="StarRocks.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function MySQL.Parser.<lambda>>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <function <a href="#StarRocks.Parser">StarRocks.Parser</a>.<lambda>>, 'DATE_DIFF': <function <a href="#StarRocks.Parser">StarRocks.Parser</a>.<lambda>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function build_timestamp_trunc>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <function MySQL.Parser.<lambda>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <function MySQL.Parser.<lambda>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <function MySQL.Parser.<lambda>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <function MySQL.Parser.<lambda>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <function MySQL.Parser.<lambda>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <function _str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <function MySQL.Parser.<lambda>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <function MySQL.Parser.<lambda>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <function MySQL.Parser.<lambda>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <function MySQL.Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'DATE_FORMAT': <function build_formatted_time.<locals>._builder>, 'INSTR': <function MySQL.Parser.<lambda>>, 'FROM_UNIXTIME': <function build_formatted_time.<locals>._builder>, 'ISNULL': <function isnull_to_is_null>, 'LOCATE': <function locate_to_strposition>, 'MAKETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'MONTHNAME': <function MySQL.Parser.<lambda>>, 'REGEXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>}</span> </div> @@ -656,7 +656,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="StarRocks.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="StarRocks.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="StarRocks.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -708,6 +708,7 @@ Default: 3</li> <dd id="StarRocks.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="StarRocks.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="StarRocks.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="StarRocks.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="StarRocks.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="StarRocks.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="StarRocks.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/tableau.html b/docs/sqlglot/dialects/tableau.html index 53ed2dc..ec87bd0 100644 --- a/docs/sqlglot/dialects/tableau.html +++ b/docs/sqlglot/dialects/tableau.html @@ -1370,7 +1370,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="Tableau.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Tableau.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'COUNTD': <function <a href="#Tableau.Parser">Tableau.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="Tableau.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'COUNTD': <function <a href="#Tableau.Parser">Tableau.Parser</a>.<lambda>>}</span> </div> @@ -1435,6 +1435,7 @@ Default: 3</li> <dd id="Tableau.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Tableau.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd> <dd id="Tableau.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Tableau.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Tableau.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Tableau.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Tableau.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/teradata.html b/docs/sqlglot/dialects/teradata.html index 400cbc4..6e717f6 100644 --- a/docs/sqlglot/dialects/teradata.html +++ b/docs/sqlglot/dialects/teradata.html @@ -1281,7 +1281,7 @@ True means <code>a / b</code> is integer division if both <code>a</code> and <co <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="Teradata.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Teradata.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '**': <TokenType.DSTAR: 'DSTAR'>, '^=': <TokenType.NEQ: 'NEQ'>, 'BYTEINT': <TokenType.SMALLINT: 'SMALLINT'>, 'COLLECT': <TokenType.COMMAND: 'COMMAND'>, 'DEL': <TokenType.DELETE: 'DELETE'>, 'EQ': <TokenType.EQ: 'EQ'>, 'GE': <TokenType.GTE: 'GTE'>, 'GT': <TokenType.GT: 'GT'>, 'HELP': <TokenType.COMMAND: 'COMMAND'>, 'INS': <TokenType.INSERT: 'INSERT'>, 'LE': <TokenType.LTE: 'LTE'>, 'LT': <TokenType.LT: 'LT'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>, 'MOD': <TokenType.MOD: 'MOD'>, 'NE': <TokenType.NEQ: 'NEQ'>, 'NOT=': <TokenType.NEQ: 'NEQ'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'SEL': <TokenType.SELECT: 'SELECT'>, 'ST_GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'TOP': <TokenType.TOP: 'TOP'>, 'UPD': <TokenType.UPDATE: 'UPDATE'>}</span> + <label class="view-value-button pdoc-button" for="Teradata.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.TINYINT: 'TINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.TIMESTAMP: 'TIMESTAMP'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, '**': <TokenType.DSTAR: 'DSTAR'>, '^=': <TokenType.NEQ: 'NEQ'>, 'BYTEINT': <TokenType.SMALLINT: 'SMALLINT'>, 'COLLECT': <TokenType.COMMAND: 'COMMAND'>, 'DEL': <TokenType.DELETE: 'DELETE'>, 'EQ': <TokenType.EQ: 'EQ'>, 'GE': <TokenType.GTE: 'GTE'>, 'GT': <TokenType.GT: 'GT'>, 'HELP': <TokenType.COMMAND: 'COMMAND'>, 'INS': <TokenType.INSERT: 'INSERT'>, 'LE': <TokenType.LTE: 'LTE'>, 'LT': <TokenType.LT: 'LT'>, 'MINUS': <TokenType.EXCEPT: 'EXCEPT'>, 'MOD': <TokenType.MOD: 'MOD'>, 'NE': <TokenType.NEQ: 'NEQ'>, 'NOT=': <TokenType.NEQ: 'NEQ'>, 'SAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'SEL': <TokenType.SELECT: 'SELECT'>, 'ST_GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'TOP': <TokenType.TOP: 'TOP'>, 'UPD': <TokenType.UPDATE: 'UPDATE'>}</span> </div> @@ -1495,7 +1495,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">CHARSET_TRANSLATORS</span> = <input id="Teradata.Parser.CHARSET_TRANSLATORS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Teradata.Parser.CHARSET_TRANSLATORS-view-value"></label><span class="default_value">{'UNICODE_TO_KANJISJIS', 'GRAPHIC_TO_UNICODE_PadSpace', 'UNICODE_TO_KANJI1_KanjiEUC', 'KANJI1_KanjiEUC_TO_UNICODE', 'GRAPHIC_TO_KANJISJIS', 'KANJI1_KanjiEBCDIC_TO_UNICODE', 'LATIN_TO_KANJISJIS', 'KANJI1_SBC_TO_UNICODE', 'UNICODE_TO_UNICODE_Fullwidth', 'UNICODE_TO_UNICODE_NFD', 'KANJI1_KANJISJIS_TO_UNICODE', 'UNICODE_TO_UNICODE_Halfwidth', 'UNICODE_TO_UNICODE_NFC', 'KANJISJIS_TO_LATIN', 'LOCALE_TO_UNICODE', 'UNICODE_TO_LOCALE', 'UNICODE_TO_GRAPHIC', 'GRAPHIC_TO_UNICODE', 'KANJISJIS_TO_GRAPHIC', 'UNICODE_TO_KANJI1_KANJISJIS', 'LATIN_TO_GRAPHIC', 'KANJISJIS_TO_UNICODE', 'UNICODE_TO_GRAPHIC_VarGraphic', 'UNICODE_TO_KANJI1_SBC', 'UNICODE_TO_UNICODE_NFKC', 'UNICODE_TO_KANJI1_KanjiEBCDIC', 'UNICODE_TO_UNICODE_NFKD', 'GRAPHIC_TO_LATIN', 'LATIN_TO_UNICODE', 'UNICODE_TO_UNICODE_FoldSpace', 'UNICODE_TO_GRAPHIC_PadGraphic', 'UNICODE_TO_LATIN'}</span> + <label class="view-value-button pdoc-button" for="Teradata.Parser.CHARSET_TRANSLATORS-view-value"></label><span class="default_value">{'UNICODE_TO_LOCALE', 'LATIN_TO_KANJISJIS', 'UNICODE_TO_UNICODE_Fullwidth', 'KANJI1_KANJISJIS_TO_UNICODE', 'GRAPHIC_TO_UNICODE_PadSpace', 'KANJISJIS_TO_LATIN', 'LATIN_TO_UNICODE', 'GRAPHIC_TO_LATIN', 'UNICODE_TO_GRAPHIC', 'UNICODE_TO_KANJISJIS', 'KANJI1_SBC_TO_UNICODE', 'UNICODE_TO_UNICODE_NFKC', 'UNICODE_TO_KANJI1_KanjiEUC', 'KANJI1_KanjiEUC_TO_UNICODE', 'UNICODE_TO_GRAPHIC_PadGraphic', 'UNICODE_TO_UNICODE_NFC', 'UNICODE_TO_UNICODE_NFKD', 'UNICODE_TO_UNICODE_NFD', 'UNICODE_TO_UNICODE_Halfwidth', 'LATIN_TO_GRAPHIC', 'KANJI1_KanjiEBCDIC_TO_UNICODE', 'UNICODE_TO_GRAPHIC_VarGraphic', 'KANJISJIS_TO_UNICODE', 'GRAPHIC_TO_KANJISJIS', 'LOCALE_TO_UNICODE', 'UNICODE_TO_KANJI1_KANJISJIS', 'UNICODE_TO_LATIN', 'GRAPHIC_TO_UNICODE', 'UNICODE_TO_KANJI1_KanjiEBCDIC', 'UNICODE_TO_UNICODE_FoldSpace', 'UNICODE_TO_KANJI1_SBC', 'KANJISJIS_TO_GRAPHIC'}</span> </div> @@ -1508,7 +1508,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNC_TOKENS</span> = <input id="Teradata.Parser.FUNC_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Teradata.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.ALL: 'ALL'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.UINT256: 'UINT256'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.INDEX: 'INDEX'>, <TokenType.LIKE: 'LIKE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.GLOB: 'GLOB'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.XML: 'XML'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.XOR: 'XOR'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Teradata.Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.MONEY: 'MONEY'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.XOR: 'XOR'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.GLOB: 'GLOB'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.LEFT: 'LEFT'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.SOME: 'SOME'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.ROW: 'ROW'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.LIKE: 'LIKE'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -1559,7 +1559,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Teradata.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Teradata.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Teradata.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -1612,6 +1612,7 @@ Default: 3</li> <dd id="Teradata.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="Teradata.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="Teradata.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Teradata.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="Teradata.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="Teradata.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="Teradata.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> diff --git a/docs/sqlglot/dialects/trino.html b/docs/sqlglot/dialects/trino.html index 10ce37d..63ce801 100644 --- a/docs/sqlglot/dialects/trino.html +++ b/docs/sqlglot/dialects/trino.html @@ -630,7 +630,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Trino.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Trino.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Trino.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -682,6 +682,7 @@ Default: 3</li> <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.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="Trino.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</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> diff --git a/docs/sqlglot/dialects/tsql.html b/docs/sqlglot/dialects/tsql.html index 5f0fe06..a4baa22 100644 --- a/docs/sqlglot/dialects/tsql.html +++ b/docs/sqlglot/dialects/tsql.html @@ -1574,7 +1574,7 @@ <section id="TRANSPILE_SAFE_NUMBER_FMT"> <div class="attr variable"> <span class="name">TRANSPILE_SAFE_NUMBER_FMT</span> = -<span class="default_value">{'C', 'N'}</span> +<span class="default_value">{'N', 'C'}</span> </div> @@ -1599,7 +1599,7 @@ <div class="attr variable"> <span class="name">BIT_TYPES</span> = <input id="BIT_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BIT_TYPES-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>, <class '<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>'>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>, <class '<a href="../expressions.html#Is">sqlglot.expressions.Is</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>}</span> + <label class="view-value-button pdoc-button" for="BIT_TYPES-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>, <class '<a href="../expressions.html#Is">sqlglot.expressions.Is</a>'>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>, <class '<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>'>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>}</span> </div> @@ -1636,7 +1636,7 @@ <section id="DATEPART_ONLY_FORMATS"> <div class="attr variable"> <span class="name">DATEPART_ONLY_FORMATS</span> = -<span class="default_value">{'QUARTER', 'HOUR', 'DW'}</span> +<span class="default_value">{'HOUR', 'DW', 'QUARTER'}</span> </div> @@ -3003,7 +3003,7 @@ True means <code>a / b</code> is integer division if both <code>a</code> and <co <div id="TSQL.Tokenizer.VAR_SINGLE_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">VAR_SINGLE_TOKENS</span> = -<span class="default_value">{'$', '@', '#'}</span> +<span class="default_value">{'#', '$', '@'}</span> </div> @@ -3016,7 +3016,7 @@ True means <code>a / b</code> is integer division if both <code>a</code> and <co <div class="attr variable"> <span class="name">KEYWORDS</span> = <input id="TSQL.Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TSQL.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.UTINYINT: 'UTINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.ROWVERSION: 'ROWVERSION'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'DATETIME2': <TokenType.DATETIME: 'DATETIME'>, 'DATETIMEOFFSET': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'DECLARE': <TokenType.DECLARE: 'DECLARE'>, 'EXEC': <TokenType.COMMAND: 'COMMAND'>, 'FOR SYSTEM_TIME': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'IMAGE': <TokenType.IMAGE: 'IMAGE'>, 'MONEY': <TokenType.MONEY: 'MONEY'>, 'NTEXT': <TokenType.TEXT: 'TEXT'>, 'OPTION': <TokenType.OPTION: 'OPTION'>, 'OUTPUT': <TokenType.RETURNING: 'RETURNING'>, 'PRINT': <TokenType.COMMAND: 'COMMAND'>, 'PROC': <TokenType.PROCEDURE: 'PROCEDURE'>, 'ROWVERSION': <TokenType.ROWVERSION: 'ROWVERSION'>, 'SMALLDATETIME': <TokenType.DATETIME: 'DATETIME'>, 'SMALLMONEY': <TokenType.SMALLMONEY: 'SMALLMONEY'>, 'SQL_VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'SYSTEM_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'TOP': <TokenType.TOP: 'TOP'>, 'UNIQUEIDENTIFIER': <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, 'UPDATE STATISTICS': <TokenType.COMMAND: 'COMMAND'>, 'XML': <TokenType.XML: 'XML'>}</span> + <label class="view-value-button pdoc-button" for="TSQL.Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{%-': <TokenType.BLOCK_START: 'BLOCK_START'>, '%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '+%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-%}': <TokenType.BLOCK_END: 'BLOCK_END'>, '{{+': <TokenType.BLOCK_START: 'BLOCK_START'>, '{{-': <TokenType.BLOCK_START: 'BLOCK_START'>, '+}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '-}}': <TokenType.BLOCK_END: 'BLOCK_END'>, '/*+': <TokenType.HINT: 'HINT'>, '==': <TokenType.EQ: 'EQ'>, '::': <TokenType.DCOLON: 'DCOLON'>, '||': <TokenType.DPIPE: 'DPIPE'>, '>=': <TokenType.GTE: 'GTE'>, '<=': <TokenType.LTE: 'LTE'>, '<>': <TokenType.NEQ: 'NEQ'>, '!=': <TokenType.NEQ: 'NEQ'>, ':=': <TokenType.COLON_EQ: 'COLON_EQ'>, '<=>': <TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>, '->': <TokenType.ARROW: 'ARROW'>, '->>': <TokenType.DARROW: 'DARROW'>, '=>': <TokenType.FARROW: 'FARROW'>, '#>': <TokenType.HASH_ARROW: 'HASH_ARROW'>, '#>>': <TokenType.DHASH_ARROW: 'DHASH_ARROW'>, '<->': <TokenType.LR_ARROW: 'LR_ARROW'>, '&&': <TokenType.DAMP: 'DAMP'>, '??': <TokenType.DQMARK: 'DQMARK'>, 'ALL': <TokenType.ALL: 'ALL'>, 'ALWAYS': <TokenType.ALWAYS: 'ALWAYS'>, 'AND': <TokenType.AND: 'AND'>, 'ANTI': <TokenType.ANTI: 'ANTI'>, 'ANY': <TokenType.ANY: 'ANY'>, 'ASC': <TokenType.ASC: 'ASC'>, 'AS': <TokenType.ALIAS: 'ALIAS'>, 'ASOF': <TokenType.ASOF: 'ASOF'>, 'AUTOINCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, 'BEGIN': <TokenType.BEGIN: 'BEGIN'>, 'BETWEEN': <TokenType.BETWEEN: 'BETWEEN'>, 'CACHE': <TokenType.CACHE: 'CACHE'>, 'UNCACHE': <TokenType.UNCACHE: 'UNCACHE'>, 'CASE': <TokenType.CASE: 'CASE'>, 'CHARACTER SET': <TokenType.CHARACTER_SET: 'CHARACTER_SET'>, 'CLUSTER BY': <TokenType.CLUSTER_BY: 'CLUSTER_BY'>, 'COLLATE': <TokenType.COLLATE: 'COLLATE'>, 'COLUMN': <TokenType.COLUMN: 'COLUMN'>, 'COMMIT': <TokenType.COMMIT: 'COMMIT'>, 'CONNECT BY': <TokenType.CONNECT_BY: 'CONNECT_BY'>, 'CONSTRAINT': <TokenType.CONSTRAINT: 'CONSTRAINT'>, 'COPY': <TokenType.COPY: 'COPY'>, 'CREATE': <TokenType.CREATE: 'CREATE'>, 'CROSS': <TokenType.CROSS: 'CROSS'>, 'CUBE': <TokenType.CUBE: 'CUBE'>, 'CURRENT_DATE': <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, 'CURRENT_TIME': <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'DATABASE': <TokenType.DATABASE: 'DATABASE'>, 'DEFAULT': <TokenType.DEFAULT: 'DEFAULT'>, 'DELETE': <TokenType.DELETE: 'DELETE'>, 'DESC': <TokenType.DESC: 'DESC'>, 'DESCRIBE': <TokenType.DESCRIBE: 'DESCRIBE'>, 'DISTINCT': <TokenType.DISTINCT: 'DISTINCT'>, 'DISTRIBUTE BY': <TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>, 'DIV': <TokenType.DIV: 'DIV'>, 'DROP': <TokenType.DROP: 'DROP'>, 'ELSE': <TokenType.ELSE: 'ELSE'>, 'END': <TokenType.END: 'END'>, 'ENUM': <TokenType.ENUM: 'ENUM'>, 'ESCAPE': <TokenType.ESCAPE: 'ESCAPE'>, 'EXCEPT': <TokenType.EXCEPT: 'EXCEPT'>, 'EXECUTE': <TokenType.EXECUTE: 'EXECUTE'>, 'EXISTS': <TokenType.EXISTS: 'EXISTS'>, 'FALSE': <TokenType.FALSE: 'FALSE'>, 'FETCH': <TokenType.FETCH: 'FETCH'>, 'FILTER': <TokenType.FILTER: 'FILTER'>, 'FIRST': <TokenType.FIRST: 'FIRST'>, 'FULL': <TokenType.FULL: 'FULL'>, 'FUNCTION': <TokenType.FUNCTION: 'FUNCTION'>, 'FOR': <TokenType.FOR: 'FOR'>, 'FOREIGN KEY': <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, 'FORMAT': <TokenType.FORMAT: 'FORMAT'>, 'FROM': <TokenType.FROM: 'FROM'>, 'GEOGRAPHY': <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, 'GEOMETRY': <TokenType.GEOMETRY: 'GEOMETRY'>, 'GLOB': <TokenType.GLOB: 'GLOB'>, 'GROUP BY': <TokenType.GROUP_BY: 'GROUP_BY'>, 'GROUPING SETS': <TokenType.GROUPING_SETS: 'GROUPING_SETS'>, 'HAVING': <TokenType.HAVING: 'HAVING'>, 'ILIKE': <TokenType.ILIKE: 'ILIKE'>, 'IN': <TokenType.IN: 'IN'>, 'INDEX': <TokenType.INDEX: 'INDEX'>, 'INET': <TokenType.INET: 'INET'>, 'INNER': <TokenType.INNER: 'INNER'>, 'INSERT': <TokenType.INSERT: 'INSERT'>, 'INTERVAL': <TokenType.INTERVAL: 'INTERVAL'>, 'INTERSECT': <TokenType.INTERSECT: 'INTERSECT'>, 'INTO': <TokenType.INTO: 'INTO'>, 'IS': <TokenType.IS: 'IS'>, 'ISNULL': <TokenType.ISNULL: 'ISNULL'>, 'JOIN': <TokenType.JOIN: 'JOIN'>, 'KEEP': <TokenType.KEEP: 'KEEP'>, 'KILL': <TokenType.KILL: 'KILL'>, 'LATERAL': <TokenType.LATERAL: 'LATERAL'>, 'LEFT': <TokenType.LEFT: 'LEFT'>, 'LIKE': <TokenType.LIKE: 'LIKE'>, 'LIMIT': <TokenType.LIMIT: 'LIMIT'>, 'LOAD': <TokenType.LOAD: 'LOAD'>, 'LOCK': <TokenType.LOCK: 'LOCK'>, 'MERGE': <TokenType.MERGE: 'MERGE'>, 'NATURAL': <TokenType.NATURAL: 'NATURAL'>, 'NEXT': <TokenType.NEXT: 'NEXT'>, 'NOT': <TokenType.NOT: 'NOT'>, 'NOTNULL': <TokenType.NOTNULL: 'NOTNULL'>, 'NULL': <TokenType.NULL: 'NULL'>, 'OBJECT': <TokenType.OBJECT: 'OBJECT'>, 'OFFSET': <TokenType.OFFSET: 'OFFSET'>, 'ON': <TokenType.ON: 'ON'>, 'OR': <TokenType.OR: 'OR'>, 'XOR': <TokenType.XOR: 'XOR'>, 'ORDER BY': <TokenType.ORDER_BY: 'ORDER_BY'>, 'ORDINALITY': <TokenType.ORDINALITY: 'ORDINALITY'>, 'OUTER': <TokenType.OUTER: 'OUTER'>, 'OVER': <TokenType.OVER: 'OVER'>, 'OVERLAPS': <TokenType.OVERLAPS: 'OVERLAPS'>, 'OVERWRITE': <TokenType.OVERWRITE: 'OVERWRITE'>, 'PARTITION': <TokenType.PARTITION: 'PARTITION'>, 'PARTITION BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PARTITIONED_BY': <TokenType.PARTITION_BY: 'PARTITION_BY'>, 'PERCENT': <TokenType.PERCENT: 'PERCENT'>, 'PIVOT': <TokenType.PIVOT: 'PIVOT'>, 'PRAGMA': <TokenType.PRAGMA: 'PRAGMA'>, 'PRIMARY KEY': <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, 'PROCEDURE': <TokenType.PROCEDURE: 'PROCEDURE'>, 'QUALIFY': <TokenType.QUALIFY: 'QUALIFY'>, 'RANGE': <TokenType.RANGE: 'RANGE'>, 'RECURSIVE': <TokenType.RECURSIVE: 'RECURSIVE'>, 'REGEXP': <TokenType.RLIKE: 'RLIKE'>, 'REPLACE': <TokenType.REPLACE: 'REPLACE'>, 'RETURNING': <TokenType.RETURNING: 'RETURNING'>, 'REFERENCES': <TokenType.REFERENCES: 'REFERENCES'>, 'RIGHT': <TokenType.RIGHT: 'RIGHT'>, 'RLIKE': <TokenType.RLIKE: 'RLIKE'>, 'ROLLBACK': <TokenType.ROLLBACK: 'ROLLBACK'>, 'ROLLUP': <TokenType.ROLLUP: 'ROLLUP'>, 'ROW': <TokenType.ROW: 'ROW'>, 'ROWS': <TokenType.ROWS: 'ROWS'>, 'SCHEMA': <TokenType.SCHEMA: 'SCHEMA'>, 'SELECT': <TokenType.SELECT: 'SELECT'>, 'SEMI': <TokenType.SEMI: 'SEMI'>, 'SET': <TokenType.SET: 'SET'>, 'SETTINGS': <TokenType.SETTINGS: 'SETTINGS'>, 'SHOW': <TokenType.SHOW: 'SHOW'>, 'SIMILAR TO': <TokenType.SIMILAR_TO: 'SIMILAR_TO'>, 'SOME': <TokenType.SOME: 'SOME'>, 'SORT BY': <TokenType.SORT_BY: 'SORT_BY'>, 'START WITH': <TokenType.START_WITH: 'START_WITH'>, 'TABLE': <TokenType.TABLE: 'TABLE'>, 'TABLESAMPLE': <TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>, 'TEMP': <TokenType.TEMPORARY: 'TEMPORARY'>, 'TEMPORARY': <TokenType.TEMPORARY: 'TEMPORARY'>, 'THEN': <TokenType.THEN: 'THEN'>, 'TRUE': <TokenType.TRUE: 'TRUE'>, 'TRUNCATE': <TokenType.TRUNCATE: 'TRUNCATE'>, 'UNION': <TokenType.UNION: 'UNION'>, 'UNKNOWN': <TokenType.UNKNOWN: 'UNKNOWN'>, 'UNNEST': <TokenType.UNNEST: 'UNNEST'>, 'UNPIVOT': <TokenType.UNPIVOT: 'UNPIVOT'>, 'UPDATE': <TokenType.UPDATE: 'UPDATE'>, 'USE': <TokenType.USE: 'USE'>, 'USING': <TokenType.USING: 'USING'>, 'UUID': <TokenType.UUID: 'UUID'>, 'VALUES': <TokenType.VALUES: 'VALUES'>, 'VIEW': <TokenType.VIEW: 'VIEW'>, 'VOLATILE': <TokenType.VOLATILE: 'VOLATILE'>, 'WHEN': <TokenType.WHEN: 'WHEN'>, 'WHERE': <TokenType.WHERE: 'WHERE'>, 'WINDOW': <TokenType.WINDOW: 'WINDOW'>, 'WITH': <TokenType.WITH: 'WITH'>, 'APPLY': <TokenType.APPLY: 'APPLY'>, 'ARRAY': <TokenType.ARRAY: 'ARRAY'>, 'BIT': <TokenType.BIT: 'BIT'>, 'BOOL': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BOOLEAN': <TokenType.BOOLEAN: 'BOOLEAN'>, 'BYTE': <TokenType.TINYINT: 'TINYINT'>, 'MEDIUMINT': <TokenType.MEDIUMINT: 'MEDIUMINT'>, 'INT1': <TokenType.TINYINT: 'TINYINT'>, 'TINYINT': <TokenType.UTINYINT: 'UTINYINT'>, 'INT16': <TokenType.SMALLINT: 'SMALLINT'>, 'SHORT': <TokenType.SMALLINT: 'SMALLINT'>, 'SMALLINT': <TokenType.SMALLINT: 'SMALLINT'>, 'INT128': <TokenType.INT128: 'INT128'>, 'HUGEINT': <TokenType.INT128: 'INT128'>, 'INT2': <TokenType.SMALLINT: 'SMALLINT'>, 'INTEGER': <TokenType.INT: 'INT'>, 'INT': <TokenType.INT: 'INT'>, 'INT4': <TokenType.INT: 'INT'>, 'INT32': <TokenType.INT: 'INT'>, 'INT64': <TokenType.BIGINT: 'BIGINT'>, 'LONG': <TokenType.BIGINT: 'BIGINT'>, 'BIGINT': <TokenType.BIGINT: 'BIGINT'>, 'INT8': <TokenType.TINYINT: 'TINYINT'>, 'UINT': <TokenType.UINT: 'UINT'>, 'DEC': <TokenType.DECIMAL: 'DECIMAL'>, 'DECIMAL': <TokenType.DECIMAL: 'DECIMAL'>, 'BIGDECIMAL': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'BIGNUMERIC': <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, 'LIST': <TokenType.LIST: 'LIST'>, 'MAP': <TokenType.MAP: 'MAP'>, 'NULLABLE': <TokenType.NULLABLE: 'NULLABLE'>, 'NUMBER': <TokenType.DECIMAL: 'DECIMAL'>, 'NUMERIC': <TokenType.DECIMAL: 'DECIMAL'>, 'FIXED': <TokenType.DECIMAL: 'DECIMAL'>, 'REAL': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT4': <TokenType.FLOAT: 'FLOAT'>, 'FLOAT8': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE': <TokenType.DOUBLE: 'DOUBLE'>, 'DOUBLE PRECISION': <TokenType.DOUBLE: 'DOUBLE'>, 'JSON': <TokenType.JSON: 'JSON'>, 'JSONB': <TokenType.JSONB: 'JSONB'>, 'CHAR': <TokenType.CHAR: 'CHAR'>, 'CHARACTER': <TokenType.CHAR: 'CHAR'>, 'NCHAR': <TokenType.NCHAR: 'NCHAR'>, 'VARCHAR': <TokenType.VARCHAR: 'VARCHAR'>, 'VARCHAR2': <TokenType.VARCHAR: 'VARCHAR'>, 'NVARCHAR': <TokenType.NVARCHAR: 'NVARCHAR'>, 'NVARCHAR2': <TokenType.NVARCHAR: 'NVARCHAR'>, 'BPCHAR': <TokenType.BPCHAR: 'BPCHAR'>, 'STR': <TokenType.TEXT: 'TEXT'>, 'STRING': <TokenType.TEXT: 'TEXT'>, 'TEXT': <TokenType.TEXT: 'TEXT'>, 'LONGTEXT': <TokenType.LONGTEXT: 'LONGTEXT'>, 'MEDIUMTEXT': <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, 'TINYTEXT': <TokenType.TINYTEXT: 'TINYTEXT'>, 'CLOB': <TokenType.TEXT: 'TEXT'>, 'LONGVARCHAR': <TokenType.TEXT: 'TEXT'>, 'BINARY': <TokenType.BINARY: 'BINARY'>, 'BLOB': <TokenType.VARBINARY: 'VARBINARY'>, 'LONGBLOB': <TokenType.LONGBLOB: 'LONGBLOB'>, 'MEDIUMBLOB': <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, 'TINYBLOB': <TokenType.TINYBLOB: 'TINYBLOB'>, 'BYTEA': <TokenType.VARBINARY: 'VARBINARY'>, 'VARBINARY': <TokenType.VARBINARY: 'VARBINARY'>, 'TIME': <TokenType.TIME: 'TIME'>, 'TIMETZ': <TokenType.TIMETZ: 'TIMETZ'>, 'TIMESTAMP': <TokenType.ROWVERSION: 'ROWVERSION'>, 'TIMESTAMPTZ': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, 'DATE': <TokenType.DATE: 'DATE'>, 'DATETIME': <TokenType.DATETIME: 'DATETIME'>, 'INT4RANGE': <TokenType.INT4RANGE: 'INT4RANGE'>, 'INT4MULTIRANGE': <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, 'INT8RANGE': <TokenType.INT8RANGE: 'INT8RANGE'>, 'INT8MULTIRANGE': <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, 'NUMRANGE': <TokenType.NUMRANGE: 'NUMRANGE'>, 'NUMMULTIRANGE': <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, 'TSRANGE': <TokenType.TSRANGE: 'TSRANGE'>, 'TSMULTIRANGE': <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, 'TSTZRANGE': <TokenType.TSTZRANGE: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, 'DATERANGE': <TokenType.DATERANGE: 'DATERANGE'>, 'DATEMULTIRANGE': <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, 'UNIQUE': <TokenType.UNIQUE: 'UNIQUE'>, 'STRUCT': <TokenType.STRUCT: 'STRUCT'>, 'SEQUENCE': <TokenType.SEQUENCE: 'SEQUENCE'>, 'VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'ALTER': <TokenType.ALTER: 'ALTER'>, 'ANALYZE': <TokenType.COMMAND: 'COMMAND'>, 'CALL': <TokenType.COMMAND: 'COMMAND'>, 'COMMENT': <TokenType.COMMENT: 'COMMENT'>, 'EXPLAIN': <TokenType.COMMAND: 'COMMAND'>, 'GRANT': <TokenType.COMMAND: 'COMMAND'>, 'OPTIMIZE': <TokenType.COMMAND: 'COMMAND'>, 'PREPARE': <TokenType.COMMAND: 'COMMAND'>, 'VACUUM': <TokenType.COMMAND: 'COMMAND'>, 'USER-DEFINED': <TokenType.USERDEFINED: 'USERDEFINED'>, 'FOR VERSION': <TokenType.VERSION_SNAPSHOT: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'DATETIME2': <TokenType.DATETIME: 'DATETIME'>, 'DATETIMEOFFSET': <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, 'DECLARE': <TokenType.DECLARE: 'DECLARE'>, 'EXEC': <TokenType.COMMAND: 'COMMAND'>, 'FOR SYSTEM_TIME': <TokenType.TIMESTAMP_SNAPSHOT: 'TIMESTAMP_SNAPSHOT'>, 'IMAGE': <TokenType.IMAGE: 'IMAGE'>, 'MONEY': <TokenType.MONEY: 'MONEY'>, 'NTEXT': <TokenType.TEXT: 'TEXT'>, 'OPTION': <TokenType.OPTION: 'OPTION'>, 'OUTPUT': <TokenType.RETURNING: 'RETURNING'>, 'PRINT': <TokenType.COMMAND: 'COMMAND'>, 'PROC': <TokenType.PROCEDURE: 'PROCEDURE'>, 'ROWVERSION': <TokenType.ROWVERSION: 'ROWVERSION'>, 'SMALLDATETIME': <TokenType.DATETIME: 'DATETIME'>, 'SMALLMONEY': <TokenType.SMALLMONEY: 'SMALLMONEY'>, 'SQL_VARIANT': <TokenType.VARIANT: 'VARIANT'>, 'SYSTEM_USER': <TokenType.CURRENT_USER: 'CURRENT_USER'>, 'TOP': <TokenType.TOP: 'TOP'>, 'UNIQUEIDENTIFIER': <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, 'UPDATE STATISTICS': <TokenType.COMMAND: 'COMMAND'>, 'XML': <TokenType.XML: 'XML'>}</span> </div> @@ -3029,7 +3029,7 @@ True means <code>a / b</code> is integer division if both <code>a</code> and <co <div class="attr variable"> <span class="name">COMMANDS</span> = <input id="TSQL.Tokenizer.COMMANDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TSQL.Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<TokenType.SHOW: 'SHOW'>, <TokenType.END: 'END'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.FETCH: 'FETCH'>}</span> + <label class="view-value-button pdoc-button" for="TSQL.Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<TokenType.COMMAND: 'COMMAND'>, <TokenType.SHOW: 'SHOW'>, <TokenType.FETCH: 'FETCH'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.END: 'END'>}</span> </div> @@ -3439,7 +3439,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="TSQL.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TSQL.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <function _build_date_delta.<locals>._builder>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <function _build_with_arg_as_text.<locals>._parse>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <function _build_with_arg_as_text.<locals>._parse>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <function _build_with_arg_as_text.<locals>._parse>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <function _build_timefromparts>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'CHARINDEX': <function <a href="#TSQL.Parser">TSQL.Parser</a>.<lambda>>, 'DATEADD': <function build_date_delta.<locals>._builder>, 'DATENAME': <function _build_formatted_time.<locals>._builder>, 'DATEPART': <function _build_formatted_time.<locals>._builder>, 'DATETIMEFROMPARTS': <function _build_datetimefromparts>, 'EOMONTH': <function _build_eomonth>, 'FORMAT': <function _build_format>, 'GETDATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'HASHBYTES': <function _build_hashbytes>, 'ISNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'JSON_QUERY': <function build_extract_json_with_path.<locals>._builder>, 'JSON_VALUE': <function build_extract_json_with_path.<locals>._builder>, 'REPLICATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'SQUARE': <function <a href="#TSQL.Parser">TSQL.Parser</a>.<lambda>>, 'SYSDATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'SUSER_NAME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'SUSER_SNAME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'SYSTEM_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>}</span> + <label class="view-value-button pdoc-button" for="TSQL.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <function _build_date_delta.<locals>._builder>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <function _build_with_arg_as_text.<locals>._parse>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <function _build_with_arg_as_text.<locals>._parse>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <function _build_with_arg_as_text.<locals>._parse>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <function _build_timefromparts>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>, 'CHARINDEX': <function <a href="#TSQL.Parser">TSQL.Parser</a>.<lambda>>, 'DATEADD': <function build_date_delta.<locals>._builder>, 'DATENAME': <function _build_formatted_time.<locals>._builder>, 'DATEPART': <function _build_formatted_time.<locals>._builder>, 'DATETIMEFROMPARTS': <function _build_datetimefromparts>, 'EOMONTH': <function _build_eomonth>, 'FORMAT': <function _build_format>, 'GETDATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'HASHBYTES': <function _build_hashbytes>, 'ISNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'JSON_QUERY': <function build_extract_json_with_path.<locals>._builder>, 'JSON_VALUE': <function build_extract_json_with_path.<locals>._builder>, 'REPLICATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'SQUARE': <function <a href="#TSQL.Parser">TSQL.Parser</a>.<lambda>>, 'SYSDATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'SUSER_NAME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'SUSER_SNAME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'SYSTEM_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>}</span> </div> @@ -3451,7 +3451,7 @@ Default: 3</li> <div id="TSQL.Parser.JOIN_HINTS" class="classattr"> <div class="attr variable"> <span class="name">JOIN_HINTS</span> = -<span class="default_value">{'MERGE', 'LOOP', 'REMOTE', 'HASH'}</span> +<span class="default_value">{'LOOP', 'REMOTE', 'MERGE', 'HASH'}</span> </div> @@ -3464,7 +3464,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">RETURNS_TABLE_TOKENS</span> = <input id="TSQL.Parser.RETURNS_TABLE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TSQL.Parser.RETURNS_TABLE_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.SEMI: 'SEMI'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.CASE: 'CASE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ALL: 'ALL'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.ANY: 'ANY'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.COPY: 'COPY'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.SET: 'SET'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>}</span> + <label class="view-value-button pdoc-button" for="TSQL.Parser.RETURNS_TABLE_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.USE: 'USE'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.ALL: 'ALL'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TOP: 'TOP'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.COPY: 'COPY'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.DIV: 'DIV'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3490,7 +3490,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="TSQL.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TSQL.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="TSQL.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -3542,6 +3542,7 @@ Default: 3</li> <dd id="TSQL.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd> <dd id="TSQL.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd> <dd id="TSQL.Parser.ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a></dd> + <dd id="TSQL.Parser.ARRAY_CONSTRUCTORS" class="variable"><a href="../parser.html#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a></dd> <dd id="TSQL.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd> <dd id="TSQL.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd> <dd id="TSQL.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> @@ -4283,7 +4284,7 @@ Default: True</li> <div class="attr variable"> <span class="name">EXPRESSIONS_WITHOUT_NESTED_CTES</span> = <input id="TSQL.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TSQL.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>, <class '<a href="../expressions.html#Union">sqlglot.expressions.Union</a>'>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>, <class '<a href="../expressions.html#Subquery">sqlglot.expressions.Subquery</a>'>, <class '<a href="../expressions.html#Delete">sqlglot.expressions.Delete</a>'>, <class '<a href="../expressions.html#Update">sqlglot.expressions.Update</a>'>, <class '<a href="../expressions.html#Insert">sqlglot.expressions.Insert</a>'>}</span> + <label class="view-value-button pdoc-button" for="TSQL.Generator.EXPRESSIONS_WITHOUT_NESTED_CTES-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Subquery">sqlglot.expressions.Subquery</a>'>, <class '<a href="../expressions.html#Update">sqlglot.expressions.Update</a>'>, <class '<a href="../expressions.html#Merge">sqlglot.expressions.Merge</a>'>, <class '<a href="../expressions.html#Insert">sqlglot.expressions.Insert</a>'>, <class '<a href="../expressions.html#Delete">sqlglot.expressions.Delete</a>'>, <class '<a href="../expressions.html#Select">sqlglot.expressions.Select</a>'>, <class '<a href="../expressions.html#Union">sqlglot.expressions.Union</a>'>}</span> </div> diff --git a/docs/sqlglot/executor/python.html b/docs/sqlglot/executor/python.html index 3094ed7..371ba1c 100644 --- a/docs/sqlglot/executor/python.html +++ b/docs/sqlglot/executor/python.html @@ -2166,7 +2166,7 @@ Default: True</li> <div class="attr variable"> <span class="name">TRANSFORMS</span> = <input id="Python.Generator.TRANSFORMS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Python.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Add">sqlglot.expressions.Add</a>'>: <function _rename>, <class '<a href="../expressions.html#And">sqlglot.expressions.And</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function _rename>, <class '<a href="../expressions.html#Binary">sqlglot.expressions.Binary</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseAnd">sqlglot.expressions.BitwiseAnd</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseLeftShift">sqlglot.expressions.BitwiseLeftShift</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseOr">sqlglot.expressions.BitwiseOr</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseRightShift">sqlglot.expressions.BitwiseRightShift</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function _rename>, <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>: <function _rename>, <class '<a href="../expressions.html#Connector">sqlglot.expressions.Connector</a>'>: <function _rename>, <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>: <function _rename>, <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>: <function _rename>, <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>: <function _rename>, <class '<a href="../expressions.html#DPipe">sqlglot.expressions.DPipe</a>'>: <function _rename>, <class '<a href="../expressions.html#Distance">sqlglot.expressions.Distance</a>'>: <function _rename>, <class '<a href="../expressions.html#Div">sqlglot.expressions.Div</a>'>: <function _div_sql>, <class '<a href="../expressions.html#Dot">sqlglot.expressions.Dot</a>'>: <function _rename>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>: <function _rename>, <class '<a href="../expressions.html#Escape">sqlglot.expressions.Escape</a>'>: <function _rename>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>: <function _rename>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>: <function _rename>, <class '<a href="../expressions.html#Glob">sqlglot.expressions.Glob</a>'>: <function _rename>, <class '<a href="../expressions.html#ILike">sqlglot.expressions.ILike</a>'>: <function _rename>, <class '<a href="../expressions.html#ILikeAny">sqlglot.expressions.ILikeAny</a>'>: <function _rename>, <class '<a href="../expressions.html#IntDiv">sqlglot.expressions.IntDiv</a>'>: <function _rename>, <class '<a href="../expressions.html#Is">sqlglot.expressions.Is</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function _rename>, <class '<a href="../expressions.html#Kwarg">sqlglot.expressions.Kwarg</a>'>: <function _rename>, <class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>: <function _rename>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>: <function _rename>, <class '<a href="../expressions.html#Like">sqlglot.expressions.Like</a>'>: <function _rename>, <class '<a href="../expressions.html#LikeAny">sqlglot.expressions.LikeAny</a>'>: <function _rename>, <class '<a href="../expressions.html#Mod">sqlglot.expressions.Mod</a>'>: <function _rename>, <class '<a href="../expressions.html#Mul">sqlglot.expressions.Mul</a>'>: <function _rename>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#NullSafeEQ">sqlglot.expressions.NullSafeEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#NullSafeNEQ">sqlglot.expressions.NullSafeNEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#Operator">sqlglot.expressions.Operator</a>'>: <function _rename>, <class '<a href="../expressions.html#Or">sqlglot.expressions.Or</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Overlaps">sqlglot.expressions.Overlaps</a>'>: <function _rename>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function _rename>, <class '<a href="../expressions.html#PropertyEQ">sqlglot.expressions.PropertyEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function _rename>, <class '<a href="../expressions.html#SimilarTo">sqlglot.expressions.SimilarTo</a>'>: <function _rename>, <class '<a href="../expressions.html#Slice">sqlglot.expressions.Slice</a>'>: <function _rename>, <class '<a href="../expressions.html#Sub">sqlglot.expressions.Sub</a>'>: <function _rename>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function _rename>, <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>: <function _rename>, <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>: <function _rename>, <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>: <function _rename>, <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>: <function _rename>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>: <function _rename>, <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>: <function _rename>, <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>: <function _rename>, <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>: <function _rename>, <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>: <function _rename>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function inline_array_sql>, <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function _rename>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function _rename>, <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>: <function _rename>, <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>: <function _rename>, <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>: <function _case_sql>, <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>: <function _rename>, <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>: <function _rename>, <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>: <function _rename>, <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>: <function _rename>, <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>: <function _rename>, <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>: <function _rename>, <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>: <function _rename>, <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>: <function _rename>, <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>: <function _rename>, <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>: <function _rename>, <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function _rename>, <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>: <function _rename>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>: <function _rename>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _rename>, <class '<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>'>: <function _rename>, <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>: <function _rename>, <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>: <function _rename>, <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>: <function _rename>, <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>: <function _rename>, <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>: <function _rename>, <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>: <function _rename>, <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>: <function _rename>, <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>: <function _rename>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function _rename>, <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>: <function _rename>, <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>: <function _rename>, <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>: <function _rename>, <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>: <function _rename>, <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>: <function _rename>, <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>: <function _rename>, <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>: <function _rename>, <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>: <function _rename>, <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>: <function _rename>, <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>: <function _rename>, <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>: <function _rename>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _rename>, <class '<a href="../expressions.html#Hex">sqlglot.expressions.Hex</a>'>: <function _rename>, <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>: <function _rename>, <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>: <function _rename>, <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>: <function _rename>, <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>: <function _rename>, <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>: <function _rename>, <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>: <function _rename>, <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>: <function _rename>, <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>: <function _rename>, <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>: <function _rename>, <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>: <function _rename>, <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>: <function _rename>, <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>: <function _rename>, <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>: <function _rename>, <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>: <function _rename>, <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>: <function _rename>, <class '<a href="../expressions.html#Log">sqlglot.expressions.Log</a>'>: <function _rename>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function _rename>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function _rename>, <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>: <function _rename>, <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>: <function _rename>, <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>: <function _rename>, <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>: <function _rename>, <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>: <function _rename>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function _rename>, <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>: <function _rename>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function _rename>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function _rename>, <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>: <function _rename>, <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>: <function _rename>, <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>: <function _rename>, <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>: <function _rename>, <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>: <function _rename>, <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>: <function _rename>, <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>: <function _rename>, <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>: <function _rename>, <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function _rename>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function _rename>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function _rename>, <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>: <function _rename>, <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>: <function _rename>, <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>: <function _rename>, <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>: <function _rename>, <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>: <function _rename>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function _rename>, <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>: <function _rename>, <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>: <function _rename>, <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>: <function _rename>, <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>: <function _rename>, <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>: <function _rename>, <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>: <function _rename>, <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>: <function _rename>, <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>: <function _rename>, <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>: <function _rename>, <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>: <function _rename>, <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>: <function _rename>, <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>: <function _rename>, <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>: <function _rename>, <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>: <function _rename>, <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>: <function _rename>, <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>: <function _rename>, <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>: <function _rename>, <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>: <function _rename>, <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>: <function _rename>, <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>: <function _rename>, <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>: <function _rename>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>: <function _rename>, <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>: <function _rename>, <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>: <function _rename>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>: <function _rename>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _rename>, <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>: <function _rename>, <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>: <function _rename>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function _rename>, <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>: <function _rename>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function _rename>, <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>: <function _rename>, <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>: <function _rename>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function _rename>, <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>: <function _rename>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>: <function _rename>, <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>: <function _rename>, <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>: <function _rename>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function _rename>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function _rename>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function _rename>, <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>: <function _rename>, <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>: <function _rename>, <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>: <function _rename>, <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>: <function _rename>, <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>: <function _rename>, <class '<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Between">sqlglot.expressions.Between</a>'>: <function _rename>, <class '<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Column">sqlglot.expressions.Column</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Distinct">sqlglot.expressions.Distinct</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Interval">sqlglot.expressions.Interval</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPath">sqlglot.expressions.JSONPath</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Lambda">sqlglot.expressions.Lambda</a>'>: <function _lambda_sql>, <class '<a href="../expressions.html#Not">sqlglot.expressions.Not</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Null">sqlglot.expressions.Null</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Ordered">sqlglot.expressions.Ordered</a>'>: <function _ordered_py>, <class '<a href="../expressions.html#Star">sqlglot.expressions.Star</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="Python.Generator.TRANSFORMS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Add">sqlglot.expressions.Add</a>'>: <function _rename>, <class '<a href="../expressions.html#And">sqlglot.expressions.And</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function _rename>, <class '<a href="../expressions.html#Binary">sqlglot.expressions.Binary</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseAnd">sqlglot.expressions.BitwiseAnd</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseLeftShift">sqlglot.expressions.BitwiseLeftShift</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseOr">sqlglot.expressions.BitwiseOr</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseRightShift">sqlglot.expressions.BitwiseRightShift</a>'>: <function _rename>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function _rename>, <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>: <function _rename>, <class '<a href="../expressions.html#Connector">sqlglot.expressions.Connector</a>'>: <function _rename>, <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>: <function _rename>, <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>: <function _rename>, <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>: <function _rename>, <class '<a href="../expressions.html#DPipe">sqlglot.expressions.DPipe</a>'>: <function _rename>, <class '<a href="../expressions.html#Distance">sqlglot.expressions.Distance</a>'>: <function _rename>, <class '<a href="../expressions.html#Div">sqlglot.expressions.Div</a>'>: <function _div_sql>, <class '<a href="../expressions.html#Dot">sqlglot.expressions.Dot</a>'>: <function _rename>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>: <function _rename>, <class '<a href="../expressions.html#Escape">sqlglot.expressions.Escape</a>'>: <function _rename>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>: <function _rename>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>: <function _rename>, <class '<a href="../expressions.html#Glob">sqlglot.expressions.Glob</a>'>: <function _rename>, <class '<a href="../expressions.html#ILike">sqlglot.expressions.ILike</a>'>: <function _rename>, <class '<a href="../expressions.html#ILikeAny">sqlglot.expressions.ILikeAny</a>'>: <function _rename>, <class '<a href="../expressions.html#IntDiv">sqlglot.expressions.IntDiv</a>'>: <function _rename>, <class '<a href="../expressions.html#Is">sqlglot.expressions.Is</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function _rename>, <class '<a href="../expressions.html#Kwarg">sqlglot.expressions.Kwarg</a>'>: <function _rename>, <class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>: <function _rename>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>: <function _rename>, <class '<a href="../expressions.html#Like">sqlglot.expressions.Like</a>'>: <function _rename>, <class '<a href="../expressions.html#LikeAny">sqlglot.expressions.LikeAny</a>'>: <function _rename>, <class '<a href="../expressions.html#Mod">sqlglot.expressions.Mod</a>'>: <function _rename>, <class '<a href="../expressions.html#Mul">sqlglot.expressions.Mul</a>'>: <function _rename>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#NullSafeEQ">sqlglot.expressions.NullSafeEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#NullSafeNEQ">sqlglot.expressions.NullSafeNEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#Operator">sqlglot.expressions.Operator</a>'>: <function _rename>, <class '<a href="../expressions.html#Or">sqlglot.expressions.Or</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Overlaps">sqlglot.expressions.Overlaps</a>'>: <function _rename>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function _rename>, <class '<a href="../expressions.html#PropertyEQ">sqlglot.expressions.PropertyEQ</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function _rename>, <class '<a href="../expressions.html#SimilarTo">sqlglot.expressions.SimilarTo</a>'>: <function _rename>, <class '<a href="../expressions.html#Slice">sqlglot.expressions.Slice</a>'>: <function _rename>, <class '<a href="../expressions.html#Sub">sqlglot.expressions.Sub</a>'>: <function _rename>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function _rename>, <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>: <function _rename>, <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>: <function _rename>, <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>: <function _rename>, <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>: <function _rename>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>: <function _rename>, <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>: <function _rename>, <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>: <function _rename>, <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>: <function _rename>, <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>: <function _rename>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function inline_array_sql>, <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>: <function _rename>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function _rename>, <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>: <function _rename>, <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>: <function _rename>, <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>: <function _case_sql>, <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>: <function _rename>, <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>: <function _rename>, <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>: <function _rename>, <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>: <function _rename>, <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>: <function _rename>, <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>: <function _rename>, <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>: <function _rename>, <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>: <function _rename>, <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>: <function _rename>, <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>: <function _rename>, <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function _rename>, <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>: <function _rename>, <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>: <function _rename>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>: <function _rename>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function _rename>, <class '<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>'>: <function _rename>, <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>: <function _rename>, <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>: <function _rename>, <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>: <function _rename>, <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>: <function _rename>, <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>: <function _rename>, <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>: <function _rename>, <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>: <function _rename>, <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>: <function _rename>, <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>: <function _rename>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function _rename>, <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>: <function _rename>, <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>: <function _rename>, <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>: <function _rename>, <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>: <function _rename>, <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>: <function _rename>, <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>: <function _rename>, <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>: <function _rename>, <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>: <function _rename>, <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>: <function _rename>, <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>: <function _rename>, <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>: <function _rename>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _rename>, <class '<a href="../expressions.html#Hex">sqlglot.expressions.Hex</a>'>: <function _rename>, <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>: <function _rename>, <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>: <function _rename>, <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>: <function _rename>, <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>: <function _rename>, <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>: <function _rename>, <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>: <function _rename>, <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>: <function _rename>, <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>: <function _rename>, <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>: <function _rename>, <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>: <function _rename>, <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>: <function _rename>, <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>: <function _rename>, <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>: <function _rename>, <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>: <function _rename>, <class '<a href="../expressions.html#List">sqlglot.expressions.List</a>'>: <function _rename>, <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>: <function _rename>, <class '<a href="../expressions.html#Log">sqlglot.expressions.Log</a>'>: <function _rename>, <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>: <function _rename>, <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>: <function _rename>, <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>: <function _rename>, <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>: <function _rename>, <class '<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>'>: <function _rename>, <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>: <function _rename>, <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>: <function _rename>, <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>: <function _rename>, <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>: <function _rename>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function _rename>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function _rename>, <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>: <function _rename>, <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>: <function _rename>, <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>: <function _rename>, <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>: <function _rename>, <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>: <function _rename>, <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>: <function _rename>, <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>: <function _rename>, <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>: <function _rename>, <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>: <function _rename>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function _rename>, <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>: <function _rename>, <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>: <function _rename>, <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>: <function _rename>, <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>: <function _rename>, <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>: <function _rename>, <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>: <function _rename>, <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>: <function _rename>, <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>: <function _rename>, <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>: <function _rename>, <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>: <function _rename>, <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>: <function _rename>, <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>: <function _rename>, <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>: <function _rename>, <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>: <function _rename>, <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>: <function _rename>, <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>: <function _rename>, <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>: <function _rename>, <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>: <function _rename>, <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>: <function _rename>, <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>: <function _rename>, <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>: <function _rename>, <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>: <function _rename>, <class '<a href="../expressions.html#Split">sqlglot.expressions.Split</a>'>: <function _rename>, <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>: <function _rename>, <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>: <function _rename>, <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>: <function _rename>, <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>: <function _rename>, <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>: <function _rename>, <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>: <function _rename>, <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>: <function _rename>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>: <function _rename>, <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>: <function _rename>, <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>: <function _rename>, <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>: <function _rename>, <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>: <function _rename>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _rename>, <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>: <function _rename>, <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>: <function _rename>, <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>: <function _rename>, <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>: <function _rename>, <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>: <function _rename>, <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>: <function _rename>, <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>: <function _rename>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function _rename>, <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>: <function _rename>, <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>: <function _rename>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function _rename>, <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>: <function _rename>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>: <function _rename>, <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _rename>, <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>: <function _rename>, <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>: <function _rename>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function _rename>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function _rename>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function _rename>, <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>: <function _rename>, <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>: <function _rename>, <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>: <function _rename>, <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>: <function _rename>, <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>: <function _rename>, <class '<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Between">sqlglot.expressions.Between</a>'>: <function _rename>, <class '<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Column">sqlglot.expressions.Column</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Distinct">sqlglot.expressions.Distinct</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Interval">sqlglot.expressions.Interval</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPath">sqlglot.expressions.JSONPath</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Lambda">sqlglot.expressions.Lambda</a>'>: <function _lambda_sql>, <class '<a href="../expressions.html#Not">sqlglot.expressions.Not</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Null">sqlglot.expressions.Null</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>, <class '<a href="../expressions.html#Ordered">sqlglot.expressions.Ordered</a>'>: <function _ordered_py>, <class '<a href="../expressions.html#Star">sqlglot.expressions.Star</a>'>: <function <a href="#Python.Generator">Python.Generator</a>.<lambda>>}</span> </div> diff --git a/docs/sqlglot/expressions.html b/docs/sqlglot/expressions.html index 9f1bc46..f1c039f 100644 --- a/docs/sqlglot/expressions.html +++ b/docs/sqlglot/expressions.html @@ -3564,6 +3564,9 @@ <a class="variable" href="#DataType.Type.JSONB">JSONB</a> </li> <li> + <a class="variable" href="#DataType.Type.LIST">LIST</a> + </li> + <li> <a class="variable" href="#DataType.Type.LONGBLOB">LONGBLOB</a> </li> <li> @@ -4833,6 +4836,21 @@ </li> <li> + <a class="class" href="#List">List</a> + <ul class="memberlist"> + <li> + <a class="variable" href="#List.arg_types">arg_types</a> + </li> + <li> + <a class="variable" href="#List.is_var_len_args">is_var_len_args</a> + </li> + <li> + <a class="variable" href="#List.key">key</a> + </li> + </ul> + + </li> + <li> <a class="class" href="#ToChar">ToChar</a> <ul class="memberlist"> <li> @@ -11713,3718 +11731,3725 @@ SQL expressions, such as <code><a href="#select">select</a></code>.</p> </span><span id="L-3977"><a href="#L-3977"><span class="linenos">3977</span></a> <span class="n">IPV6</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-3978"><a href="#L-3978"><span class="linenos">3978</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-3979"><a href="#L-3979"><span class="linenos">3979</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3980"><a href="#L-3980"><span class="linenos">3980</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3981"><a href="#L-3981"><span class="linenos">3981</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3982"><a href="#L-3982"><span class="linenos">3982</span></a> <span class="n">LOWCARDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3983"><a href="#L-3983"><span class="linenos">3983</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3984"><a href="#L-3984"><span class="linenos">3984</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3985"><a href="#L-3985"><span class="linenos">3985</span></a> <span class="n">MEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3986"><a href="#L-3986"><span class="linenos">3986</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3987"><a href="#L-3987"><span class="linenos">3987</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3988"><a href="#L-3988"><span class="linenos">3988</span></a> <span class="n">NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3989"><a href="#L-3989"><span class="linenos">3989</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3990"><a href="#L-3990"><span class="linenos">3990</span></a> <span class="n">NESTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3991"><a href="#L-3991"><span class="linenos">3991</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3992"><a href="#L-3992"><span class="linenos">3992</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3993"><a href="#L-3993"><span class="linenos">3993</span></a> <span class="n">NUMMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3994"><a href="#L-3994"><span class="linenos">3994</span></a> <span class="n">NUMRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3995"><a href="#L-3995"><span class="linenos">3995</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3996"><a href="#L-3996"><span class="linenos">3996</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3997"><a href="#L-3997"><span class="linenos">3997</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3998"><a href="#L-3998"><span class="linenos">3998</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-3999"><a href="#L-3999"><span class="linenos">3999</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4000"><a href="#L-4000"><span class="linenos">4000</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4001"><a href="#L-4001"><span class="linenos">4001</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4002"><a href="#L-4002"><span class="linenos">4002</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4003"><a href="#L-4003"><span class="linenos">4003</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4004"><a href="#L-4004"><span class="linenos">4004</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4005"><a href="#L-4005"><span class="linenos">4005</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4006"><a href="#L-4006"><span class="linenos">4006</span></a> <span class="n">TINYBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4007"><a href="#L-4007"><span class="linenos">4007</span></a> <span class="n">TINYTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4008"><a href="#L-4008"><span class="linenos">4008</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4009"><a href="#L-4009"><span class="linenos">4009</span></a> <span class="n">TIMETZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4010"><a href="#L-4010"><span class="linenos">4010</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4011"><a href="#L-4011"><span class="linenos">4011</span></a> <span class="n">TIMESTAMPNTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4012"><a href="#L-4012"><span class="linenos">4012</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4013"><a href="#L-4013"><span class="linenos">4013</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4014"><a href="#L-4014"><span class="linenos">4014</span></a> <span class="n">TIMESTAMP_S</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4015"><a href="#L-4015"><span class="linenos">4015</span></a> <span class="n">TIMESTAMP_MS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4016"><a href="#L-4016"><span class="linenos">4016</span></a> <span class="n">TIMESTAMP_NS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4017"><a href="#L-4017"><span class="linenos">4017</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4018"><a href="#L-4018"><span class="linenos">4018</span></a> <span class="n">TSMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4019"><a href="#L-4019"><span class="linenos">4019</span></a> <span class="n">TSRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4020"><a href="#L-4020"><span class="linenos">4020</span></a> <span class="n">TSTZMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4021"><a href="#L-4021"><span class="linenos">4021</span></a> <span class="n">TSTZRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4022"><a href="#L-4022"><span class="linenos">4022</span></a> <span class="n">UBIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4023"><a href="#L-4023"><span class="linenos">4023</span></a> <span class="n">UINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4024"><a href="#L-4024"><span class="linenos">4024</span></a> <span class="n">UINT128</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4025"><a href="#L-4025"><span class="linenos">4025</span></a> <span class="n">UINT256</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4026"><a href="#L-4026"><span class="linenos">4026</span></a> <span class="n">UMEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4027"><a href="#L-4027"><span class="linenos">4027</span></a> <span class="n">UDECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4028"><a href="#L-4028"><span class="linenos">4028</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4029"><a href="#L-4029"><span class="linenos">4029</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> -</span><span id="L-4030"><a href="#L-4030"><span class="linenos">4030</span></a> <span class="n">USERDEFINED</span> <span class="o">=</span> <span class="s2">"USER-DEFINED"</span> -</span><span id="L-4031"><a href="#L-4031"><span class="linenos">4031</span></a> <span class="n">USMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4032"><a href="#L-4032"><span class="linenos">4032</span></a> <span class="n">UTINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4033"><a href="#L-4033"><span class="linenos">4033</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4034"><a href="#L-4034"><span class="linenos">4034</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4035"><a href="#L-4035"><span class="linenos">4035</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4036"><a href="#L-4036"><span class="linenos">4036</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4037"><a href="#L-4037"><span class="linenos">4037</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4038"><a href="#L-4038"><span class="linenos">4038</span></a> <span class="n">YEAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4039"><a href="#L-4039"><span class="linenos">4039</span></a> <span class="n">TDIGEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-4040"><a href="#L-4040"><span class="linenos">4040</span></a> -</span><span id="L-4041"><a href="#L-4041"><span class="linenos">4041</span></a> <span class="n">STRUCT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4042"><a href="#L-4042"><span class="linenos">4042</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span> -</span><span id="L-4043"><a href="#L-4043"><span class="linenos">4043</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="L-4044"><a href="#L-4044"><span class="linenos">4044</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> -</span><span id="L-4045"><a href="#L-4045"><span class="linenos">4045</span></a> <span class="p">}</span> -</span><span id="L-4046"><a href="#L-4046"><span class="linenos">4046</span></a> -</span><span id="L-4047"><a href="#L-4047"><span class="linenos">4047</span></a> <span class="n">NESTED_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4048"><a href="#L-4048"><span class="linenos">4048</span></a> <span class="o">*</span><span class="n">STRUCT_TYPES</span><span class="p">,</span> -</span><span id="L-4049"><a href="#L-4049"><span class="linenos">4049</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="L-4050"><a href="#L-4050"><span class="linenos">4050</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="L-4051"><a href="#L-4051"><span class="linenos">4051</span></a> <span class="p">}</span> -</span><span id="L-4052"><a href="#L-4052"><span class="linenos">4052</span></a> -</span><span id="L-4053"><a href="#L-4053"><span class="linenos">4053</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4054"><a href="#L-4054"><span class="linenos">4054</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="L-4055"><a href="#L-4055"><span class="linenos">4055</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="L-4056"><a href="#L-4056"><span class="linenos">4056</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-4057"><a href="#L-4057"><span class="linenos">4057</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-4058"><a href="#L-4058"><span class="linenos">4058</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="L-4059"><a href="#L-4059"><span class="linenos">4059</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="L-4060"><a href="#L-4060"><span class="linenos">4060</span></a> <span class="p">}</span> -</span><span id="L-4061"><a href="#L-4061"><span class="linenos">4061</span></a> -</span><span id="L-4062"><a href="#L-4062"><span class="linenos">4062</span></a> <span class="n">SIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4063"><a href="#L-4063"><span class="linenos">4063</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-4064"><a href="#L-4064"><span class="linenos">4064</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="L-4065"><a href="#L-4065"><span class="linenos">4065</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> -</span><span id="L-4066"><a href="#L-4066"><span class="linenos">4066</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> -</span><span id="L-4067"><a href="#L-4067"><span class="linenos">4067</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> -</span><span id="L-4068"><a href="#L-4068"><span class="linenos">4068</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-4069"><a href="#L-4069"><span class="linenos">4069</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="L-4070"><a href="#L-4070"><span class="linenos">4070</span></a> <span class="p">}</span> -</span><span id="L-4071"><a href="#L-4071"><span class="linenos">4071</span></a> -</span><span id="L-4072"><a href="#L-4072"><span class="linenos">4072</span></a> <span class="n">UNSIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4073"><a href="#L-4073"><span class="linenos">4073</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> -</span><span id="L-4074"><a href="#L-4074"><span class="linenos">4074</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> -</span><span id="L-4075"><a href="#L-4075"><span class="linenos">4075</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> -</span><span id="L-4076"><a href="#L-4076"><span class="linenos">4076</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> -</span><span id="L-4077"><a href="#L-4077"><span class="linenos">4077</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> -</span><span id="L-4078"><a href="#L-4078"><span class="linenos">4078</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> -</span><span id="L-4079"><a href="#L-4079"><span class="linenos">4079</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> -</span><span id="L-4080"><a href="#L-4080"><span class="linenos">4080</span></a> <span class="p">}</span> -</span><span id="L-4081"><a href="#L-4081"><span class="linenos">4081</span></a> -</span><span id="L-4082"><a href="#L-4082"><span class="linenos">4082</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4083"><a href="#L-4083"><span class="linenos">4083</span></a> <span class="o">*</span><span class="n">SIGNED_INTEGER_TYPES</span><span class="p">,</span> -</span><span id="L-4084"><a href="#L-4084"><span class="linenos">4084</span></a> <span class="o">*</span><span class="n">UNSIGNED_INTEGER_TYPES</span><span class="p">,</span> -</span><span id="L-4085"><a href="#L-4085"><span class="linenos">4085</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> -</span><span id="L-4086"><a href="#L-4086"><span class="linenos">4086</span></a> <span class="p">}</span> -</span><span id="L-4087"><a href="#L-4087"><span class="linenos">4087</span></a> -</span><span id="L-4088"><a href="#L-4088"><span class="linenos">4088</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4089"><a href="#L-4089"><span class="linenos">4089</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-4090"><a href="#L-4090"><span class="linenos">4090</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-4091"><a href="#L-4091"><span class="linenos">4091</span></a> <span class="p">}</span> -</span><span id="L-4092"><a href="#L-4092"><span class="linenos">4092</span></a> -</span><span id="L-4093"><a href="#L-4093"><span class="linenos">4093</span></a> <span class="n">REAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4094"><a href="#L-4094"><span class="linenos">4094</span></a> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">,</span> -</span><span id="L-4095"><a href="#L-4095"><span class="linenos">4095</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="L-4096"><a href="#L-4096"><span class="linenos">4096</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-4097"><a href="#L-4097"><span class="linenos">4097</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="L-4098"><a href="#L-4098"><span class="linenos">4098</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> -</span><span id="L-4099"><a href="#L-4099"><span class="linenos">4099</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> -</span><span id="L-4100"><a href="#L-4100"><span class="linenos">4100</span></a> <span class="p">}</span> -</span><span id="L-4101"><a href="#L-4101"><span class="linenos">4101</span></a> -</span><span id="L-4102"><a href="#L-4102"><span class="linenos">4102</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4103"><a href="#L-4103"><span class="linenos">4103</span></a> <span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> -</span><span id="L-4104"><a href="#L-4104"><span class="linenos">4104</span></a> <span class="o">*</span><span class="n">REAL_TYPES</span><span class="p">,</span> -</span><span id="L-4105"><a href="#L-4105"><span class="linenos">4105</span></a> <span class="p">}</span> -</span><span id="L-4106"><a href="#L-4106"><span class="linenos">4106</span></a> -</span><span id="L-4107"><a href="#L-4107"><span class="linenos">4107</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4108"><a href="#L-4108"><span class="linenos">4108</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-4109"><a href="#L-4109"><span class="linenos">4109</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> -</span><span id="L-4110"><a href="#L-4110"><span class="linenos">4110</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-4111"><a href="#L-4111"><span class="linenos">4111</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> -</span><span id="L-4112"><a href="#L-4112"><span class="linenos">4112</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="L-4113"><a href="#L-4113"><span class="linenos">4113</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-4114"><a href="#L-4114"><span class="linenos">4114</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="L-4115"><a href="#L-4115"><span class="linenos">4115</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-4116"><a href="#L-4116"><span class="linenos">4116</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-4117"><a href="#L-4117"><span class="linenos">4117</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> -</span><span id="L-4118"><a href="#L-4118"><span class="linenos">4118</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> -</span><span id="L-4119"><a href="#L-4119"><span class="linenos">4119</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> -</span><span id="L-4120"><a href="#L-4120"><span class="linenos">4120</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="L-4121"><a href="#L-4121"><span class="linenos">4121</span></a> <span class="p">}</span> -</span><span id="L-4122"><a href="#L-4122"><span class="linenos">4122</span></a> -</span><span id="L-4123"><a href="#L-4123"><span class="linenos">4123</span></a> <span class="nd">@classmethod</span> -</span><span id="L-4124"><a href="#L-4124"><span class="linenos">4124</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> -</span><span id="L-4125"><a href="#L-4125"><span class="linenos">4125</span></a> <span class="bp">cls</span><span class="p">,</span> -</span><span id="L-4126"><a href="#L-4126"><span class="linenos">4126</span></a> <span class="n">dtype</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> -</span><span id="L-4127"><a href="#L-4127"><span class="linenos">4127</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-4128"><a href="#L-4128"><span class="linenos">4128</span></a> <span class="n">udt</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-4129"><a href="#L-4129"><span class="linenos">4129</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4130"><a href="#L-4130"><span class="linenos">4130</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="L-4131"><a href="#L-4131"><span class="linenos">4131</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="L-4132"><a href="#L-4132"><span class="linenos">4132</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4133"><a href="#L-4133"><span class="linenos">4133</span></a><span class="sd"> Constructs a DataType object.</span> -</span><span id="L-4134"><a href="#L-4134"><span class="linenos">4134</span></a> -</span><span id="L-4135"><a href="#L-4135"><span class="linenos">4135</span></a><span class="sd"> Args:</span> -</span><span id="L-4136"><a href="#L-4136"><span class="linenos">4136</span></a><span class="sd"> dtype: the data type of interest.</span> -</span><span id="L-4137"><a href="#L-4137"><span class="linenos">4137</span></a><span class="sd"> dialect: the dialect to use for parsing `dtype`, in case it's a string.</span> -</span><span id="L-4138"><a href="#L-4138"><span class="linenos">4138</span></a><span class="sd"> udt: when set to True, `dtype` will be used as-is if it can't be parsed into a</span> -</span><span id="L-4139"><a href="#L-4139"><span class="linenos">4139</span></a><span class="sd"> DataType, thus creating a user-defined type.</span> -</span><span id="L-4140"><a href="#L-4140"><span class="linenos">4140</span></a><span class="sd"> copy: whether to copy the data type.</span> -</span><span id="L-4141"><a href="#L-4141"><span class="linenos">4141</span></a><span class="sd"> kwargs: additional arguments to pass in the constructor of DataType.</span> -</span><span id="L-4142"><a href="#L-4142"><span class="linenos">4142</span></a> -</span><span id="L-4143"><a href="#L-4143"><span class="linenos">4143</span></a><span class="sd"> Returns:</span> -</span><span id="L-4144"><a href="#L-4144"><span class="linenos">4144</span></a><span class="sd"> The constructed DataType object.</span> -</span><span id="L-4145"><a href="#L-4145"><span class="linenos">4145</span></a><span class="sd"> """</span> -</span><span id="L-4146"><a href="#L-4146"><span class="linenos">4146</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> -</span><span id="L-4147"><a href="#L-4147"><span class="linenos">4147</span></a> -</span><span id="L-4148"><a href="#L-4148"><span class="linenos">4148</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-4149"><a href="#L-4149"><span class="linenos">4149</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"UNKNOWN"</span><span class="p">:</span> -</span><span id="L-4150"><a href="#L-4150"><span class="linenos">4150</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-4151"><a href="#L-4151"><span class="linenos">4151</span></a> -</span><span id="L-4152"><a href="#L-4152"><span class="linenos">4152</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-4153"><a href="#L-4153"><span class="linenos">4153</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span> -</span><span id="L-4154"><a href="#L-4154"><span class="linenos">4154</span></a> <span class="n">dtype</span><span class="p">,</span> <span class="n">read</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">DataType</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span> -</span><span id="L-4155"><a href="#L-4155"><span class="linenos">4155</span></a> <span class="p">)</span> -</span><span id="L-4156"><a href="#L-4156"><span class="linenos">4156</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="L-4157"><a href="#L-4157"><span class="linenos">4157</span></a> <span class="k">if</span> <span class="n">udt</span><span class="p">:</span> -</span><span id="L-4158"><a href="#L-4158"><span class="linenos">4158</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-4159"><a href="#L-4159"><span class="linenos">4159</span></a> <span class="k">raise</span> -</span><span id="L-4160"><a href="#L-4160"><span class="linenos">4160</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="L-4161"><a href="#L-4161"><span class="linenos">4161</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="L-4162"><a href="#L-4162"><span class="linenos">4162</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="L-4163"><a href="#L-4163"><span class="linenos">4163</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-4164"><a href="#L-4164"><span class="linenos">4164</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4165"><a href="#L-4165"><span class="linenos">4165</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> -</span><span id="L-4166"><a href="#L-4166"><span class="linenos">4166</span></a> -</span><span id="L-4167"><a href="#L-4167"><span class="linenos">4167</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> -</span><span id="L-4168"><a href="#L-4168"><span class="linenos">4168</span></a> -</span><span id="L-4169"><a href="#L-4169"><span class="linenos">4169</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-4170"><a href="#L-4170"><span class="linenos">4170</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4171"><a href="#L-4171"><span class="linenos">4171</span></a><span class="sd"> Checks whether this DataType matches one of the provided data types. Nested types or precision</span> -</span><span id="L-4172"><a href="#L-4172"><span class="linenos">4172</span></a><span class="sd"> will be compared using "structural equivalence" semantics, so e.g. array<int> != array<float>.</span> -</span><span id="L-4173"><a href="#L-4173"><span class="linenos">4173</span></a> -</span><span id="L-4174"><a href="#L-4174"><span class="linenos">4174</span></a><span class="sd"> Args:</span> -</span><span id="L-4175"><a href="#L-4175"><span class="linenos">4175</span></a><span class="sd"> dtypes: the data types to compare this DataType to.</span> -</span><span id="L-4176"><a href="#L-4176"><span class="linenos">4176</span></a> -</span><span id="L-4177"><a href="#L-4177"><span class="linenos">4177</span></a><span class="sd"> Returns:</span> -</span><span id="L-4178"><a href="#L-4178"><span class="linenos">4178</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this DataType.</span> -</span><span id="L-4179"><a href="#L-4179"><span class="linenos">4179</span></a><span class="sd"> """</span> -</span><span id="L-4180"><a href="#L-4180"><span class="linenos">4180</span></a> <span class="k">for</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="n">dtypes</span><span class="p">:</span> -</span><span id="L-4181"><a href="#L-4181"><span class="linenos">4181</span></a> <span class="n">other</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">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4182"><a href="#L-4182"><span class="linenos">4182</span></a> -</span><span id="L-4183"><a href="#L-4183"><span class="linenos">4183</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-4184"><a href="#L-4184"><span class="linenos">4184</span></a> <span class="n">other</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-4185"><a href="#L-4185"><span class="linenos">4185</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> -</span><span id="L-4186"><a href="#L-4186"><span class="linenos">4186</span></a> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> -</span><span id="L-4187"><a href="#L-4187"><span class="linenos">4187</span></a> <span class="p">):</span> -</span><span id="L-4188"><a href="#L-4188"><span class="linenos">4188</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">==</span> <span class="n">other</span> -</span><span id="L-4189"><a href="#L-4189"><span class="linenos">4189</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4190"><a href="#L-4190"><span class="linenos">4190</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-4191"><a href="#L-4191"><span class="linenos">4191</span></a> -</span><span id="L-4192"><a href="#L-4192"><span class="linenos">4192</span></a> <span class="k">if</span> <span class="n">matches</span><span class="p">:</span> -</span><span id="L-4193"><a href="#L-4193"><span class="linenos">4193</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-4194"><a href="#L-4194"><span class="linenos">4194</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-4195"><a href="#L-4195"><span class="linenos">4195</span></a> +</span><span id="L-3980"><a href="#L-3980"><span class="linenos">3980</span></a> <span class="n">LIST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3981"><a href="#L-3981"><span class="linenos">3981</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3982"><a href="#L-3982"><span class="linenos">3982</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3983"><a href="#L-3983"><span class="linenos">3983</span></a> <span class="n">LOWCARDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3984"><a href="#L-3984"><span class="linenos">3984</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3985"><a href="#L-3985"><span class="linenos">3985</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3986"><a href="#L-3986"><span class="linenos">3986</span></a> <span class="n">MEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3987"><a href="#L-3987"><span class="linenos">3987</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3988"><a href="#L-3988"><span class="linenos">3988</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3989"><a href="#L-3989"><span class="linenos">3989</span></a> <span class="n">NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3990"><a href="#L-3990"><span class="linenos">3990</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3991"><a href="#L-3991"><span class="linenos">3991</span></a> <span class="n">NESTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3992"><a href="#L-3992"><span class="linenos">3992</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3993"><a href="#L-3993"><span class="linenos">3993</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3994"><a href="#L-3994"><span class="linenos">3994</span></a> <span class="n">NUMMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3995"><a href="#L-3995"><span class="linenos">3995</span></a> <span class="n">NUMRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3996"><a href="#L-3996"><span class="linenos">3996</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3997"><a href="#L-3997"><span class="linenos">3997</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3998"><a href="#L-3998"><span class="linenos">3998</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-3999"><a href="#L-3999"><span class="linenos">3999</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4000"><a href="#L-4000"><span class="linenos">4000</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4001"><a href="#L-4001"><span class="linenos">4001</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4002"><a href="#L-4002"><span class="linenos">4002</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4003"><a href="#L-4003"><span class="linenos">4003</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4004"><a href="#L-4004"><span class="linenos">4004</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4005"><a href="#L-4005"><span class="linenos">4005</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4006"><a href="#L-4006"><span class="linenos">4006</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4007"><a href="#L-4007"><span class="linenos">4007</span></a> <span class="n">TINYBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4008"><a href="#L-4008"><span class="linenos">4008</span></a> <span class="n">TINYTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4009"><a href="#L-4009"><span class="linenos">4009</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4010"><a href="#L-4010"><span class="linenos">4010</span></a> <span class="n">TIMETZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4011"><a href="#L-4011"><span class="linenos">4011</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4012"><a href="#L-4012"><span class="linenos">4012</span></a> <span class="n">TIMESTAMPNTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4013"><a href="#L-4013"><span class="linenos">4013</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4014"><a href="#L-4014"><span class="linenos">4014</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4015"><a href="#L-4015"><span class="linenos">4015</span></a> <span class="n">TIMESTAMP_S</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4016"><a href="#L-4016"><span class="linenos">4016</span></a> <span class="n">TIMESTAMP_MS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4017"><a href="#L-4017"><span class="linenos">4017</span></a> <span class="n">TIMESTAMP_NS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4018"><a href="#L-4018"><span class="linenos">4018</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4019"><a href="#L-4019"><span class="linenos">4019</span></a> <span class="n">TSMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4020"><a href="#L-4020"><span class="linenos">4020</span></a> <span class="n">TSRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4021"><a href="#L-4021"><span class="linenos">4021</span></a> <span class="n">TSTZMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4022"><a href="#L-4022"><span class="linenos">4022</span></a> <span class="n">TSTZRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4023"><a href="#L-4023"><span class="linenos">4023</span></a> <span class="n">UBIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4024"><a href="#L-4024"><span class="linenos">4024</span></a> <span class="n">UINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4025"><a href="#L-4025"><span class="linenos">4025</span></a> <span class="n">UINT128</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4026"><a href="#L-4026"><span class="linenos">4026</span></a> <span class="n">UINT256</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4027"><a href="#L-4027"><span class="linenos">4027</span></a> <span class="n">UMEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4028"><a href="#L-4028"><span class="linenos">4028</span></a> <span class="n">UDECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4029"><a href="#L-4029"><span class="linenos">4029</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4030"><a href="#L-4030"><span class="linenos">4030</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> +</span><span id="L-4031"><a href="#L-4031"><span class="linenos">4031</span></a> <span class="n">USERDEFINED</span> <span class="o">=</span> <span class="s2">"USER-DEFINED"</span> +</span><span id="L-4032"><a href="#L-4032"><span class="linenos">4032</span></a> <span class="n">USMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4033"><a href="#L-4033"><span class="linenos">4033</span></a> <span class="n">UTINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4034"><a href="#L-4034"><span class="linenos">4034</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4035"><a href="#L-4035"><span class="linenos">4035</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4036"><a href="#L-4036"><span class="linenos">4036</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4037"><a href="#L-4037"><span class="linenos">4037</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4038"><a href="#L-4038"><span class="linenos">4038</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4039"><a href="#L-4039"><span class="linenos">4039</span></a> <span class="n">YEAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4040"><a href="#L-4040"><span class="linenos">4040</span></a> <span class="n">TDIGEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-4041"><a href="#L-4041"><span class="linenos">4041</span></a> +</span><span id="L-4042"><a href="#L-4042"><span class="linenos">4042</span></a> <span class="n">STRUCT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4043"><a href="#L-4043"><span class="linenos">4043</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span> +</span><span id="L-4044"><a href="#L-4044"><span class="linenos">4044</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="L-4045"><a href="#L-4045"><span class="linenos">4045</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> +</span><span id="L-4046"><a href="#L-4046"><span class="linenos">4046</span></a> <span class="p">}</span> +</span><span id="L-4047"><a href="#L-4047"><span class="linenos">4047</span></a> +</span><span id="L-4048"><a href="#L-4048"><span class="linenos">4048</span></a> <span class="n">NESTED_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4049"><a href="#L-4049"><span class="linenos">4049</span></a> <span class="o">*</span><span class="n">STRUCT_TYPES</span><span class="p">,</span> +</span><span id="L-4050"><a href="#L-4050"><span class="linenos">4050</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> +</span><span id="L-4051"><a href="#L-4051"><span class="linenos">4051</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="L-4052"><a href="#L-4052"><span class="linenos">4052</span></a> <span class="p">}</span> +</span><span id="L-4053"><a href="#L-4053"><span class="linenos">4053</span></a> +</span><span id="L-4054"><a href="#L-4054"><span class="linenos">4054</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4055"><a href="#L-4055"><span class="linenos">4055</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="L-4056"><a href="#L-4056"><span class="linenos">4056</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="L-4057"><a href="#L-4057"><span class="linenos">4057</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-4058"><a href="#L-4058"><span class="linenos">4058</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-4059"><a href="#L-4059"><span class="linenos">4059</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="L-4060"><a href="#L-4060"><span class="linenos">4060</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="L-4061"><a href="#L-4061"><span class="linenos">4061</span></a> <span class="p">}</span> +</span><span id="L-4062"><a href="#L-4062"><span class="linenos">4062</span></a> +</span><span id="L-4063"><a href="#L-4063"><span class="linenos">4063</span></a> <span class="n">SIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4064"><a href="#L-4064"><span class="linenos">4064</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-4065"><a href="#L-4065"><span class="linenos">4065</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="L-4066"><a href="#L-4066"><span class="linenos">4066</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> +</span><span id="L-4067"><a href="#L-4067"><span class="linenos">4067</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> +</span><span id="L-4068"><a href="#L-4068"><span class="linenos">4068</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> +</span><span id="L-4069"><a href="#L-4069"><span class="linenos">4069</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-4070"><a href="#L-4070"><span class="linenos">4070</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="L-4071"><a href="#L-4071"><span class="linenos">4071</span></a> <span class="p">}</span> +</span><span id="L-4072"><a href="#L-4072"><span class="linenos">4072</span></a> +</span><span id="L-4073"><a href="#L-4073"><span class="linenos">4073</span></a> <span class="n">UNSIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4074"><a href="#L-4074"><span class="linenos">4074</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> +</span><span id="L-4075"><a href="#L-4075"><span class="linenos">4075</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> +</span><span id="L-4076"><a href="#L-4076"><span class="linenos">4076</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> +</span><span id="L-4077"><a href="#L-4077"><span class="linenos">4077</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> +</span><span id="L-4078"><a href="#L-4078"><span class="linenos">4078</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> +</span><span id="L-4079"><a href="#L-4079"><span class="linenos">4079</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> +</span><span id="L-4080"><a href="#L-4080"><span class="linenos">4080</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> +</span><span id="L-4081"><a href="#L-4081"><span class="linenos">4081</span></a> <span class="p">}</span> +</span><span id="L-4082"><a href="#L-4082"><span class="linenos">4082</span></a> +</span><span id="L-4083"><a href="#L-4083"><span class="linenos">4083</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4084"><a href="#L-4084"><span class="linenos">4084</span></a> <span class="o">*</span><span class="n">SIGNED_INTEGER_TYPES</span><span class="p">,</span> +</span><span id="L-4085"><a href="#L-4085"><span class="linenos">4085</span></a> <span class="o">*</span><span class="n">UNSIGNED_INTEGER_TYPES</span><span class="p">,</span> +</span><span id="L-4086"><a href="#L-4086"><span class="linenos">4086</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> +</span><span id="L-4087"><a href="#L-4087"><span class="linenos">4087</span></a> <span class="p">}</span> +</span><span id="L-4088"><a href="#L-4088"><span class="linenos">4088</span></a> +</span><span id="L-4089"><a href="#L-4089"><span class="linenos">4089</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4090"><a href="#L-4090"><span class="linenos">4090</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-4091"><a href="#L-4091"><span class="linenos">4091</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-4092"><a href="#L-4092"><span class="linenos">4092</span></a> <span class="p">}</span> +</span><span id="L-4093"><a href="#L-4093"><span class="linenos">4093</span></a> +</span><span id="L-4094"><a href="#L-4094"><span class="linenos">4094</span></a> <span class="n">REAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4095"><a href="#L-4095"><span class="linenos">4095</span></a> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">,</span> +</span><span id="L-4096"><a href="#L-4096"><span class="linenos">4096</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="L-4097"><a href="#L-4097"><span class="linenos">4097</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-4098"><a href="#L-4098"><span class="linenos">4098</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="L-4099"><a href="#L-4099"><span class="linenos">4099</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> +</span><span id="L-4100"><a href="#L-4100"><span class="linenos">4100</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> +</span><span id="L-4101"><a href="#L-4101"><span class="linenos">4101</span></a> <span class="p">}</span> +</span><span id="L-4102"><a href="#L-4102"><span class="linenos">4102</span></a> +</span><span id="L-4103"><a href="#L-4103"><span class="linenos">4103</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4104"><a href="#L-4104"><span class="linenos">4104</span></a> <span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> +</span><span id="L-4105"><a href="#L-4105"><span class="linenos">4105</span></a> <span class="o">*</span><span class="n">REAL_TYPES</span><span class="p">,</span> +</span><span id="L-4106"><a href="#L-4106"><span class="linenos">4106</span></a> <span class="p">}</span> +</span><span id="L-4107"><a href="#L-4107"><span class="linenos">4107</span></a> +</span><span id="L-4108"><a href="#L-4108"><span class="linenos">4108</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4109"><a href="#L-4109"><span class="linenos">4109</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-4110"><a href="#L-4110"><span class="linenos">4110</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> +</span><span id="L-4111"><a href="#L-4111"><span class="linenos">4111</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-4112"><a href="#L-4112"><span class="linenos">4112</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> +</span><span id="L-4113"><a href="#L-4113"><span class="linenos">4113</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="L-4114"><a href="#L-4114"><span class="linenos">4114</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-4115"><a href="#L-4115"><span class="linenos">4115</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="L-4116"><a href="#L-4116"><span class="linenos">4116</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-4117"><a href="#L-4117"><span class="linenos">4117</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-4118"><a href="#L-4118"><span class="linenos">4118</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> +</span><span id="L-4119"><a href="#L-4119"><span class="linenos">4119</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> +</span><span id="L-4120"><a href="#L-4120"><span class="linenos">4120</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> +</span><span id="L-4121"><a href="#L-4121"><span class="linenos">4121</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="L-4122"><a href="#L-4122"><span class="linenos">4122</span></a> <span class="p">}</span> +</span><span id="L-4123"><a href="#L-4123"><span class="linenos">4123</span></a> +</span><span id="L-4124"><a href="#L-4124"><span class="linenos">4124</span></a> <span class="nd">@classmethod</span> +</span><span id="L-4125"><a href="#L-4125"><span class="linenos">4125</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> +</span><span id="L-4126"><a href="#L-4126"><span class="linenos">4126</span></a> <span class="bp">cls</span><span class="p">,</span> +</span><span id="L-4127"><a href="#L-4127"><span class="linenos">4127</span></a> <span class="n">dtype</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> +</span><span id="L-4128"><a href="#L-4128"><span class="linenos">4128</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-4129"><a href="#L-4129"><span class="linenos">4129</span></a> <span class="n">udt</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-4130"><a href="#L-4130"><span class="linenos">4130</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4131"><a href="#L-4131"><span class="linenos">4131</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="L-4132"><a href="#L-4132"><span class="linenos">4132</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="L-4133"><a href="#L-4133"><span class="linenos">4133</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4134"><a href="#L-4134"><span class="linenos">4134</span></a><span class="sd"> Constructs a DataType object.</span> +</span><span id="L-4135"><a href="#L-4135"><span class="linenos">4135</span></a> +</span><span id="L-4136"><a href="#L-4136"><span class="linenos">4136</span></a><span class="sd"> Args:</span> +</span><span id="L-4137"><a href="#L-4137"><span class="linenos">4137</span></a><span class="sd"> dtype: the data type of interest.</span> +</span><span id="L-4138"><a href="#L-4138"><span class="linenos">4138</span></a><span class="sd"> dialect: the dialect to use for parsing `dtype`, in case it's a string.</span> +</span><span id="L-4139"><a href="#L-4139"><span class="linenos">4139</span></a><span class="sd"> udt: when set to True, `dtype` will be used as-is if it can't be parsed into a</span> +</span><span id="L-4140"><a href="#L-4140"><span class="linenos">4140</span></a><span class="sd"> DataType, thus creating a user-defined type.</span> +</span><span id="L-4141"><a href="#L-4141"><span class="linenos">4141</span></a><span class="sd"> copy: whether to copy the data type.</span> +</span><span id="L-4142"><a href="#L-4142"><span class="linenos">4142</span></a><span class="sd"> kwargs: additional arguments to pass in the constructor of DataType.</span> +</span><span id="L-4143"><a href="#L-4143"><span class="linenos">4143</span></a> +</span><span id="L-4144"><a href="#L-4144"><span class="linenos">4144</span></a><span class="sd"> Returns:</span> +</span><span id="L-4145"><a href="#L-4145"><span class="linenos">4145</span></a><span class="sd"> The constructed DataType object.</span> +</span><span id="L-4146"><a href="#L-4146"><span class="linenos">4146</span></a><span class="sd"> """</span> +</span><span id="L-4147"><a href="#L-4147"><span class="linenos">4147</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> +</span><span id="L-4148"><a href="#L-4148"><span class="linenos">4148</span></a> +</span><span id="L-4149"><a href="#L-4149"><span class="linenos">4149</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-4150"><a href="#L-4150"><span class="linenos">4150</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"UNKNOWN"</span><span class="p">:</span> +</span><span id="L-4151"><a href="#L-4151"><span class="linenos">4151</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-4152"><a href="#L-4152"><span class="linenos">4152</span></a> +</span><span id="L-4153"><a href="#L-4153"><span class="linenos">4153</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-4154"><a href="#L-4154"><span class="linenos">4154</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span> +</span><span id="L-4155"><a href="#L-4155"><span class="linenos">4155</span></a> <span class="n">dtype</span><span class="p">,</span> <span class="n">read</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">DataType</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span> +</span><span id="L-4156"><a href="#L-4156"><span class="linenos">4156</span></a> <span class="p">)</span> +</span><span id="L-4157"><a href="#L-4157"><span class="linenos">4157</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="L-4158"><a href="#L-4158"><span class="linenos">4158</span></a> <span class="k">if</span> <span class="n">udt</span><span class="p">:</span> +</span><span id="L-4159"><a href="#L-4159"><span class="linenos">4159</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-4160"><a href="#L-4160"><span class="linenos">4160</span></a> <span class="k">raise</span> +</span><span id="L-4161"><a href="#L-4161"><span class="linenos">4161</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="L-4162"><a href="#L-4162"><span class="linenos">4162</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="L-4163"><a href="#L-4163"><span class="linenos">4163</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="L-4164"><a href="#L-4164"><span class="linenos">4164</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-4165"><a href="#L-4165"><span class="linenos">4165</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4166"><a href="#L-4166"><span class="linenos">4166</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> +</span><span id="L-4167"><a href="#L-4167"><span class="linenos">4167</span></a> +</span><span id="L-4168"><a href="#L-4168"><span class="linenos">4168</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> +</span><span id="L-4169"><a href="#L-4169"><span class="linenos">4169</span></a> +</span><span id="L-4170"><a href="#L-4170"><span class="linenos">4170</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-4171"><a href="#L-4171"><span class="linenos">4171</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4172"><a href="#L-4172"><span class="linenos">4172</span></a><span class="sd"> Checks whether this DataType matches one of the provided data types. Nested types or precision</span> +</span><span id="L-4173"><a href="#L-4173"><span class="linenos">4173</span></a><span class="sd"> will be compared using "structural equivalence" semantics, so e.g. array<int> != array<float>.</span> +</span><span id="L-4174"><a href="#L-4174"><span class="linenos">4174</span></a> +</span><span id="L-4175"><a href="#L-4175"><span class="linenos">4175</span></a><span class="sd"> Args:</span> +</span><span id="L-4176"><a href="#L-4176"><span class="linenos">4176</span></a><span class="sd"> dtypes: the data types to compare this DataType to.</span> +</span><span id="L-4177"><a href="#L-4177"><span class="linenos">4177</span></a> +</span><span id="L-4178"><a href="#L-4178"><span class="linenos">4178</span></a><span class="sd"> Returns:</span> +</span><span id="L-4179"><a href="#L-4179"><span class="linenos">4179</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this DataType.</span> +</span><span id="L-4180"><a href="#L-4180"><span class="linenos">4180</span></a><span class="sd"> """</span> +</span><span id="L-4181"><a href="#L-4181"><span class="linenos">4181</span></a> <span class="k">for</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="n">dtypes</span><span class="p">:</span> +</span><span id="L-4182"><a href="#L-4182"><span class="linenos">4182</span></a> <span class="n">other</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">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4183"><a href="#L-4183"><span class="linenos">4183</span></a> +</span><span id="L-4184"><a href="#L-4184"><span class="linenos">4184</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-4185"><a href="#L-4185"><span class="linenos">4185</span></a> <span class="n">other</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-4186"><a href="#L-4186"><span class="linenos">4186</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> +</span><span id="L-4187"><a href="#L-4187"><span class="linenos">4187</span></a> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> +</span><span id="L-4188"><a href="#L-4188"><span class="linenos">4188</span></a> <span class="p">):</span> +</span><span id="L-4189"><a href="#L-4189"><span class="linenos">4189</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">==</span> <span class="n">other</span> +</span><span id="L-4190"><a href="#L-4190"><span class="linenos">4190</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4191"><a href="#L-4191"><span class="linenos">4191</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4192"><a href="#L-4192"><span class="linenos">4192</span></a> +</span><span id="L-4193"><a href="#L-4193"><span class="linenos">4193</span></a> <span class="k">if</span> <span class="n">matches</span><span class="p">:</span> +</span><span id="L-4194"><a href="#L-4194"><span class="linenos">4194</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-4195"><a href="#L-4195"><span class="linenos">4195</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="L-4196"><a href="#L-4196"><span class="linenos">4196</span></a> -</span><span id="L-4197"><a href="#L-4197"><span class="linenos">4197</span></a><span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">]</span> -</span><span id="L-4198"><a href="#L-4198"><span class="linenos">4198</span></a> +</span><span id="L-4197"><a href="#L-4197"><span class="linenos">4197</span></a> +</span><span id="L-4198"><a href="#L-4198"><span class="linenos">4198</span></a><span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">]</span> </span><span id="L-4199"><a href="#L-4199"><span class="linenos">4199</span></a> -</span><span id="L-4200"><a href="#L-4200"><span class="linenos">4200</span></a><span class="c1"># https://www.postgresql.org/docs/15/datatype-pseudo.html</span> -</span><span id="L-4201"><a href="#L-4201"><span class="linenos">4201</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> -</span><span id="L-4202"><a href="#L-4202"><span class="linenos">4202</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4203"><a href="#L-4203"><span class="linenos">4203</span></a> +</span><span id="L-4200"><a href="#L-4200"><span class="linenos">4200</span></a> +</span><span id="L-4201"><a href="#L-4201"><span class="linenos">4201</span></a><span class="c1"># https://www.postgresql.org/docs/15/datatype-pseudo.html</span> +</span><span id="L-4202"><a href="#L-4202"><span class="linenos">4202</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> +</span><span id="L-4203"><a href="#L-4203"><span class="linenos">4203</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4204"><a href="#L-4204"><span class="linenos">4204</span></a> -</span><span id="L-4205"><a href="#L-4205"><span class="linenos">4205</span></a><span class="c1"># https://www.postgresql.org/docs/15/datatype-oid.html</span> -</span><span id="L-4206"><a href="#L-4206"><span class="linenos">4206</span></a><span class="k">class</span> <span class="nc">ObjectIdentifier</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> -</span><span id="L-4207"><a href="#L-4207"><span class="linenos">4207</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4208"><a href="#L-4208"><span class="linenos">4208</span></a> +</span><span id="L-4205"><a href="#L-4205"><span class="linenos">4205</span></a> +</span><span id="L-4206"><a href="#L-4206"><span class="linenos">4206</span></a><span class="c1"># https://www.postgresql.org/docs/15/datatype-oid.html</span> +</span><span id="L-4207"><a href="#L-4207"><span class="linenos">4207</span></a><span class="k">class</span> <span class="nc">ObjectIdentifier</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> +</span><span id="L-4208"><a href="#L-4208"><span class="linenos">4208</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4209"><a href="#L-4209"><span class="linenos">4209</span></a> -</span><span id="L-4210"><a href="#L-4210"><span class="linenos">4210</span></a><span class="c1"># WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...)</span> -</span><span id="L-4211"><a href="#L-4211"><span class="linenos">4211</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4212"><a href="#L-4212"><span class="linenos">4212</span></a> <span class="k">pass</span> -</span><span id="L-4213"><a href="#L-4213"><span class="linenos">4213</span></a> +</span><span id="L-4210"><a href="#L-4210"><span class="linenos">4210</span></a> +</span><span id="L-4211"><a href="#L-4211"><span class="linenos">4211</span></a><span class="c1"># WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...)</span> +</span><span id="L-4212"><a href="#L-4212"><span class="linenos">4212</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4213"><a href="#L-4213"><span class="linenos">4213</span></a> <span class="k">pass</span> </span><span id="L-4214"><a href="#L-4214"><span class="linenos">4214</span></a> -</span><span id="L-4215"><a href="#L-4215"><span class="linenos">4215</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="L-4216"><a href="#L-4216"><span class="linenos">4216</span></a> <span class="k">pass</span> -</span><span id="L-4217"><a href="#L-4217"><span class="linenos">4217</span></a> +</span><span id="L-4215"><a href="#L-4215"><span class="linenos">4215</span></a> +</span><span id="L-4216"><a href="#L-4216"><span class="linenos">4216</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="L-4217"><a href="#L-4217"><span class="linenos">4217</span></a> <span class="k">pass</span> </span><span id="L-4218"><a href="#L-4218"><span class="linenos">4218</span></a> -</span><span id="L-4219"><a href="#L-4219"><span class="linenos">4219</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="L-4220"><a href="#L-4220"><span class="linenos">4220</span></a> <span class="k">pass</span> -</span><span id="L-4221"><a href="#L-4221"><span class="linenos">4221</span></a> +</span><span id="L-4219"><a href="#L-4219"><span class="linenos">4219</span></a> +</span><span id="L-4220"><a href="#L-4220"><span class="linenos">4220</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="L-4221"><a href="#L-4221"><span class="linenos">4221</span></a> <span class="k">pass</span> </span><span id="L-4222"><a href="#L-4222"><span class="linenos">4222</span></a> -</span><span id="L-4223"><a href="#L-4223"><span class="linenos">4223</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="L-4224"><a href="#L-4224"><span class="linenos">4224</span></a> <span class="k">pass</span> -</span><span id="L-4225"><a href="#L-4225"><span class="linenos">4225</span></a> +</span><span id="L-4223"><a href="#L-4223"><span class="linenos">4223</span></a> +</span><span id="L-4224"><a href="#L-4224"><span class="linenos">4224</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="L-4225"><a href="#L-4225"><span class="linenos">4225</span></a> <span class="k">pass</span> </span><span id="L-4226"><a href="#L-4226"><span class="linenos">4226</span></a> -</span><span id="L-4227"><a href="#L-4227"><span class="linenos">4227</span></a><span class="c1"># Commands to interact with the databases or engines. For most of the command</span> -</span><span id="L-4228"><a href="#L-4228"><span class="linenos">4228</span></a><span class="c1"># expressions we parse whatever comes after the command's name as a string.</span> -</span><span id="L-4229"><a href="#L-4229"><span class="linenos">4229</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4230"><a href="#L-4230"><span class="linenos">4230</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4231"><a href="#L-4231"><span class="linenos">4231</span></a> +</span><span id="L-4227"><a href="#L-4227"><span class="linenos">4227</span></a> +</span><span id="L-4228"><a href="#L-4228"><span class="linenos">4228</span></a><span class="c1"># Commands to interact with the databases or engines. For most of the command</span> +</span><span id="L-4229"><a href="#L-4229"><span class="linenos">4229</span></a><span class="c1"># expressions we parse whatever comes after the command's name as a string.</span> +</span><span id="L-4230"><a href="#L-4230"><span class="linenos">4230</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4231"><a href="#L-4231"><span class="linenos">4231</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4232"><a href="#L-4232"><span class="linenos">4232</span></a> -</span><span id="L-4233"><a href="#L-4233"><span class="linenos">4233</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4234"><a href="#L-4234"><span class="linenos">4234</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"mark"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4235"><a href="#L-4235"><span class="linenos">4235</span></a> +</span><span id="L-4233"><a href="#L-4233"><span class="linenos">4233</span></a> +</span><span id="L-4234"><a href="#L-4234"><span class="linenos">4234</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4235"><a href="#L-4235"><span class="linenos">4235</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"mark"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4236"><a href="#L-4236"><span class="linenos">4236</span></a> -</span><span id="L-4237"><a href="#L-4237"><span class="linenos">4237</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4238"><a href="#L-4238"><span class="linenos">4238</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"durability"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4239"><a href="#L-4239"><span class="linenos">4239</span></a> +</span><span id="L-4237"><a href="#L-4237"><span class="linenos">4237</span></a> +</span><span id="L-4238"><a href="#L-4238"><span class="linenos">4238</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4239"><a href="#L-4239"><span class="linenos">4239</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"durability"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4240"><a href="#L-4240"><span class="linenos">4240</span></a> -</span><span id="L-4241"><a href="#L-4241"><span class="linenos">4241</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4242"><a href="#L-4242"><span class="linenos">4242</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4243"><a href="#L-4243"><span class="linenos">4243</span></a> +</span><span id="L-4241"><a href="#L-4241"><span class="linenos">4241</span></a> +</span><span id="L-4242"><a href="#L-4242"><span class="linenos">4242</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4243"><a href="#L-4243"><span class="linenos">4243</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4244"><a href="#L-4244"><span class="linenos">4244</span></a> -</span><span id="L-4245"><a href="#L-4245"><span class="linenos">4245</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4246"><a href="#L-4246"><span class="linenos">4246</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4247"><a href="#L-4247"><span class="linenos">4247</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4248"><a href="#L-4248"><span class="linenos">4248</span></a> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4249"><a href="#L-4249"><span class="linenos">4249</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4250"><a href="#L-4250"><span class="linenos">4250</span></a> <span class="s2">"only"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4251"><a href="#L-4251"><span class="linenos">4251</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4252"><a href="#L-4252"><span class="linenos">4252</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4253"><a href="#L-4253"><span class="linenos">4253</span></a> <span class="p">}</span> -</span><span id="L-4254"><a href="#L-4254"><span class="linenos">4254</span></a> +</span><span id="L-4245"><a href="#L-4245"><span class="linenos">4245</span></a> +</span><span id="L-4246"><a href="#L-4246"><span class="linenos">4246</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4247"><a href="#L-4247"><span class="linenos">4247</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4248"><a href="#L-4248"><span class="linenos">4248</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4249"><a href="#L-4249"><span class="linenos">4249</span></a> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4250"><a href="#L-4250"><span class="linenos">4250</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4251"><a href="#L-4251"><span class="linenos">4251</span></a> <span class="s2">"only"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4252"><a href="#L-4252"><span class="linenos">4252</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4253"><a href="#L-4253"><span class="linenos">4253</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4254"><a href="#L-4254"><span class="linenos">4254</span></a> <span class="p">}</span> </span><span id="L-4255"><a href="#L-4255"><span class="linenos">4255</span></a> -</span><span id="L-4256"><a href="#L-4256"><span class="linenos">4256</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4257"><a href="#L-4257"><span class="linenos">4257</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4258"><a href="#L-4258"><span class="linenos">4258</span></a> +</span><span id="L-4256"><a href="#L-4256"><span class="linenos">4256</span></a> +</span><span id="L-4257"><a href="#L-4257"><span class="linenos">4257</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4258"><a href="#L-4258"><span class="linenos">4258</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4259"><a href="#L-4259"><span class="linenos">4259</span></a> -</span><span id="L-4260"><a href="#L-4260"><span class="linenos">4260</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4261"><a href="#L-4261"><span class="linenos">4261</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4262"><a href="#L-4262"><span class="linenos">4262</span></a> +</span><span id="L-4260"><a href="#L-4260"><span class="linenos">4260</span></a> +</span><span id="L-4261"><a href="#L-4261"><span class="linenos">4261</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4262"><a href="#L-4262"><span class="linenos">4262</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4263"><a href="#L-4263"><span class="linenos">4263</span></a> -</span><span id="L-4264"><a href="#L-4264"><span class="linenos">4264</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#replace-partition</span> -</span><span id="L-4265"><a href="#L-4265"><span class="linenos">4265</span></a><span class="k">class</span> <span class="nc">ReplacePartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4266"><a href="#L-4266"><span class="linenos">4266</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4267"><a href="#L-4267"><span class="linenos">4267</span></a> +</span><span id="L-4264"><a href="#L-4264"><span class="linenos">4264</span></a> +</span><span id="L-4265"><a href="#L-4265"><span class="linenos">4265</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#replace-partition</span> +</span><span id="L-4266"><a href="#L-4266"><span class="linenos">4266</span></a><span class="k">class</span> <span class="nc">ReplacePartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4267"><a href="#L-4267"><span class="linenos">4267</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4268"><a href="#L-4268"><span class="linenos">4268</span></a> -</span><span id="L-4269"><a href="#L-4269"><span class="linenos">4269</span></a><span class="c1"># Binary expressions like (ADD a b)</span> -</span><span id="L-4270"><a href="#L-4270"><span class="linenos">4270</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-4271"><a href="#L-4271"><span class="linenos">4271</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4272"><a href="#L-4272"><span class="linenos">4272</span></a> -</span><span id="L-4273"><a href="#L-4273"><span class="linenos">4273</span></a> <span class="nd">@property</span> -</span><span id="L-4274"><a href="#L-4274"><span class="linenos">4274</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-4275"><a href="#L-4275"><span class="linenos">4275</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-4276"><a href="#L-4276"><span class="linenos">4276</span></a> -</span><span id="L-4277"><a href="#L-4277"><span class="linenos">4277</span></a> <span class="nd">@property</span> -</span><span id="L-4278"><a href="#L-4278"><span class="linenos">4278</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-4279"><a href="#L-4279"><span class="linenos">4279</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-4280"><a href="#L-4280"><span class="linenos">4280</span></a> +</span><span id="L-4269"><a href="#L-4269"><span class="linenos">4269</span></a> +</span><span id="L-4270"><a href="#L-4270"><span class="linenos">4270</span></a><span class="c1"># Binary expressions like (ADD a b)</span> +</span><span id="L-4271"><a href="#L-4271"><span class="linenos">4271</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-4272"><a href="#L-4272"><span class="linenos">4272</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4273"><a href="#L-4273"><span class="linenos">4273</span></a> +</span><span id="L-4274"><a href="#L-4274"><span class="linenos">4274</span></a> <span class="nd">@property</span> +</span><span id="L-4275"><a href="#L-4275"><span class="linenos">4275</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-4276"><a href="#L-4276"><span class="linenos">4276</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4277"><a href="#L-4277"><span class="linenos">4277</span></a> +</span><span id="L-4278"><a href="#L-4278"><span class="linenos">4278</span></a> <span class="nd">@property</span> +</span><span id="L-4279"><a href="#L-4279"><span class="linenos">4279</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-4280"><a href="#L-4280"><span class="linenos">4280</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> </span><span id="L-4281"><a href="#L-4281"><span class="linenos">4281</span></a> -</span><span id="L-4282"><a href="#L-4282"><span class="linenos">4282</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4283"><a href="#L-4283"><span class="linenos">4283</span></a> <span class="k">pass</span> -</span><span id="L-4284"><a href="#L-4284"><span class="linenos">4284</span></a> +</span><span id="L-4282"><a href="#L-4282"><span class="linenos">4282</span></a> +</span><span id="L-4283"><a href="#L-4283"><span class="linenos">4283</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4284"><a href="#L-4284"><span class="linenos">4284</span></a> <span class="k">pass</span> </span><span id="L-4285"><a href="#L-4285"><span class="linenos">4285</span></a> -</span><span id="L-4286"><a href="#L-4286"><span class="linenos">4286</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4287"><a href="#L-4287"><span class="linenos">4287</span></a> <span class="k">pass</span> -</span><span id="L-4288"><a href="#L-4288"><span class="linenos">4288</span></a> +</span><span id="L-4286"><a href="#L-4286"><span class="linenos">4286</span></a> +</span><span id="L-4287"><a href="#L-4287"><span class="linenos">4287</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4288"><a href="#L-4288"><span class="linenos">4288</span></a> <span class="k">pass</span> </span><span id="L-4289"><a href="#L-4289"><span class="linenos">4289</span></a> -</span><span id="L-4290"><a href="#L-4290"><span class="linenos">4290</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="L-4291"><a href="#L-4291"><span class="linenos">4291</span></a> <span class="k">pass</span> -</span><span id="L-4292"><a href="#L-4292"><span class="linenos">4292</span></a> +</span><span id="L-4290"><a href="#L-4290"><span class="linenos">4290</span></a> +</span><span id="L-4291"><a href="#L-4291"><span class="linenos">4291</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> +</span><span id="L-4292"><a href="#L-4292"><span class="linenos">4292</span></a> <span class="k">pass</span> </span><span id="L-4293"><a href="#L-4293"><span class="linenos">4293</span></a> -</span><span id="L-4294"><a href="#L-4294"><span class="linenos">4294</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="L-4295"><a href="#L-4295"><span class="linenos">4295</span></a> <span class="k">pass</span> -</span><span id="L-4296"><a href="#L-4296"><span class="linenos">4296</span></a> +</span><span id="L-4294"><a href="#L-4294"><span class="linenos">4294</span></a> +</span><span id="L-4295"><a href="#L-4295"><span class="linenos">4295</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> +</span><span id="L-4296"><a href="#L-4296"><span class="linenos">4296</span></a> <span class="k">pass</span> </span><span id="L-4297"><a href="#L-4297"><span class="linenos">4297</span></a> -</span><span id="L-4298"><a href="#L-4298"><span class="linenos">4298</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4299"><a href="#L-4299"><span class="linenos">4299</span></a> <span class="k">pass</span> -</span><span id="L-4300"><a href="#L-4300"><span class="linenos">4300</span></a> +</span><span id="L-4298"><a href="#L-4298"><span class="linenos">4298</span></a> +</span><span id="L-4299"><a href="#L-4299"><span class="linenos">4299</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4300"><a href="#L-4300"><span class="linenos">4300</span></a> <span class="k">pass</span> </span><span id="L-4301"><a href="#L-4301"><span class="linenos">4301</span></a> -</span><span id="L-4302"><a href="#L-4302"><span class="linenos">4302</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4303"><a href="#L-4303"><span class="linenos">4303</span></a> <span class="k">pass</span> -</span><span id="L-4304"><a href="#L-4304"><span class="linenos">4304</span></a> +</span><span id="L-4302"><a href="#L-4302"><span class="linenos">4302</span></a> +</span><span id="L-4303"><a href="#L-4303"><span class="linenos">4303</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4304"><a href="#L-4304"><span class="linenos">4304</span></a> <span class="k">pass</span> </span><span id="L-4305"><a href="#L-4305"><span class="linenos">4305</span></a> -</span><span id="L-4306"><a href="#L-4306"><span class="linenos">4306</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4307"><a href="#L-4307"><span class="linenos">4307</span></a> <span class="k">pass</span> -</span><span id="L-4308"><a href="#L-4308"><span class="linenos">4308</span></a> +</span><span id="L-4306"><a href="#L-4306"><span class="linenos">4306</span></a> +</span><span id="L-4307"><a href="#L-4307"><span class="linenos">4307</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4308"><a href="#L-4308"><span class="linenos">4308</span></a> <span class="k">pass</span> </span><span id="L-4309"><a href="#L-4309"><span class="linenos">4309</span></a> -</span><span id="L-4310"><a href="#L-4310"><span class="linenos">4310</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4311"><a href="#L-4311"><span class="linenos">4311</span></a> <span class="k">pass</span> -</span><span id="L-4312"><a href="#L-4312"><span class="linenos">4312</span></a> +</span><span id="L-4310"><a href="#L-4310"><span class="linenos">4310</span></a> +</span><span id="L-4311"><a href="#L-4311"><span class="linenos">4311</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4312"><a href="#L-4312"><span class="linenos">4312</span></a> <span class="k">pass</span> </span><span id="L-4313"><a href="#L-4313"><span class="linenos">4313</span></a> -</span><span id="L-4314"><a href="#L-4314"><span class="linenos">4314</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4315"><a href="#L-4315"><span class="linenos">4315</span></a> <span class="k">pass</span> -</span><span id="L-4316"><a href="#L-4316"><span class="linenos">4316</span></a> +</span><span id="L-4314"><a href="#L-4314"><span class="linenos">4314</span></a> +</span><span id="L-4315"><a href="#L-4315"><span class="linenos">4315</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4316"><a href="#L-4316"><span class="linenos">4316</span></a> <span class="k">pass</span> </span><span id="L-4317"><a href="#L-4317"><span class="linenos">4317</span></a> -</span><span id="L-4318"><a href="#L-4318"><span class="linenos">4318</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4319"><a href="#L-4319"><span class="linenos">4319</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"typed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4320"><a href="#L-4320"><span class="linenos">4320</span></a> +</span><span id="L-4318"><a href="#L-4318"><span class="linenos">4318</span></a> +</span><span id="L-4319"><a href="#L-4319"><span class="linenos">4319</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4320"><a href="#L-4320"><span class="linenos">4320</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"typed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4321"><a href="#L-4321"><span class="linenos">4321</span></a> -</span><span id="L-4322"><a href="#L-4322"><span class="linenos">4322</span></a><span class="k">class</span> <span class="nc">Overlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4323"><a href="#L-4323"><span class="linenos">4323</span></a> <span class="k">pass</span> -</span><span id="L-4324"><a href="#L-4324"><span class="linenos">4324</span></a> +</span><span id="L-4322"><a href="#L-4322"><span class="linenos">4322</span></a> +</span><span id="L-4323"><a href="#L-4323"><span class="linenos">4323</span></a><span class="k">class</span> <span class="nc">Overlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4324"><a href="#L-4324"><span class="linenos">4324</span></a> <span class="k">pass</span> </span><span id="L-4325"><a href="#L-4325"><span class="linenos">4325</span></a> -</span><span id="L-4326"><a href="#L-4326"><span class="linenos">4326</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4327"><a href="#L-4327"><span class="linenos">4327</span></a> <span class="nd">@property</span> -</span><span id="L-4328"><a href="#L-4328"><span class="linenos">4328</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-4329"><a href="#L-4329"><span class="linenos">4329</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> -</span><span id="L-4330"><a href="#L-4330"><span class="linenos">4330</span></a> -</span><span id="L-4331"><a href="#L-4331"><span class="linenos">4331</span></a> <span class="nd">@property</span> -</span><span id="L-4332"><a href="#L-4332"><span class="linenos">4332</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4333"><a href="#L-4333"><span class="linenos">4333</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4334"><a href="#L-4334"><span class="linenos">4334</span></a> -</span><span id="L-4335"><a href="#L-4335"><span class="linenos">4335</span></a> <span class="nd">@property</span> -</span><span id="L-4336"><a href="#L-4336"><span class="linenos">4336</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4337"><a href="#L-4337"><span class="linenos">4337</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4338"><a href="#L-4338"><span class="linenos">4338</span></a> -</span><span id="L-4339"><a href="#L-4339"><span class="linenos">4339</span></a> <span class="nd">@classmethod</span> -</span><span id="L-4340"><a href="#L-4340"><span class="linenos">4340</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</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="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> -</span><span id="L-4341"><a href="#L-4341"><span class="linenos">4341</span></a><span class="w"> </span><span class="sd">"""Build a Dot object with a sequence of expressions."""</span> -</span><span id="L-4342"><a href="#L-4342"><span class="linenos">4342</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="L-4343"><a href="#L-4343"><span class="linenos">4343</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Dot requires >= 2 expressions."</span><span class="p">)</span> -</span><span id="L-4344"><a href="#L-4344"><span class="linenos">4344</span></a> -</span><span id="L-4345"><a href="#L-4345"><span class="linenos">4345</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Dot</span><span class="p">,</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">Dot</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expressions</span><span class="p">))</span> -</span><span id="L-4346"><a href="#L-4346"><span class="linenos">4346</span></a> -</span><span id="L-4347"><a href="#L-4347"><span class="linenos">4347</span></a> <span class="nd">@property</span> -</span><span id="L-4348"><a href="#L-4348"><span class="linenos">4348</span></a> <span class="k">def</span> <span class="nf">parts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4349"><a href="#L-4349"><span class="linenos">4349</span></a><span class="w"> </span><span class="sd">"""Return the parts of a table / column in order catalog, db, table."""</span> -</span><span id="L-4350"><a href="#L-4350"><span class="linenos">4350</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> -</span><span id="L-4351"><a href="#L-4351"><span class="linenos">4351</span></a> -</span><span id="L-4352"><a href="#L-4352"><span class="linenos">4352</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> -</span><span id="L-4353"><a href="#L-4353"><span class="linenos">4353</span></a> -</span><span id="L-4354"><a href="#L-4354"><span class="linenos">4354</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">COLUMN_PARTS</span><span class="p">:</span> -</span><span id="L-4355"><a href="#L-4355"><span class="linenos">4355</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-4356"><a href="#L-4356"><span class="linenos">4356</span></a> -</span><span id="L-4357"><a href="#L-4357"><span class="linenos">4357</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4358"><a href="#L-4358"><span class="linenos">4358</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> -</span><span id="L-4359"><a href="#L-4359"><span class="linenos">4359</span></a> -</span><span id="L-4360"><a href="#L-4360"><span class="linenos">4360</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> -</span><span id="L-4361"><a href="#L-4361"><span class="linenos">4361</span></a> <span class="k">return</span> <span class="n">parts</span> -</span><span id="L-4362"><a href="#L-4362"><span class="linenos">4362</span></a> +</span><span id="L-4326"><a href="#L-4326"><span class="linenos">4326</span></a> +</span><span id="L-4327"><a href="#L-4327"><span class="linenos">4327</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4328"><a href="#L-4328"><span class="linenos">4328</span></a> <span class="nd">@property</span> +</span><span id="L-4329"><a href="#L-4329"><span class="linenos">4329</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-4330"><a href="#L-4330"><span class="linenos">4330</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> +</span><span id="L-4331"><a href="#L-4331"><span class="linenos">4331</span></a> +</span><span id="L-4332"><a href="#L-4332"><span class="linenos">4332</span></a> <span class="nd">@property</span> +</span><span id="L-4333"><a href="#L-4333"><span class="linenos">4333</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4334"><a href="#L-4334"><span class="linenos">4334</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4335"><a href="#L-4335"><span class="linenos">4335</span></a> +</span><span id="L-4336"><a href="#L-4336"><span class="linenos">4336</span></a> <span class="nd">@property</span> +</span><span id="L-4337"><a href="#L-4337"><span class="linenos">4337</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4338"><a href="#L-4338"><span class="linenos">4338</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4339"><a href="#L-4339"><span class="linenos">4339</span></a> +</span><span id="L-4340"><a href="#L-4340"><span class="linenos">4340</span></a> <span class="nd">@classmethod</span> +</span><span id="L-4341"><a href="#L-4341"><span class="linenos">4341</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</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="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> +</span><span id="L-4342"><a href="#L-4342"><span class="linenos">4342</span></a><span class="w"> </span><span class="sd">"""Build a Dot object with a sequence of expressions."""</span> +</span><span id="L-4343"><a href="#L-4343"><span class="linenos">4343</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-4344"><a href="#L-4344"><span class="linenos">4344</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Dot requires >= 2 expressions."</span><span class="p">)</span> +</span><span id="L-4345"><a href="#L-4345"><span class="linenos">4345</span></a> +</span><span id="L-4346"><a href="#L-4346"><span class="linenos">4346</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Dot</span><span class="p">,</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">Dot</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expressions</span><span class="p">))</span> +</span><span id="L-4347"><a href="#L-4347"><span class="linenos">4347</span></a> +</span><span id="L-4348"><a href="#L-4348"><span class="linenos">4348</span></a> <span class="nd">@property</span> +</span><span id="L-4349"><a href="#L-4349"><span class="linenos">4349</span></a> <span class="k">def</span> <span class="nf">parts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4350"><a href="#L-4350"><span class="linenos">4350</span></a><span class="w"> </span><span class="sd">"""Return the parts of a table / column in order catalog, db, table."""</span> +</span><span id="L-4351"><a href="#L-4351"><span class="linenos">4351</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> +</span><span id="L-4352"><a href="#L-4352"><span class="linenos">4352</span></a> +</span><span id="L-4353"><a href="#L-4353"><span class="linenos">4353</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> +</span><span id="L-4354"><a href="#L-4354"><span class="linenos">4354</span></a> +</span><span id="L-4355"><a href="#L-4355"><span class="linenos">4355</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">COLUMN_PARTS</span><span class="p">:</span> +</span><span id="L-4356"><a href="#L-4356"><span class="linenos">4356</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="L-4357"><a href="#L-4357"><span class="linenos">4357</span></a> +</span><span id="L-4358"><a href="#L-4358"><span class="linenos">4358</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4359"><a href="#L-4359"><span class="linenos">4359</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> +</span><span id="L-4360"><a href="#L-4360"><span class="linenos">4360</span></a> +</span><span id="L-4361"><a href="#L-4361"><span class="linenos">4361</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> +</span><span id="L-4362"><a href="#L-4362"><span class="linenos">4362</span></a> <span class="k">return</span> <span class="n">parts</span> </span><span id="L-4363"><a href="#L-4363"><span class="linenos">4363</span></a> -</span><span id="L-4364"><a href="#L-4364"><span class="linenos">4364</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4365"><a href="#L-4365"><span class="linenos">4365</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4366"><a href="#L-4366"><span class="linenos">4366</span></a> +</span><span id="L-4364"><a href="#L-4364"><span class="linenos">4364</span></a> +</span><span id="L-4365"><a href="#L-4365"><span class="linenos">4365</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4366"><a href="#L-4366"><span class="linenos">4366</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4367"><a href="#L-4367"><span class="linenos">4367</span></a> -</span><span id="L-4368"><a href="#L-4368"><span class="linenos">4368</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4369"><a href="#L-4369"><span class="linenos">4369</span></a> <span class="k">pass</span> -</span><span id="L-4370"><a href="#L-4370"><span class="linenos">4370</span></a> +</span><span id="L-4368"><a href="#L-4368"><span class="linenos">4368</span></a> +</span><span id="L-4369"><a href="#L-4369"><span class="linenos">4369</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4370"><a href="#L-4370"><span class="linenos">4370</span></a> <span class="k">pass</span> </span><span id="L-4371"><a href="#L-4371"><span class="linenos">4371</span></a> -</span><span id="L-4372"><a href="#L-4372"><span class="linenos">4372</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4373"><a href="#L-4373"><span class="linenos">4373</span></a> <span class="k">pass</span> -</span><span id="L-4374"><a href="#L-4374"><span class="linenos">4374</span></a> +</span><span id="L-4372"><a href="#L-4372"><span class="linenos">4372</span></a> +</span><span id="L-4373"><a href="#L-4373"><span class="linenos">4373</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4374"><a href="#L-4374"><span class="linenos">4374</span></a> <span class="k">pass</span> </span><span id="L-4375"><a href="#L-4375"><span class="linenos">4375</span></a> -</span><span id="L-4376"><a href="#L-4376"><span class="linenos">4376</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4377"><a href="#L-4377"><span class="linenos">4377</span></a> <span class="k">pass</span> -</span><span id="L-4378"><a href="#L-4378"><span class="linenos">4378</span></a> +</span><span id="L-4376"><a href="#L-4376"><span class="linenos">4376</span></a> +</span><span id="L-4377"><a href="#L-4377"><span class="linenos">4377</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4378"><a href="#L-4378"><span class="linenos">4378</span></a> <span class="k">pass</span> </span><span id="L-4379"><a href="#L-4379"><span class="linenos">4379</span></a> -</span><span id="L-4380"><a href="#L-4380"><span class="linenos">4380</span></a><span class="c1"># Represents e.g. := in DuckDB which is mostly used for setting parameters</span> -</span><span id="L-4381"><a href="#L-4381"><span class="linenos">4381</span></a><span class="k">class</span> <span class="nc">PropertyEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4382"><a href="#L-4382"><span class="linenos">4382</span></a> <span class="k">pass</span> -</span><span id="L-4383"><a href="#L-4383"><span class="linenos">4383</span></a> +</span><span id="L-4380"><a href="#L-4380"><span class="linenos">4380</span></a> +</span><span id="L-4381"><a href="#L-4381"><span class="linenos">4381</span></a><span class="c1"># Represents e.g. := in DuckDB which is mostly used for setting parameters</span> +</span><span id="L-4382"><a href="#L-4382"><span class="linenos">4382</span></a><span class="k">class</span> <span class="nc">PropertyEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4383"><a href="#L-4383"><span class="linenos">4383</span></a> <span class="k">pass</span> </span><span id="L-4384"><a href="#L-4384"><span class="linenos">4384</span></a> -</span><span id="L-4385"><a href="#L-4385"><span class="linenos">4385</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4386"><a href="#L-4386"><span class="linenos">4386</span></a> <span class="k">pass</span> -</span><span id="L-4387"><a href="#L-4387"><span class="linenos">4387</span></a> +</span><span id="L-4385"><a href="#L-4385"><span class="linenos">4385</span></a> +</span><span id="L-4386"><a href="#L-4386"><span class="linenos">4386</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4387"><a href="#L-4387"><span class="linenos">4387</span></a> <span class="k">pass</span> </span><span id="L-4388"><a href="#L-4388"><span class="linenos">4388</span></a> -</span><span id="L-4389"><a href="#L-4389"><span class="linenos">4389</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4390"><a href="#L-4390"><span class="linenos">4390</span></a> <span class="k">pass</span> -</span><span id="L-4391"><a href="#L-4391"><span class="linenos">4391</span></a> +</span><span id="L-4389"><a href="#L-4389"><span class="linenos">4389</span></a> +</span><span id="L-4390"><a href="#L-4390"><span class="linenos">4390</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4391"><a href="#L-4391"><span class="linenos">4391</span></a> <span class="k">pass</span> </span><span id="L-4392"><a href="#L-4392"><span class="linenos">4392</span></a> -</span><span id="L-4393"><a href="#L-4393"><span class="linenos">4393</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4394"><a href="#L-4394"><span class="linenos">4394</span></a> <span class="k">pass</span> -</span><span id="L-4395"><a href="#L-4395"><span class="linenos">4395</span></a> +</span><span id="L-4393"><a href="#L-4393"><span class="linenos">4393</span></a> +</span><span id="L-4394"><a href="#L-4394"><span class="linenos">4394</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4395"><a href="#L-4395"><span class="linenos">4395</span></a> <span class="k">pass</span> </span><span id="L-4396"><a href="#L-4396"><span class="linenos">4396</span></a> -</span><span id="L-4397"><a href="#L-4397"><span class="linenos">4397</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4398"><a href="#L-4398"><span class="linenos">4398</span></a> <span class="k">pass</span> -</span><span id="L-4399"><a href="#L-4399"><span class="linenos">4399</span></a> +</span><span id="L-4397"><a href="#L-4397"><span class="linenos">4397</span></a> +</span><span id="L-4398"><a href="#L-4398"><span class="linenos">4398</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4399"><a href="#L-4399"><span class="linenos">4399</span></a> <span class="k">pass</span> </span><span id="L-4400"><a href="#L-4400"><span class="linenos">4400</span></a> -</span><span id="L-4401"><a href="#L-4401"><span class="linenos">4401</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4402"><a href="#L-4402"><span class="linenos">4402</span></a> <span class="k">pass</span> -</span><span id="L-4403"><a href="#L-4403"><span class="linenos">4403</span></a> +</span><span id="L-4401"><a href="#L-4401"><span class="linenos">4401</span></a> +</span><span id="L-4402"><a href="#L-4402"><span class="linenos">4402</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4403"><a href="#L-4403"><span class="linenos">4403</span></a> <span class="k">pass</span> </span><span id="L-4404"><a href="#L-4404"><span class="linenos">4404</span></a> -</span><span id="L-4405"><a href="#L-4405"><span class="linenos">4405</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4406"><a href="#L-4406"><span class="linenos">4406</span></a> <span class="k">pass</span> -</span><span id="L-4407"><a href="#L-4407"><span class="linenos">4407</span></a> +</span><span id="L-4405"><a href="#L-4405"><span class="linenos">4405</span></a> +</span><span id="L-4406"><a href="#L-4406"><span class="linenos">4406</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4407"><a href="#L-4407"><span class="linenos">4407</span></a> <span class="k">pass</span> </span><span id="L-4408"><a href="#L-4408"><span class="linenos">4408</span></a> -</span><span id="L-4409"><a href="#L-4409"><span class="linenos">4409</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4410"><a href="#L-4410"><span class="linenos">4410</span></a> <span class="k">pass</span> -</span><span id="L-4411"><a href="#L-4411"><span class="linenos">4411</span></a> +</span><span id="L-4409"><a href="#L-4409"><span class="linenos">4409</span></a> +</span><span id="L-4410"><a href="#L-4410"><span class="linenos">4410</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4411"><a href="#L-4411"><span class="linenos">4411</span></a> <span class="k">pass</span> </span><span id="L-4412"><a href="#L-4412"><span class="linenos">4412</span></a> -</span><span id="L-4413"><a href="#L-4413"><span class="linenos">4413</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4414"><a href="#L-4414"><span class="linenos">4414</span></a> <span class="k">pass</span> -</span><span id="L-4415"><a href="#L-4415"><span class="linenos">4415</span></a> +</span><span id="L-4413"><a href="#L-4413"><span class="linenos">4413</span></a> +</span><span id="L-4414"><a href="#L-4414"><span class="linenos">4414</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4415"><a href="#L-4415"><span class="linenos">4415</span></a> <span class="k">pass</span> </span><span id="L-4416"><a href="#L-4416"><span class="linenos">4416</span></a> -</span><span id="L-4417"><a href="#L-4417"><span class="linenos">4417</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4418"><a href="#L-4418"><span class="linenos">4418</span></a> <span class="k">pass</span> -</span><span id="L-4419"><a href="#L-4419"><span class="linenos">4419</span></a> +</span><span id="L-4417"><a href="#L-4417"><span class="linenos">4417</span></a> +</span><span id="L-4418"><a href="#L-4418"><span class="linenos">4418</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4419"><a href="#L-4419"><span class="linenos">4419</span></a> <span class="k">pass</span> </span><span id="L-4420"><a href="#L-4420"><span class="linenos">4420</span></a> -</span><span id="L-4421"><a href="#L-4421"><span class="linenos">4421</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4422"><a href="#L-4422"><span class="linenos">4422</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> -</span><span id="L-4423"><a href="#L-4423"><span class="linenos">4423</span></a> +</span><span id="L-4421"><a href="#L-4421"><span class="linenos">4421</span></a> +</span><span id="L-4422"><a href="#L-4422"><span class="linenos">4422</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4423"><a href="#L-4423"><span class="linenos">4423</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> </span><span id="L-4424"><a href="#L-4424"><span class="linenos">4424</span></a> -</span><span id="L-4425"><a href="#L-4425"><span class="linenos">4425</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4426"><a href="#L-4426"><span class="linenos">4426</span></a> <span class="k">pass</span> -</span><span id="L-4427"><a href="#L-4427"><span class="linenos">4427</span></a> +</span><span id="L-4425"><a href="#L-4425"><span class="linenos">4425</span></a> +</span><span id="L-4426"><a href="#L-4426"><span class="linenos">4426</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4427"><a href="#L-4427"><span class="linenos">4427</span></a> <span class="k">pass</span> </span><span id="L-4428"><a href="#L-4428"><span class="linenos">4428</span></a> -</span><span id="L-4429"><a href="#L-4429"><span class="linenos">4429</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4430"><a href="#L-4430"><span class="linenos">4430</span></a> <span class="k">pass</span> -</span><span id="L-4431"><a href="#L-4431"><span class="linenos">4431</span></a> +</span><span id="L-4429"><a href="#L-4429"><span class="linenos">4429</span></a> +</span><span id="L-4430"><a href="#L-4430"><span class="linenos">4430</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4431"><a href="#L-4431"><span class="linenos">4431</span></a> <span class="k">pass</span> </span><span id="L-4432"><a href="#L-4432"><span class="linenos">4432</span></a> -</span><span id="L-4433"><a href="#L-4433"><span class="linenos">4433</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4434"><a href="#L-4434"><span class="linenos">4434</span></a> <span class="k">pass</span> -</span><span id="L-4435"><a href="#L-4435"><span class="linenos">4435</span></a> +</span><span id="L-4433"><a href="#L-4433"><span class="linenos">4433</span></a> +</span><span id="L-4434"><a href="#L-4434"><span class="linenos">4434</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4435"><a href="#L-4435"><span class="linenos">4435</span></a> <span class="k">pass</span> </span><span id="L-4436"><a href="#L-4436"><span class="linenos">4436</span></a> -</span><span id="L-4437"><a href="#L-4437"><span class="linenos">4437</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4438"><a href="#L-4438"><span class="linenos">4438</span></a> <span class="k">pass</span> -</span><span id="L-4439"><a href="#L-4439"><span class="linenos">4439</span></a> +</span><span id="L-4437"><a href="#L-4437"><span class="linenos">4437</span></a> +</span><span id="L-4438"><a href="#L-4438"><span class="linenos">4438</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4439"><a href="#L-4439"><span class="linenos">4439</span></a> <span class="k">pass</span> </span><span id="L-4440"><a href="#L-4440"><span class="linenos">4440</span></a> -</span><span id="L-4441"><a href="#L-4441"><span class="linenos">4441</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4442"><a href="#L-4442"><span class="linenos">4442</span></a> <span class="k">pass</span> -</span><span id="L-4443"><a href="#L-4443"><span class="linenos">4443</span></a> +</span><span id="L-4441"><a href="#L-4441"><span class="linenos">4441</span></a> +</span><span id="L-4442"><a href="#L-4442"><span class="linenos">4442</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4443"><a href="#L-4443"><span class="linenos">4443</span></a> <span class="k">pass</span> </span><span id="L-4444"><a href="#L-4444"><span class="linenos">4444</span></a> -</span><span id="L-4445"><a href="#L-4445"><span class="linenos">4445</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4446"><a href="#L-4446"><span class="linenos">4446</span></a> <span class="k">pass</span> -</span><span id="L-4447"><a href="#L-4447"><span class="linenos">4447</span></a> +</span><span id="L-4445"><a href="#L-4445"><span class="linenos">4445</span></a> +</span><span id="L-4446"><a href="#L-4446"><span class="linenos">4446</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4447"><a href="#L-4447"><span class="linenos">4447</span></a> <span class="k">pass</span> </span><span id="L-4448"><a href="#L-4448"><span class="linenos">4448</span></a> -</span><span id="L-4449"><a href="#L-4449"><span class="linenos">4449</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4450"><a href="#L-4450"><span class="linenos">4450</span></a> <span class="k">pass</span> -</span><span id="L-4451"><a href="#L-4451"><span class="linenos">4451</span></a> +</span><span id="L-4449"><a href="#L-4449"><span class="linenos">4449</span></a> +</span><span id="L-4450"><a href="#L-4450"><span class="linenos">4450</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4451"><a href="#L-4451"><span class="linenos">4451</span></a> <span class="k">pass</span> </span><span id="L-4452"><a href="#L-4452"><span class="linenos">4452</span></a> -</span><span id="L-4453"><a href="#L-4453"><span class="linenos">4453</span></a><span class="c1"># https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATH</span> -</span><span id="L-4454"><a href="#L-4454"><span class="linenos">4454</span></a><span class="k">class</span> <span class="nc">Operator</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4455"><a href="#L-4455"><span class="linenos">4455</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"operator"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4456"><a href="#L-4456"><span class="linenos">4456</span></a> +</span><span id="L-4453"><a href="#L-4453"><span class="linenos">4453</span></a> +</span><span id="L-4454"><a href="#L-4454"><span class="linenos">4454</span></a><span class="c1"># https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATH</span> +</span><span id="L-4455"><a href="#L-4455"><span class="linenos">4455</span></a><span class="k">class</span> <span class="nc">Operator</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4456"><a href="#L-4456"><span class="linenos">4456</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"operator"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4457"><a href="#L-4457"><span class="linenos">4457</span></a> -</span><span id="L-4458"><a href="#L-4458"><span class="linenos">4458</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4459"><a href="#L-4459"><span class="linenos">4459</span></a> <span class="k">pass</span> -</span><span id="L-4460"><a href="#L-4460"><span class="linenos">4460</span></a> +</span><span id="L-4458"><a href="#L-4458"><span class="linenos">4458</span></a> +</span><span id="L-4459"><a href="#L-4459"><span class="linenos">4459</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4460"><a href="#L-4460"><span class="linenos">4460</span></a> <span class="k">pass</span> </span><span id="L-4461"><a href="#L-4461"><span class="linenos">4461</span></a> -</span><span id="L-4462"><a href="#L-4462"><span class="linenos">4462</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4463"><a href="#L-4463"><span class="linenos">4463</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4464"><a href="#L-4464"><span class="linenos">4464</span></a> +</span><span id="L-4462"><a href="#L-4462"><span class="linenos">4462</span></a> +</span><span id="L-4463"><a href="#L-4463"><span class="linenos">4463</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4464"><a href="#L-4464"><span class="linenos">4464</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4465"><a href="#L-4465"><span class="linenos">4465</span></a> -</span><span id="L-4466"><a href="#L-4466"><span class="linenos">4466</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-4467"><a href="#L-4467"><span class="linenos">4467</span></a> <span class="k">pass</span> -</span><span id="L-4468"><a href="#L-4468"><span class="linenos">4468</span></a> +</span><span id="L-4466"><a href="#L-4466"><span class="linenos">4466</span></a> +</span><span id="L-4467"><a href="#L-4467"><span class="linenos">4467</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-4468"><a href="#L-4468"><span class="linenos">4468</span></a> <span class="k">pass</span> </span><span id="L-4469"><a href="#L-4469"><span class="linenos">4469</span></a> -</span><span id="L-4470"><a href="#L-4470"><span class="linenos">4470</span></a><span class="c1"># Unary Expressions</span> -</span><span id="L-4471"><a href="#L-4471"><span class="linenos">4471</span></a><span class="c1"># (NOT a)</span> -</span><span id="L-4472"><a href="#L-4472"><span class="linenos">4472</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-4473"><a href="#L-4473"><span class="linenos">4473</span></a> <span class="k">pass</span> -</span><span id="L-4474"><a href="#L-4474"><span class="linenos">4474</span></a> +</span><span id="L-4470"><a href="#L-4470"><span class="linenos">4470</span></a> +</span><span id="L-4471"><a href="#L-4471"><span class="linenos">4471</span></a><span class="c1"># Unary Expressions</span> +</span><span id="L-4472"><a href="#L-4472"><span class="linenos">4472</span></a><span class="c1"># (NOT a)</span> +</span><span id="L-4473"><a href="#L-4473"><span class="linenos">4473</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-4474"><a href="#L-4474"><span class="linenos">4474</span></a> <span class="k">pass</span> </span><span id="L-4475"><a href="#L-4475"><span class="linenos">4475</span></a> -</span><span id="L-4476"><a href="#L-4476"><span class="linenos">4476</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="L-4477"><a href="#L-4477"><span class="linenos">4477</span></a> <span class="k">pass</span> -</span><span id="L-4478"><a href="#L-4478"><span class="linenos">4478</span></a> +</span><span id="L-4476"><a href="#L-4476"><span class="linenos">4476</span></a> +</span><span id="L-4477"><a href="#L-4477"><span class="linenos">4477</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-4478"><a href="#L-4478"><span class="linenos">4478</span></a> <span class="k">pass</span> </span><span id="L-4479"><a href="#L-4479"><span class="linenos">4479</span></a> -</span><span id="L-4480"><a href="#L-4480"><span class="linenos">4480</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="L-4481"><a href="#L-4481"><span class="linenos">4481</span></a> <span class="k">pass</span> -</span><span id="L-4482"><a href="#L-4482"><span class="linenos">4482</span></a> +</span><span id="L-4480"><a href="#L-4480"><span class="linenos">4480</span></a> +</span><span id="L-4481"><a href="#L-4481"><span class="linenos">4481</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-4482"><a href="#L-4482"><span class="linenos">4482</span></a> <span class="k">pass</span> </span><span id="L-4483"><a href="#L-4483"><span class="linenos">4483</span></a> -</span><span id="L-4484"><a href="#L-4484"><span class="linenos">4484</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="L-4485"><a href="#L-4485"><span class="linenos">4485</span></a> <span class="nd">@property</span> -</span><span id="L-4486"><a href="#L-4486"><span class="linenos">4486</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4487"><a href="#L-4487"><span class="linenos">4487</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4488"><a href="#L-4488"><span class="linenos">4488</span></a> +</span><span id="L-4484"><a href="#L-4484"><span class="linenos">4484</span></a> +</span><span id="L-4485"><a href="#L-4485"><span class="linenos">4485</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-4486"><a href="#L-4486"><span class="linenos">4486</span></a> <span class="nd">@property</span> +</span><span id="L-4487"><a href="#L-4487"><span class="linenos">4487</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4488"><a href="#L-4488"><span class="linenos">4488</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span><span id="L-4489"><a href="#L-4489"><span class="linenos">4489</span></a> -</span><span id="L-4490"><a href="#L-4490"><span class="linenos">4490</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="L-4491"><a href="#L-4491"><span class="linenos">4491</span></a> <span class="k">pass</span> -</span><span id="L-4492"><a href="#L-4492"><span class="linenos">4492</span></a> +</span><span id="L-4490"><a href="#L-4490"><span class="linenos">4490</span></a> +</span><span id="L-4491"><a href="#L-4491"><span class="linenos">4491</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-4492"><a href="#L-4492"><span class="linenos">4492</span></a> <span class="k">pass</span> </span><span id="L-4493"><a href="#L-4493"><span class="linenos">4493</span></a> -</span><span id="L-4494"><a href="#L-4494"><span class="linenos">4494</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4495"><a href="#L-4495"><span class="linenos">4495</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4496"><a href="#L-4496"><span class="linenos">4496</span></a> -</span><span id="L-4497"><a href="#L-4497"><span class="linenos">4497</span></a> <span class="nd">@property</span> -</span><span id="L-4498"><a href="#L-4498"><span class="linenos">4498</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4499"><a href="#L-4499"><span class="linenos">4499</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> -</span><span id="L-4500"><a href="#L-4500"><span class="linenos">4500</span></a> +</span><span id="L-4494"><a href="#L-4494"><span class="linenos">4494</span></a> +</span><span id="L-4495"><a href="#L-4495"><span class="linenos">4495</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4496"><a href="#L-4496"><span class="linenos">4496</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4497"><a href="#L-4497"><span class="linenos">4497</span></a> +</span><span id="L-4498"><a href="#L-4498"><span class="linenos">4498</span></a> <span class="nd">@property</span> +</span><span id="L-4499"><a href="#L-4499"><span class="linenos">4499</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4500"><a href="#L-4500"><span class="linenos">4500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> </span><span id="L-4501"><a href="#L-4501"><span class="linenos">4501</span></a> -</span><span id="L-4502"><a href="#L-4502"><span class="linenos">4502</span></a><span class="c1"># BigQuery requires the UNPIVOT column list aliases to be either strings or ints, but</span> -</span><span id="L-4503"><a href="#L-4503"><span class="linenos">4503</span></a><span class="c1"># other dialects require identifiers. This enables us to transpile between them easily.</span> -</span><span id="L-4504"><a href="#L-4504"><span class="linenos">4504</span></a><span class="k">class</span> <span class="nc">PivotAlias</span><span class="p">(</span><span class="n">Alias</span><span class="p">):</span> -</span><span id="L-4505"><a href="#L-4505"><span class="linenos">4505</span></a> <span class="k">pass</span> -</span><span id="L-4506"><a href="#L-4506"><span class="linenos">4506</span></a> +</span><span id="L-4502"><a href="#L-4502"><span class="linenos">4502</span></a> +</span><span id="L-4503"><a href="#L-4503"><span class="linenos">4503</span></a><span class="c1"># BigQuery requires the UNPIVOT column list aliases to be either strings or ints, but</span> +</span><span id="L-4504"><a href="#L-4504"><span class="linenos">4504</span></a><span class="c1"># other dialects require identifiers. This enables us to transpile between them easily.</span> +</span><span id="L-4505"><a href="#L-4505"><span class="linenos">4505</span></a><span class="k">class</span> <span class="nc">PivotAlias</span><span class="p">(</span><span class="n">Alias</span><span class="p">):</span> +</span><span id="L-4506"><a href="#L-4506"><span class="linenos">4506</span></a> <span class="k">pass</span> </span><span id="L-4507"><a href="#L-4507"><span class="linenos">4507</span></a> -</span><span id="L-4508"><a href="#L-4508"><span class="linenos">4508</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4509"><a href="#L-4509"><span class="linenos">4509</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4510"><a href="#L-4510"><span class="linenos">4510</span></a> -</span><span id="L-4511"><a href="#L-4511"><span class="linenos">4511</span></a> <span class="nd">@property</span> -</span><span id="L-4512"><a href="#L-4512"><span class="linenos">4512</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-4513"><a href="#L-4513"><span class="linenos">4513</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-4514"><a href="#L-4514"><span class="linenos">4514</span></a> +</span><span id="L-4508"><a href="#L-4508"><span class="linenos">4508</span></a> +</span><span id="L-4509"><a href="#L-4509"><span class="linenos">4509</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4510"><a href="#L-4510"><span class="linenos">4510</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4511"><a href="#L-4511"><span class="linenos">4511</span></a> +</span><span id="L-4512"><a href="#L-4512"><span class="linenos">4512</span></a> <span class="nd">@property</span> +</span><span id="L-4513"><a href="#L-4513"><span class="linenos">4513</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-4514"><a href="#L-4514"><span class="linenos">4514</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> </span><span id="L-4515"><a href="#L-4515"><span class="linenos">4515</span></a> -</span><span id="L-4516"><a href="#L-4516"><span class="linenos">4516</span></a><span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/query-super.html</span> -</span><span id="L-4517"><a href="#L-4517"><span class="linenos">4517</span></a><span class="k">class</span> <span class="nc">AtIndex</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4518"><a href="#L-4518"><span class="linenos">4518</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4519"><a href="#L-4519"><span class="linenos">4519</span></a> +</span><span id="L-4516"><a href="#L-4516"><span class="linenos">4516</span></a> +</span><span id="L-4517"><a href="#L-4517"><span class="linenos">4517</span></a><span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/query-super.html</span> +</span><span id="L-4518"><a href="#L-4518"><span class="linenos">4518</span></a><span class="k">class</span> <span class="nc">AtIndex</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4519"><a href="#L-4519"><span class="linenos">4519</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4520"><a href="#L-4520"><span class="linenos">4520</span></a> -</span><span id="L-4521"><a href="#L-4521"><span class="linenos">4521</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4522"><a href="#L-4522"><span class="linenos">4522</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4523"><a href="#L-4523"><span class="linenos">4523</span></a> +</span><span id="L-4521"><a href="#L-4521"><span class="linenos">4521</span></a> +</span><span id="L-4522"><a href="#L-4522"><span class="linenos">4522</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4523"><a href="#L-4523"><span class="linenos">4523</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4524"><a href="#L-4524"><span class="linenos">4524</span></a> -</span><span id="L-4525"><a href="#L-4525"><span class="linenos">4525</span></a><span class="k">class</span> <span class="nc">FromTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4526"><a href="#L-4526"><span class="linenos">4526</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4527"><a href="#L-4527"><span class="linenos">4527</span></a> +</span><span id="L-4525"><a href="#L-4525"><span class="linenos">4525</span></a> +</span><span id="L-4526"><a href="#L-4526"><span class="linenos">4526</span></a><span class="k">class</span> <span class="nc">FromTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4527"><a href="#L-4527"><span class="linenos">4527</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4528"><a href="#L-4528"><span class="linenos">4528</span></a> -</span><span id="L-4529"><a href="#L-4529"><span class="linenos">4529</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4530"><a href="#L-4530"><span class="linenos">4530</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4531"><a href="#L-4531"><span class="linenos">4531</span></a> +</span><span id="L-4529"><a href="#L-4529"><span class="linenos">4529</span></a> +</span><span id="L-4530"><a href="#L-4530"><span class="linenos">4530</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4531"><a href="#L-4531"><span class="linenos">4531</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4532"><a href="#L-4532"><span class="linenos">4532</span></a> -</span><span id="L-4533"><a href="#L-4533"><span class="linenos">4533</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-4534"><a href="#L-4534"><span class="linenos">4534</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/operators#array_subscript_operator</span> -</span><span id="L-4535"><a href="#L-4535"><span class="linenos">4535</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4536"><a href="#L-4536"><span class="linenos">4536</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4537"><a href="#L-4537"><span class="linenos">4537</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4538"><a href="#L-4538"><span class="linenos">4538</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4539"><a href="#L-4539"><span class="linenos">4539</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4540"><a href="#L-4540"><span class="linenos">4540</span></a> <span class="s2">"returns_list_for_maps"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4541"><a href="#L-4541"><span class="linenos">4541</span></a> <span class="p">}</span> -</span><span id="L-4542"><a href="#L-4542"><span class="linenos">4542</span></a> -</span><span id="L-4543"><a href="#L-4543"><span class="linenos">4543</span></a> <span class="nd">@property</span> -</span><span id="L-4544"><a href="#L-4544"><span class="linenos">4544</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4545"><a href="#L-4545"><span class="linenos">4545</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-4546"><a href="#L-4546"><span class="linenos">4546</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">output_name</span> -</span><span id="L-4547"><a href="#L-4547"><span class="linenos">4547</span></a> -</span><span id="L-4548"><a href="#L-4548"><span class="linenos">4548</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">output_name</span> -</span><span id="L-4549"><a href="#L-4549"><span class="linenos">4549</span></a> +</span><span id="L-4533"><a href="#L-4533"><span class="linenos">4533</span></a> +</span><span id="L-4534"><a href="#L-4534"><span class="linenos">4534</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-4535"><a href="#L-4535"><span class="linenos">4535</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/operators#array_subscript_operator</span> +</span><span id="L-4536"><a href="#L-4536"><span class="linenos">4536</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4537"><a href="#L-4537"><span class="linenos">4537</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4538"><a href="#L-4538"><span class="linenos">4538</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4539"><a href="#L-4539"><span class="linenos">4539</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4540"><a href="#L-4540"><span class="linenos">4540</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4541"><a href="#L-4541"><span class="linenos">4541</span></a> <span class="s2">"returns_list_for_maps"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4542"><a href="#L-4542"><span class="linenos">4542</span></a> <span class="p">}</span> +</span><span id="L-4543"><a href="#L-4543"><span class="linenos">4543</span></a> +</span><span id="L-4544"><a href="#L-4544"><span class="linenos">4544</span></a> <span class="nd">@property</span> +</span><span id="L-4545"><a href="#L-4545"><span class="linenos">4545</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4546"><a href="#L-4546"><span class="linenos">4546</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-4547"><a href="#L-4547"><span class="linenos">4547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">output_name</span> +</span><span id="L-4548"><a href="#L-4548"><span class="linenos">4548</span></a> +</span><span id="L-4549"><a href="#L-4549"><span class="linenos">4549</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">output_name</span> </span><span id="L-4550"><a href="#L-4550"><span class="linenos">4550</span></a> -</span><span id="L-4551"><a href="#L-4551"><span class="linenos">4551</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4552"><a href="#L-4552"><span class="linenos">4552</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4553"><a href="#L-4553"><span class="linenos">4553</span></a> +</span><span id="L-4551"><a href="#L-4551"><span class="linenos">4551</span></a> +</span><span id="L-4552"><a href="#L-4552"><span class="linenos">4552</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4553"><a href="#L-4553"><span class="linenos">4553</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4554"><a href="#L-4554"><span class="linenos">4554</span></a> -</span><span id="L-4555"><a href="#L-4555"><span class="linenos">4555</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-4556"><a href="#L-4556"><span class="linenos">4556</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4557"><a href="#L-4557"><span class="linenos">4557</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4558"><a href="#L-4558"><span class="linenos">4558</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4559"><a href="#L-4559"><span class="linenos">4559</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4560"><a href="#L-4560"><span class="linenos">4560</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4561"><a href="#L-4561"><span class="linenos">4561</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4562"><a href="#L-4562"><span class="linenos">4562</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4563"><a href="#L-4563"><span class="linenos">4563</span></a> <span class="p">}</span> -</span><span id="L-4564"><a href="#L-4564"><span class="linenos">4564</span></a> +</span><span id="L-4555"><a href="#L-4555"><span class="linenos">4555</span></a> +</span><span id="L-4556"><a href="#L-4556"><span class="linenos">4556</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-4557"><a href="#L-4557"><span class="linenos">4557</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4558"><a href="#L-4558"><span class="linenos">4558</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4559"><a href="#L-4559"><span class="linenos">4559</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4560"><a href="#L-4560"><span class="linenos">4560</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4561"><a href="#L-4561"><span class="linenos">4561</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4562"><a href="#L-4562"><span class="linenos">4562</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4563"><a href="#L-4563"><span class="linenos">4563</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4564"><a href="#L-4564"><span class="linenos">4564</span></a> <span class="p">}</span> </span><span id="L-4565"><a href="#L-4565"><span class="linenos">4565</span></a> -</span><span id="L-4566"><a href="#L-4566"><span class="linenos">4566</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/procedural-language#for-in</span> -</span><span id="L-4567"><a href="#L-4567"><span class="linenos">4567</span></a><span class="k">class</span> <span class="nc">ForIn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4568"><a href="#L-4568"><span class="linenos">4568</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4569"><a href="#L-4569"><span class="linenos">4569</span></a> +</span><span id="L-4566"><a href="#L-4566"><span class="linenos">4566</span></a> +</span><span id="L-4567"><a href="#L-4567"><span class="linenos">4567</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/procedural-language#for-in</span> +</span><span id="L-4568"><a href="#L-4568"><span class="linenos">4568</span></a><span class="k">class</span> <span class="nc">ForIn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4569"><a href="#L-4569"><span class="linenos">4569</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4570"><a href="#L-4570"><span class="linenos">4570</span></a> -</span><span id="L-4571"><a href="#L-4571"><span class="linenos">4571</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4572"><a href="#L-4572"><span class="linenos">4572</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> -</span><span id="L-4573"><a href="#L-4573"><span class="linenos">4573</span></a> -</span><span id="L-4574"><a href="#L-4574"><span class="linenos">4574</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4575"><a href="#L-4575"><span class="linenos">4575</span></a> -</span><span id="L-4576"><a href="#L-4576"><span class="linenos">4576</span></a> <span class="n">UNABBREVIATED_UNIT_NAME</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4577"><a href="#L-4577"><span class="linenos">4577</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"DAY"</span><span class="p">,</span> -</span><span id="L-4578"><a href="#L-4578"><span class="linenos">4578</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"HOUR"</span><span class="p">,</span> -</span><span id="L-4579"><a href="#L-4579"><span class="linenos">4579</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"MINUTE"</span><span class="p">,</span> -</span><span id="L-4580"><a href="#L-4580"><span class="linenos">4580</span></a> <span class="s2">"MS"</span><span class="p">:</span> <span class="s2">"MILLISECOND"</span><span class="p">,</span> -</span><span id="L-4581"><a href="#L-4581"><span class="linenos">4581</span></a> <span class="s2">"NS"</span><span class="p">:</span> <span class="s2">"NANOSECOND"</span><span class="p">,</span> -</span><span id="L-4582"><a href="#L-4582"><span class="linenos">4582</span></a> <span class="s2">"Q"</span><span class="p">:</span> <span class="s2">"QUARTER"</span><span class="p">,</span> -</span><span id="L-4583"><a href="#L-4583"><span class="linenos">4583</span></a> <span class="s2">"S"</span><span class="p">:</span> <span class="s2">"SECOND"</span><span class="p">,</span> -</span><span id="L-4584"><a href="#L-4584"><span class="linenos">4584</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"MICROSECOND"</span><span class="p">,</span> -</span><span id="L-4585"><a href="#L-4585"><span class="linenos">4585</span></a> <span class="s2">"W"</span><span class="p">:</span> <span class="s2">"WEEK"</span><span class="p">,</span> -</span><span id="L-4586"><a href="#L-4586"><span class="linenos">4586</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"YEAR"</span><span class="p">,</span> -</span><span id="L-4587"><a href="#L-4587"><span class="linenos">4587</span></a> <span class="p">}</span> -</span><span id="L-4588"><a href="#L-4588"><span class="linenos">4588</span></a> -</span><span id="L-4589"><a href="#L-4589"><span class="linenos">4589</span></a> <span class="n">VAR_LIKE</span> <span class="o">=</span> <span class="p">(</span><span class="n">Column</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)</span> -</span><span id="L-4590"><a href="#L-4590"><span class="linenos">4590</span></a> -</span><span id="L-4591"><a href="#L-4591"><span class="linenos">4591</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-4592"><a href="#L-4592"><span class="linenos">4592</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="L-4593"><a href="#L-4593"><span class="linenos">4593</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> -</span><span id="L-4594"><a href="#L-4594"><span class="linenos">4594</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span> -</span><span id="L-4595"><a href="#L-4595"><span class="linenos">4595</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-4596"><a href="#L-4596"><span class="linenos">4596</span></a> <span class="p">)</span> -</span><span id="L-4597"><a href="#L-4597"><span class="linenos">4597</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="L-4598"><a href="#L-4598"><span class="linenos">4598</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="L-4599"><a href="#L-4599"><span class="linenos">4599</span></a> -</span><span id="L-4600"><a href="#L-4600"><span class="linenos">4600</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-4601"><a href="#L-4601"><span class="linenos">4601</span></a> -</span><span id="L-4602"><a href="#L-4602"><span class="linenos">4602</span></a> <span class="nd">@property</span> -</span><span id="L-4603"><a href="#L-4603"><span class="linenos">4603</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">Var</span> <span class="o">|</span> <span class="n">IntervalSpan</span><span class="p">]:</span> -</span><span id="L-4604"><a href="#L-4604"><span class="linenos">4604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="L-4605"><a href="#L-4605"><span class="linenos">4605</span></a> +</span><span id="L-4571"><a href="#L-4571"><span class="linenos">4571</span></a> +</span><span id="L-4572"><a href="#L-4572"><span class="linenos">4572</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4573"><a href="#L-4573"><span class="linenos">4573</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> +</span><span id="L-4574"><a href="#L-4574"><span class="linenos">4574</span></a> +</span><span id="L-4575"><a href="#L-4575"><span class="linenos">4575</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4576"><a href="#L-4576"><span class="linenos">4576</span></a> +</span><span id="L-4577"><a href="#L-4577"><span class="linenos">4577</span></a> <span class="n">UNABBREVIATED_UNIT_NAME</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4578"><a href="#L-4578"><span class="linenos">4578</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"DAY"</span><span class="p">,</span> +</span><span id="L-4579"><a href="#L-4579"><span class="linenos">4579</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"HOUR"</span><span class="p">,</span> +</span><span id="L-4580"><a href="#L-4580"><span class="linenos">4580</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"MINUTE"</span><span class="p">,</span> +</span><span id="L-4581"><a href="#L-4581"><span class="linenos">4581</span></a> <span class="s2">"MS"</span><span class="p">:</span> <span class="s2">"MILLISECOND"</span><span class="p">,</span> +</span><span id="L-4582"><a href="#L-4582"><span class="linenos">4582</span></a> <span class="s2">"NS"</span><span class="p">:</span> <span class="s2">"NANOSECOND"</span><span class="p">,</span> +</span><span id="L-4583"><a href="#L-4583"><span class="linenos">4583</span></a> <span class="s2">"Q"</span><span class="p">:</span> <span class="s2">"QUARTER"</span><span class="p">,</span> +</span><span id="L-4584"><a href="#L-4584"><span class="linenos">4584</span></a> <span class="s2">"S"</span><span class="p">:</span> <span class="s2">"SECOND"</span><span class="p">,</span> +</span><span id="L-4585"><a href="#L-4585"><span class="linenos">4585</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"MICROSECOND"</span><span class="p">,</span> +</span><span id="L-4586"><a href="#L-4586"><span class="linenos">4586</span></a> <span class="s2">"W"</span><span class="p">:</span> <span class="s2">"WEEK"</span><span class="p">,</span> +</span><span id="L-4587"><a href="#L-4587"><span class="linenos">4587</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"YEAR"</span><span class="p">,</span> +</span><span id="L-4588"><a href="#L-4588"><span class="linenos">4588</span></a> <span class="p">}</span> +</span><span id="L-4589"><a href="#L-4589"><span class="linenos">4589</span></a> +</span><span id="L-4590"><a href="#L-4590"><span class="linenos">4590</span></a> <span class="n">VAR_LIKE</span> <span class="o">=</span> <span class="p">(</span><span class="n">Column</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)</span> +</span><span id="L-4591"><a href="#L-4591"><span class="linenos">4591</span></a> +</span><span id="L-4592"><a href="#L-4592"><span class="linenos">4592</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-4593"><a href="#L-4593"><span class="linenos">4593</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="L-4594"><a href="#L-4594"><span class="linenos">4594</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> +</span><span id="L-4595"><a href="#L-4595"><span class="linenos">4595</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span> +</span><span id="L-4596"><a href="#L-4596"><span class="linenos">4596</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-4597"><a href="#L-4597"><span class="linenos">4597</span></a> <span class="p">)</span> +</span><span id="L-4598"><a href="#L-4598"><span class="linenos">4598</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="L-4599"><a href="#L-4599"><span class="linenos">4599</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="L-4600"><a href="#L-4600"><span class="linenos">4600</span></a> +</span><span id="L-4601"><a href="#L-4601"><span class="linenos">4601</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-4602"><a href="#L-4602"><span class="linenos">4602</span></a> +</span><span id="L-4603"><a href="#L-4603"><span class="linenos">4603</span></a> <span class="nd">@property</span> +</span><span id="L-4604"><a href="#L-4604"><span class="linenos">4604</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">Var</span> <span class="o">|</span> <span class="n">IntervalSpan</span><span class="p">]:</span> +</span><span id="L-4605"><a href="#L-4605"><span class="linenos">4605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> </span><span id="L-4606"><a href="#L-4606"><span class="linenos">4606</span></a> -</span><span id="L-4607"><a href="#L-4607"><span class="linenos">4607</span></a><span class="k">class</span> <span class="nc">IntervalOp</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-4608"><a href="#L-4608"><span class="linenos">4608</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4609"><a href="#L-4609"><span class="linenos">4609</span></a> -</span><span id="L-4610"><a href="#L-4610"><span class="linenos">4610</span></a> <span class="k">def</span> <span class="nf">interval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-4611"><a href="#L-4611"><span class="linenos">4611</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="L-4612"><a href="#L-4612"><span class="linenos">4612</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> -</span><span id="L-4613"><a href="#L-4613"><span class="linenos">4613</span></a> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> -</span><span id="L-4614"><a href="#L-4614"><span class="linenos">4614</span></a> <span class="p">)</span> -</span><span id="L-4615"><a href="#L-4615"><span class="linenos">4615</span></a> +</span><span id="L-4607"><a href="#L-4607"><span class="linenos">4607</span></a> +</span><span id="L-4608"><a href="#L-4608"><span class="linenos">4608</span></a><span class="k">class</span> <span class="nc">IntervalOp</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-4609"><a href="#L-4609"><span class="linenos">4609</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4610"><a href="#L-4610"><span class="linenos">4610</span></a> +</span><span id="L-4611"><a href="#L-4611"><span class="linenos">4611</span></a> <span class="k">def</span> <span class="nf">interval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-4612"><a href="#L-4612"><span class="linenos">4612</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="L-4613"><a href="#L-4613"><span class="linenos">4613</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> +</span><span id="L-4614"><a href="#L-4614"><span class="linenos">4614</span></a> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> +</span><span id="L-4615"><a href="#L-4615"><span class="linenos">4615</span></a> <span class="p">)</span> </span><span id="L-4616"><a href="#L-4616"><span class="linenos">4616</span></a> -</span><span id="L-4617"><a href="#L-4617"><span class="linenos">4617</span></a><span class="c1"># https://www.oracletutorial.com/oracle-basics/oracle-interval/</span> -</span><span id="L-4618"><a href="#L-4618"><span class="linenos">4618</span></a><span class="c1"># https://trino.io/docs/current/language/types.html#interval-day-to-second</span> -</span><span id="L-4619"><a href="#L-4619"><span class="linenos">4619</span></a><span class="c1"># https://docs.databricks.com/en/sql/language-manual/data-types/interval-type.html</span> -</span><span id="L-4620"><a href="#L-4620"><span class="linenos">4620</span></a><span class="k">class</span> <span class="nc">IntervalSpan</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> -</span><span id="L-4621"><a href="#L-4621"><span class="linenos">4621</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4622"><a href="#L-4622"><span class="linenos">4622</span></a> +</span><span id="L-4617"><a href="#L-4617"><span class="linenos">4617</span></a> +</span><span id="L-4618"><a href="#L-4618"><span class="linenos">4618</span></a><span class="c1"># https://www.oracletutorial.com/oracle-basics/oracle-interval/</span> +</span><span id="L-4619"><a href="#L-4619"><span class="linenos">4619</span></a><span class="c1"># https://trino.io/docs/current/language/types.html#interval-day-to-second</span> +</span><span id="L-4620"><a href="#L-4620"><span class="linenos">4620</span></a><span class="c1"># https://docs.databricks.com/en/sql/language-manual/data-types/interval-type.html</span> +</span><span id="L-4621"><a href="#L-4621"><span class="linenos">4621</span></a><span class="k">class</span> <span class="nc">IntervalSpan</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> +</span><span id="L-4622"><a href="#L-4622"><span class="linenos">4622</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4623"><a href="#L-4623"><span class="linenos">4623</span></a> -</span><span id="L-4624"><a href="#L-4624"><span class="linenos">4624</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-4625"><a href="#L-4625"><span class="linenos">4625</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4626"><a href="#L-4626"><span class="linenos">4626</span></a> +</span><span id="L-4624"><a href="#L-4624"><span class="linenos">4624</span></a> +</span><span id="L-4625"><a href="#L-4625"><span class="linenos">4625</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-4626"><a href="#L-4626"><span class="linenos">4626</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4627"><a href="#L-4627"><span class="linenos">4627</span></a> -</span><span id="L-4628"><a href="#L-4628"><span class="linenos">4628</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4629"><a href="#L-4629"><span class="linenos">4629</span></a> <span class="k">pass</span> -</span><span id="L-4630"><a href="#L-4630"><span class="linenos">4630</span></a> +</span><span id="L-4628"><a href="#L-4628"><span class="linenos">4628</span></a> +</span><span id="L-4629"><a href="#L-4629"><span class="linenos">4629</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4630"><a href="#L-4630"><span class="linenos">4630</span></a> <span class="k">pass</span> </span><span id="L-4631"><a href="#L-4631"><span class="linenos">4631</span></a> -</span><span id="L-4632"><a href="#L-4632"><span class="linenos">4632</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4633"><a href="#L-4633"><span class="linenos">4633</span></a> <span class="k">pass</span> -</span><span id="L-4634"><a href="#L-4634"><span class="linenos">4634</span></a> +</span><span id="L-4632"><a href="#L-4632"><span class="linenos">4632</span></a> +</span><span id="L-4633"><a href="#L-4633"><span class="linenos">4633</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4634"><a href="#L-4634"><span class="linenos">4634</span></a> <span class="k">pass</span> </span><span id="L-4635"><a href="#L-4635"><span class="linenos">4635</span></a> -</span><span id="L-4636"><a href="#L-4636"><span class="linenos">4636</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate-function-calls#max_min_clause</span> -</span><span id="L-4637"><a href="#L-4637"><span class="linenos">4637</span></a><span class="k">class</span> <span class="nc">HavingMax</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4638"><a href="#L-4638"><span class="linenos">4638</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"max"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4639"><a href="#L-4639"><span class="linenos">4639</span></a> +</span><span id="L-4636"><a href="#L-4636"><span class="linenos">4636</span></a> +</span><span id="L-4637"><a href="#L-4637"><span class="linenos">4637</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate-function-calls#max_min_clause</span> +</span><span id="L-4638"><a href="#L-4638"><span class="linenos">4638</span></a><span class="k">class</span> <span class="nc">HavingMax</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4639"><a href="#L-4639"><span class="linenos">4639</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"max"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4640"><a href="#L-4640"><span class="linenos">4640</span></a> -</span><span id="L-4641"><a href="#L-4641"><span class="linenos">4641</span></a><span class="c1"># Functions</span> -</span><span id="L-4642"><a href="#L-4642"><span class="linenos">4642</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-4643"><a href="#L-4643"><span class="linenos">4643</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4644"><a href="#L-4644"><span class="linenos">4644</span></a><span class="sd"> The base class for all function expressions.</span> -</span><span id="L-4645"><a href="#L-4645"><span class="linenos">4645</span></a> -</span><span id="L-4646"><a href="#L-4646"><span class="linenos">4646</span></a><span class="sd"> Attributes:</span> -</span><span id="L-4647"><a href="#L-4647"><span class="linenos">4647</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> -</span><span id="L-4648"><a href="#L-4648"><span class="linenos">4648</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> -</span><span id="L-4649"><a href="#L-4649"><span class="linenos">4649</span></a><span class="sd"> _sql_names (list): the SQL name (1st item in the list) and aliases (subsequent items) for this</span> -</span><span id="L-4650"><a href="#L-4650"><span class="linenos">4650</span></a><span class="sd"> function expression. These values are used to map this node to a name during parsing as</span> -</span><span id="L-4651"><a href="#L-4651"><span class="linenos">4651</span></a><span class="sd"> well as to provide the function's name during SQL string generation. By default the SQL</span> -</span><span id="L-4652"><a href="#L-4652"><span class="linenos">4652</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> -</span><span id="L-4653"><a href="#L-4653"><span class="linenos">4653</span></a><span class="sd"> """</span> -</span><span id="L-4654"><a href="#L-4654"><span class="linenos">4654</span></a> -</span><span id="L-4655"><a href="#L-4655"><span class="linenos">4655</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4656"><a href="#L-4656"><span class="linenos">4656</span></a> -</span><span id="L-4657"><a href="#L-4657"><span class="linenos">4657</span></a> <span class="nd">@classmethod</span> -</span><span id="L-4658"><a href="#L-4658"><span class="linenos">4658</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> -</span><span id="L-4659"><a href="#L-4659"><span class="linenos">4659</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> -</span><span id="L-4660"><a href="#L-4660"><span class="linenos">4660</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="L-4661"><a href="#L-4661"><span class="linenos">4661</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> -</span><span id="L-4662"><a href="#L-4662"><span class="linenos">4662</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> -</span><span id="L-4663"><a href="#L-4663"><span class="linenos">4663</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> -</span><span id="L-4664"><a href="#L-4664"><span class="linenos">4664</span></a> -</span><span id="L-4665"><a href="#L-4665"><span class="linenos">4665</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> -</span><span id="L-4666"><a href="#L-4666"><span class="linenos">4666</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_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">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> -</span><span id="L-4667"><a href="#L-4667"><span class="linenos">4667</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4668"><a href="#L-4668"><span class="linenos">4668</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> -</span><span id="L-4669"><a href="#L-4669"><span class="linenos">4669</span></a> -</span><span id="L-4670"><a href="#L-4670"><span class="linenos">4670</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> -</span><span id="L-4671"><a href="#L-4671"><span class="linenos">4671</span></a> -</span><span id="L-4672"><a href="#L-4672"><span class="linenos">4672</span></a> <span class="nd">@classmethod</span> -</span><span id="L-4673"><a href="#L-4673"><span class="linenos">4673</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="L-4674"><a href="#L-4674"><span class="linenos">4674</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> -</span><span id="L-4675"><a href="#L-4675"><span class="linenos">4675</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> -</span><span id="L-4676"><a href="#L-4676"><span class="linenos">4676</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> -</span><span id="L-4677"><a href="#L-4677"><span class="linenos">4677</span></a> <span class="p">)</span> -</span><span id="L-4678"><a href="#L-4678"><span class="linenos">4678</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> -</span><span id="L-4679"><a href="#L-4679"><span class="linenos">4679</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> -</span><span id="L-4680"><a href="#L-4680"><span class="linenos">4680</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> -</span><span id="L-4681"><a href="#L-4681"><span class="linenos">4681</span></a> -</span><span id="L-4682"><a href="#L-4682"><span class="linenos">4682</span></a> <span class="nd">@classmethod</span> -</span><span id="L-4683"><a href="#L-4683"><span class="linenos">4683</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="L-4684"><a href="#L-4684"><span class="linenos">4684</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-4685"><a href="#L-4685"><span class="linenos">4685</span></a> -</span><span id="L-4686"><a href="#L-4686"><span class="linenos">4686</span></a> <span class="nd">@classmethod</span> -</span><span id="L-4687"><a href="#L-4687"><span class="linenos">4687</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="L-4688"><a href="#L-4688"><span class="linenos">4688</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> -</span><span id="L-4689"><a href="#L-4689"><span class="linenos">4689</span></a> +</span><span id="L-4641"><a href="#L-4641"><span class="linenos">4641</span></a> +</span><span id="L-4642"><a href="#L-4642"><span class="linenos">4642</span></a><span class="c1"># Functions</span> +</span><span id="L-4643"><a href="#L-4643"><span class="linenos">4643</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-4644"><a href="#L-4644"><span class="linenos">4644</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4645"><a href="#L-4645"><span class="linenos">4645</span></a><span class="sd"> The base class for all function expressions.</span> +</span><span id="L-4646"><a href="#L-4646"><span class="linenos">4646</span></a> +</span><span id="L-4647"><a href="#L-4647"><span class="linenos">4647</span></a><span class="sd"> Attributes:</span> +</span><span id="L-4648"><a href="#L-4648"><span class="linenos">4648</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> +</span><span id="L-4649"><a href="#L-4649"><span class="linenos">4649</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> +</span><span id="L-4650"><a href="#L-4650"><span class="linenos">4650</span></a><span class="sd"> _sql_names (list): the SQL name (1st item in the list) and aliases (subsequent items) for this</span> +</span><span id="L-4651"><a href="#L-4651"><span class="linenos">4651</span></a><span class="sd"> function expression. These values are used to map this node to a name during parsing as</span> +</span><span id="L-4652"><a href="#L-4652"><span class="linenos">4652</span></a><span class="sd"> well as to provide the function's name during SQL string generation. By default the SQL</span> +</span><span id="L-4653"><a href="#L-4653"><span class="linenos">4653</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> +</span><span id="L-4654"><a href="#L-4654"><span class="linenos">4654</span></a><span class="sd"> """</span> +</span><span id="L-4655"><a href="#L-4655"><span class="linenos">4655</span></a> +</span><span id="L-4656"><a href="#L-4656"><span class="linenos">4656</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4657"><a href="#L-4657"><span class="linenos">4657</span></a> +</span><span id="L-4658"><a href="#L-4658"><span class="linenos">4658</span></a> <span class="nd">@classmethod</span> +</span><span id="L-4659"><a href="#L-4659"><span class="linenos">4659</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> +</span><span id="L-4660"><a href="#L-4660"><span class="linenos">4660</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> +</span><span id="L-4661"><a href="#L-4661"><span class="linenos">4661</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="L-4662"><a href="#L-4662"><span class="linenos">4662</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> +</span><span id="L-4663"><a href="#L-4663"><span class="linenos">4663</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> +</span><span id="L-4664"><a href="#L-4664"><span class="linenos">4664</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> +</span><span id="L-4665"><a href="#L-4665"><span class="linenos">4665</span></a> +</span><span id="L-4666"><a href="#L-4666"><span class="linenos">4666</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> +</span><span id="L-4667"><a href="#L-4667"><span class="linenos">4667</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_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">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> +</span><span id="L-4668"><a href="#L-4668"><span class="linenos">4668</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4669"><a href="#L-4669"><span class="linenos">4669</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> +</span><span id="L-4670"><a href="#L-4670"><span class="linenos">4670</span></a> +</span><span id="L-4671"><a href="#L-4671"><span class="linenos">4671</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> +</span><span id="L-4672"><a href="#L-4672"><span class="linenos">4672</span></a> +</span><span id="L-4673"><a href="#L-4673"><span class="linenos">4673</span></a> <span class="nd">@classmethod</span> +</span><span id="L-4674"><a href="#L-4674"><span class="linenos">4674</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="L-4675"><a href="#L-4675"><span class="linenos">4675</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> +</span><span id="L-4676"><a href="#L-4676"><span class="linenos">4676</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> +</span><span id="L-4677"><a href="#L-4677"><span class="linenos">4677</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> +</span><span id="L-4678"><a href="#L-4678"><span class="linenos">4678</span></a> <span class="p">)</span> +</span><span id="L-4679"><a href="#L-4679"><span class="linenos">4679</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> +</span><span id="L-4680"><a href="#L-4680"><span class="linenos">4680</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> +</span><span id="L-4681"><a href="#L-4681"><span class="linenos">4681</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> +</span><span id="L-4682"><a href="#L-4682"><span class="linenos">4682</span></a> +</span><span id="L-4683"><a href="#L-4683"><span class="linenos">4683</span></a> <span class="nd">@classmethod</span> +</span><span id="L-4684"><a href="#L-4684"><span class="linenos">4684</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="L-4685"><a href="#L-4685"><span class="linenos">4685</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-4686"><a href="#L-4686"><span class="linenos">4686</span></a> +</span><span id="L-4687"><a href="#L-4687"><span class="linenos">4687</span></a> <span class="nd">@classmethod</span> +</span><span id="L-4688"><a href="#L-4688"><span class="linenos">4688</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="L-4689"><a href="#L-4689"><span class="linenos">4689</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> </span><span id="L-4690"><a href="#L-4690"><span class="linenos">4690</span></a> -</span><span id="L-4691"><a href="#L-4691"><span class="linenos">4691</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4692"><a href="#L-4692"><span class="linenos">4692</span></a> <span class="k">pass</span> -</span><span id="L-4693"><a href="#L-4693"><span class="linenos">4693</span></a> +</span><span id="L-4691"><a href="#L-4691"><span class="linenos">4691</span></a> +</span><span id="L-4692"><a href="#L-4692"><span class="linenos">4692</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4693"><a href="#L-4693"><span class="linenos">4693</span></a> <span class="k">pass</span> </span><span id="L-4694"><a href="#L-4694"><span class="linenos">4694</span></a> -</span><span id="L-4695"><a href="#L-4695"><span class="linenos">4695</span></a><span class="k">class</span> <span class="nc">ParameterizedAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4696"><a href="#L-4696"><span class="linenos">4696</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4697"><a href="#L-4697"><span class="linenos">4697</span></a> +</span><span id="L-4695"><a href="#L-4695"><span class="linenos">4695</span></a> +</span><span id="L-4696"><a href="#L-4696"><span class="linenos">4696</span></a><span class="k">class</span> <span class="nc">ParameterizedAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4697"><a href="#L-4697"><span class="linenos">4697</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4698"><a href="#L-4698"><span class="linenos">4698</span></a> -</span><span id="L-4699"><a href="#L-4699"><span class="linenos">4699</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4700"><a href="#L-4700"><span class="linenos">4700</span></a> <span class="k">pass</span> -</span><span id="L-4701"><a href="#L-4701"><span class="linenos">4701</span></a> +</span><span id="L-4699"><a href="#L-4699"><span class="linenos">4699</span></a> +</span><span id="L-4700"><a href="#L-4700"><span class="linenos">4700</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4701"><a href="#L-4701"><span class="linenos">4701</span></a> <span class="k">pass</span> </span><span id="L-4702"><a href="#L-4702"><span class="linenos">4702</span></a> -</span><span id="L-4703"><a href="#L-4703"><span class="linenos">4703</span></a><span class="k">class</span> <span class="nc">ArgMax</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4704"><a href="#L-4704"><span class="linenos">4704</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4705"><a href="#L-4705"><span class="linenos">4705</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MAX"</span><span class="p">,</span> <span class="s2">"ARGMAX"</span><span class="p">,</span> <span class="s2">"MAX_BY"</span><span class="p">]</span> -</span><span id="L-4706"><a href="#L-4706"><span class="linenos">4706</span></a> +</span><span id="L-4703"><a href="#L-4703"><span class="linenos">4703</span></a> +</span><span id="L-4704"><a href="#L-4704"><span class="linenos">4704</span></a><span class="k">class</span> <span class="nc">ArgMax</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4705"><a href="#L-4705"><span class="linenos">4705</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4706"><a href="#L-4706"><span class="linenos">4706</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MAX"</span><span class="p">,</span> <span class="s2">"ARGMAX"</span><span class="p">,</span> <span class="s2">"MAX_BY"</span><span class="p">]</span> </span><span id="L-4707"><a href="#L-4707"><span class="linenos">4707</span></a> -</span><span id="L-4708"><a href="#L-4708"><span class="linenos">4708</span></a><span class="k">class</span> <span class="nc">ArgMin</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4709"><a href="#L-4709"><span class="linenos">4709</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4710"><a href="#L-4710"><span class="linenos">4710</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MIN"</span><span class="p">,</span> <span class="s2">"ARGMIN"</span><span class="p">,</span> <span class="s2">"MIN_BY"</span><span class="p">]</span> -</span><span id="L-4711"><a href="#L-4711"><span class="linenos">4711</span></a> +</span><span id="L-4708"><a href="#L-4708"><span class="linenos">4708</span></a> +</span><span id="L-4709"><a href="#L-4709"><span class="linenos">4709</span></a><span class="k">class</span> <span class="nc">ArgMin</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4710"><a href="#L-4710"><span class="linenos">4710</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4711"><a href="#L-4711"><span class="linenos">4711</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MIN"</span><span class="p">,</span> <span class="s2">"ARGMIN"</span><span class="p">,</span> <span class="s2">"MIN_BY"</span><span class="p">]</span> </span><span id="L-4712"><a href="#L-4712"><span class="linenos">4712</span></a> -</span><span id="L-4713"><a href="#L-4713"><span class="linenos">4713</span></a><span class="k">class</span> <span class="nc">ApproxTopK</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4714"><a href="#L-4714"><span class="linenos">4714</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"counters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4715"><a href="#L-4715"><span class="linenos">4715</span></a> +</span><span id="L-4713"><a href="#L-4713"><span class="linenos">4713</span></a> +</span><span id="L-4714"><a href="#L-4714"><span class="linenos">4714</span></a><span class="k">class</span> <span class="nc">ApproxTopK</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4715"><a href="#L-4715"><span class="linenos">4715</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"counters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4716"><a href="#L-4716"><span class="linenos">4716</span></a> -</span><span id="L-4717"><a href="#L-4717"><span class="linenos">4717</span></a><span class="k">class</span> <span class="nc">Flatten</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4718"><a href="#L-4718"><span class="linenos">4718</span></a> <span class="k">pass</span> -</span><span id="L-4719"><a href="#L-4719"><span class="linenos">4719</span></a> +</span><span id="L-4717"><a href="#L-4717"><span class="linenos">4717</span></a> +</span><span id="L-4718"><a href="#L-4718"><span class="linenos">4718</span></a><span class="k">class</span> <span class="nc">Flatten</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4719"><a href="#L-4719"><span class="linenos">4719</span></a> <span class="k">pass</span> </span><span id="L-4720"><a href="#L-4720"><span class="linenos">4720</span></a> -</span><span id="L-4721"><a href="#L-4721"><span class="linenos">4721</span></a><span class="c1"># https://spark.apache.org/docs/latest/api/sql/index.html#transform</span> -</span><span id="L-4722"><a href="#L-4722"><span class="linenos">4722</span></a><span class="k">class</span> <span class="nc">Transform</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4723"><a href="#L-4723"><span class="linenos">4723</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4724"><a href="#L-4724"><span class="linenos">4724</span></a> +</span><span id="L-4721"><a href="#L-4721"><span class="linenos">4721</span></a> +</span><span id="L-4722"><a href="#L-4722"><span class="linenos">4722</span></a><span class="c1"># https://spark.apache.org/docs/latest/api/sql/index.html#transform</span> +</span><span id="L-4723"><a href="#L-4723"><span class="linenos">4723</span></a><span class="k">class</span> <span class="nc">Transform</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4724"><a href="#L-4724"><span class="linenos">4724</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4725"><a href="#L-4725"><span class="linenos">4725</span></a> -</span><span id="L-4726"><a href="#L-4726"><span class="linenos">4726</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4727"><a href="#L-4727"><span class="linenos">4727</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4728"><a href="#L-4728"><span class="linenos">4728</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4729"><a href="#L-4729"><span class="linenos">4729</span></a> -</span><span id="L-4730"><a href="#L-4730"><span class="linenos">4730</span></a> <span class="nd">@property</span> -</span><span id="L-4731"><a href="#L-4731"><span class="linenos">4731</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4732"><a href="#L-4732"><span class="linenos">4732</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4733"><a href="#L-4733"><span class="linenos">4733</span></a> +</span><span id="L-4726"><a href="#L-4726"><span class="linenos">4726</span></a> +</span><span id="L-4727"><a href="#L-4727"><span class="linenos">4727</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4728"><a href="#L-4728"><span class="linenos">4728</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4729"><a href="#L-4729"><span class="linenos">4729</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4730"><a href="#L-4730"><span class="linenos">4730</span></a> +</span><span id="L-4731"><a href="#L-4731"><span class="linenos">4731</span></a> <span class="nd">@property</span> +</span><span id="L-4732"><a href="#L-4732"><span class="linenos">4732</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4733"><a href="#L-4733"><span class="linenos">4733</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span><span id="L-4734"><a href="#L-4734"><span class="linenos">4734</span></a> -</span><span id="L-4735"><a href="#L-4735"><span class="linenos">4735</span></a><span class="k">class</span> <span class="nc">AnonymousAggFunc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4736"><a href="#L-4736"><span class="linenos">4736</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4737"><a href="#L-4737"><span class="linenos">4737</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4738"><a href="#L-4738"><span class="linenos">4738</span></a> +</span><span id="L-4735"><a href="#L-4735"><span class="linenos">4735</span></a> +</span><span id="L-4736"><a href="#L-4736"><span class="linenos">4736</span></a><span class="k">class</span> <span class="nc">AnonymousAggFunc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4737"><a href="#L-4737"><span class="linenos">4737</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4738"><a href="#L-4738"><span class="linenos">4738</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-4739"><a href="#L-4739"><span class="linenos">4739</span></a> -</span><span id="L-4740"><a href="#L-4740"><span class="linenos">4740</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/aggregate-functions/combinators</span> -</span><span id="L-4741"><a href="#L-4741"><span class="linenos">4741</span></a><span class="k">class</span> <span class="nc">CombinedAggFunc</span><span class="p">(</span><span class="n">AnonymousAggFunc</span><span class="p">):</span> -</span><span id="L-4742"><a href="#L-4742"><span class="linenos">4742</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4743"><a href="#L-4743"><span class="linenos">4743</span></a> +</span><span id="L-4740"><a href="#L-4740"><span class="linenos">4740</span></a> +</span><span id="L-4741"><a href="#L-4741"><span class="linenos">4741</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/aggregate-functions/combinators</span> +</span><span id="L-4742"><a href="#L-4742"><span class="linenos">4742</span></a><span class="k">class</span> <span class="nc">CombinedAggFunc</span><span class="p">(</span><span class="n">AnonymousAggFunc</span><span class="p">):</span> +</span><span id="L-4743"><a href="#L-4743"><span class="linenos">4743</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4744"><a href="#L-4744"><span class="linenos">4744</span></a> -</span><span id="L-4745"><a href="#L-4745"><span class="linenos">4745</span></a><span class="k">class</span> <span class="nc">CombinedParameterizedAgg</span><span class="p">(</span><span class="n">ParameterizedAgg</span><span class="p">):</span> -</span><span id="L-4746"><a href="#L-4746"><span class="linenos">4746</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4747"><a href="#L-4747"><span class="linenos">4747</span></a> +</span><span id="L-4745"><a href="#L-4745"><span class="linenos">4745</span></a> +</span><span id="L-4746"><a href="#L-4746"><span class="linenos">4746</span></a><span class="k">class</span> <span class="nc">CombinedParameterizedAgg</span><span class="p">(</span><span class="n">ParameterizedAgg</span><span class="p">):</span> +</span><span id="L-4747"><a href="#L-4747"><span class="linenos">4747</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4748"><a href="#L-4748"><span class="linenos">4748</span></a> -</span><span id="L-4749"><a href="#L-4749"><span class="linenos">4749</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/hll</span> -</span><span id="L-4750"><a href="#L-4750"><span class="linenos">4750</span></a><span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_HLL_function.html</span> -</span><span id="L-4751"><a href="#L-4751"><span class="linenos">4751</span></a><span class="k">class</span> <span class="nc">Hll</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4752"><a href="#L-4752"><span class="linenos">4752</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4753"><a href="#L-4753"><span class="linenos">4753</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4754"><a href="#L-4754"><span class="linenos">4754</span></a> +</span><span id="L-4749"><a href="#L-4749"><span class="linenos">4749</span></a> +</span><span id="L-4750"><a href="#L-4750"><span class="linenos">4750</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/hll</span> +</span><span id="L-4751"><a href="#L-4751"><span class="linenos">4751</span></a><span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_HLL_function.html</span> +</span><span id="L-4752"><a href="#L-4752"><span class="linenos">4752</span></a><span class="k">class</span> <span class="nc">Hll</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4753"><a href="#L-4753"><span class="linenos">4753</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4754"><a href="#L-4754"><span class="linenos">4754</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-4755"><a href="#L-4755"><span class="linenos">4755</span></a> -</span><span id="L-4756"><a href="#L-4756"><span class="linenos">4756</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4757"><a href="#L-4757"><span class="linenos">4757</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4758"><a href="#L-4758"><span class="linenos">4758</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"APPROX_DISTINCT"</span><span class="p">,</span> <span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">]</span> -</span><span id="L-4759"><a href="#L-4759"><span class="linenos">4759</span></a> +</span><span id="L-4756"><a href="#L-4756"><span class="linenos">4756</span></a> +</span><span id="L-4757"><a href="#L-4757"><span class="linenos">4757</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4758"><a href="#L-4758"><span class="linenos">4758</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4759"><a href="#L-4759"><span class="linenos">4759</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"APPROX_DISTINCT"</span><span class="p">,</span> <span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">]</span> </span><span id="L-4760"><a href="#L-4760"><span class="linenos">4760</span></a> -</span><span id="L-4761"><a href="#L-4761"><span class="linenos">4761</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4762"><a href="#L-4762"><span class="linenos">4762</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4763"><a href="#L-4763"><span class="linenos">4763</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4764"><a href="#L-4764"><span class="linenos">4764</span></a> +</span><span id="L-4761"><a href="#L-4761"><span class="linenos">4761</span></a> +</span><span id="L-4762"><a href="#L-4762"><span class="linenos">4762</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4763"><a href="#L-4763"><span class="linenos">4763</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4764"><a href="#L-4764"><span class="linenos">4764</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-4765"><a href="#L-4765"><span class="linenos">4765</span></a> -</span><span id="L-4766"><a href="#L-4766"><span class="linenos">4766</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/to_array</span> -</span><span id="L-4767"><a href="#L-4767"><span class="linenos">4767</span></a><span class="k">class</span> <span class="nc">ToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4768"><a href="#L-4768"><span class="linenos">4768</span></a> <span class="k">pass</span> -</span><span id="L-4769"><a href="#L-4769"><span class="linenos">4769</span></a> +</span><span id="L-4766"><a href="#L-4766"><span class="linenos">4766</span></a> +</span><span id="L-4767"><a href="#L-4767"><span class="linenos">4767</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/to_array</span> +</span><span id="L-4768"><a href="#L-4768"><span class="linenos">4768</span></a><span class="k">class</span> <span class="nc">ToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4769"><a href="#L-4769"><span class="linenos">4769</span></a> <span class="k">pass</span> </span><span id="L-4770"><a href="#L-4770"><span class="linenos">4770</span></a> -</span><span id="L-4771"><a href="#L-4771"><span class="linenos">4771</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/to_char</span> -</span><span id="L-4772"><a href="#L-4772"><span class="linenos">4772</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/TO_CHAR-number.html</span> -</span><span id="L-4773"><a href="#L-4773"><span class="linenos">4773</span></a><span class="k">class</span> <span class="nc">ToChar</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4774"><a href="#L-4774"><span class="linenos">4774</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4775"><a href="#L-4775"><span class="linenos">4775</span></a> +</span><span id="L-4771"><a href="#L-4771"><span class="linenos">4771</span></a> +</span><span id="L-4772"><a href="#L-4772"><span class="linenos">4772</span></a><span class="c1"># https://materialize.com/docs/sql/types/list/</span> +</span><span id="L-4773"><a href="#L-4773"><span class="linenos">4773</span></a><span class="k">class</span> <span class="nc">List</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4774"><a href="#L-4774"><span class="linenos">4774</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4775"><a href="#L-4775"><span class="linenos">4775</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-4776"><a href="#L-4776"><span class="linenos">4776</span></a> -</span><span id="L-4777"><a href="#L-4777"><span class="linenos">4777</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/to_decimal</span> -</span><span id="L-4778"><a href="#L-4778"><span class="linenos">4778</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/TO_NUMBER.html</span> -</span><span id="L-4779"><a href="#L-4779"><span class="linenos">4779</span></a><span class="k">class</span> <span class="nc">ToNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4780"><a href="#L-4780"><span class="linenos">4780</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4781"><a href="#L-4781"><span class="linenos">4781</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4782"><a href="#L-4782"><span class="linenos">4782</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4783"><a href="#L-4783"><span class="linenos">4783</span></a> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4784"><a href="#L-4784"><span class="linenos">4784</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4785"><a href="#L-4785"><span class="linenos">4785</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4786"><a href="#L-4786"><span class="linenos">4786</span></a> <span class="p">}</span> -</span><span id="L-4787"><a href="#L-4787"><span class="linenos">4787</span></a> -</span><span id="L-4788"><a href="#L-4788"><span class="linenos">4788</span></a> -</span><span id="L-4789"><a href="#L-4789"><span class="linenos">4789</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver16#syntax</span> -</span><span id="L-4790"><a href="#L-4790"><span class="linenos">4790</span></a><span class="k">class</span> <span class="nc">Convert</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4791"><a href="#L-4791"><span class="linenos">4791</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"style"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4792"><a href="#L-4792"><span class="linenos">4792</span></a> -</span><span id="L-4793"><a href="#L-4793"><span class="linenos">4793</span></a> -</span><span id="L-4794"><a href="#L-4794"><span class="linenos">4794</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4795"><a href="#L-4795"><span class="linenos">4795</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"is_end_exclusive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4796"><a href="#L-4796"><span class="linenos">4796</span></a> -</span><span id="L-4797"><a href="#L-4797"><span class="linenos">4797</span></a> -</span><span id="L-4798"><a href="#L-4798"><span class="linenos">4798</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4799"><a href="#L-4799"><span class="linenos">4799</span></a> <span class="k">pass</span> +</span><span id="L-4777"><a href="#L-4777"><span class="linenos">4777</span></a> +</span><span id="L-4778"><a href="#L-4778"><span class="linenos">4778</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/to_char</span> +</span><span id="L-4779"><a href="#L-4779"><span class="linenos">4779</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/TO_CHAR-number.html</span> +</span><span id="L-4780"><a href="#L-4780"><span class="linenos">4780</span></a><span class="k">class</span> <span class="nc">ToChar</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4781"><a href="#L-4781"><span class="linenos">4781</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4782"><a href="#L-4782"><span class="linenos">4782</span></a> +</span><span id="L-4783"><a href="#L-4783"><span class="linenos">4783</span></a> +</span><span id="L-4784"><a href="#L-4784"><span class="linenos">4784</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/to_decimal</span> +</span><span id="L-4785"><a href="#L-4785"><span class="linenos">4785</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/TO_NUMBER.html</span> +</span><span id="L-4786"><a href="#L-4786"><span class="linenos">4786</span></a><span class="k">class</span> <span class="nc">ToNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4787"><a href="#L-4787"><span class="linenos">4787</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4788"><a href="#L-4788"><span class="linenos">4788</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4789"><a href="#L-4789"><span class="linenos">4789</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4790"><a href="#L-4790"><span class="linenos">4790</span></a> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4791"><a href="#L-4791"><span class="linenos">4791</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4792"><a href="#L-4792"><span class="linenos">4792</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4793"><a href="#L-4793"><span class="linenos">4793</span></a> <span class="p">}</span> +</span><span id="L-4794"><a href="#L-4794"><span class="linenos">4794</span></a> +</span><span id="L-4795"><a href="#L-4795"><span class="linenos">4795</span></a> +</span><span id="L-4796"><a href="#L-4796"><span class="linenos">4796</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver16#syntax</span> +</span><span id="L-4797"><a href="#L-4797"><span class="linenos">4797</span></a><span class="k">class</span> <span class="nc">Convert</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4798"><a href="#L-4798"><span class="linenos">4798</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"style"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4799"><a href="#L-4799"><span class="linenos">4799</span></a> </span><span id="L-4800"><a href="#L-4800"><span class="linenos">4800</span></a> -</span><span id="L-4801"><a href="#L-4801"><span class="linenos">4801</span></a> -</span><span id="L-4802"><a href="#L-4802"><span class="linenos">4802</span></a><span class="k">class</span> <span class="nc">ArrayUniqueAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4803"><a href="#L-4803"><span class="linenos">4803</span></a> <span class="k">pass</span> +</span><span id="L-4801"><a href="#L-4801"><span class="linenos">4801</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4802"><a href="#L-4802"><span class="linenos">4802</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"is_end_exclusive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4803"><a href="#L-4803"><span class="linenos">4803</span></a> </span><span id="L-4804"><a href="#L-4804"><span class="linenos">4804</span></a> -</span><span id="L-4805"><a href="#L-4805"><span class="linenos">4805</span></a> -</span><span id="L-4806"><a href="#L-4806"><span class="linenos">4806</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4807"><a href="#L-4807"><span class="linenos">4807</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4805"><a href="#L-4805"><span class="linenos">4805</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4806"><a href="#L-4806"><span class="linenos">4806</span></a> <span class="k">pass</span> +</span><span id="L-4807"><a href="#L-4807"><span class="linenos">4807</span></a> </span><span id="L-4808"><a href="#L-4808"><span class="linenos">4808</span></a> -</span><span id="L-4809"><a href="#L-4809"><span class="linenos">4809</span></a> -</span><span id="L-4810"><a href="#L-4810"><span class="linenos">4810</span></a><span class="c1"># Represents Python's `any(f(x) for x in array)`, where `array` is `this` and `f` is `expression`</span> -</span><span id="L-4811"><a href="#L-4811"><span class="linenos">4811</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4812"><a href="#L-4812"><span class="linenos">4812</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4813"><a href="#L-4813"><span class="linenos">4813</span></a> -</span><span id="L-4814"><a href="#L-4814"><span class="linenos">4814</span></a> -</span><span id="L-4815"><a href="#L-4815"><span class="linenos">4815</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4816"><a href="#L-4816"><span class="linenos">4816</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONCAT"</span><span class="p">,</span> <span class="s2">"ARRAY_CAT"</span><span class="p">]</span> -</span><span id="L-4817"><a href="#L-4817"><span class="linenos">4817</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4818"><a href="#L-4818"><span class="linenos">4818</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4819"><a href="#L-4819"><span class="linenos">4819</span></a> +</span><span id="L-4809"><a href="#L-4809"><span class="linenos">4809</span></a><span class="k">class</span> <span class="nc">ArrayUniqueAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4810"><a href="#L-4810"><span class="linenos">4810</span></a> <span class="k">pass</span> +</span><span id="L-4811"><a href="#L-4811"><span class="linenos">4811</span></a> +</span><span id="L-4812"><a href="#L-4812"><span class="linenos">4812</span></a> +</span><span id="L-4813"><a href="#L-4813"><span class="linenos">4813</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4814"><a href="#L-4814"><span class="linenos">4814</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4815"><a href="#L-4815"><span class="linenos">4815</span></a> +</span><span id="L-4816"><a href="#L-4816"><span class="linenos">4816</span></a> +</span><span id="L-4817"><a href="#L-4817"><span class="linenos">4817</span></a><span class="c1"># Represents Python's `any(f(x) for x in array)`, where `array` is `this` and `f` is `expression`</span> +</span><span id="L-4818"><a href="#L-4818"><span class="linenos">4818</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4819"><a href="#L-4819"><span class="linenos">4819</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-4820"><a href="#L-4820"><span class="linenos">4820</span></a> -</span><span id="L-4821"><a href="#L-4821"><span class="linenos">4821</span></a><span class="k">class</span> <span class="nc">ArrayConstructCompact</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4822"><a href="#L-4822"><span class="linenos">4822</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4823"><a href="#L-4823"><span class="linenos">4823</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4824"><a href="#L-4824"><span class="linenos">4824</span></a> -</span><span id="L-4825"><a href="#L-4825"><span class="linenos">4825</span></a> -</span><span id="L-4826"><a href="#L-4826"><span class="linenos">4826</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-4827"><a href="#L-4827"><span class="linenos">4827</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS"</span><span class="p">]</span> -</span><span id="L-4828"><a href="#L-4828"><span class="linenos">4828</span></a> -</span><span id="L-4829"><a href="#L-4829"><span class="linenos">4829</span></a> -</span><span id="L-4830"><a href="#L-4830"><span class="linenos">4830</span></a><span class="k">class</span> <span class="nc">ArrayContainsAll</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-4831"><a href="#L-4831"><span class="linenos">4831</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS_ALL"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS_ALL"</span><span class="p">]</span> +</span><span id="L-4821"><a href="#L-4821"><span class="linenos">4821</span></a> +</span><span id="L-4822"><a href="#L-4822"><span class="linenos">4822</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4823"><a href="#L-4823"><span class="linenos">4823</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONCAT"</span><span class="p">,</span> <span class="s2">"ARRAY_CAT"</span><span class="p">]</span> +</span><span id="L-4824"><a href="#L-4824"><span class="linenos">4824</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4825"><a href="#L-4825"><span class="linenos">4825</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4826"><a href="#L-4826"><span class="linenos">4826</span></a> +</span><span id="L-4827"><a href="#L-4827"><span class="linenos">4827</span></a> +</span><span id="L-4828"><a href="#L-4828"><span class="linenos">4828</span></a><span class="k">class</span> <span class="nc">ArrayConstructCompact</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4829"><a href="#L-4829"><span class="linenos">4829</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4830"><a href="#L-4830"><span class="linenos">4830</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4831"><a href="#L-4831"><span class="linenos">4831</span></a> </span><span id="L-4832"><a href="#L-4832"><span class="linenos">4832</span></a> -</span><span id="L-4833"><a href="#L-4833"><span class="linenos">4833</span></a> -</span><span id="L-4834"><a href="#L-4834"><span class="linenos">4834</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4835"><a href="#L-4835"><span class="linenos">4835</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-4836"><a href="#L-4836"><span class="linenos">4836</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> -</span><span id="L-4837"><a href="#L-4837"><span class="linenos">4837</span></a> -</span><span id="L-4838"><a href="#L-4838"><span class="linenos">4838</span></a> -</span><span id="L-4839"><a href="#L-4839"><span class="linenos">4839</span></a><span class="k">class</span> <span class="nc">ArrayToString</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4840"><a href="#L-4840"><span class="linenos">4840</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4841"><a href="#L-4841"><span class="linenos">4841</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_TO_STRING"</span><span class="p">,</span> <span class="s2">"ARRAY_JOIN"</span><span class="p">]</span> -</span><span id="L-4842"><a href="#L-4842"><span class="linenos">4842</span></a> -</span><span id="L-4843"><a href="#L-4843"><span class="linenos">4843</span></a> -</span><span id="L-4844"><a href="#L-4844"><span class="linenos">4844</span></a><span class="k">class</span> <span class="nc">StringToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4845"><a href="#L-4845"><span class="linenos">4845</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4846"><a href="#L-4846"><span class="linenos">4846</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STRING_TO_ARRAY"</span><span class="p">,</span> <span class="s2">"SPLIT_BY_STRING"</span><span class="p">]</span> -</span><span id="L-4847"><a href="#L-4847"><span class="linenos">4847</span></a> -</span><span id="L-4848"><a href="#L-4848"><span class="linenos">4848</span></a> -</span><span id="L-4849"><a href="#L-4849"><span class="linenos">4849</span></a><span class="k">class</span> <span class="nc">ArrayOverlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-4850"><a href="#L-4850"><span class="linenos">4850</span></a> <span class="k">pass</span> -</span><span id="L-4851"><a href="#L-4851"><span class="linenos">4851</span></a> -</span><span id="L-4852"><a href="#L-4852"><span class="linenos">4852</span></a> -</span><span id="L-4853"><a href="#L-4853"><span class="linenos">4853</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4854"><a href="#L-4854"><span class="linenos">4854</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4855"><a href="#L-4855"><span class="linenos">4855</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_SIZE"</span><span class="p">,</span> <span class="s2">"ARRAY_LENGTH"</span><span class="p">]</span> -</span><span id="L-4856"><a href="#L-4856"><span class="linenos">4856</span></a> -</span><span id="L-4857"><a href="#L-4857"><span class="linenos">4857</span></a> -</span><span id="L-4858"><a href="#L-4858"><span class="linenos">4858</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4859"><a href="#L-4859"><span class="linenos">4859</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4860"><a href="#L-4860"><span class="linenos">4860</span></a> -</span><span id="L-4861"><a href="#L-4861"><span class="linenos">4861</span></a> -</span><span id="L-4862"><a href="#L-4862"><span class="linenos">4862</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4863"><a href="#L-4863"><span class="linenos">4863</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4833"><a href="#L-4833"><span class="linenos">4833</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-4834"><a href="#L-4834"><span class="linenos">4834</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS"</span><span class="p">]</span> +</span><span id="L-4835"><a href="#L-4835"><span class="linenos">4835</span></a> +</span><span id="L-4836"><a href="#L-4836"><span class="linenos">4836</span></a> +</span><span id="L-4837"><a href="#L-4837"><span class="linenos">4837</span></a><span class="k">class</span> <span class="nc">ArrayContainsAll</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-4838"><a href="#L-4838"><span class="linenos">4838</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS_ALL"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS_ALL"</span><span class="p">]</span> +</span><span id="L-4839"><a href="#L-4839"><span class="linenos">4839</span></a> +</span><span id="L-4840"><a href="#L-4840"><span class="linenos">4840</span></a> +</span><span id="L-4841"><a href="#L-4841"><span class="linenos">4841</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4842"><a href="#L-4842"><span class="linenos">4842</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4843"><a href="#L-4843"><span class="linenos">4843</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> +</span><span id="L-4844"><a href="#L-4844"><span class="linenos">4844</span></a> +</span><span id="L-4845"><a href="#L-4845"><span class="linenos">4845</span></a> +</span><span id="L-4846"><a href="#L-4846"><span class="linenos">4846</span></a><span class="k">class</span> <span class="nc">ArrayToString</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4847"><a href="#L-4847"><span class="linenos">4847</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4848"><a href="#L-4848"><span class="linenos">4848</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_TO_STRING"</span><span class="p">,</span> <span class="s2">"ARRAY_JOIN"</span><span class="p">]</span> +</span><span id="L-4849"><a href="#L-4849"><span class="linenos">4849</span></a> +</span><span id="L-4850"><a href="#L-4850"><span class="linenos">4850</span></a> +</span><span id="L-4851"><a href="#L-4851"><span class="linenos">4851</span></a><span class="k">class</span> <span class="nc">StringToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4852"><a href="#L-4852"><span class="linenos">4852</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4853"><a href="#L-4853"><span class="linenos">4853</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STRING_TO_ARRAY"</span><span class="p">,</span> <span class="s2">"SPLIT_BY_STRING"</span><span class="p">]</span> +</span><span id="L-4854"><a href="#L-4854"><span class="linenos">4854</span></a> +</span><span id="L-4855"><a href="#L-4855"><span class="linenos">4855</span></a> +</span><span id="L-4856"><a href="#L-4856"><span class="linenos">4856</span></a><span class="k">class</span> <span class="nc">ArrayOverlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-4857"><a href="#L-4857"><span class="linenos">4857</span></a> <span class="k">pass</span> +</span><span id="L-4858"><a href="#L-4858"><span class="linenos">4858</span></a> +</span><span id="L-4859"><a href="#L-4859"><span class="linenos">4859</span></a> +</span><span id="L-4860"><a href="#L-4860"><span class="linenos">4860</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4861"><a href="#L-4861"><span class="linenos">4861</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4862"><a href="#L-4862"><span class="linenos">4862</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_SIZE"</span><span class="p">,</span> <span class="s2">"ARRAY_LENGTH"</span><span class="p">]</span> +</span><span id="L-4863"><a href="#L-4863"><span class="linenos">4863</span></a> </span><span id="L-4864"><a href="#L-4864"><span class="linenos">4864</span></a> -</span><span id="L-4865"><a href="#L-4865"><span class="linenos">4865</span></a> -</span><span id="L-4866"><a href="#L-4866"><span class="linenos">4866</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4867"><a href="#L-4867"><span class="linenos">4867</span></a> <span class="k">pass</span> +</span><span id="L-4865"><a href="#L-4865"><span class="linenos">4865</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4866"><a href="#L-4866"><span class="linenos">4866</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4867"><a href="#L-4867"><span class="linenos">4867</span></a> </span><span id="L-4868"><a href="#L-4868"><span class="linenos">4868</span></a> -</span><span id="L-4869"><a href="#L-4869"><span class="linenos">4869</span></a> -</span><span id="L-4870"><a href="#L-4870"><span class="linenos">4870</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4871"><a href="#L-4871"><span class="linenos">4871</span></a> <span class="k">pass</span> +</span><span id="L-4869"><a href="#L-4869"><span class="linenos">4869</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4870"><a href="#L-4870"><span class="linenos">4870</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4871"><a href="#L-4871"><span class="linenos">4871</span></a> </span><span id="L-4872"><a href="#L-4872"><span class="linenos">4872</span></a> -</span><span id="L-4873"><a href="#L-4873"><span class="linenos">4873</span></a> -</span><span id="L-4874"><a href="#L-4874"><span class="linenos">4874</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4875"><a href="#L-4875"><span class="linenos">4875</span></a> <span class="k">pass</span> +</span><span id="L-4873"><a href="#L-4873"><span class="linenos">4873</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4874"><a href="#L-4874"><span class="linenos">4874</span></a> <span class="k">pass</span> +</span><span id="L-4875"><a href="#L-4875"><span class="linenos">4875</span></a> </span><span id="L-4876"><a href="#L-4876"><span class="linenos">4876</span></a> -</span><span id="L-4877"><a href="#L-4877"><span class="linenos">4877</span></a> -</span><span id="L-4878"><a href="#L-4878"><span class="linenos">4878</span></a><span class="k">class</span> <span class="nc">Lag</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4879"><a href="#L-4879"><span class="linenos">4879</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4877"><a href="#L-4877"><span class="linenos">4877</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4878"><a href="#L-4878"><span class="linenos">4878</span></a> <span class="k">pass</span> +</span><span id="L-4879"><a href="#L-4879"><span class="linenos">4879</span></a> </span><span id="L-4880"><a href="#L-4880"><span class="linenos">4880</span></a> -</span><span id="L-4881"><a href="#L-4881"><span class="linenos">4881</span></a> -</span><span id="L-4882"><a href="#L-4882"><span class="linenos">4882</span></a><span class="k">class</span> <span class="nc">Lead</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4883"><a href="#L-4883"><span class="linenos">4883</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4881"><a href="#L-4881"><span class="linenos">4881</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4882"><a href="#L-4882"><span class="linenos">4882</span></a> <span class="k">pass</span> +</span><span id="L-4883"><a href="#L-4883"><span class="linenos">4883</span></a> </span><span id="L-4884"><a href="#L-4884"><span class="linenos">4884</span></a> -</span><span id="L-4885"><a href="#L-4885"><span class="linenos">4885</span></a> -</span><span id="L-4886"><a href="#L-4886"><span class="linenos">4886</span></a><span class="c1"># some dialects have a distinction between first and first_value, usually first is an aggregate func</span> -</span><span id="L-4887"><a href="#L-4887"><span class="linenos">4887</span></a><span class="c1"># and first_value is a window func</span> -</span><span id="L-4888"><a href="#L-4888"><span class="linenos">4888</span></a><span class="k">class</span> <span class="nc">First</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4889"><a href="#L-4889"><span class="linenos">4889</span></a> <span class="k">pass</span> -</span><span id="L-4890"><a href="#L-4890"><span class="linenos">4890</span></a> +</span><span id="L-4885"><a href="#L-4885"><span class="linenos">4885</span></a><span class="k">class</span> <span class="nc">Lag</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4886"><a href="#L-4886"><span class="linenos">4886</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4887"><a href="#L-4887"><span class="linenos">4887</span></a> +</span><span id="L-4888"><a href="#L-4888"><span class="linenos">4888</span></a> +</span><span id="L-4889"><a href="#L-4889"><span class="linenos">4889</span></a><span class="k">class</span> <span class="nc">Lead</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4890"><a href="#L-4890"><span class="linenos">4890</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-4891"><a href="#L-4891"><span class="linenos">4891</span></a> -</span><span id="L-4892"><a href="#L-4892"><span class="linenos">4892</span></a><span class="k">class</span> <span class="nc">Last</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4893"><a href="#L-4893"><span class="linenos">4893</span></a> <span class="k">pass</span> -</span><span id="L-4894"><a href="#L-4894"><span class="linenos">4894</span></a> -</span><span id="L-4895"><a href="#L-4895"><span class="linenos">4895</span></a> -</span><span id="L-4896"><a href="#L-4896"><span class="linenos">4896</span></a><span class="k">class</span> <span class="nc">FirstValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4897"><a href="#L-4897"><span class="linenos">4897</span></a> <span class="k">pass</span> +</span><span id="L-4892"><a href="#L-4892"><span class="linenos">4892</span></a> +</span><span id="L-4893"><a href="#L-4893"><span class="linenos">4893</span></a><span class="c1"># some dialects have a distinction between first and first_value, usually first is an aggregate func</span> +</span><span id="L-4894"><a href="#L-4894"><span class="linenos">4894</span></a><span class="c1"># and first_value is a window func</span> +</span><span id="L-4895"><a href="#L-4895"><span class="linenos">4895</span></a><span class="k">class</span> <span class="nc">First</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4896"><a href="#L-4896"><span class="linenos">4896</span></a> <span class="k">pass</span> +</span><span id="L-4897"><a href="#L-4897"><span class="linenos">4897</span></a> </span><span id="L-4898"><a href="#L-4898"><span class="linenos">4898</span></a> -</span><span id="L-4899"><a href="#L-4899"><span class="linenos">4899</span></a> -</span><span id="L-4900"><a href="#L-4900"><span class="linenos">4900</span></a><span class="k">class</span> <span class="nc">LastValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4901"><a href="#L-4901"><span class="linenos">4901</span></a> <span class="k">pass</span> +</span><span id="L-4899"><a href="#L-4899"><span class="linenos">4899</span></a><span class="k">class</span> <span class="nc">Last</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4900"><a href="#L-4900"><span class="linenos">4900</span></a> <span class="k">pass</span> +</span><span id="L-4901"><a href="#L-4901"><span class="linenos">4901</span></a> </span><span id="L-4902"><a href="#L-4902"><span class="linenos">4902</span></a> -</span><span id="L-4903"><a href="#L-4903"><span class="linenos">4903</span></a> -</span><span id="L-4904"><a href="#L-4904"><span class="linenos">4904</span></a><span class="k">class</span> <span class="nc">NthValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-4905"><a href="#L-4905"><span class="linenos">4905</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4903"><a href="#L-4903"><span class="linenos">4903</span></a><span class="k">class</span> <span class="nc">FirstValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4904"><a href="#L-4904"><span class="linenos">4904</span></a> <span class="k">pass</span> +</span><span id="L-4905"><a href="#L-4905"><span class="linenos">4905</span></a> </span><span id="L-4906"><a href="#L-4906"><span class="linenos">4906</span></a> -</span><span id="L-4907"><a href="#L-4907"><span class="linenos">4907</span></a> -</span><span id="L-4908"><a href="#L-4908"><span class="linenos">4908</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4909"><a href="#L-4909"><span class="linenos">4909</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4907"><a href="#L-4907"><span class="linenos">4907</span></a><span class="k">class</span> <span class="nc">LastValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4908"><a href="#L-4908"><span class="linenos">4908</span></a> <span class="k">pass</span> +</span><span id="L-4909"><a href="#L-4909"><span class="linenos">4909</span></a> </span><span id="L-4910"><a href="#L-4910"><span class="linenos">4910</span></a> -</span><span id="L-4911"><a href="#L-4911"><span class="linenos">4911</span></a> <span class="k">def</span> <span class="nf">when</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">then</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="L-4912"><a href="#L-4912"><span class="linenos">4912</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-4913"><a href="#L-4913"><span class="linenos">4913</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-4914"><a href="#L-4914"><span class="linenos">4914</span></a> <span class="s2">"ifs"</span><span class="p">,</span> -</span><span id="L-4915"><a href="#L-4915"><span class="linenos">4915</span></a> <span class="n">If</span><span class="p">(</span> -</span><span id="L-4916"><a href="#L-4916"><span class="linenos">4916</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-4917"><a href="#L-4917"><span class="linenos">4917</span></a> <span class="n">true</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">then</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-4918"><a href="#L-4918"><span class="linenos">4918</span></a> <span class="p">),</span> -</span><span id="L-4919"><a href="#L-4919"><span class="linenos">4919</span></a> <span class="p">)</span> -</span><span id="L-4920"><a href="#L-4920"><span class="linenos">4920</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-4921"><a href="#L-4921"><span class="linenos">4921</span></a> -</span><span id="L-4922"><a href="#L-4922"><span class="linenos">4922</span></a> <span class="k">def</span> <span class="nf">else_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="L-4923"><a href="#L-4923"><span class="linenos">4923</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-4924"><a href="#L-4924"><span class="linenos">4924</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"default"</span><span class="p">,</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="L-4925"><a href="#L-4925"><span class="linenos">4925</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-4926"><a href="#L-4926"><span class="linenos">4926</span></a> -</span><span id="L-4927"><a href="#L-4927"><span class="linenos">4927</span></a> -</span><span id="L-4928"><a href="#L-4928"><span class="linenos">4928</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4929"><a href="#L-4929"><span class="linenos">4929</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-4930"><a href="#L-4930"><span class="linenos">4930</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4931"><a href="#L-4931"><span class="linenos">4931</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4932"><a href="#L-4932"><span class="linenos">4932</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4933"><a href="#L-4933"><span class="linenos">4933</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4934"><a href="#L-4934"><span class="linenos">4934</span></a> <span class="s2">"action"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4935"><a href="#L-4935"><span class="linenos">4935</span></a> <span class="p">}</span> -</span><span id="L-4936"><a href="#L-4936"><span class="linenos">4936</span></a> -</span><span id="L-4937"><a href="#L-4937"><span class="linenos">4937</span></a> <span class="nd">@property</span> -</span><span id="L-4938"><a href="#L-4938"><span class="linenos">4938</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4939"><a href="#L-4939"><span class="linenos">4939</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4940"><a href="#L-4940"><span class="linenos">4940</span></a> -</span><span id="L-4941"><a href="#L-4941"><span class="linenos">4941</span></a> <span class="nd">@property</span> -</span><span id="L-4942"><a href="#L-4942"><span class="linenos">4942</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="L-4943"><a href="#L-4943"><span class="linenos">4943</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> -</span><span id="L-4944"><a href="#L-4944"><span class="linenos">4944</span></a> -</span><span id="L-4945"><a href="#L-4945"><span class="linenos">4945</span></a> <span class="nd">@property</span> -</span><span id="L-4946"><a href="#L-4946"><span class="linenos">4946</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4947"><a href="#L-4947"><span class="linenos">4947</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4948"><a href="#L-4948"><span class="linenos">4948</span></a> -</span><span id="L-4949"><a href="#L-4949"><span class="linenos">4949</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-4950"><a href="#L-4950"><span class="linenos">4950</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4951"><a href="#L-4951"><span class="linenos">4951</span></a><span class="sd"> Checks whether this Cast's DataType matches one of the provided data types. Nested types</span> -</span><span id="L-4952"><a href="#L-4952"><span class="linenos">4952</span></a><span class="sd"> like arrays or structs will be compared using "structural equivalence" semantics, so e.g.</span> -</span><span id="L-4953"><a href="#L-4953"><span class="linenos">4953</span></a><span class="sd"> array<int> != array<float>.</span> -</span><span id="L-4954"><a href="#L-4954"><span class="linenos">4954</span></a> -</span><span id="L-4955"><a href="#L-4955"><span class="linenos">4955</span></a><span class="sd"> Args:</span> -</span><span id="L-4956"><a href="#L-4956"><span class="linenos">4956</span></a><span class="sd"> dtypes: the data types to compare this Cast's DataType to.</span> -</span><span id="L-4957"><a href="#L-4957"><span class="linenos">4957</span></a> -</span><span id="L-4958"><a href="#L-4958"><span class="linenos">4958</span></a><span class="sd"> Returns:</span> -</span><span id="L-4959"><a href="#L-4959"><span class="linenos">4959</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this Cast's DataType.</span> -</span><span id="L-4960"><a href="#L-4960"><span class="linenos">4960</span></a><span class="sd"> """</span> -</span><span id="L-4961"><a href="#L-4961"><span class="linenos">4961</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">dtypes</span><span class="p">)</span> -</span><span id="L-4962"><a href="#L-4962"><span class="linenos">4962</span></a> -</span><span id="L-4963"><a href="#L-4963"><span class="linenos">4963</span></a> -</span><span id="L-4964"><a href="#L-4964"><span class="linenos">4964</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="L-4965"><a href="#L-4965"><span class="linenos">4965</span></a> <span class="k">pass</span> -</span><span id="L-4966"><a href="#L-4966"><span class="linenos">4966</span></a> -</span><span id="L-4967"><a href="#L-4967"><span class="linenos">4967</span></a> -</span><span id="L-4968"><a href="#L-4968"><span class="linenos">4968</span></a><span class="k">class</span> <span class="nc">Try</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4969"><a href="#L-4969"><span class="linenos">4969</span></a> <span class="k">pass</span> +</span><span id="L-4911"><a href="#L-4911"><span class="linenos">4911</span></a><span class="k">class</span> <span class="nc">NthValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-4912"><a href="#L-4912"><span class="linenos">4912</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4913"><a href="#L-4913"><span class="linenos">4913</span></a> +</span><span id="L-4914"><a href="#L-4914"><span class="linenos">4914</span></a> +</span><span id="L-4915"><a href="#L-4915"><span class="linenos">4915</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4916"><a href="#L-4916"><span class="linenos">4916</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4917"><a href="#L-4917"><span class="linenos">4917</span></a> +</span><span id="L-4918"><a href="#L-4918"><span class="linenos">4918</span></a> <span class="k">def</span> <span class="nf">when</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">then</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="L-4919"><a href="#L-4919"><span class="linenos">4919</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-4920"><a href="#L-4920"><span class="linenos">4920</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-4921"><a href="#L-4921"><span class="linenos">4921</span></a> <span class="s2">"ifs"</span><span class="p">,</span> +</span><span id="L-4922"><a href="#L-4922"><span class="linenos">4922</span></a> <span class="n">If</span><span class="p">(</span> +</span><span id="L-4923"><a href="#L-4923"><span class="linenos">4923</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-4924"><a href="#L-4924"><span class="linenos">4924</span></a> <span class="n">true</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">then</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-4925"><a href="#L-4925"><span class="linenos">4925</span></a> <span class="p">),</span> +</span><span id="L-4926"><a href="#L-4926"><span class="linenos">4926</span></a> <span class="p">)</span> +</span><span id="L-4927"><a href="#L-4927"><span class="linenos">4927</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-4928"><a href="#L-4928"><span class="linenos">4928</span></a> +</span><span id="L-4929"><a href="#L-4929"><span class="linenos">4929</span></a> <span class="k">def</span> <span class="nf">else_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="L-4930"><a href="#L-4930"><span class="linenos">4930</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-4931"><a href="#L-4931"><span class="linenos">4931</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"default"</span><span class="p">,</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="L-4932"><a href="#L-4932"><span class="linenos">4932</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-4933"><a href="#L-4933"><span class="linenos">4933</span></a> +</span><span id="L-4934"><a href="#L-4934"><span class="linenos">4934</span></a> +</span><span id="L-4935"><a href="#L-4935"><span class="linenos">4935</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4936"><a href="#L-4936"><span class="linenos">4936</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-4937"><a href="#L-4937"><span class="linenos">4937</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4938"><a href="#L-4938"><span class="linenos">4938</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4939"><a href="#L-4939"><span class="linenos">4939</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4940"><a href="#L-4940"><span class="linenos">4940</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4941"><a href="#L-4941"><span class="linenos">4941</span></a> <span class="s2">"action"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4942"><a href="#L-4942"><span class="linenos">4942</span></a> <span class="p">}</span> +</span><span id="L-4943"><a href="#L-4943"><span class="linenos">4943</span></a> +</span><span id="L-4944"><a href="#L-4944"><span class="linenos">4944</span></a> <span class="nd">@property</span> +</span><span id="L-4945"><a href="#L-4945"><span class="linenos">4945</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4946"><a href="#L-4946"><span class="linenos">4946</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4947"><a href="#L-4947"><span class="linenos">4947</span></a> +</span><span id="L-4948"><a href="#L-4948"><span class="linenos">4948</span></a> <span class="nd">@property</span> +</span><span id="L-4949"><a href="#L-4949"><span class="linenos">4949</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="L-4950"><a href="#L-4950"><span class="linenos">4950</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> +</span><span id="L-4951"><a href="#L-4951"><span class="linenos">4951</span></a> +</span><span id="L-4952"><a href="#L-4952"><span class="linenos">4952</span></a> <span class="nd">@property</span> +</span><span id="L-4953"><a href="#L-4953"><span class="linenos">4953</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4954"><a href="#L-4954"><span class="linenos">4954</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4955"><a href="#L-4955"><span class="linenos">4955</span></a> +</span><span id="L-4956"><a href="#L-4956"><span class="linenos">4956</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-4957"><a href="#L-4957"><span class="linenos">4957</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4958"><a href="#L-4958"><span class="linenos">4958</span></a><span class="sd"> Checks whether this Cast's DataType matches one of the provided data types. Nested types</span> +</span><span id="L-4959"><a href="#L-4959"><span class="linenos">4959</span></a><span class="sd"> like arrays or structs will be compared using "structural equivalence" semantics, so e.g.</span> +</span><span id="L-4960"><a href="#L-4960"><span class="linenos">4960</span></a><span class="sd"> array<int> != array<float>.</span> +</span><span id="L-4961"><a href="#L-4961"><span class="linenos">4961</span></a> +</span><span id="L-4962"><a href="#L-4962"><span class="linenos">4962</span></a><span class="sd"> Args:</span> +</span><span id="L-4963"><a href="#L-4963"><span class="linenos">4963</span></a><span class="sd"> dtypes: the data types to compare this Cast's DataType to.</span> +</span><span id="L-4964"><a href="#L-4964"><span class="linenos">4964</span></a> +</span><span id="L-4965"><a href="#L-4965"><span class="linenos">4965</span></a><span class="sd"> Returns:</span> +</span><span id="L-4966"><a href="#L-4966"><span class="linenos">4966</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this Cast's DataType.</span> +</span><span id="L-4967"><a href="#L-4967"><span class="linenos">4967</span></a><span class="sd"> """</span> +</span><span id="L-4968"><a href="#L-4968"><span class="linenos">4968</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">dtypes</span><span class="p">)</span> +</span><span id="L-4969"><a href="#L-4969"><span class="linenos">4969</span></a> </span><span id="L-4970"><a href="#L-4970"><span class="linenos">4970</span></a> -</span><span id="L-4971"><a href="#L-4971"><span class="linenos">4971</span></a> -</span><span id="L-4972"><a href="#L-4972"><span class="linenos">4972</span></a><span class="k">class</span> <span class="nc">CastToStrType</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4973"><a href="#L-4973"><span class="linenos">4973</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4971"><a href="#L-4971"><span class="linenos">4971</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="L-4972"><a href="#L-4972"><span class="linenos">4972</span></a> <span class="k">pass</span> +</span><span id="L-4973"><a href="#L-4973"><span class="linenos">4973</span></a> </span><span id="L-4974"><a href="#L-4974"><span class="linenos">4974</span></a> -</span><span id="L-4975"><a href="#L-4975"><span class="linenos">4975</span></a> -</span><span id="L-4976"><a href="#L-4976"><span class="linenos">4976</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-4977"><a href="#L-4977"><span class="linenos">4977</span></a> <span class="k">pass</span> +</span><span id="L-4975"><a href="#L-4975"><span class="linenos">4975</span></a><span class="k">class</span> <span class="nc">Try</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4976"><a href="#L-4976"><span class="linenos">4976</span></a> <span class="k">pass</span> +</span><span id="L-4977"><a href="#L-4977"><span class="linenos">4977</span></a> </span><span id="L-4978"><a href="#L-4978"><span class="linenos">4978</span></a> -</span><span id="L-4979"><a href="#L-4979"><span class="linenos">4979</span></a> -</span><span id="L-4980"><a href="#L-4980"><span class="linenos">4980</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4981"><a href="#L-4981"><span class="linenos">4981</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4982"><a href="#L-4982"><span class="linenos">4982</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> -</span><span id="L-4983"><a href="#L-4983"><span class="linenos">4983</span></a> -</span><span id="L-4984"><a href="#L-4984"><span class="linenos">4984</span></a> -</span><span id="L-4985"><a href="#L-4985"><span class="linenos">4985</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4986"><a href="#L-4986"><span class="linenos">4986</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4987"><a href="#L-4987"><span class="linenos">4987</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4988"><a href="#L-4988"><span class="linenos">4988</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COALESCE"</span><span class="p">,</span> <span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> -</span><span id="L-4989"><a href="#L-4989"><span class="linenos">4989</span></a> +</span><span id="L-4979"><a href="#L-4979"><span class="linenos">4979</span></a><span class="k">class</span> <span class="nc">CastToStrType</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4980"><a href="#L-4980"><span class="linenos">4980</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-4981"><a href="#L-4981"><span class="linenos">4981</span></a> +</span><span id="L-4982"><a href="#L-4982"><span class="linenos">4982</span></a> +</span><span id="L-4983"><a href="#L-4983"><span class="linenos">4983</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-4984"><a href="#L-4984"><span class="linenos">4984</span></a> <span class="k">pass</span> +</span><span id="L-4985"><a href="#L-4985"><span class="linenos">4985</span></a> +</span><span id="L-4986"><a href="#L-4986"><span class="linenos">4986</span></a> +</span><span id="L-4987"><a href="#L-4987"><span class="linenos">4987</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4988"><a href="#L-4988"><span class="linenos">4988</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4989"><a href="#L-4989"><span class="linenos">4989</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> </span><span id="L-4990"><a href="#L-4990"><span class="linenos">4990</span></a> -</span><span id="L-4991"><a href="#L-4991"><span class="linenos">4991</span></a><span class="k">class</span> <span class="nc">Chr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4992"><a href="#L-4992"><span class="linenos">4992</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4993"><a href="#L-4993"><span class="linenos">4993</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4994"><a href="#L-4994"><span class="linenos">4994</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CHR"</span><span class="p">,</span> <span class="s2">"CHAR"</span><span class="p">]</span> -</span><span id="L-4995"><a href="#L-4995"><span class="linenos">4995</span></a> +</span><span id="L-4991"><a href="#L-4991"><span class="linenos">4991</span></a> +</span><span id="L-4992"><a href="#L-4992"><span class="linenos">4992</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4993"><a href="#L-4993"><span class="linenos">4993</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4994"><a href="#L-4994"><span class="linenos">4994</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4995"><a href="#L-4995"><span class="linenos">4995</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COALESCE"</span><span class="p">,</span> <span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> </span><span id="L-4996"><a href="#L-4996"><span class="linenos">4996</span></a> -</span><span id="L-4997"><a href="#L-4997"><span class="linenos">4997</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-4998"><a href="#L-4998"><span class="linenos">4998</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"coalesce"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-4999"><a href="#L-4999"><span class="linenos">4999</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5000"><a href="#L-5000"><span class="linenos">5000</span></a> -</span><span id="L-5001"><a href="#L-5001"><span class="linenos">5001</span></a> -</span><span id="L-5002"><a href="#L-5002"><span class="linenos">5002</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> -</span><span id="L-5003"><a href="#L-5003"><span class="linenos">5003</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> -</span><span id="L-5004"><a href="#L-5004"><span class="linenos">5004</span></a> -</span><span id="L-5005"><a href="#L-5005"><span class="linenos">5005</span></a> -</span><span id="L-5006"><a href="#L-5006"><span class="linenos">5006</span></a><span class="c1"># https://docs.oracle.com/cd/B13789_01/server.101/b10759/operators004.htm#i1035022</span> -</span><span id="L-5007"><a href="#L-5007"><span class="linenos">5007</span></a><span class="k">class</span> <span class="nc">ConnectByRoot</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5008"><a href="#L-5008"><span class="linenos">5008</span></a> <span class="k">pass</span> -</span><span id="L-5009"><a href="#L-5009"><span class="linenos">5009</span></a> -</span><span id="L-5010"><a href="#L-5010"><span class="linenos">5010</span></a> -</span><span id="L-5011"><a href="#L-5011"><span class="linenos">5011</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5012"><a href="#L-5012"><span class="linenos">5012</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5013"><a href="#L-5013"><span class="linenos">5013</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5014"><a href="#L-5014"><span class="linenos">5014</span></a> -</span><span id="L-5015"><a href="#L-5015"><span class="linenos">5015</span></a> -</span><span id="L-5016"><a href="#L-5016"><span class="linenos">5016</span></a><span class="k">class</span> <span class="nc">CountIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5017"><a href="#L-5017"><span class="linenos">5017</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COUNT_IF"</span><span class="p">,</span> <span class="s2">"COUNTIF"</span><span class="p">]</span> -</span><span id="L-5018"><a href="#L-5018"><span class="linenos">5018</span></a> -</span><span id="L-5019"><a href="#L-5019"><span class="linenos">5019</span></a> -</span><span id="L-5020"><a href="#L-5020"><span class="linenos">5020</span></a><span class="c1"># cube root</span> -</span><span id="L-5021"><a href="#L-5021"><span class="linenos">5021</span></a><span class="k">class</span> <span class="nc">Cbrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5022"><a href="#L-5022"><span class="linenos">5022</span></a> <span class="k">pass</span> -</span><span id="L-5023"><a href="#L-5023"><span class="linenos">5023</span></a> -</span><span id="L-5024"><a href="#L-5024"><span class="linenos">5024</span></a> -</span><span id="L-5025"><a href="#L-5025"><span class="linenos">5025</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5026"><a href="#L-5026"><span class="linenos">5026</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5027"><a href="#L-5027"><span class="linenos">5027</span></a> -</span><span id="L-5028"><a href="#L-5028"><span class="linenos">5028</span></a> -</span><span id="L-5029"><a href="#L-5029"><span class="linenos">5029</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5030"><a href="#L-5030"><span class="linenos">5030</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-4997"><a href="#L-4997"><span class="linenos">4997</span></a> +</span><span id="L-4998"><a href="#L-4998"><span class="linenos">4998</span></a><span class="k">class</span> <span class="nc">Chr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-4999"><a href="#L-4999"><span class="linenos">4999</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5000"><a href="#L-5000"><span class="linenos">5000</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5001"><a href="#L-5001"><span class="linenos">5001</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CHR"</span><span class="p">,</span> <span class="s2">"CHAR"</span><span class="p">]</span> +</span><span id="L-5002"><a href="#L-5002"><span class="linenos">5002</span></a> +</span><span id="L-5003"><a href="#L-5003"><span class="linenos">5003</span></a> +</span><span id="L-5004"><a href="#L-5004"><span class="linenos">5004</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5005"><a href="#L-5005"><span class="linenos">5005</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"coalesce"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5006"><a href="#L-5006"><span class="linenos">5006</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5007"><a href="#L-5007"><span class="linenos">5007</span></a> +</span><span id="L-5008"><a href="#L-5008"><span class="linenos">5008</span></a> +</span><span id="L-5009"><a href="#L-5009"><span class="linenos">5009</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> +</span><span id="L-5010"><a href="#L-5010"><span class="linenos">5010</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> +</span><span id="L-5011"><a href="#L-5011"><span class="linenos">5011</span></a> +</span><span id="L-5012"><a href="#L-5012"><span class="linenos">5012</span></a> +</span><span id="L-5013"><a href="#L-5013"><span class="linenos">5013</span></a><span class="c1"># https://docs.oracle.com/cd/B13789_01/server.101/b10759/operators004.htm#i1035022</span> +</span><span id="L-5014"><a href="#L-5014"><span class="linenos">5014</span></a><span class="k">class</span> <span class="nc">ConnectByRoot</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5015"><a href="#L-5015"><span class="linenos">5015</span></a> <span class="k">pass</span> +</span><span id="L-5016"><a href="#L-5016"><span class="linenos">5016</span></a> +</span><span id="L-5017"><a href="#L-5017"><span class="linenos">5017</span></a> +</span><span id="L-5018"><a href="#L-5018"><span class="linenos">5018</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5019"><a href="#L-5019"><span class="linenos">5019</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5020"><a href="#L-5020"><span class="linenos">5020</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5021"><a href="#L-5021"><span class="linenos">5021</span></a> +</span><span id="L-5022"><a href="#L-5022"><span class="linenos">5022</span></a> +</span><span id="L-5023"><a href="#L-5023"><span class="linenos">5023</span></a><span class="k">class</span> <span class="nc">CountIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5024"><a href="#L-5024"><span class="linenos">5024</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COUNT_IF"</span><span class="p">,</span> <span class="s2">"COUNTIF"</span><span class="p">]</span> +</span><span id="L-5025"><a href="#L-5025"><span class="linenos">5025</span></a> +</span><span id="L-5026"><a href="#L-5026"><span class="linenos">5026</span></a> +</span><span id="L-5027"><a href="#L-5027"><span class="linenos">5027</span></a><span class="c1"># cube root</span> +</span><span id="L-5028"><a href="#L-5028"><span class="linenos">5028</span></a><span class="k">class</span> <span class="nc">Cbrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5029"><a href="#L-5029"><span class="linenos">5029</span></a> <span class="k">pass</span> +</span><span id="L-5030"><a href="#L-5030"><span class="linenos">5030</span></a> </span><span id="L-5031"><a href="#L-5031"><span class="linenos">5031</span></a> -</span><span id="L-5032"><a href="#L-5032"><span class="linenos">5032</span></a> -</span><span id="L-5033"><a href="#L-5033"><span class="linenos">5033</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5034"><a href="#L-5034"><span class="linenos">5034</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5032"><a href="#L-5032"><span class="linenos">5032</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5033"><a href="#L-5033"><span class="linenos">5033</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5034"><a href="#L-5034"><span class="linenos">5034</span></a> </span><span id="L-5035"><a href="#L-5035"><span class="linenos">5035</span></a> -</span><span id="L-5036"><a href="#L-5036"><span class="linenos">5036</span></a> -</span><span id="L-5037"><a href="#L-5037"><span class="linenos">5037</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5038"><a href="#L-5038"><span class="linenos">5038</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"transaction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5036"><a href="#L-5036"><span class="linenos">5036</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5037"><a href="#L-5037"><span class="linenos">5037</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5038"><a href="#L-5038"><span class="linenos">5038</span></a> </span><span id="L-5039"><a href="#L-5039"><span class="linenos">5039</span></a> -</span><span id="L-5040"><a href="#L-5040"><span class="linenos">5040</span></a> -</span><span id="L-5041"><a href="#L-5041"><span class="linenos">5041</span></a><span class="k">class</span> <span class="nc">CurrentUser</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5042"><a href="#L-5042"><span class="linenos">5042</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5040"><a href="#L-5040"><span class="linenos">5040</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5041"><a href="#L-5041"><span class="linenos">5041</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5042"><a href="#L-5042"><span class="linenos">5042</span></a> </span><span id="L-5043"><a href="#L-5043"><span class="linenos">5043</span></a> -</span><span id="L-5044"><a href="#L-5044"><span class="linenos">5044</span></a> -</span><span id="L-5045"><a href="#L-5045"><span class="linenos">5045</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="L-5046"><a href="#L-5046"><span class="linenos">5046</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5044"><a href="#L-5044"><span class="linenos">5044</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5045"><a href="#L-5045"><span class="linenos">5045</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"transaction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5046"><a href="#L-5046"><span class="linenos">5046</span></a> </span><span id="L-5047"><a href="#L-5047"><span class="linenos">5047</span></a> -</span><span id="L-5048"><a href="#L-5048"><span class="linenos">5048</span></a> -</span><span id="L-5049"><a href="#L-5049"><span class="linenos">5049</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="L-5050"><a href="#L-5050"><span class="linenos">5050</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5048"><a href="#L-5048"><span class="linenos">5048</span></a><span class="k">class</span> <span class="nc">CurrentUser</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5049"><a href="#L-5049"><span class="linenos">5049</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5050"><a href="#L-5050"><span class="linenos">5050</span></a> </span><span id="L-5051"><a href="#L-5051"><span class="linenos">5051</span></a> -</span><span id="L-5052"><a href="#L-5052"><span class="linenos">5052</span></a> -</span><span id="L-5053"><a href="#L-5053"><span class="linenos">5053</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5054"><a href="#L-5054"><span class="linenos">5054</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEDIFF"</span><span class="p">,</span> <span class="s2">"DATE_DIFF"</span><span class="p">]</span> -</span><span id="L-5055"><a href="#L-5055"><span class="linenos">5055</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5056"><a href="#L-5056"><span class="linenos">5056</span></a> -</span><span id="L-5057"><a href="#L-5057"><span class="linenos">5057</span></a> -</span><span id="L-5058"><a href="#L-5058"><span class="linenos">5058</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5059"><a href="#L-5059"><span class="linenos">5059</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5060"><a href="#L-5060"><span class="linenos">5060</span></a> -</span><span id="L-5061"><a href="#L-5061"><span class="linenos">5061</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-5062"><a href="#L-5062"><span class="linenos">5062</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="L-5063"><a href="#L-5063"><span class="linenos">5063</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> -</span><span id="L-5064"><a href="#L-5064"><span class="linenos">5064</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="L-5065"><a href="#L-5065"><span class="linenos">5065</span></a> <span class="p">(</span><span class="n">TimeUnit</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-5066"><a href="#L-5066"><span class="linenos">5066</span></a> <span class="p">)</span> -</span><span id="L-5067"><a href="#L-5067"><span class="linenos">5067</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="L-5068"><a href="#L-5068"><span class="linenos">5068</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="L-5069"><a href="#L-5069"><span class="linenos">5069</span></a> -</span><span id="L-5070"><a href="#L-5070"><span class="linenos">5070</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-5071"><a href="#L-5071"><span class="linenos">5071</span></a> -</span><span id="L-5072"><a href="#L-5072"><span class="linenos">5072</span></a> <span class="nd">@property</span> -</span><span id="L-5073"><a href="#L-5073"><span class="linenos">5073</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-5074"><a href="#L-5074"><span class="linenos">5074</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> -</span><span id="L-5075"><a href="#L-5075"><span class="linenos">5075</span></a> +</span><span id="L-5052"><a href="#L-5052"><span class="linenos">5052</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="L-5053"><a href="#L-5053"><span class="linenos">5053</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5054"><a href="#L-5054"><span class="linenos">5054</span></a> +</span><span id="L-5055"><a href="#L-5055"><span class="linenos">5055</span></a> +</span><span id="L-5056"><a href="#L-5056"><span class="linenos">5056</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="L-5057"><a href="#L-5057"><span class="linenos">5057</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5058"><a href="#L-5058"><span class="linenos">5058</span></a> +</span><span id="L-5059"><a href="#L-5059"><span class="linenos">5059</span></a> +</span><span id="L-5060"><a href="#L-5060"><span class="linenos">5060</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5061"><a href="#L-5061"><span class="linenos">5061</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEDIFF"</span><span class="p">,</span> <span class="s2">"DATE_DIFF"</span><span class="p">]</span> +</span><span id="L-5062"><a href="#L-5062"><span class="linenos">5062</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5063"><a href="#L-5063"><span class="linenos">5063</span></a> +</span><span id="L-5064"><a href="#L-5064"><span class="linenos">5064</span></a> +</span><span id="L-5065"><a href="#L-5065"><span class="linenos">5065</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5066"><a href="#L-5066"><span class="linenos">5066</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5067"><a href="#L-5067"><span class="linenos">5067</span></a> +</span><span id="L-5068"><a href="#L-5068"><span class="linenos">5068</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-5069"><a href="#L-5069"><span class="linenos">5069</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="L-5070"><a href="#L-5070"><span class="linenos">5070</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> +</span><span id="L-5071"><a href="#L-5071"><span class="linenos">5071</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="L-5072"><a href="#L-5072"><span class="linenos">5072</span></a> <span class="p">(</span><span class="n">TimeUnit</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5073"><a href="#L-5073"><span class="linenos">5073</span></a> <span class="p">)</span> +</span><span id="L-5074"><a href="#L-5074"><span class="linenos">5074</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="L-5075"><a href="#L-5075"><span class="linenos">5075</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> </span><span id="L-5076"><a href="#L-5076"><span class="linenos">5076</span></a> -</span><span id="L-5077"><a href="#L-5077"><span class="linenos">5077</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="L-5078"><a href="#L-5078"><span class="linenos">5078</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5079"><a href="#L-5079"><span class="linenos">5079</span></a> -</span><span id="L-5080"><a href="#L-5080"><span class="linenos">5080</span></a> -</span><span id="L-5081"><a href="#L-5081"><span class="linenos">5081</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="L-5082"><a href="#L-5082"><span class="linenos">5082</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5077"><a href="#L-5077"><span class="linenos">5077</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-5078"><a href="#L-5078"><span class="linenos">5078</span></a> +</span><span id="L-5079"><a href="#L-5079"><span class="linenos">5079</span></a> <span class="nd">@property</span> +</span><span id="L-5080"><a href="#L-5080"><span class="linenos">5080</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-5081"><a href="#L-5081"><span class="linenos">5081</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> +</span><span id="L-5082"><a href="#L-5082"><span class="linenos">5082</span></a> </span><span id="L-5083"><a href="#L-5083"><span class="linenos">5083</span></a> -</span><span id="L-5084"><a href="#L-5084"><span class="linenos">5084</span></a> -</span><span id="L-5085"><a href="#L-5085"><span class="linenos">5085</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5086"><a href="#L-5086"><span class="linenos">5086</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5084"><a href="#L-5084"><span class="linenos">5084</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="L-5085"><a href="#L-5085"><span class="linenos">5085</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5086"><a href="#L-5086"><span class="linenos">5086</span></a> </span><span id="L-5087"><a href="#L-5087"><span class="linenos">5087</span></a> -</span><span id="L-5088"><a href="#L-5088"><span class="linenos">5088</span></a> -</span><span id="L-5089"><a href="#L-5089"><span class="linenos">5089</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5090"><a href="#L-5090"><span class="linenos">5090</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5088"><a href="#L-5088"><span class="linenos">5088</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="L-5089"><a href="#L-5089"><span class="linenos">5089</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5090"><a href="#L-5090"><span class="linenos">5090</span></a> </span><span id="L-5091"><a href="#L-5091"><span class="linenos">5091</span></a> -</span><span id="L-5092"><a href="#L-5092"><span class="linenos">5092</span></a> -</span><span id="L-5093"><a href="#L-5093"><span class="linenos">5093</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5094"><a href="#L-5094"><span class="linenos">5094</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> +</span><span id="L-5092"><a href="#L-5092"><span class="linenos">5092</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5093"><a href="#L-5093"><span class="linenos">5093</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5094"><a href="#L-5094"><span class="linenos">5094</span></a> </span><span id="L-5095"><a href="#L-5095"><span class="linenos">5095</span></a> -</span><span id="L-5096"><a href="#L-5096"><span class="linenos">5096</span></a> -</span><span id="L-5097"><a href="#L-5097"><span class="linenos">5097</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5098"><a href="#L-5098"><span class="linenos">5098</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> +</span><span id="L-5096"><a href="#L-5096"><span class="linenos">5096</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5097"><a href="#L-5097"><span class="linenos">5097</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5098"><a href="#L-5098"><span class="linenos">5098</span></a> </span><span id="L-5099"><a href="#L-5099"><span class="linenos">5099</span></a> -</span><span id="L-5100"><a href="#L-5100"><span class="linenos">5100</span></a> -</span><span id="L-5101"><a href="#L-5101"><span class="linenos">5101</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5102"><a href="#L-5102"><span class="linenos">5102</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> +</span><span id="L-5100"><a href="#L-5100"><span class="linenos">5100</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5101"><a href="#L-5101"><span class="linenos">5101</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> +</span><span id="L-5102"><a href="#L-5102"><span class="linenos">5102</span></a> </span><span id="L-5103"><a href="#L-5103"><span class="linenos">5103</span></a> -</span><span id="L-5104"><a href="#L-5104"><span class="linenos">5104</span></a> -</span><span id="L-5105"><a href="#L-5105"><span class="linenos">5105</span></a><span class="k">class</span> <span class="nc">ToDays</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5106"><a href="#L-5106"><span class="linenos">5106</span></a> <span class="k">pass</span> +</span><span id="L-5104"><a href="#L-5104"><span class="linenos">5104</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5105"><a href="#L-5105"><span class="linenos">5105</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> +</span><span id="L-5106"><a href="#L-5106"><span class="linenos">5106</span></a> </span><span id="L-5107"><a href="#L-5107"><span class="linenos">5107</span></a> -</span><span id="L-5108"><a href="#L-5108"><span class="linenos">5108</span></a> -</span><span id="L-5109"><a href="#L-5109"><span class="linenos">5109</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5110"><a href="#L-5110"><span class="linenos">5110</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> +</span><span id="L-5108"><a href="#L-5108"><span class="linenos">5108</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5109"><a href="#L-5109"><span class="linenos">5109</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> +</span><span id="L-5110"><a href="#L-5110"><span class="linenos">5110</span></a> </span><span id="L-5111"><a href="#L-5111"><span class="linenos">5111</span></a> -</span><span id="L-5112"><a href="#L-5112"><span class="linenos">5112</span></a> -</span><span id="L-5113"><a href="#L-5113"><span class="linenos">5113</span></a><span class="k">class</span> <span class="nc">MonthsBetween</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5114"><a href="#L-5114"><span class="linenos">5114</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"roundoff"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5112"><a href="#L-5112"><span class="linenos">5112</span></a><span class="k">class</span> <span class="nc">ToDays</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5113"><a href="#L-5113"><span class="linenos">5113</span></a> <span class="k">pass</span> +</span><span id="L-5114"><a href="#L-5114"><span class="linenos">5114</span></a> </span><span id="L-5115"><a href="#L-5115"><span class="linenos">5115</span></a> -</span><span id="L-5116"><a href="#L-5116"><span class="linenos">5116</span></a> -</span><span id="L-5117"><a href="#L-5117"><span class="linenos">5117</span></a><span class="k">class</span> <span class="nc">LastDay</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5118"><a href="#L-5118"><span class="linenos">5118</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LAST_DAY"</span><span class="p">,</span> <span class="s2">"LAST_DAY_OF_MONTH"</span><span class="p">]</span> -</span><span id="L-5119"><a href="#L-5119"><span class="linenos">5119</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5120"><a href="#L-5120"><span class="linenos">5120</span></a> -</span><span id="L-5121"><a href="#L-5121"><span class="linenos">5121</span></a> -</span><span id="L-5122"><a href="#L-5122"><span class="linenos">5122</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5123"><a href="#L-5123"><span class="linenos">5123</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5124"><a href="#L-5124"><span class="linenos">5124</span></a> -</span><span id="L-5125"><a href="#L-5125"><span class="linenos">5125</span></a> -</span><span id="L-5126"><a href="#L-5126"><span class="linenos">5126</span></a><span class="k">class</span> <span class="nc">Timestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5127"><a href="#L-5127"><span class="linenos">5127</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"with_tz"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5116"><a href="#L-5116"><span class="linenos">5116</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5117"><a href="#L-5117"><span class="linenos">5117</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> +</span><span id="L-5118"><a href="#L-5118"><span class="linenos">5118</span></a> +</span><span id="L-5119"><a href="#L-5119"><span class="linenos">5119</span></a> +</span><span id="L-5120"><a href="#L-5120"><span class="linenos">5120</span></a><span class="k">class</span> <span class="nc">MonthsBetween</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5121"><a href="#L-5121"><span class="linenos">5121</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"roundoff"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5122"><a href="#L-5122"><span class="linenos">5122</span></a> +</span><span id="L-5123"><a href="#L-5123"><span class="linenos">5123</span></a> +</span><span id="L-5124"><a href="#L-5124"><span class="linenos">5124</span></a><span class="k">class</span> <span class="nc">LastDay</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5125"><a href="#L-5125"><span class="linenos">5125</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LAST_DAY"</span><span class="p">,</span> <span class="s2">"LAST_DAY_OF_MONTH"</span><span class="p">]</span> +</span><span id="L-5126"><a href="#L-5126"><span class="linenos">5126</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5127"><a href="#L-5127"><span class="linenos">5127</span></a> </span><span id="L-5128"><a href="#L-5128"><span class="linenos">5128</span></a> -</span><span id="L-5129"><a href="#L-5129"><span class="linenos">5129</span></a> -</span><span id="L-5130"><a href="#L-5130"><span class="linenos">5130</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5131"><a href="#L-5131"><span class="linenos">5131</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5129"><a href="#L-5129"><span class="linenos">5129</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5130"><a href="#L-5130"><span class="linenos">5130</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5131"><a href="#L-5131"><span class="linenos">5131</span></a> </span><span id="L-5132"><a href="#L-5132"><span class="linenos">5132</span></a> -</span><span id="L-5133"><a href="#L-5133"><span class="linenos">5133</span></a> -</span><span id="L-5134"><a href="#L-5134"><span class="linenos">5134</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5135"><a href="#L-5135"><span class="linenos">5135</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5133"><a href="#L-5133"><span class="linenos">5133</span></a><span class="k">class</span> <span class="nc">Timestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5134"><a href="#L-5134"><span class="linenos">5134</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"with_tz"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5135"><a href="#L-5135"><span class="linenos">5135</span></a> </span><span id="L-5136"><a href="#L-5136"><span class="linenos">5136</span></a> -</span><span id="L-5137"><a href="#L-5137"><span class="linenos">5137</span></a> -</span><span id="L-5138"><a href="#L-5138"><span class="linenos">5138</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5139"><a href="#L-5139"><span class="linenos">5139</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMPDIFF"</span><span class="p">,</span> <span class="s2">"TIMESTAMP_DIFF"</span><span class="p">]</span> -</span><span id="L-5140"><a href="#L-5140"><span class="linenos">5140</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5141"><a href="#L-5141"><span class="linenos">5141</span></a> -</span><span id="L-5142"><a href="#L-5142"><span class="linenos">5142</span></a> -</span><span id="L-5143"><a href="#L-5143"><span class="linenos">5143</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5144"><a href="#L-5144"><span class="linenos">5144</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5145"><a href="#L-5145"><span class="linenos">5145</span></a> -</span><span id="L-5146"><a href="#L-5146"><span class="linenos">5146</span></a> -</span><span id="L-5147"><a href="#L-5147"><span class="linenos">5147</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5148"><a href="#L-5148"><span class="linenos">5148</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5137"><a href="#L-5137"><span class="linenos">5137</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5138"><a href="#L-5138"><span class="linenos">5138</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5139"><a href="#L-5139"><span class="linenos">5139</span></a> +</span><span id="L-5140"><a href="#L-5140"><span class="linenos">5140</span></a> +</span><span id="L-5141"><a href="#L-5141"><span class="linenos">5141</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5142"><a href="#L-5142"><span class="linenos">5142</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5143"><a href="#L-5143"><span class="linenos">5143</span></a> +</span><span id="L-5144"><a href="#L-5144"><span class="linenos">5144</span></a> +</span><span id="L-5145"><a href="#L-5145"><span class="linenos">5145</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5146"><a href="#L-5146"><span class="linenos">5146</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMPDIFF"</span><span class="p">,</span> <span class="s2">"TIMESTAMP_DIFF"</span><span class="p">]</span> +</span><span id="L-5147"><a href="#L-5147"><span class="linenos">5147</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5148"><a href="#L-5148"><span class="linenos">5148</span></a> </span><span id="L-5149"><a href="#L-5149"><span class="linenos">5149</span></a> -</span><span id="L-5150"><a href="#L-5150"><span class="linenos">5150</span></a> -</span><span id="L-5151"><a href="#L-5151"><span class="linenos">5151</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5152"><a href="#L-5152"><span class="linenos">5152</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5150"><a href="#L-5150"><span class="linenos">5150</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5151"><a href="#L-5151"><span class="linenos">5151</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5152"><a href="#L-5152"><span class="linenos">5152</span></a> </span><span id="L-5153"><a href="#L-5153"><span class="linenos">5153</span></a> -</span><span id="L-5154"><a href="#L-5154"><span class="linenos">5154</span></a> -</span><span id="L-5155"><a href="#L-5155"><span class="linenos">5155</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5156"><a href="#L-5156"><span class="linenos">5156</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5154"><a href="#L-5154"><span class="linenos">5154</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5155"><a href="#L-5155"><span class="linenos">5155</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5156"><a href="#L-5156"><span class="linenos">5156</span></a> </span><span id="L-5157"><a href="#L-5157"><span class="linenos">5157</span></a> -</span><span id="L-5158"><a href="#L-5158"><span class="linenos">5158</span></a> -</span><span id="L-5159"><a href="#L-5159"><span class="linenos">5159</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5160"><a href="#L-5160"><span class="linenos">5160</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5158"><a href="#L-5158"><span class="linenos">5158</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5159"><a href="#L-5159"><span class="linenos">5159</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5160"><a href="#L-5160"><span class="linenos">5160</span></a> </span><span id="L-5161"><a href="#L-5161"><span class="linenos">5161</span></a> -</span><span id="L-5162"><a href="#L-5162"><span class="linenos">5162</span></a> -</span><span id="L-5163"><a href="#L-5163"><span class="linenos">5163</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5164"><a href="#L-5164"><span class="linenos">5164</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATE_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> -</span><span id="L-5165"><a href="#L-5165"><span class="linenos">5165</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5166"><a href="#L-5166"><span class="linenos">5166</span></a> -</span><span id="L-5167"><a href="#L-5167"><span class="linenos">5167</span></a> -</span><span id="L-5168"><a href="#L-5168"><span class="linenos">5168</span></a><span class="k">class</span> <span class="nc">TimeFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5169"><a href="#L-5169"><span class="linenos">5169</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIME_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMEFROMPARTS"</span><span class="p">]</span> -</span><span id="L-5170"><a href="#L-5170"><span class="linenos">5170</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5171"><a href="#L-5171"><span class="linenos">5171</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5172"><a href="#L-5172"><span class="linenos">5172</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5173"><a href="#L-5173"><span class="linenos">5173</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5174"><a href="#L-5174"><span class="linenos">5174</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5175"><a href="#L-5175"><span class="linenos">5175</span></a> <span class="s2">"fractions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5176"><a href="#L-5176"><span class="linenos">5176</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5177"><a href="#L-5177"><span class="linenos">5177</span></a> <span class="p">}</span> -</span><span id="L-5178"><a href="#L-5178"><span class="linenos">5178</span></a> -</span><span id="L-5179"><a href="#L-5179"><span class="linenos">5179</span></a> -</span><span id="L-5180"><a href="#L-5180"><span class="linenos">5180</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5181"><a href="#L-5181"><span class="linenos">5181</span></a> <span class="k">pass</span> -</span><span id="L-5182"><a href="#L-5182"><span class="linenos">5182</span></a> -</span><span id="L-5183"><a href="#L-5183"><span class="linenos">5183</span></a> -</span><span id="L-5184"><a href="#L-5184"><span class="linenos">5184</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5185"><a href="#L-5185"><span class="linenos">5185</span></a> <span class="k">pass</span> +</span><span id="L-5162"><a href="#L-5162"><span class="linenos">5162</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5163"><a href="#L-5163"><span class="linenos">5163</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5164"><a href="#L-5164"><span class="linenos">5164</span></a> +</span><span id="L-5165"><a href="#L-5165"><span class="linenos">5165</span></a> +</span><span id="L-5166"><a href="#L-5166"><span class="linenos">5166</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5167"><a href="#L-5167"><span class="linenos">5167</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5168"><a href="#L-5168"><span class="linenos">5168</span></a> +</span><span id="L-5169"><a href="#L-5169"><span class="linenos">5169</span></a> +</span><span id="L-5170"><a href="#L-5170"><span class="linenos">5170</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5171"><a href="#L-5171"><span class="linenos">5171</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATE_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> +</span><span id="L-5172"><a href="#L-5172"><span class="linenos">5172</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5173"><a href="#L-5173"><span class="linenos">5173</span></a> +</span><span id="L-5174"><a href="#L-5174"><span class="linenos">5174</span></a> +</span><span id="L-5175"><a href="#L-5175"><span class="linenos">5175</span></a><span class="k">class</span> <span class="nc">TimeFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5176"><a href="#L-5176"><span class="linenos">5176</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIME_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMEFROMPARTS"</span><span class="p">]</span> +</span><span id="L-5177"><a href="#L-5177"><span class="linenos">5177</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5178"><a href="#L-5178"><span class="linenos">5178</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5179"><a href="#L-5179"><span class="linenos">5179</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5180"><a href="#L-5180"><span class="linenos">5180</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5181"><a href="#L-5181"><span class="linenos">5181</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5182"><a href="#L-5182"><span class="linenos">5182</span></a> <span class="s2">"fractions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5183"><a href="#L-5183"><span class="linenos">5183</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5184"><a href="#L-5184"><span class="linenos">5184</span></a> <span class="p">}</span> +</span><span id="L-5185"><a href="#L-5185"><span class="linenos">5185</span></a> </span><span id="L-5186"><a href="#L-5186"><span class="linenos">5186</span></a> -</span><span id="L-5187"><a href="#L-5187"><span class="linenos">5187</span></a> -</span><span id="L-5188"><a href="#L-5188"><span class="linenos">5188</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5189"><a href="#L-5189"><span class="linenos">5189</span></a> <span class="k">pass</span> +</span><span id="L-5187"><a href="#L-5187"><span class="linenos">5187</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5188"><a href="#L-5188"><span class="linenos">5188</span></a> <span class="k">pass</span> +</span><span id="L-5189"><a href="#L-5189"><span class="linenos">5189</span></a> </span><span id="L-5190"><a href="#L-5190"><span class="linenos">5190</span></a> -</span><span id="L-5191"><a href="#L-5191"><span class="linenos">5191</span></a> -</span><span id="L-5192"><a href="#L-5192"><span class="linenos">5192</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#date</span> -</span><span id="L-5193"><a href="#L-5193"><span class="linenos">5193</span></a><span class="k">class</span> <span class="nc">Date</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5194"><a href="#L-5194"><span class="linenos">5194</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5195"><a href="#L-5195"><span class="linenos">5195</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5196"><a href="#L-5196"><span class="linenos">5196</span></a> +</span><span id="L-5191"><a href="#L-5191"><span class="linenos">5191</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5192"><a href="#L-5192"><span class="linenos">5192</span></a> <span class="k">pass</span> +</span><span id="L-5193"><a href="#L-5193"><span class="linenos">5193</span></a> +</span><span id="L-5194"><a href="#L-5194"><span class="linenos">5194</span></a> +</span><span id="L-5195"><a href="#L-5195"><span class="linenos">5195</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5196"><a href="#L-5196"><span class="linenos">5196</span></a> <span class="k">pass</span> </span><span id="L-5197"><a href="#L-5197"><span class="linenos">5197</span></a> -</span><span id="L-5198"><a href="#L-5198"><span class="linenos">5198</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5199"><a href="#L-5199"><span class="linenos">5199</span></a> <span class="k">pass</span> -</span><span id="L-5200"><a href="#L-5200"><span class="linenos">5200</span></a> -</span><span id="L-5201"><a href="#L-5201"><span class="linenos">5201</span></a> -</span><span id="L-5202"><a href="#L-5202"><span class="linenos">5202</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5203"><a href="#L-5203"><span class="linenos">5203</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5198"><a href="#L-5198"><span class="linenos">5198</span></a> +</span><span id="L-5199"><a href="#L-5199"><span class="linenos">5199</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#date</span> +</span><span id="L-5200"><a href="#L-5200"><span class="linenos">5200</span></a><span class="k">class</span> <span class="nc">Date</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5201"><a href="#L-5201"><span class="linenos">5201</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5202"><a href="#L-5202"><span class="linenos">5202</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5203"><a href="#L-5203"><span class="linenos">5203</span></a> </span><span id="L-5204"><a href="#L-5204"><span class="linenos">5204</span></a> -</span><span id="L-5205"><a href="#L-5205"><span class="linenos">5205</span></a> -</span><span id="L-5206"><a href="#L-5206"><span class="linenos">5206</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5207"><a href="#L-5207"><span class="linenos">5207</span></a> <span class="k">pass</span> +</span><span id="L-5205"><a href="#L-5205"><span class="linenos">5205</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5206"><a href="#L-5206"><span class="linenos">5206</span></a> <span class="k">pass</span> +</span><span id="L-5207"><a href="#L-5207"><span class="linenos">5207</span></a> </span><span id="L-5208"><a href="#L-5208"><span class="linenos">5208</span></a> -</span><span id="L-5209"><a href="#L-5209"><span class="linenos">5209</span></a> -</span><span id="L-5210"><a href="#L-5210"><span class="linenos">5210</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5211"><a href="#L-5211"><span class="linenos">5211</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5209"><a href="#L-5209"><span class="linenos">5209</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5210"><a href="#L-5210"><span class="linenos">5210</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5211"><a href="#L-5211"><span class="linenos">5211</span></a> </span><span id="L-5212"><a href="#L-5212"><span class="linenos">5212</span></a> -</span><span id="L-5213"><a href="#L-5213"><span class="linenos">5213</span></a> -</span><span id="L-5214"><a href="#L-5214"><span class="linenos">5214</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5215"><a href="#L-5215"><span class="linenos">5215</span></a> <span class="k">pass</span> +</span><span id="L-5213"><a href="#L-5213"><span class="linenos">5213</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5214"><a href="#L-5214"><span class="linenos">5214</span></a> <span class="k">pass</span> +</span><span id="L-5215"><a href="#L-5215"><span class="linenos">5215</span></a> </span><span id="L-5216"><a href="#L-5216"><span class="linenos">5216</span></a> -</span><span id="L-5217"><a href="#L-5217"><span class="linenos">5217</span></a> -</span><span id="L-5218"><a href="#L-5218"><span class="linenos">5218</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/flatten</span> -</span><span id="L-5219"><a href="#L-5219"><span class="linenos">5219</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5220"><a href="#L-5220"><span class="linenos">5220</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5221"><a href="#L-5221"><span class="linenos">5221</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5222"><a href="#L-5222"><span class="linenos">5222</span></a> +</span><span id="L-5217"><a href="#L-5217"><span class="linenos">5217</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5218"><a href="#L-5218"><span class="linenos">5218</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5219"><a href="#L-5219"><span class="linenos">5219</span></a> +</span><span id="L-5220"><a href="#L-5220"><span class="linenos">5220</span></a> +</span><span id="L-5221"><a href="#L-5221"><span class="linenos">5221</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5222"><a href="#L-5222"><span class="linenos">5222</span></a> <span class="k">pass</span> </span><span id="L-5223"><a href="#L-5223"><span class="linenos">5223</span></a> -</span><span id="L-5224"><a href="#L-5224"><span class="linenos">5224</span></a><span class="k">class</span> <span class="nc">ExplodeOuter</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> -</span><span id="L-5225"><a href="#L-5225"><span class="linenos">5225</span></a> <span class="k">pass</span> -</span><span id="L-5226"><a href="#L-5226"><span class="linenos">5226</span></a> -</span><span id="L-5227"><a href="#L-5227"><span class="linenos">5227</span></a> -</span><span id="L-5228"><a href="#L-5228"><span class="linenos">5228</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> -</span><span id="L-5229"><a href="#L-5229"><span class="linenos">5229</span></a> <span class="k">pass</span> +</span><span id="L-5224"><a href="#L-5224"><span class="linenos">5224</span></a> +</span><span id="L-5225"><a href="#L-5225"><span class="linenos">5225</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/flatten</span> +</span><span id="L-5226"><a href="#L-5226"><span class="linenos">5226</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5227"><a href="#L-5227"><span class="linenos">5227</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5228"><a href="#L-5228"><span class="linenos">5228</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5229"><a href="#L-5229"><span class="linenos">5229</span></a> </span><span id="L-5230"><a href="#L-5230"><span class="linenos">5230</span></a> -</span><span id="L-5231"><a href="#L-5231"><span class="linenos">5231</span></a> -</span><span id="L-5232"><a href="#L-5232"><span class="linenos">5232</span></a><span class="k">class</span> <span class="nc">PosexplodeOuter</span><span class="p">(</span><span class="n">Posexplode</span><span class="p">,</span> <span class="n">ExplodeOuter</span><span class="p">):</span> -</span><span id="L-5233"><a href="#L-5233"><span class="linenos">5233</span></a> <span class="k">pass</span> +</span><span id="L-5231"><a href="#L-5231"><span class="linenos">5231</span></a><span class="k">class</span> <span class="nc">ExplodeOuter</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> +</span><span id="L-5232"><a href="#L-5232"><span class="linenos">5232</span></a> <span class="k">pass</span> +</span><span id="L-5233"><a href="#L-5233"><span class="linenos">5233</span></a> </span><span id="L-5234"><a href="#L-5234"><span class="linenos">5234</span></a> -</span><span id="L-5235"><a href="#L-5235"><span class="linenos">5235</span></a> -</span><span id="L-5236"><a href="#L-5236"><span class="linenos">5236</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5237"><a href="#L-5237"><span class="linenos">5237</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5235"><a href="#L-5235"><span class="linenos">5235</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> +</span><span id="L-5236"><a href="#L-5236"><span class="linenos">5236</span></a> <span class="k">pass</span> +</span><span id="L-5237"><a href="#L-5237"><span class="linenos">5237</span></a> </span><span id="L-5238"><a href="#L-5238"><span class="linenos">5238</span></a> -</span><span id="L-5239"><a href="#L-5239"><span class="linenos">5239</span></a> -</span><span id="L-5240"><a href="#L-5240"><span class="linenos">5240</span></a><span class="k">class</span> <span class="nc">FromBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5241"><a href="#L-5241"><span class="linenos">5241</span></a> <span class="k">pass</span> +</span><span id="L-5239"><a href="#L-5239"><span class="linenos">5239</span></a><span class="k">class</span> <span class="nc">PosexplodeOuter</span><span class="p">(</span><span class="n">Posexplode</span><span class="p">,</span> <span class="n">ExplodeOuter</span><span class="p">):</span> +</span><span id="L-5240"><a href="#L-5240"><span class="linenos">5240</span></a> <span class="k">pass</span> +</span><span id="L-5241"><a href="#L-5241"><span class="linenos">5241</span></a> </span><span id="L-5242"><a href="#L-5242"><span class="linenos">5242</span></a> -</span><span id="L-5243"><a href="#L-5243"><span class="linenos">5243</span></a> -</span><span id="L-5244"><a href="#L-5244"><span class="linenos">5244</span></a><span class="k">class</span> <span class="nc">ToBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5245"><a href="#L-5245"><span class="linenos">5245</span></a> <span class="k">pass</span> +</span><span id="L-5243"><a href="#L-5243"><span class="linenos">5243</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5244"><a href="#L-5244"><span class="linenos">5244</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5245"><a href="#L-5245"><span class="linenos">5245</span></a> </span><span id="L-5246"><a href="#L-5246"><span class="linenos">5246</span></a> -</span><span id="L-5247"><a href="#L-5247"><span class="linenos">5247</span></a> -</span><span id="L-5248"><a href="#L-5248"><span class="linenos">5248</span></a><span class="k">class</span> <span class="nc">GapFill</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5249"><a href="#L-5249"><span class="linenos">5249</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5250"><a href="#L-5250"><span class="linenos">5250</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5251"><a href="#L-5251"><span class="linenos">5251</span></a> <span class="s2">"ts_column"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5252"><a href="#L-5252"><span class="linenos">5252</span></a> <span class="s2">"bucket_width"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5253"><a href="#L-5253"><span class="linenos">5253</span></a> <span class="s2">"partitioning_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5254"><a href="#L-5254"><span class="linenos">5254</span></a> <span class="s2">"value_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5255"><a href="#L-5255"><span class="linenos">5255</span></a> <span class="s2">"origin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5256"><a href="#L-5256"><span class="linenos">5256</span></a> <span class="s2">"ignore_nulls"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5257"><a href="#L-5257"><span class="linenos">5257</span></a> <span class="p">}</span> -</span><span id="L-5258"><a href="#L-5258"><span class="linenos">5258</span></a> -</span><span id="L-5259"><a href="#L-5259"><span class="linenos">5259</span></a> -</span><span id="L-5260"><a href="#L-5260"><span class="linenos">5260</span></a><span class="k">class</span> <span class="nc">GenerateDateArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5261"><a href="#L-5261"><span class="linenos">5261</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"interval"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5262"><a href="#L-5262"><span class="linenos">5262</span></a> -</span><span id="L-5263"><a href="#L-5263"><span class="linenos">5263</span></a> -</span><span id="L-5264"><a href="#L-5264"><span class="linenos">5264</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5265"><a href="#L-5265"><span class="linenos">5265</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5266"><a href="#L-5266"><span class="linenos">5266</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5267"><a href="#L-5267"><span class="linenos">5267</span></a> -</span><span id="L-5268"><a href="#L-5268"><span class="linenos">5268</span></a> -</span><span id="L-5269"><a href="#L-5269"><span class="linenos">5269</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5270"><a href="#L-5270"><span class="linenos">5270</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5271"><a href="#L-5271"><span class="linenos">5271</span></a> -</span><span id="L-5272"><a href="#L-5272"><span class="linenos">5272</span></a> -</span><span id="L-5273"><a href="#L-5273"><span class="linenos">5273</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5274"><a href="#L-5274"><span class="linenos">5274</span></a> <span class="k">pass</span> +</span><span id="L-5247"><a href="#L-5247"><span class="linenos">5247</span></a><span class="k">class</span> <span class="nc">FromBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5248"><a href="#L-5248"><span class="linenos">5248</span></a> <span class="k">pass</span> +</span><span id="L-5249"><a href="#L-5249"><span class="linenos">5249</span></a> +</span><span id="L-5250"><a href="#L-5250"><span class="linenos">5250</span></a> +</span><span id="L-5251"><a href="#L-5251"><span class="linenos">5251</span></a><span class="k">class</span> <span class="nc">ToBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5252"><a href="#L-5252"><span class="linenos">5252</span></a> <span class="k">pass</span> +</span><span id="L-5253"><a href="#L-5253"><span class="linenos">5253</span></a> +</span><span id="L-5254"><a href="#L-5254"><span class="linenos">5254</span></a> +</span><span id="L-5255"><a href="#L-5255"><span class="linenos">5255</span></a><span class="k">class</span> <span class="nc">GapFill</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5256"><a href="#L-5256"><span class="linenos">5256</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5257"><a href="#L-5257"><span class="linenos">5257</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5258"><a href="#L-5258"><span class="linenos">5258</span></a> <span class="s2">"ts_column"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5259"><a href="#L-5259"><span class="linenos">5259</span></a> <span class="s2">"bucket_width"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5260"><a href="#L-5260"><span class="linenos">5260</span></a> <span class="s2">"partitioning_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5261"><a href="#L-5261"><span class="linenos">5261</span></a> <span class="s2">"value_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5262"><a href="#L-5262"><span class="linenos">5262</span></a> <span class="s2">"origin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5263"><a href="#L-5263"><span class="linenos">5263</span></a> <span class="s2">"ignore_nulls"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5264"><a href="#L-5264"><span class="linenos">5264</span></a> <span class="p">}</span> +</span><span id="L-5265"><a href="#L-5265"><span class="linenos">5265</span></a> +</span><span id="L-5266"><a href="#L-5266"><span class="linenos">5266</span></a> +</span><span id="L-5267"><a href="#L-5267"><span class="linenos">5267</span></a><span class="k">class</span> <span class="nc">GenerateDateArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5268"><a href="#L-5268"><span class="linenos">5268</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"interval"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5269"><a href="#L-5269"><span class="linenos">5269</span></a> +</span><span id="L-5270"><a href="#L-5270"><span class="linenos">5270</span></a> +</span><span id="L-5271"><a href="#L-5271"><span class="linenos">5271</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5272"><a href="#L-5272"><span class="linenos">5272</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5273"><a href="#L-5273"><span class="linenos">5273</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5274"><a href="#L-5274"><span class="linenos">5274</span></a> </span><span id="L-5275"><a href="#L-5275"><span class="linenos">5275</span></a> -</span><span id="L-5276"><a href="#L-5276"><span class="linenos">5276</span></a> -</span><span id="L-5277"><a href="#L-5277"><span class="linenos">5277</span></a><span class="k">class</span> <span class="nc">LowerHex</span><span class="p">(</span><span class="n">Hex</span><span class="p">):</span> -</span><span id="L-5278"><a href="#L-5278"><span class="linenos">5278</span></a> <span class="k">pass</span> +</span><span id="L-5276"><a href="#L-5276"><span class="linenos">5276</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5277"><a href="#L-5277"><span class="linenos">5277</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5278"><a href="#L-5278"><span class="linenos">5278</span></a> </span><span id="L-5279"><a href="#L-5279"><span class="linenos">5279</span></a> -</span><span id="L-5280"><a href="#L-5280"><span class="linenos">5280</span></a> -</span><span id="L-5281"><a href="#L-5281"><span class="linenos">5281</span></a><span class="k">class</span> <span class="nc">Xor</span><span class="p">(</span><span class="n">Connector</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5282"><a href="#L-5282"><span class="linenos">5282</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5280"><a href="#L-5280"><span class="linenos">5280</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5281"><a href="#L-5281"><span class="linenos">5281</span></a> <span class="k">pass</span> +</span><span id="L-5282"><a href="#L-5282"><span class="linenos">5282</span></a> </span><span id="L-5283"><a href="#L-5283"><span class="linenos">5283</span></a> -</span><span id="L-5284"><a href="#L-5284"><span class="linenos">5284</span></a> -</span><span id="L-5285"><a href="#L-5285"><span class="linenos">5285</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5286"><a href="#L-5286"><span class="linenos">5286</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5287"><a href="#L-5287"><span class="linenos">5287</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IF"</span><span class="p">,</span> <span class="s2">"IIF"</span><span class="p">]</span> -</span><span id="L-5288"><a href="#L-5288"><span class="linenos">5288</span></a> -</span><span id="L-5289"><a href="#L-5289"><span class="linenos">5289</span></a> -</span><span id="L-5290"><a href="#L-5290"><span class="linenos">5290</span></a><span class="k">class</span> <span class="nc">Nullif</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5291"><a href="#L-5291"><span class="linenos">5291</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5292"><a href="#L-5292"><span class="linenos">5292</span></a> -</span><span id="L-5293"><a href="#L-5293"><span class="linenos">5293</span></a> -</span><span id="L-5294"><a href="#L-5294"><span class="linenos">5294</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5295"><a href="#L-5295"><span class="linenos">5295</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5284"><a href="#L-5284"><span class="linenos">5284</span></a><span class="k">class</span> <span class="nc">LowerHex</span><span class="p">(</span><span class="n">Hex</span><span class="p">):</span> +</span><span id="L-5285"><a href="#L-5285"><span class="linenos">5285</span></a> <span class="k">pass</span> +</span><span id="L-5286"><a href="#L-5286"><span class="linenos">5286</span></a> +</span><span id="L-5287"><a href="#L-5287"><span class="linenos">5287</span></a> +</span><span id="L-5288"><a href="#L-5288"><span class="linenos">5288</span></a><span class="k">class</span> <span class="nc">Xor</span><span class="p">(</span><span class="n">Connector</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5289"><a href="#L-5289"><span class="linenos">5289</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5290"><a href="#L-5290"><span class="linenos">5290</span></a> +</span><span id="L-5291"><a href="#L-5291"><span class="linenos">5291</span></a> +</span><span id="L-5292"><a href="#L-5292"><span class="linenos">5292</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5293"><a href="#L-5293"><span class="linenos">5293</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5294"><a href="#L-5294"><span class="linenos">5294</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IF"</span><span class="p">,</span> <span class="s2">"IIF"</span><span class="p">]</span> +</span><span id="L-5295"><a href="#L-5295"><span class="linenos">5295</span></a> </span><span id="L-5296"><a href="#L-5296"><span class="linenos">5296</span></a> -</span><span id="L-5297"><a href="#L-5297"><span class="linenos">5297</span></a> -</span><span id="L-5298"><a href="#L-5298"><span class="linenos">5298</span></a><span class="k">class</span> <span class="nc">IsNan</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5299"><a href="#L-5299"><span class="linenos">5299</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_NAN"</span><span class="p">,</span> <span class="s2">"ISNAN"</span><span class="p">]</span> +</span><span id="L-5297"><a href="#L-5297"><span class="linenos">5297</span></a><span class="k">class</span> <span class="nc">Nullif</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5298"><a href="#L-5298"><span class="linenos">5298</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5299"><a href="#L-5299"><span class="linenos">5299</span></a> </span><span id="L-5300"><a href="#L-5300"><span class="linenos">5300</span></a> -</span><span id="L-5301"><a href="#L-5301"><span class="linenos">5301</span></a> -</span><span id="L-5302"><a href="#L-5302"><span class="linenos">5302</span></a><span class="k">class</span> <span class="nc">IsInf</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5303"><a href="#L-5303"><span class="linenos">5303</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_INF"</span><span class="p">,</span> <span class="s2">"ISINF"</span><span class="p">]</span> +</span><span id="L-5301"><a href="#L-5301"><span class="linenos">5301</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5302"><a href="#L-5302"><span class="linenos">5302</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5303"><a href="#L-5303"><span class="linenos">5303</span></a> </span><span id="L-5304"><a href="#L-5304"><span class="linenos">5304</span></a> -</span><span id="L-5305"><a href="#L-5305"><span class="linenos">5305</span></a> -</span><span id="L-5306"><a href="#L-5306"><span class="linenos">5306</span></a><span class="k">class</span> <span class="nc">JSONPath</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5307"><a href="#L-5307"><span class="linenos">5307</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5305"><a href="#L-5305"><span class="linenos">5305</span></a><span class="k">class</span> <span class="nc">IsNan</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5306"><a href="#L-5306"><span class="linenos">5306</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_NAN"</span><span class="p">,</span> <span class="s2">"ISNAN"</span><span class="p">]</span> +</span><span id="L-5307"><a href="#L-5307"><span class="linenos">5307</span></a> </span><span id="L-5308"><a href="#L-5308"><span class="linenos">5308</span></a> -</span><span id="L-5309"><a href="#L-5309"><span class="linenos">5309</span></a> <span class="nd">@property</span> -</span><span id="L-5310"><a href="#L-5310"><span class="linenos">5310</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-5311"><a href="#L-5311"><span class="linenos">5311</span></a> <span class="n">last_segment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</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">this</span> -</span><span id="L-5312"><a href="#L-5312"><span class="linenos">5312</span></a> <span class="k">return</span> <span class="n">last_segment</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">last_segment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-5313"><a href="#L-5313"><span class="linenos">5313</span></a> -</span><span id="L-5314"><a href="#L-5314"><span class="linenos">5314</span></a> -</span><span id="L-5315"><a href="#L-5315"><span class="linenos">5315</span></a><span class="k">class</span> <span class="nc">JSONPathPart</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5316"><a href="#L-5316"><span class="linenos">5316</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-5317"><a href="#L-5317"><span class="linenos">5317</span></a> -</span><span id="L-5318"><a href="#L-5318"><span class="linenos">5318</span></a> -</span><span id="L-5319"><a href="#L-5319"><span class="linenos">5319</span></a><span class="k">class</span> <span class="nc">JSONPathFilter</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5320"><a href="#L-5320"><span class="linenos">5320</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5309"><a href="#L-5309"><span class="linenos">5309</span></a><span class="k">class</span> <span class="nc">IsInf</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5310"><a href="#L-5310"><span class="linenos">5310</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_INF"</span><span class="p">,</span> <span class="s2">"ISINF"</span><span class="p">]</span> +</span><span id="L-5311"><a href="#L-5311"><span class="linenos">5311</span></a> +</span><span id="L-5312"><a href="#L-5312"><span class="linenos">5312</span></a> +</span><span id="L-5313"><a href="#L-5313"><span class="linenos">5313</span></a><span class="k">class</span> <span class="nc">JSONPath</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5314"><a href="#L-5314"><span class="linenos">5314</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5315"><a href="#L-5315"><span class="linenos">5315</span></a> +</span><span id="L-5316"><a href="#L-5316"><span class="linenos">5316</span></a> <span class="nd">@property</span> +</span><span id="L-5317"><a href="#L-5317"><span class="linenos">5317</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-5318"><a href="#L-5318"><span class="linenos">5318</span></a> <span class="n">last_segment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</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">this</span> +</span><span id="L-5319"><a href="#L-5319"><span class="linenos">5319</span></a> <span class="k">return</span> <span class="n">last_segment</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">last_segment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-5320"><a href="#L-5320"><span class="linenos">5320</span></a> </span><span id="L-5321"><a href="#L-5321"><span class="linenos">5321</span></a> -</span><span id="L-5322"><a href="#L-5322"><span class="linenos">5322</span></a> -</span><span id="L-5323"><a href="#L-5323"><span class="linenos">5323</span></a><span class="k">class</span> <span class="nc">JSONPathKey</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5324"><a href="#L-5324"><span class="linenos">5324</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5322"><a href="#L-5322"><span class="linenos">5322</span></a><span class="k">class</span> <span class="nc">JSONPathPart</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5323"><a href="#L-5323"><span class="linenos">5323</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-5324"><a href="#L-5324"><span class="linenos">5324</span></a> </span><span id="L-5325"><a href="#L-5325"><span class="linenos">5325</span></a> -</span><span id="L-5326"><a href="#L-5326"><span class="linenos">5326</span></a> -</span><span id="L-5327"><a href="#L-5327"><span class="linenos">5327</span></a><span class="k">class</span> <span class="nc">JSONPathRecursive</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5328"><a href="#L-5328"><span class="linenos">5328</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5326"><a href="#L-5326"><span class="linenos">5326</span></a><span class="k">class</span> <span class="nc">JSONPathFilter</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5327"><a href="#L-5327"><span class="linenos">5327</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5328"><a href="#L-5328"><span class="linenos">5328</span></a> </span><span id="L-5329"><a href="#L-5329"><span class="linenos">5329</span></a> -</span><span id="L-5330"><a href="#L-5330"><span class="linenos">5330</span></a> -</span><span id="L-5331"><a href="#L-5331"><span class="linenos">5331</span></a><span class="k">class</span> <span class="nc">JSONPathRoot</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5332"><a href="#L-5332"><span class="linenos">5332</span></a> <span class="k">pass</span> +</span><span id="L-5330"><a href="#L-5330"><span class="linenos">5330</span></a><span class="k">class</span> <span class="nc">JSONPathKey</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5331"><a href="#L-5331"><span class="linenos">5331</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5332"><a href="#L-5332"><span class="linenos">5332</span></a> </span><span id="L-5333"><a href="#L-5333"><span class="linenos">5333</span></a> -</span><span id="L-5334"><a href="#L-5334"><span class="linenos">5334</span></a> -</span><span id="L-5335"><a href="#L-5335"><span class="linenos">5335</span></a><span class="k">class</span> <span class="nc">JSONPathScript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5336"><a href="#L-5336"><span class="linenos">5336</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5334"><a href="#L-5334"><span class="linenos">5334</span></a><span class="k">class</span> <span class="nc">JSONPathRecursive</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5335"><a href="#L-5335"><span class="linenos">5335</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5336"><a href="#L-5336"><span class="linenos">5336</span></a> </span><span id="L-5337"><a href="#L-5337"><span class="linenos">5337</span></a> -</span><span id="L-5338"><a href="#L-5338"><span class="linenos">5338</span></a> -</span><span id="L-5339"><a href="#L-5339"><span class="linenos">5339</span></a><span class="k">class</span> <span class="nc">JSONPathSlice</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5340"><a href="#L-5340"><span class="linenos">5340</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5338"><a href="#L-5338"><span class="linenos">5338</span></a><span class="k">class</span> <span class="nc">JSONPathRoot</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5339"><a href="#L-5339"><span class="linenos">5339</span></a> <span class="k">pass</span> +</span><span id="L-5340"><a href="#L-5340"><span class="linenos">5340</span></a> </span><span id="L-5341"><a href="#L-5341"><span class="linenos">5341</span></a> -</span><span id="L-5342"><a href="#L-5342"><span class="linenos">5342</span></a> -</span><span id="L-5343"><a href="#L-5343"><span class="linenos">5343</span></a><span class="k">class</span> <span class="nc">JSONPathSelector</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5344"><a href="#L-5344"><span class="linenos">5344</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5342"><a href="#L-5342"><span class="linenos">5342</span></a><span class="k">class</span> <span class="nc">JSONPathScript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5343"><a href="#L-5343"><span class="linenos">5343</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5344"><a href="#L-5344"><span class="linenos">5344</span></a> </span><span id="L-5345"><a href="#L-5345"><span class="linenos">5345</span></a> -</span><span id="L-5346"><a href="#L-5346"><span class="linenos">5346</span></a> -</span><span id="L-5347"><a href="#L-5347"><span class="linenos">5347</span></a><span class="k">class</span> <span class="nc">JSONPathSubscript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5348"><a href="#L-5348"><span class="linenos">5348</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5346"><a href="#L-5346"><span class="linenos">5346</span></a><span class="k">class</span> <span class="nc">JSONPathSlice</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5347"><a href="#L-5347"><span class="linenos">5347</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5348"><a href="#L-5348"><span class="linenos">5348</span></a> </span><span id="L-5349"><a href="#L-5349"><span class="linenos">5349</span></a> -</span><span id="L-5350"><a href="#L-5350"><span class="linenos">5350</span></a> -</span><span id="L-5351"><a href="#L-5351"><span class="linenos">5351</span></a><span class="k">class</span> <span class="nc">JSONPathUnion</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5352"><a href="#L-5352"><span class="linenos">5352</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5350"><a href="#L-5350"><span class="linenos">5350</span></a><span class="k">class</span> <span class="nc">JSONPathSelector</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5351"><a href="#L-5351"><span class="linenos">5351</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5352"><a href="#L-5352"><span class="linenos">5352</span></a> </span><span id="L-5353"><a href="#L-5353"><span class="linenos">5353</span></a> -</span><span id="L-5354"><a href="#L-5354"><span class="linenos">5354</span></a> -</span><span id="L-5355"><a href="#L-5355"><span class="linenos">5355</span></a><span class="k">class</span> <span class="nc">JSONPathWildcard</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="L-5356"><a href="#L-5356"><span class="linenos">5356</span></a> <span class="k">pass</span> +</span><span id="L-5354"><a href="#L-5354"><span class="linenos">5354</span></a><span class="k">class</span> <span class="nc">JSONPathSubscript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5355"><a href="#L-5355"><span class="linenos">5355</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5356"><a href="#L-5356"><span class="linenos">5356</span></a> </span><span id="L-5357"><a href="#L-5357"><span class="linenos">5357</span></a> -</span><span id="L-5358"><a href="#L-5358"><span class="linenos">5358</span></a> -</span><span id="L-5359"><a href="#L-5359"><span class="linenos">5359</span></a><span class="k">class</span> <span class="nc">FormatJson</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5360"><a href="#L-5360"><span class="linenos">5360</span></a> <span class="k">pass</span> +</span><span id="L-5358"><a href="#L-5358"><span class="linenos">5358</span></a><span class="k">class</span> <span class="nc">JSONPathUnion</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5359"><a href="#L-5359"><span class="linenos">5359</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5360"><a href="#L-5360"><span class="linenos">5360</span></a> </span><span id="L-5361"><a href="#L-5361"><span class="linenos">5361</span></a> -</span><span id="L-5362"><a href="#L-5362"><span class="linenos">5362</span></a> -</span><span id="L-5363"><a href="#L-5363"><span class="linenos">5363</span></a><span class="k">class</span> <span class="nc">JSONKeyValue</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5364"><a href="#L-5364"><span class="linenos">5364</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5362"><a href="#L-5362"><span class="linenos">5362</span></a><span class="k">class</span> <span class="nc">JSONPathWildcard</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="L-5363"><a href="#L-5363"><span class="linenos">5363</span></a> <span class="k">pass</span> +</span><span id="L-5364"><a href="#L-5364"><span class="linenos">5364</span></a> </span><span id="L-5365"><a href="#L-5365"><span class="linenos">5365</span></a> -</span><span id="L-5366"><a href="#L-5366"><span class="linenos">5366</span></a> -</span><span id="L-5367"><a href="#L-5367"><span class="linenos">5367</span></a><span class="k">class</span> <span class="nc">JSONObject</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5368"><a href="#L-5368"><span class="linenos">5368</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5369"><a href="#L-5369"><span class="linenos">5369</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5370"><a href="#L-5370"><span class="linenos">5370</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5371"><a href="#L-5371"><span class="linenos">5371</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5372"><a href="#L-5372"><span class="linenos">5372</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5373"><a href="#L-5373"><span class="linenos">5373</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5374"><a href="#L-5374"><span class="linenos">5374</span></a> <span class="p">}</span> -</span><span id="L-5375"><a href="#L-5375"><span class="linenos">5375</span></a> -</span><span id="L-5376"><a href="#L-5376"><span class="linenos">5376</span></a> -</span><span id="L-5377"><a href="#L-5377"><span class="linenos">5377</span></a><span class="k">class</span> <span class="nc">JSONObjectAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5378"><a href="#L-5378"><span class="linenos">5378</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5379"><a href="#L-5379"><span class="linenos">5379</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5380"><a href="#L-5380"><span class="linenos">5380</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5381"><a href="#L-5381"><span class="linenos">5381</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5382"><a href="#L-5382"><span class="linenos">5382</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5383"><a href="#L-5383"><span class="linenos">5383</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5384"><a href="#L-5384"><span class="linenos">5384</span></a> <span class="p">}</span> -</span><span id="L-5385"><a href="#L-5385"><span class="linenos">5385</span></a> -</span><span id="L-5386"><a href="#L-5386"><span class="linenos">5386</span></a> -</span><span id="L-5387"><a href="#L-5387"><span class="linenos">5387</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_ARRAY.html</span> -</span><span id="L-5388"><a href="#L-5388"><span class="linenos">5388</span></a><span class="k">class</span> <span class="nc">JSONArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5389"><a href="#L-5389"><span class="linenos">5389</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5390"><a href="#L-5390"><span class="linenos">5390</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5391"><a href="#L-5391"><span class="linenos">5391</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5392"><a href="#L-5392"><span class="linenos">5392</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5393"><a href="#L-5393"><span class="linenos">5393</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5394"><a href="#L-5394"><span class="linenos">5394</span></a> <span class="p">}</span> -</span><span id="L-5395"><a href="#L-5395"><span class="linenos">5395</span></a> -</span><span id="L-5396"><a href="#L-5396"><span class="linenos">5396</span></a> -</span><span id="L-5397"><a href="#L-5397"><span class="linenos">5397</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_ARRAYAGG.html</span> -</span><span id="L-5398"><a href="#L-5398"><span class="linenos">5398</span></a><span class="k">class</span> <span class="nc">JSONArrayAgg</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5399"><a href="#L-5399"><span class="linenos">5399</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5400"><a href="#L-5400"><span class="linenos">5400</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5401"><a href="#L-5401"><span class="linenos">5401</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5402"><a href="#L-5402"><span class="linenos">5402</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5403"><a href="#L-5403"><span class="linenos">5403</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5404"><a href="#L-5404"><span class="linenos">5404</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5405"><a href="#L-5405"><span class="linenos">5405</span></a> <span class="p">}</span> -</span><span id="L-5406"><a href="#L-5406"><span class="linenos">5406</span></a> -</span><span id="L-5407"><a href="#L-5407"><span class="linenos">5407</span></a> -</span><span id="L-5408"><a href="#L-5408"><span class="linenos">5408</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_TABLE.html</span> -</span><span id="L-5409"><a href="#L-5409"><span class="linenos">5409</span></a><span class="c1"># Note: parsing of JSON column definitions is currently incomplete.</span> -</span><span id="L-5410"><a href="#L-5410"><span class="linenos">5410</span></a><span class="k">class</span> <span class="nc">JSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5411"><a href="#L-5411"><span class="linenos">5411</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nested_schema"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5412"><a href="#L-5412"><span class="linenos">5412</span></a> +</span><span id="L-5366"><a href="#L-5366"><span class="linenos">5366</span></a><span class="k">class</span> <span class="nc">FormatJson</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5367"><a href="#L-5367"><span class="linenos">5367</span></a> <span class="k">pass</span> +</span><span id="L-5368"><a href="#L-5368"><span class="linenos">5368</span></a> +</span><span id="L-5369"><a href="#L-5369"><span class="linenos">5369</span></a> +</span><span id="L-5370"><a href="#L-5370"><span class="linenos">5370</span></a><span class="k">class</span> <span class="nc">JSONKeyValue</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5371"><a href="#L-5371"><span class="linenos">5371</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5372"><a href="#L-5372"><span class="linenos">5372</span></a> +</span><span id="L-5373"><a href="#L-5373"><span class="linenos">5373</span></a> +</span><span id="L-5374"><a href="#L-5374"><span class="linenos">5374</span></a><span class="k">class</span> <span class="nc">JSONObject</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5375"><a href="#L-5375"><span class="linenos">5375</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5376"><a href="#L-5376"><span class="linenos">5376</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5377"><a href="#L-5377"><span class="linenos">5377</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5378"><a href="#L-5378"><span class="linenos">5378</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5379"><a href="#L-5379"><span class="linenos">5379</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5380"><a href="#L-5380"><span class="linenos">5380</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5381"><a href="#L-5381"><span class="linenos">5381</span></a> <span class="p">}</span> +</span><span id="L-5382"><a href="#L-5382"><span class="linenos">5382</span></a> +</span><span id="L-5383"><a href="#L-5383"><span class="linenos">5383</span></a> +</span><span id="L-5384"><a href="#L-5384"><span class="linenos">5384</span></a><span class="k">class</span> <span class="nc">JSONObjectAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5385"><a href="#L-5385"><span class="linenos">5385</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5386"><a href="#L-5386"><span class="linenos">5386</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5387"><a href="#L-5387"><span class="linenos">5387</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5388"><a href="#L-5388"><span class="linenos">5388</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5389"><a href="#L-5389"><span class="linenos">5389</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5390"><a href="#L-5390"><span class="linenos">5390</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5391"><a href="#L-5391"><span class="linenos">5391</span></a> <span class="p">}</span> +</span><span id="L-5392"><a href="#L-5392"><span class="linenos">5392</span></a> +</span><span id="L-5393"><a href="#L-5393"><span class="linenos">5393</span></a> +</span><span id="L-5394"><a href="#L-5394"><span class="linenos">5394</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_ARRAY.html</span> +</span><span id="L-5395"><a href="#L-5395"><span class="linenos">5395</span></a><span class="k">class</span> <span class="nc">JSONArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5396"><a href="#L-5396"><span class="linenos">5396</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5397"><a href="#L-5397"><span class="linenos">5397</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5398"><a href="#L-5398"><span class="linenos">5398</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5399"><a href="#L-5399"><span class="linenos">5399</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5400"><a href="#L-5400"><span class="linenos">5400</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5401"><a href="#L-5401"><span class="linenos">5401</span></a> <span class="p">}</span> +</span><span id="L-5402"><a href="#L-5402"><span class="linenos">5402</span></a> +</span><span id="L-5403"><a href="#L-5403"><span class="linenos">5403</span></a> +</span><span id="L-5404"><a href="#L-5404"><span class="linenos">5404</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_ARRAYAGG.html</span> +</span><span id="L-5405"><a href="#L-5405"><span class="linenos">5405</span></a><span class="k">class</span> <span class="nc">JSONArrayAgg</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5406"><a href="#L-5406"><span class="linenos">5406</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5407"><a href="#L-5407"><span class="linenos">5407</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5408"><a href="#L-5408"><span class="linenos">5408</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5409"><a href="#L-5409"><span class="linenos">5409</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5410"><a href="#L-5410"><span class="linenos">5410</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5411"><a href="#L-5411"><span class="linenos">5411</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5412"><a href="#L-5412"><span class="linenos">5412</span></a> <span class="p">}</span> </span><span id="L-5413"><a href="#L-5413"><span class="linenos">5413</span></a> -</span><span id="L-5414"><a href="#L-5414"><span class="linenos">5414</span></a><span class="k">class</span> <span class="nc">JSONSchema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5415"><a href="#L-5415"><span class="linenos">5415</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5416"><a href="#L-5416"><span class="linenos">5416</span></a> -</span><span id="L-5417"><a href="#L-5417"><span class="linenos">5417</span></a> -</span><span id="L-5418"><a href="#L-5418"><span class="linenos">5418</span></a><span class="c1"># # https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_TABLE.html</span> -</span><span id="L-5419"><a href="#L-5419"><span class="linenos">5419</span></a><span class="k">class</span> <span class="nc">JSONTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5420"><a href="#L-5420"><span class="linenos">5420</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5421"><a href="#L-5421"><span class="linenos">5421</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5422"><a href="#L-5422"><span class="linenos">5422</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5423"><a href="#L-5423"><span class="linenos">5423</span></a> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5424"><a href="#L-5424"><span class="linenos">5424</span></a> <span class="s2">"error_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5425"><a href="#L-5425"><span class="linenos">5425</span></a> <span class="s2">"empty_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5426"><a href="#L-5426"><span class="linenos">5426</span></a> <span class="p">}</span> -</span><span id="L-5427"><a href="#L-5427"><span class="linenos">5427</span></a> -</span><span id="L-5428"><a href="#L-5428"><span class="linenos">5428</span></a> -</span><span id="L-5429"><a href="#L-5429"><span class="linenos">5429</span></a><span class="k">class</span> <span class="nc">OpenJSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5430"><a href="#L-5430"><span class="linenos">5430</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"as_json"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5431"><a href="#L-5431"><span class="linenos">5431</span></a> -</span><span id="L-5432"><a href="#L-5432"><span class="linenos">5432</span></a> -</span><span id="L-5433"><a href="#L-5433"><span class="linenos">5433</span></a><span class="k">class</span> <span class="nc">OpenJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5434"><a href="#L-5434"><span class="linenos">5434</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5414"><a href="#L-5414"><span class="linenos">5414</span></a> +</span><span id="L-5415"><a href="#L-5415"><span class="linenos">5415</span></a><span class="c1"># https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_TABLE.html</span> +</span><span id="L-5416"><a href="#L-5416"><span class="linenos">5416</span></a><span class="c1"># Note: parsing of JSON column definitions is currently incomplete.</span> +</span><span id="L-5417"><a href="#L-5417"><span class="linenos">5417</span></a><span class="k">class</span> <span class="nc">JSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5418"><a href="#L-5418"><span class="linenos">5418</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nested_schema"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5419"><a href="#L-5419"><span class="linenos">5419</span></a> +</span><span id="L-5420"><a href="#L-5420"><span class="linenos">5420</span></a> +</span><span id="L-5421"><a href="#L-5421"><span class="linenos">5421</span></a><span class="k">class</span> <span class="nc">JSONSchema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5422"><a href="#L-5422"><span class="linenos">5422</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5423"><a href="#L-5423"><span class="linenos">5423</span></a> +</span><span id="L-5424"><a href="#L-5424"><span class="linenos">5424</span></a> +</span><span id="L-5425"><a href="#L-5425"><span class="linenos">5425</span></a><span class="c1"># # https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/JSON_TABLE.html</span> +</span><span id="L-5426"><a href="#L-5426"><span class="linenos">5426</span></a><span class="k">class</span> <span class="nc">JSONTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5427"><a href="#L-5427"><span class="linenos">5427</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5428"><a href="#L-5428"><span class="linenos">5428</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5429"><a href="#L-5429"><span class="linenos">5429</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5430"><a href="#L-5430"><span class="linenos">5430</span></a> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5431"><a href="#L-5431"><span class="linenos">5431</span></a> <span class="s2">"error_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5432"><a href="#L-5432"><span class="linenos">5432</span></a> <span class="s2">"empty_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5433"><a href="#L-5433"><span class="linenos">5433</span></a> <span class="p">}</span> +</span><span id="L-5434"><a href="#L-5434"><span class="linenos">5434</span></a> </span><span id="L-5435"><a href="#L-5435"><span class="linenos">5435</span></a> -</span><span id="L-5436"><a href="#L-5436"><span class="linenos">5436</span></a> -</span><span id="L-5437"><a href="#L-5437"><span class="linenos">5437</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-5438"><a href="#L-5438"><span class="linenos">5438</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> +</span><span id="L-5436"><a href="#L-5436"><span class="linenos">5436</span></a><span class="k">class</span> <span class="nc">OpenJSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5437"><a href="#L-5437"><span class="linenos">5437</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"as_json"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5438"><a href="#L-5438"><span class="linenos">5438</span></a> </span><span id="L-5439"><a href="#L-5439"><span class="linenos">5439</span></a> -</span><span id="L-5440"><a href="#L-5440"><span class="linenos">5440</span></a> -</span><span id="L-5441"><a href="#L-5441"><span class="linenos">5441</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5442"><a href="#L-5442"><span class="linenos">5442</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5443"><a href="#L-5443"><span class="linenos">5443</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> -</span><span id="L-5444"><a href="#L-5444"><span class="linenos">5444</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5445"><a href="#L-5445"><span class="linenos">5445</span></a> -</span><span id="L-5446"><a href="#L-5446"><span class="linenos">5446</span></a> <span class="nd">@property</span> -</span><span id="L-5447"><a href="#L-5447"><span class="linenos">5447</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-5448"><a href="#L-5448"><span class="linenos">5448</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-5449"><a href="#L-5449"><span class="linenos">5449</span></a> -</span><span id="L-5450"><a href="#L-5450"><span class="linenos">5450</span></a> -</span><span id="L-5451"><a href="#L-5451"><span class="linenos">5451</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5452"><a href="#L-5452"><span class="linenos">5452</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5453"><a href="#L-5453"><span class="linenos">5453</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> -</span><span id="L-5454"><a href="#L-5454"><span class="linenos">5454</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5455"><a href="#L-5455"><span class="linenos">5455</span></a> -</span><span id="L-5456"><a href="#L-5456"><span class="linenos">5456</span></a> <span class="nd">@property</span> -</span><span id="L-5457"><a href="#L-5457"><span class="linenos">5457</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-5458"><a href="#L-5458"><span class="linenos">5458</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> -</span><span id="L-5459"><a href="#L-5459"><span class="linenos">5459</span></a> -</span><span id="L-5460"><a href="#L-5460"><span class="linenos">5460</span></a> -</span><span id="L-5461"><a href="#L-5461"><span class="linenos">5461</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5462"><a href="#L-5462"><span class="linenos">5462</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> -</span><span id="L-5463"><a href="#L-5463"><span class="linenos">5463</span></a> -</span><span id="L-5464"><a href="#L-5464"><span class="linenos">5464</span></a> -</span><span id="L-5465"><a href="#L-5465"><span class="linenos">5465</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5466"><a href="#L-5466"><span class="linenos">5466</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-5440"><a href="#L-5440"><span class="linenos">5440</span></a><span class="k">class</span> <span class="nc">OpenJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5441"><a href="#L-5441"><span class="linenos">5441</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5442"><a href="#L-5442"><span class="linenos">5442</span></a> +</span><span id="L-5443"><a href="#L-5443"><span class="linenos">5443</span></a> +</span><span id="L-5444"><a href="#L-5444"><span class="linenos">5444</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-5445"><a href="#L-5445"><span class="linenos">5445</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> +</span><span id="L-5446"><a href="#L-5446"><span class="linenos">5446</span></a> +</span><span id="L-5447"><a href="#L-5447"><span class="linenos">5447</span></a> +</span><span id="L-5448"><a href="#L-5448"><span class="linenos">5448</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5449"><a href="#L-5449"><span class="linenos">5449</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5450"><a href="#L-5450"><span class="linenos">5450</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> +</span><span id="L-5451"><a href="#L-5451"><span class="linenos">5451</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5452"><a href="#L-5452"><span class="linenos">5452</span></a> +</span><span id="L-5453"><a href="#L-5453"><span class="linenos">5453</span></a> <span class="nd">@property</span> +</span><span id="L-5454"><a href="#L-5454"><span class="linenos">5454</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-5455"><a href="#L-5455"><span class="linenos">5455</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-5456"><a href="#L-5456"><span class="linenos">5456</span></a> +</span><span id="L-5457"><a href="#L-5457"><span class="linenos">5457</span></a> +</span><span id="L-5458"><a href="#L-5458"><span class="linenos">5458</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5459"><a href="#L-5459"><span class="linenos">5459</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5460"><a href="#L-5460"><span class="linenos">5460</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-5461"><a href="#L-5461"><span class="linenos">5461</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5462"><a href="#L-5462"><span class="linenos">5462</span></a> +</span><span id="L-5463"><a href="#L-5463"><span class="linenos">5463</span></a> <span class="nd">@property</span> +</span><span id="L-5464"><a href="#L-5464"><span class="linenos">5464</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-5465"><a href="#L-5465"><span class="linenos">5465</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> +</span><span id="L-5466"><a href="#L-5466"><span class="linenos">5466</span></a> </span><span id="L-5467"><a href="#L-5467"><span class="linenos">5467</span></a> -</span><span id="L-5468"><a href="#L-5468"><span class="linenos">5468</span></a> -</span><span id="L-5469"><a href="#L-5469"><span class="linenos">5469</span></a><span class="k">class</span> <span class="nc">JSONFormat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5470"><a href="#L-5470"><span class="linenos">5470</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5471"><a href="#L-5471"><span class="linenos">5471</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_FORMAT"</span><span class="p">]</span> -</span><span id="L-5472"><a href="#L-5472"><span class="linenos">5472</span></a> -</span><span id="L-5473"><a href="#L-5473"><span class="linenos">5473</span></a> -</span><span id="L-5474"><a href="#L-5474"><span class="linenos">5474</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#operator_member-of</span> -</span><span id="L-5475"><a href="#L-5475"><span class="linenos">5475</span></a><span class="k">class</span> <span class="nc">JSONArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5476"><a href="#L-5476"><span class="linenos">5476</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_ARRAY_CONTAINS"</span><span class="p">]</span> -</span><span id="L-5477"><a href="#L-5477"><span class="linenos">5477</span></a> -</span><span id="L-5478"><a href="#L-5478"><span class="linenos">5478</span></a> -</span><span id="L-5479"><a href="#L-5479"><span class="linenos">5479</span></a><span class="k">class</span> <span class="nc">ParseJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5480"><a href="#L-5480"><span class="linenos">5480</span></a> <span class="c1"># BigQuery, Snowflake have PARSE_JSON, Presto has JSON_PARSE</span> -</span><span id="L-5481"><a href="#L-5481"><span class="linenos">5481</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"PARSE_JSON"</span><span class="p">,</span> <span class="s2">"JSON_PARSE"</span><span class="p">]</span> -</span><span id="L-5482"><a href="#L-5482"><span class="linenos">5482</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5483"><a href="#L-5483"><span class="linenos">5483</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5468"><a href="#L-5468"><span class="linenos">5468</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5469"><a href="#L-5469"><span class="linenos">5469</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> +</span><span id="L-5470"><a href="#L-5470"><span class="linenos">5470</span></a> +</span><span id="L-5471"><a href="#L-5471"><span class="linenos">5471</span></a> +</span><span id="L-5472"><a href="#L-5472"><span class="linenos">5472</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5473"><a href="#L-5473"><span class="linenos">5473</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-5474"><a href="#L-5474"><span class="linenos">5474</span></a> +</span><span id="L-5475"><a href="#L-5475"><span class="linenos">5475</span></a> +</span><span id="L-5476"><a href="#L-5476"><span class="linenos">5476</span></a><span class="k">class</span> <span class="nc">JSONFormat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5477"><a href="#L-5477"><span class="linenos">5477</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5478"><a href="#L-5478"><span class="linenos">5478</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_FORMAT"</span><span class="p">]</span> +</span><span id="L-5479"><a href="#L-5479"><span class="linenos">5479</span></a> +</span><span id="L-5480"><a href="#L-5480"><span class="linenos">5480</span></a> +</span><span id="L-5481"><a href="#L-5481"><span class="linenos">5481</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#operator_member-of</span> +</span><span id="L-5482"><a href="#L-5482"><span class="linenos">5482</span></a><span class="k">class</span> <span class="nc">JSONArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5483"><a href="#L-5483"><span class="linenos">5483</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_ARRAY_CONTAINS"</span><span class="p">]</span> </span><span id="L-5484"><a href="#L-5484"><span class="linenos">5484</span></a> </span><span id="L-5485"><a href="#L-5485"><span class="linenos">5485</span></a> -</span><span id="L-5486"><a href="#L-5486"><span class="linenos">5486</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5487"><a href="#L-5487"><span class="linenos">5487</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5488"><a href="#L-5488"><span class="linenos">5488</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5489"><a href="#L-5489"><span class="linenos">5489</span></a> -</span><span id="L-5490"><a href="#L-5490"><span class="linenos">5490</span></a> -</span><span id="L-5491"><a href="#L-5491"><span class="linenos">5491</span></a><span class="k">class</span> <span class="nc">Left</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5492"><a href="#L-5492"><span class="linenos">5492</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5493"><a href="#L-5493"><span class="linenos">5493</span></a> -</span><span id="L-5494"><a href="#L-5494"><span class="linenos">5494</span></a> -</span><span id="L-5495"><a href="#L-5495"><span class="linenos">5495</span></a><span class="k">class</span> <span class="nc">Right</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5496"><a href="#L-5496"><span class="linenos">5496</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5486"><a href="#L-5486"><span class="linenos">5486</span></a><span class="k">class</span> <span class="nc">ParseJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5487"><a href="#L-5487"><span class="linenos">5487</span></a> <span class="c1"># BigQuery, Snowflake have PARSE_JSON, Presto has JSON_PARSE</span> +</span><span id="L-5488"><a href="#L-5488"><span class="linenos">5488</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"PARSE_JSON"</span><span class="p">,</span> <span class="s2">"JSON_PARSE"</span><span class="p">]</span> +</span><span id="L-5489"><a href="#L-5489"><span class="linenos">5489</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5490"><a href="#L-5490"><span class="linenos">5490</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5491"><a href="#L-5491"><span class="linenos">5491</span></a> +</span><span id="L-5492"><a href="#L-5492"><span class="linenos">5492</span></a> +</span><span id="L-5493"><a href="#L-5493"><span class="linenos">5493</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5494"><a href="#L-5494"><span class="linenos">5494</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5495"><a href="#L-5495"><span class="linenos">5495</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5496"><a href="#L-5496"><span class="linenos">5496</span></a> </span><span id="L-5497"><a href="#L-5497"><span class="linenos">5497</span></a> -</span><span id="L-5498"><a href="#L-5498"><span class="linenos">5498</span></a> -</span><span id="L-5499"><a href="#L-5499"><span class="linenos">5499</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5500"><a href="#L-5500"><span class="linenos">5500</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LENGTH"</span><span class="p">,</span> <span class="s2">"LEN"</span><span class="p">]</span> +</span><span id="L-5498"><a href="#L-5498"><span class="linenos">5498</span></a><span class="k">class</span> <span class="nc">Left</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5499"><a href="#L-5499"><span class="linenos">5499</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5500"><a href="#L-5500"><span class="linenos">5500</span></a> </span><span id="L-5501"><a href="#L-5501"><span class="linenos">5501</span></a> -</span><span id="L-5502"><a href="#L-5502"><span class="linenos">5502</span></a> -</span><span id="L-5503"><a href="#L-5503"><span class="linenos">5503</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5504"><a href="#L-5504"><span class="linenos">5504</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5505"><a href="#L-5505"><span class="linenos">5505</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5506"><a href="#L-5506"><span class="linenos">5506</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5507"><a href="#L-5507"><span class="linenos">5507</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5508"><a href="#L-5508"><span class="linenos">5508</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5509"><a href="#L-5509"><span class="linenos">5509</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5510"><a href="#L-5510"><span class="linenos">5510</span></a> <span class="p">}</span> -</span><span id="L-5511"><a href="#L-5511"><span class="linenos">5511</span></a> -</span><span id="L-5512"><a href="#L-5512"><span class="linenos">5512</span></a> -</span><span id="L-5513"><a href="#L-5513"><span class="linenos">5513</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5514"><a href="#L-5514"><span class="linenos">5514</span></a> <span class="k">pass</span> -</span><span id="L-5515"><a href="#L-5515"><span class="linenos">5515</span></a> -</span><span id="L-5516"><a href="#L-5516"><span class="linenos">5516</span></a> -</span><span id="L-5517"><a href="#L-5517"><span class="linenos">5517</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5518"><a href="#L-5518"><span class="linenos">5518</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5502"><a href="#L-5502"><span class="linenos">5502</span></a><span class="k">class</span> <span class="nc">Right</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5503"><a href="#L-5503"><span class="linenos">5503</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5504"><a href="#L-5504"><span class="linenos">5504</span></a> +</span><span id="L-5505"><a href="#L-5505"><span class="linenos">5505</span></a> +</span><span id="L-5506"><a href="#L-5506"><span class="linenos">5506</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5507"><a href="#L-5507"><span class="linenos">5507</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LENGTH"</span><span class="p">,</span> <span class="s2">"LEN"</span><span class="p">]</span> +</span><span id="L-5508"><a href="#L-5508"><span class="linenos">5508</span></a> +</span><span id="L-5509"><a href="#L-5509"><span class="linenos">5509</span></a> +</span><span id="L-5510"><a href="#L-5510"><span class="linenos">5510</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5511"><a href="#L-5511"><span class="linenos">5511</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5512"><a href="#L-5512"><span class="linenos">5512</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5513"><a href="#L-5513"><span class="linenos">5513</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5514"><a href="#L-5514"><span class="linenos">5514</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5515"><a href="#L-5515"><span class="linenos">5515</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5516"><a href="#L-5516"><span class="linenos">5516</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5517"><a href="#L-5517"><span class="linenos">5517</span></a> <span class="p">}</span> +</span><span id="L-5518"><a href="#L-5518"><span class="linenos">5518</span></a> </span><span id="L-5519"><a href="#L-5519"><span class="linenos">5519</span></a> -</span><span id="L-5520"><a href="#L-5520"><span class="linenos">5520</span></a> -</span><span id="L-5521"><a href="#L-5521"><span class="linenos">5521</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5522"><a href="#L-5522"><span class="linenos">5522</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">,</span> <span class="s2">"BOOLOR_AGG"</span><span class="p">]</span> +</span><span id="L-5520"><a href="#L-5520"><span class="linenos">5520</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5521"><a href="#L-5521"><span class="linenos">5521</span></a> <span class="k">pass</span> +</span><span id="L-5522"><a href="#L-5522"><span class="linenos">5522</span></a> </span><span id="L-5523"><a href="#L-5523"><span class="linenos">5523</span></a> -</span><span id="L-5524"><a href="#L-5524"><span class="linenos">5524</span></a> -</span><span id="L-5525"><a href="#L-5525"><span class="linenos">5525</span></a><span class="k">class</span> <span class="nc">LogicalAnd</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5526"><a href="#L-5526"><span class="linenos">5526</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_AND"</span><span class="p">,</span> <span class="s2">"BOOL_AND"</span><span class="p">,</span> <span class="s2">"BOOLAND_AGG"</span><span class="p">]</span> +</span><span id="L-5524"><a href="#L-5524"><span class="linenos">5524</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5525"><a href="#L-5525"><span class="linenos">5525</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5526"><a href="#L-5526"><span class="linenos">5526</span></a> </span><span id="L-5527"><a href="#L-5527"><span class="linenos">5527</span></a> -</span><span id="L-5528"><a href="#L-5528"><span class="linenos">5528</span></a> -</span><span id="L-5529"><a href="#L-5529"><span class="linenos">5529</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5530"><a href="#L-5530"><span class="linenos">5530</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> +</span><span id="L-5528"><a href="#L-5528"><span class="linenos">5528</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5529"><a href="#L-5529"><span class="linenos">5529</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">,</span> <span class="s2">"BOOLOR_AGG"</span><span class="p">]</span> +</span><span id="L-5530"><a href="#L-5530"><span class="linenos">5530</span></a> </span><span id="L-5531"><a href="#L-5531"><span class="linenos">5531</span></a> -</span><span id="L-5532"><a href="#L-5532"><span class="linenos">5532</span></a> -</span><span id="L-5533"><a href="#L-5533"><span class="linenos">5533</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5534"><a href="#L-5534"><span class="linenos">5534</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5532"><a href="#L-5532"><span class="linenos">5532</span></a><span class="k">class</span> <span class="nc">LogicalAnd</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5533"><a href="#L-5533"><span class="linenos">5533</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_AND"</span><span class="p">,</span> <span class="s2">"BOOL_AND"</span><span class="p">,</span> <span class="s2">"BOOLAND_AGG"</span><span class="p">]</span> +</span><span id="L-5534"><a href="#L-5534"><span class="linenos">5534</span></a> </span><span id="L-5535"><a href="#L-5535"><span class="linenos">5535</span></a> -</span><span id="L-5536"><a href="#L-5536"><span class="linenos">5536</span></a> <span class="nd">@property</span> -</span><span id="L-5537"><a href="#L-5537"><span class="linenos">5537</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5538"><a href="#L-5538"><span class="linenos">5538</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span> -</span><span id="L-5539"><a href="#L-5539"><span class="linenos">5539</span></a> <span class="k">return</span> <span class="n">keys</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="L-5540"><a href="#L-5540"><span class="linenos">5540</span></a> -</span><span id="L-5541"><a href="#L-5541"><span class="linenos">5541</span></a> <span class="nd">@property</span> -</span><span id="L-5542"><a href="#L-5542"><span class="linenos">5542</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5543"><a href="#L-5543"><span class="linenos">5543</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> -</span><span id="L-5544"><a href="#L-5544"><span class="linenos">5544</span></a> <span class="k">return</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">values</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="L-5545"><a href="#L-5545"><span class="linenos">5545</span></a> -</span><span id="L-5546"><a href="#L-5546"><span class="linenos">5546</span></a> -</span><span id="L-5547"><a href="#L-5547"><span class="linenos">5547</span></a><span class="c1"># Represents the MAP {...} syntax in DuckDB - basically convert a struct to a MAP</span> -</span><span id="L-5548"><a href="#L-5548"><span class="linenos">5548</span></a><span class="k">class</span> <span class="nc">ToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5549"><a href="#L-5549"><span class="linenos">5549</span></a> <span class="k">pass</span> -</span><span id="L-5550"><a href="#L-5550"><span class="linenos">5550</span></a> -</span><span id="L-5551"><a href="#L-5551"><span class="linenos">5551</span></a> -</span><span id="L-5552"><a href="#L-5552"><span class="linenos">5552</span></a><span class="k">class</span> <span class="nc">MapFromEntries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5553"><a href="#L-5553"><span class="linenos">5553</span></a> <span class="k">pass</span> -</span><span id="L-5554"><a href="#L-5554"><span class="linenos">5554</span></a> -</span><span id="L-5555"><a href="#L-5555"><span class="linenos">5555</span></a> -</span><span id="L-5556"><a href="#L-5556"><span class="linenos">5556</span></a><span class="k">class</span> <span class="nc">StarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5557"><a href="#L-5557"><span class="linenos">5557</span></a> <span class="k">pass</span> +</span><span id="L-5536"><a href="#L-5536"><span class="linenos">5536</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5537"><a href="#L-5537"><span class="linenos">5537</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> +</span><span id="L-5538"><a href="#L-5538"><span class="linenos">5538</span></a> +</span><span id="L-5539"><a href="#L-5539"><span class="linenos">5539</span></a> +</span><span id="L-5540"><a href="#L-5540"><span class="linenos">5540</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5541"><a href="#L-5541"><span class="linenos">5541</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5542"><a href="#L-5542"><span class="linenos">5542</span></a> +</span><span id="L-5543"><a href="#L-5543"><span class="linenos">5543</span></a> <span class="nd">@property</span> +</span><span id="L-5544"><a href="#L-5544"><span class="linenos">5544</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5545"><a href="#L-5545"><span class="linenos">5545</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span> +</span><span id="L-5546"><a href="#L-5546"><span class="linenos">5546</span></a> <span class="k">return</span> <span class="n">keys</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="L-5547"><a href="#L-5547"><span class="linenos">5547</span></a> +</span><span id="L-5548"><a href="#L-5548"><span class="linenos">5548</span></a> <span class="nd">@property</span> +</span><span id="L-5549"><a href="#L-5549"><span class="linenos">5549</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5550"><a href="#L-5550"><span class="linenos">5550</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> +</span><span id="L-5551"><a href="#L-5551"><span class="linenos">5551</span></a> <span class="k">return</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">values</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="L-5552"><a href="#L-5552"><span class="linenos">5552</span></a> +</span><span id="L-5553"><a href="#L-5553"><span class="linenos">5553</span></a> +</span><span id="L-5554"><a href="#L-5554"><span class="linenos">5554</span></a><span class="c1"># Represents the MAP {...} syntax in DuckDB - basically convert a struct to a MAP</span> +</span><span id="L-5555"><a href="#L-5555"><span class="linenos">5555</span></a><span class="k">class</span> <span class="nc">ToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5556"><a href="#L-5556"><span class="linenos">5556</span></a> <span class="k">pass</span> +</span><span id="L-5557"><a href="#L-5557"><span class="linenos">5557</span></a> </span><span id="L-5558"><a href="#L-5558"><span class="linenos">5558</span></a> -</span><span id="L-5559"><a href="#L-5559"><span class="linenos">5559</span></a> -</span><span id="L-5560"><a href="#L-5560"><span class="linenos">5560</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5561"><a href="#L-5561"><span class="linenos">5561</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5562"><a href="#L-5562"><span class="linenos">5562</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5563"><a href="#L-5563"><span class="linenos">5563</span></a> -</span><span id="L-5564"><a href="#L-5564"><span class="linenos">5564</span></a> <span class="nd">@property</span> -</span><span id="L-5565"><a href="#L-5565"><span class="linenos">5565</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5566"><a href="#L-5566"><span class="linenos">5566</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-5567"><a href="#L-5567"><span class="linenos">5567</span></a> -</span><span id="L-5568"><a href="#L-5568"><span class="linenos">5568</span></a> <span class="nd">@property</span> -</span><span id="L-5569"><a href="#L-5569"><span class="linenos">5569</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5570"><a href="#L-5570"><span class="linenos">5570</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-5571"><a href="#L-5571"><span class="linenos">5571</span></a> -</span><span id="L-5572"><a href="#L-5572"><span class="linenos">5572</span></a> -</span><span id="L-5573"><a href="#L-5573"><span class="linenos">5573</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html</span> -</span><span id="L-5574"><a href="#L-5574"><span class="linenos">5574</span></a><span class="k">class</span> <span class="nc">MatchAgainst</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5575"><a href="#L-5575"><span class="linenos">5575</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"modifier"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5576"><a href="#L-5576"><span class="linenos">5576</span></a> -</span><span id="L-5577"><a href="#L-5577"><span class="linenos">5577</span></a> -</span><span id="L-5578"><a href="#L-5578"><span class="linenos">5578</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5579"><a href="#L-5579"><span class="linenos">5579</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5580"><a href="#L-5580"><span class="linenos">5580</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5581"><a href="#L-5581"><span class="linenos">5581</span></a> -</span><span id="L-5582"><a href="#L-5582"><span class="linenos">5582</span></a> -</span><span id="L-5583"><a href="#L-5583"><span class="linenos">5583</span></a><span class="k">class</span> <span class="nc">MD5</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5584"><a href="#L-5584"><span class="linenos">5584</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5"</span><span class="p">]</span> -</span><span id="L-5585"><a href="#L-5585"><span class="linenos">5585</span></a> -</span><span id="L-5586"><a href="#L-5586"><span class="linenos">5586</span></a> -</span><span id="L-5587"><a href="#L-5587"><span class="linenos">5587</span></a><span class="c1"># Represents the variant of the MD5 function that returns a binary value</span> -</span><span id="L-5588"><a href="#L-5588"><span class="linenos">5588</span></a><span class="k">class</span> <span class="nc">MD5Digest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5589"><a href="#L-5589"><span class="linenos">5589</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5_DIGEST"</span><span class="p">]</span> -</span><span id="L-5590"><a href="#L-5590"><span class="linenos">5590</span></a> -</span><span id="L-5591"><a href="#L-5591"><span class="linenos">5591</span></a> -</span><span id="L-5592"><a href="#L-5592"><span class="linenos">5592</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5593"><a href="#L-5593"><span class="linenos">5593</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5594"><a href="#L-5594"><span class="linenos">5594</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5595"><a href="#L-5595"><span class="linenos">5595</span></a> -</span><span id="L-5596"><a href="#L-5596"><span class="linenos">5596</span></a> -</span><span id="L-5597"><a href="#L-5597"><span class="linenos">5597</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5598"><a href="#L-5598"><span class="linenos">5598</span></a> <span class="k">pass</span> -</span><span id="L-5599"><a href="#L-5599"><span class="linenos">5599</span></a> -</span><span id="L-5600"><a href="#L-5600"><span class="linenos">5600</span></a> -</span><span id="L-5601"><a href="#L-5601"><span class="linenos">5601</span></a><span class="k">class</span> <span class="nc">AddMonths</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5602"><a href="#L-5602"><span class="linenos">5602</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5559"><a href="#L-5559"><span class="linenos">5559</span></a><span class="k">class</span> <span class="nc">MapFromEntries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5560"><a href="#L-5560"><span class="linenos">5560</span></a> <span class="k">pass</span> +</span><span id="L-5561"><a href="#L-5561"><span class="linenos">5561</span></a> +</span><span id="L-5562"><a href="#L-5562"><span class="linenos">5562</span></a> +</span><span id="L-5563"><a href="#L-5563"><span class="linenos">5563</span></a><span class="k">class</span> <span class="nc">StarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5564"><a href="#L-5564"><span class="linenos">5564</span></a> <span class="k">pass</span> +</span><span id="L-5565"><a href="#L-5565"><span class="linenos">5565</span></a> +</span><span id="L-5566"><a href="#L-5566"><span class="linenos">5566</span></a> +</span><span id="L-5567"><a href="#L-5567"><span class="linenos">5567</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5568"><a href="#L-5568"><span class="linenos">5568</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5569"><a href="#L-5569"><span class="linenos">5569</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5570"><a href="#L-5570"><span class="linenos">5570</span></a> +</span><span id="L-5571"><a href="#L-5571"><span class="linenos">5571</span></a> <span class="nd">@property</span> +</span><span id="L-5572"><a href="#L-5572"><span class="linenos">5572</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5573"><a href="#L-5573"><span class="linenos">5573</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-5574"><a href="#L-5574"><span class="linenos">5574</span></a> +</span><span id="L-5575"><a href="#L-5575"><span class="linenos">5575</span></a> <span class="nd">@property</span> +</span><span id="L-5576"><a href="#L-5576"><span class="linenos">5576</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5577"><a href="#L-5577"><span class="linenos">5577</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-5578"><a href="#L-5578"><span class="linenos">5578</span></a> +</span><span id="L-5579"><a href="#L-5579"><span class="linenos">5579</span></a> +</span><span id="L-5580"><a href="#L-5580"><span class="linenos">5580</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html</span> +</span><span id="L-5581"><a href="#L-5581"><span class="linenos">5581</span></a><span class="k">class</span> <span class="nc">MatchAgainst</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5582"><a href="#L-5582"><span class="linenos">5582</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"modifier"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5583"><a href="#L-5583"><span class="linenos">5583</span></a> +</span><span id="L-5584"><a href="#L-5584"><span class="linenos">5584</span></a> +</span><span id="L-5585"><a href="#L-5585"><span class="linenos">5585</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5586"><a href="#L-5586"><span class="linenos">5586</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5587"><a href="#L-5587"><span class="linenos">5587</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5588"><a href="#L-5588"><span class="linenos">5588</span></a> +</span><span id="L-5589"><a href="#L-5589"><span class="linenos">5589</span></a> +</span><span id="L-5590"><a href="#L-5590"><span class="linenos">5590</span></a><span class="k">class</span> <span class="nc">MD5</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5591"><a href="#L-5591"><span class="linenos">5591</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5"</span><span class="p">]</span> +</span><span id="L-5592"><a href="#L-5592"><span class="linenos">5592</span></a> +</span><span id="L-5593"><a href="#L-5593"><span class="linenos">5593</span></a> +</span><span id="L-5594"><a href="#L-5594"><span class="linenos">5594</span></a><span class="c1"># Represents the variant of the MD5 function that returns a binary value</span> +</span><span id="L-5595"><a href="#L-5595"><span class="linenos">5595</span></a><span class="k">class</span> <span class="nc">MD5Digest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5596"><a href="#L-5596"><span class="linenos">5596</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5_DIGEST"</span><span class="p">]</span> +</span><span id="L-5597"><a href="#L-5597"><span class="linenos">5597</span></a> +</span><span id="L-5598"><a href="#L-5598"><span class="linenos">5598</span></a> +</span><span id="L-5599"><a href="#L-5599"><span class="linenos">5599</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5600"><a href="#L-5600"><span class="linenos">5600</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5601"><a href="#L-5601"><span class="linenos">5601</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5602"><a href="#L-5602"><span class="linenos">5602</span></a> </span><span id="L-5603"><a href="#L-5603"><span class="linenos">5603</span></a> -</span><span id="L-5604"><a href="#L-5604"><span class="linenos">5604</span></a> -</span><span id="L-5605"><a href="#L-5605"><span class="linenos">5605</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5606"><a href="#L-5606"><span class="linenos">5606</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5604"><a href="#L-5604"><span class="linenos">5604</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5605"><a href="#L-5605"><span class="linenos">5605</span></a> <span class="k">pass</span> +</span><span id="L-5606"><a href="#L-5606"><span class="linenos">5606</span></a> </span><span id="L-5607"><a href="#L-5607"><span class="linenos">5607</span></a> -</span><span id="L-5608"><a href="#L-5608"><span class="linenos">5608</span></a> -</span><span id="L-5609"><a href="#L-5609"><span class="linenos">5609</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-predict#mlpredict_function</span> -</span><span id="L-5610"><a href="#L-5610"><span class="linenos">5610</span></a><span class="k">class</span> <span class="nc">Predict</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5611"><a href="#L-5611"><span class="linenos">5611</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params_struct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5612"><a href="#L-5612"><span class="linenos">5612</span></a> -</span><span id="L-5613"><a href="#L-5613"><span class="linenos">5613</span></a> -</span><span id="L-5614"><a href="#L-5614"><span class="linenos">5614</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5615"><a href="#L-5615"><span class="linenos">5615</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> -</span><span id="L-5616"><a href="#L-5616"><span class="linenos">5616</span></a> -</span><span id="L-5617"><a href="#L-5617"><span class="linenos">5617</span></a> -</span><span id="L-5618"><a href="#L-5618"><span class="linenos">5618</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5619"><a href="#L-5619"><span class="linenos">5619</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5608"><a href="#L-5608"><span class="linenos">5608</span></a><span class="k">class</span> <span class="nc">AddMonths</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5609"><a href="#L-5609"><span class="linenos">5609</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5610"><a href="#L-5610"><span class="linenos">5610</span></a> +</span><span id="L-5611"><a href="#L-5611"><span class="linenos">5611</span></a> +</span><span id="L-5612"><a href="#L-5612"><span class="linenos">5612</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5613"><a href="#L-5613"><span class="linenos">5613</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5614"><a href="#L-5614"><span class="linenos">5614</span></a> +</span><span id="L-5615"><a href="#L-5615"><span class="linenos">5615</span></a> +</span><span id="L-5616"><a href="#L-5616"><span class="linenos">5616</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-predict#mlpredict_function</span> +</span><span id="L-5617"><a href="#L-5617"><span class="linenos">5617</span></a><span class="k">class</span> <span class="nc">Predict</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5618"><a href="#L-5618"><span class="linenos">5618</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params_struct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5619"><a href="#L-5619"><span class="linenos">5619</span></a> </span><span id="L-5620"><a href="#L-5620"><span class="linenos">5620</span></a> -</span><span id="L-5621"><a href="#L-5621"><span class="linenos">5621</span></a> -</span><span id="L-5622"><a href="#L-5622"><span class="linenos">5622</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5623"><a href="#L-5623"><span class="linenos">5623</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5621"><a href="#L-5621"><span class="linenos">5621</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5622"><a href="#L-5622"><span class="linenos">5622</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> +</span><span id="L-5623"><a href="#L-5623"><span class="linenos">5623</span></a> </span><span id="L-5624"><a href="#L-5624"><span class="linenos">5624</span></a> -</span><span id="L-5625"><a href="#L-5625"><span class="linenos">5625</span></a> -</span><span id="L-5626"><a href="#L-5626"><span class="linenos">5626</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5627"><a href="#L-5627"><span class="linenos">5627</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5625"><a href="#L-5625"><span class="linenos">5625</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5626"><a href="#L-5626"><span class="linenos">5626</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5627"><a href="#L-5627"><span class="linenos">5627</span></a> </span><span id="L-5628"><a href="#L-5628"><span class="linenos">5628</span></a> -</span><span id="L-5629"><a href="#L-5629"><span class="linenos">5629</span></a> -</span><span id="L-5630"><a href="#L-5630"><span class="linenos">5630</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> -</span><span id="L-5631"><a href="#L-5631"><span class="linenos">5631</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5629"><a href="#L-5629"><span class="linenos">5629</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5630"><a href="#L-5630"><span class="linenos">5630</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5631"><a href="#L-5631"><span class="linenos">5631</span></a> </span><span id="L-5632"><a href="#L-5632"><span class="linenos">5632</span></a> -</span><span id="L-5633"><a href="#L-5633"><span class="linenos">5633</span></a> -</span><span id="L-5634"><a href="#L-5634"><span class="linenos">5634</span></a><span class="k">class</span> <span class="nc">Quarter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5635"><a href="#L-5635"><span class="linenos">5635</span></a> <span class="k">pass</span> +</span><span id="L-5633"><a href="#L-5633"><span class="linenos">5633</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5634"><a href="#L-5634"><span class="linenos">5634</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5635"><a href="#L-5635"><span class="linenos">5635</span></a> </span><span id="L-5636"><a href="#L-5636"><span class="linenos">5636</span></a> -</span><span id="L-5637"><a href="#L-5637"><span class="linenos">5637</span></a> -</span><span id="L-5638"><a href="#L-5638"><span class="linenos">5638</span></a><span class="k">class</span> <span class="nc">Rand</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5639"><a href="#L-5639"><span class="linenos">5639</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"RAND"</span><span class="p">,</span> <span class="s2">"RANDOM"</span><span class="p">]</span> -</span><span id="L-5640"><a href="#L-5640"><span class="linenos">5640</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5641"><a href="#L-5641"><span class="linenos">5641</span></a> -</span><span id="L-5642"><a href="#L-5642"><span class="linenos">5642</span></a> -</span><span id="L-5643"><a href="#L-5643"><span class="linenos">5643</span></a><span class="k">class</span> <span class="nc">Randn</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5644"><a href="#L-5644"><span class="linenos">5644</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5645"><a href="#L-5645"><span class="linenos">5645</span></a> -</span><span id="L-5646"><a href="#L-5646"><span class="linenos">5646</span></a> -</span><span id="L-5647"><a href="#L-5647"><span class="linenos">5647</span></a><span class="k">class</span> <span class="nc">RangeN</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5648"><a href="#L-5648"><span class="linenos">5648</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"each"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5637"><a href="#L-5637"><span class="linenos">5637</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> +</span><span id="L-5638"><a href="#L-5638"><span class="linenos">5638</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5639"><a href="#L-5639"><span class="linenos">5639</span></a> +</span><span id="L-5640"><a href="#L-5640"><span class="linenos">5640</span></a> +</span><span id="L-5641"><a href="#L-5641"><span class="linenos">5641</span></a><span class="k">class</span> <span class="nc">Quarter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5642"><a href="#L-5642"><span class="linenos">5642</span></a> <span class="k">pass</span> +</span><span id="L-5643"><a href="#L-5643"><span class="linenos">5643</span></a> +</span><span id="L-5644"><a href="#L-5644"><span class="linenos">5644</span></a> +</span><span id="L-5645"><a href="#L-5645"><span class="linenos">5645</span></a><span class="k">class</span> <span class="nc">Rand</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5646"><a href="#L-5646"><span class="linenos">5646</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"RAND"</span><span class="p">,</span> <span class="s2">"RANDOM"</span><span class="p">]</span> +</span><span id="L-5647"><a href="#L-5647"><span class="linenos">5647</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5648"><a href="#L-5648"><span class="linenos">5648</span></a> </span><span id="L-5649"><a href="#L-5649"><span class="linenos">5649</span></a> -</span><span id="L-5650"><a href="#L-5650"><span class="linenos">5650</span></a> -</span><span id="L-5651"><a href="#L-5651"><span class="linenos">5651</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5652"><a href="#L-5652"><span class="linenos">5652</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> -</span><span id="L-5653"><a href="#L-5653"><span class="linenos">5653</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5654"><a href="#L-5654"><span class="linenos">5654</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5655"><a href="#L-5655"><span class="linenos">5655</span></a> +</span><span id="L-5650"><a href="#L-5650"><span class="linenos">5650</span></a><span class="k">class</span> <span class="nc">Randn</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5651"><a href="#L-5651"><span class="linenos">5651</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5652"><a href="#L-5652"><span class="linenos">5652</span></a> +</span><span id="L-5653"><a href="#L-5653"><span class="linenos">5653</span></a> +</span><span id="L-5654"><a href="#L-5654"><span class="linenos">5654</span></a><span class="k">class</span> <span class="nc">RangeN</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5655"><a href="#L-5655"><span class="linenos">5655</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"each"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-5656"><a href="#L-5656"><span class="linenos">5656</span></a> -</span><span id="L-5657"><a href="#L-5657"><span class="linenos">5657</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5658"><a href="#L-5658"><span class="linenos">5658</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5659"><a href="#L-5659"><span class="linenos">5659</span></a> -</span><span id="L-5660"><a href="#L-5660"><span class="linenos">5660</span></a> -</span><span id="L-5661"><a href="#L-5661"><span class="linenos">5661</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5662"><a href="#L-5662"><span class="linenos">5662</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5663"><a href="#L-5663"><span class="linenos">5663</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5664"><a href="#L-5664"><span class="linenos">5664</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5665"><a href="#L-5665"><span class="linenos">5665</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5666"><a href="#L-5666"><span class="linenos">5666</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5667"><a href="#L-5667"><span class="linenos">5667</span></a> <span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5668"><a href="#L-5668"><span class="linenos">5668</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5669"><a href="#L-5669"><span class="linenos">5669</span></a> <span class="p">}</span> -</span><span id="L-5670"><a href="#L-5670"><span class="linenos">5670</span></a> -</span><span id="L-5671"><a href="#L-5671"><span class="linenos">5671</span></a> -</span><span id="L-5672"><a href="#L-5672"><span class="linenos">5672</span></a><span class="k">class</span> <span class="nc">RegexpReplace</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5673"><a href="#L-5673"><span class="linenos">5673</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5674"><a href="#L-5674"><span class="linenos">5674</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5675"><a href="#L-5675"><span class="linenos">5675</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5676"><a href="#L-5676"><span class="linenos">5676</span></a> <span class="s2">"replacement"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5677"><a href="#L-5677"><span class="linenos">5677</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5678"><a href="#L-5678"><span class="linenos">5678</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5679"><a href="#L-5679"><span class="linenos">5679</span></a> <span class="s2">"modifiers"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5680"><a href="#L-5680"><span class="linenos">5680</span></a> <span class="p">}</span> -</span><span id="L-5681"><a href="#L-5681"><span class="linenos">5681</span></a> -</span><span id="L-5682"><a href="#L-5682"><span class="linenos">5682</span></a> -</span><span id="L-5683"><a href="#L-5683"><span class="linenos">5683</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5684"><a href="#L-5684"><span class="linenos">5684</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5685"><a href="#L-5685"><span class="linenos">5685</span></a> -</span><span id="L-5686"><a href="#L-5686"><span class="linenos">5686</span></a> -</span><span id="L-5687"><a href="#L-5687"><span class="linenos">5687</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-5688"><a href="#L-5688"><span class="linenos">5688</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5657"><a href="#L-5657"><span class="linenos">5657</span></a> +</span><span id="L-5658"><a href="#L-5658"><span class="linenos">5658</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5659"><a href="#L-5659"><span class="linenos">5659</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> +</span><span id="L-5660"><a href="#L-5660"><span class="linenos">5660</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5661"><a href="#L-5661"><span class="linenos">5661</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5662"><a href="#L-5662"><span class="linenos">5662</span></a> +</span><span id="L-5663"><a href="#L-5663"><span class="linenos">5663</span></a> +</span><span id="L-5664"><a href="#L-5664"><span class="linenos">5664</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5665"><a href="#L-5665"><span class="linenos">5665</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5666"><a href="#L-5666"><span class="linenos">5666</span></a> +</span><span id="L-5667"><a href="#L-5667"><span class="linenos">5667</span></a> +</span><span id="L-5668"><a href="#L-5668"><span class="linenos">5668</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5669"><a href="#L-5669"><span class="linenos">5669</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5670"><a href="#L-5670"><span class="linenos">5670</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5671"><a href="#L-5671"><span class="linenos">5671</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5672"><a href="#L-5672"><span class="linenos">5672</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5673"><a href="#L-5673"><span class="linenos">5673</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5674"><a href="#L-5674"><span class="linenos">5674</span></a> <span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5675"><a href="#L-5675"><span class="linenos">5675</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5676"><a href="#L-5676"><span class="linenos">5676</span></a> <span class="p">}</span> +</span><span id="L-5677"><a href="#L-5677"><span class="linenos">5677</span></a> +</span><span id="L-5678"><a href="#L-5678"><span class="linenos">5678</span></a> +</span><span id="L-5679"><a href="#L-5679"><span class="linenos">5679</span></a><span class="k">class</span> <span class="nc">RegexpReplace</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5680"><a href="#L-5680"><span class="linenos">5680</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5681"><a href="#L-5681"><span class="linenos">5681</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5682"><a href="#L-5682"><span class="linenos">5682</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5683"><a href="#L-5683"><span class="linenos">5683</span></a> <span class="s2">"replacement"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5684"><a href="#L-5684"><span class="linenos">5684</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5685"><a href="#L-5685"><span class="linenos">5685</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5686"><a href="#L-5686"><span class="linenos">5686</span></a> <span class="s2">"modifiers"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5687"><a href="#L-5687"><span class="linenos">5687</span></a> <span class="p">}</span> +</span><span id="L-5688"><a href="#L-5688"><span class="linenos">5688</span></a> </span><span id="L-5689"><a href="#L-5689"><span class="linenos">5689</span></a> -</span><span id="L-5690"><a href="#L-5690"><span class="linenos">5690</span></a> -</span><span id="L-5691"><a href="#L-5691"><span class="linenos">5691</span></a><span class="c1"># https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.split.html</span> -</span><span id="L-5692"><a href="#L-5692"><span class="linenos">5692</span></a><span class="c1"># limit is the number of times a pattern is applied</span> -</span><span id="L-5693"><a href="#L-5693"><span class="linenos">5693</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5694"><a href="#L-5694"><span class="linenos">5694</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5695"><a href="#L-5695"><span class="linenos">5695</span></a> +</span><span id="L-5690"><a href="#L-5690"><span class="linenos">5690</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5691"><a href="#L-5691"><span class="linenos">5691</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5692"><a href="#L-5692"><span class="linenos">5692</span></a> +</span><span id="L-5693"><a href="#L-5693"><span class="linenos">5693</span></a> +</span><span id="L-5694"><a href="#L-5694"><span class="linenos">5694</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-5695"><a href="#L-5695"><span class="linenos">5695</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-5696"><a href="#L-5696"><span class="linenos">5696</span></a> -</span><span id="L-5697"><a href="#L-5697"><span class="linenos">5697</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5698"><a href="#L-5698"><span class="linenos">5698</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5699"><a href="#L-5699"><span class="linenos">5699</span></a> -</span><span id="L-5700"><a href="#L-5700"><span class="linenos">5700</span></a> -</span><span id="L-5701"><a href="#L-5701"><span class="linenos">5701</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16</span> -</span><span id="L-5702"><a href="#L-5702"><span class="linenos">5702</span></a><span class="c1"># tsql third argument function == trunctaion if not 0</span> -</span><span id="L-5703"><a href="#L-5703"><span class="linenos">5703</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5704"><a href="#L-5704"><span class="linenos">5704</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"truncate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5705"><a href="#L-5705"><span class="linenos">5705</span></a> +</span><span id="L-5697"><a href="#L-5697"><span class="linenos">5697</span></a> +</span><span id="L-5698"><a href="#L-5698"><span class="linenos">5698</span></a><span class="c1"># https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.split.html</span> +</span><span id="L-5699"><a href="#L-5699"><span class="linenos">5699</span></a><span class="c1"># limit is the number of times a pattern is applied</span> +</span><span id="L-5700"><a href="#L-5700"><span class="linenos">5700</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5701"><a href="#L-5701"><span class="linenos">5701</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5702"><a href="#L-5702"><span class="linenos">5702</span></a> +</span><span id="L-5703"><a href="#L-5703"><span class="linenos">5703</span></a> +</span><span id="L-5704"><a href="#L-5704"><span class="linenos">5704</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5705"><a href="#L-5705"><span class="linenos">5705</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-5706"><a href="#L-5706"><span class="linenos">5706</span></a> -</span><span id="L-5707"><a href="#L-5707"><span class="linenos">5707</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5708"><a href="#L-5708"><span class="linenos">5708</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-5709"><a href="#L-5709"><span class="linenos">5709</span></a> -</span><span id="L-5710"><a href="#L-5710"><span class="linenos">5710</span></a> -</span><span id="L-5711"><a href="#L-5711"><span class="linenos">5711</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5712"><a href="#L-5712"><span class="linenos">5712</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5707"><a href="#L-5707"><span class="linenos">5707</span></a> +</span><span id="L-5708"><a href="#L-5708"><span class="linenos">5708</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16</span> +</span><span id="L-5709"><a href="#L-5709"><span class="linenos">5709</span></a><span class="c1"># tsql third argument function == trunctaion if not 0</span> +</span><span id="L-5710"><a href="#L-5710"><span class="linenos">5710</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5711"><a href="#L-5711"><span class="linenos">5711</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"truncate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5712"><a href="#L-5712"><span class="linenos">5712</span></a> </span><span id="L-5713"><a href="#L-5713"><span class="linenos">5713</span></a> -</span><span id="L-5714"><a href="#L-5714"><span class="linenos">5714</span></a> -</span><span id="L-5715"><a href="#L-5715"><span class="linenos">5715</span></a><span class="k">class</span> <span class="nc">SHA</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5716"><a href="#L-5716"><span class="linenos">5716</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA"</span><span class="p">,</span> <span class="s2">"SHA1"</span><span class="p">]</span> +</span><span id="L-5714"><a href="#L-5714"><span class="linenos">5714</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5715"><a href="#L-5715"><span class="linenos">5715</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-5716"><a href="#L-5716"><span class="linenos">5716</span></a> </span><span id="L-5717"><a href="#L-5717"><span class="linenos">5717</span></a> -</span><span id="L-5718"><a href="#L-5718"><span class="linenos">5718</span></a> -</span><span id="L-5719"><a href="#L-5719"><span class="linenos">5719</span></a><span class="k">class</span> <span class="nc">SHA2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5720"><a href="#L-5720"><span class="linenos">5720</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA2"</span><span class="p">]</span> -</span><span id="L-5721"><a href="#L-5721"><span class="linenos">5721</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5722"><a href="#L-5722"><span class="linenos">5722</span></a> -</span><span id="L-5723"><a href="#L-5723"><span class="linenos">5723</span></a> -</span><span id="L-5724"><a href="#L-5724"><span class="linenos">5724</span></a><span class="k">class</span> <span class="nc">Sign</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5725"><a href="#L-5725"><span class="linenos">5725</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SIGN"</span><span class="p">,</span> <span class="s2">"SIGNUM"</span><span class="p">]</span> -</span><span id="L-5726"><a href="#L-5726"><span class="linenos">5726</span></a> -</span><span id="L-5727"><a href="#L-5727"><span class="linenos">5727</span></a> -</span><span id="L-5728"><a href="#L-5728"><span class="linenos">5728</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5729"><a href="#L-5729"><span class="linenos">5729</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5718"><a href="#L-5718"><span class="linenos">5718</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5719"><a href="#L-5719"><span class="linenos">5719</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5720"><a href="#L-5720"><span class="linenos">5720</span></a> +</span><span id="L-5721"><a href="#L-5721"><span class="linenos">5721</span></a> +</span><span id="L-5722"><a href="#L-5722"><span class="linenos">5722</span></a><span class="k">class</span> <span class="nc">SHA</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5723"><a href="#L-5723"><span class="linenos">5723</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA"</span><span class="p">,</span> <span class="s2">"SHA1"</span><span class="p">]</span> +</span><span id="L-5724"><a href="#L-5724"><span class="linenos">5724</span></a> +</span><span id="L-5725"><a href="#L-5725"><span class="linenos">5725</span></a> +</span><span id="L-5726"><a href="#L-5726"><span class="linenos">5726</span></a><span class="k">class</span> <span class="nc">SHA2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5727"><a href="#L-5727"><span class="linenos">5727</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA2"</span><span class="p">]</span> +</span><span id="L-5728"><a href="#L-5728"><span class="linenos">5728</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5729"><a href="#L-5729"><span class="linenos">5729</span></a> </span><span id="L-5730"><a href="#L-5730"><span class="linenos">5730</span></a> -</span><span id="L-5731"><a href="#L-5731"><span class="linenos">5731</span></a> -</span><span id="L-5732"><a href="#L-5732"><span class="linenos">5732</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5733"><a href="#L-5733"><span class="linenos">5733</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5731"><a href="#L-5731"><span class="linenos">5731</span></a><span class="k">class</span> <span class="nc">Sign</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5732"><a href="#L-5732"><span class="linenos">5732</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SIGN"</span><span class="p">,</span> <span class="s2">"SIGNUM"</span><span class="p">]</span> +</span><span id="L-5733"><a href="#L-5733"><span class="linenos">5733</span></a> </span><span id="L-5734"><a href="#L-5734"><span class="linenos">5734</span></a> -</span><span id="L-5735"><a href="#L-5735"><span class="linenos">5735</span></a> -</span><span id="L-5736"><a href="#L-5736"><span class="linenos">5736</span></a><span class="c1"># Start may be omitted in the case of postgres</span> -</span><span id="L-5737"><a href="#L-5737"><span class="linenos">5737</span></a><span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> -</span><span id="L-5738"><a href="#L-5738"><span class="linenos">5738</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5739"><a href="#L-5739"><span class="linenos">5739</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5740"><a href="#L-5740"><span class="linenos">5740</span></a> +</span><span id="L-5735"><a href="#L-5735"><span class="linenos">5735</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5736"><a href="#L-5736"><span class="linenos">5736</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5737"><a href="#L-5737"><span class="linenos">5737</span></a> +</span><span id="L-5738"><a href="#L-5738"><span class="linenos">5738</span></a> +</span><span id="L-5739"><a href="#L-5739"><span class="linenos">5739</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5740"><a href="#L-5740"><span class="linenos">5740</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-5741"><a href="#L-5741"><span class="linenos">5741</span></a> -</span><span id="L-5742"><a href="#L-5742"><span class="linenos">5742</span></a><span class="k">class</span> <span class="nc">StandardHash</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5743"><a href="#L-5743"><span class="linenos">5743</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5744"><a href="#L-5744"><span class="linenos">5744</span></a> -</span><span id="L-5745"><a href="#L-5745"><span class="linenos">5745</span></a> -</span><span id="L-5746"><a href="#L-5746"><span class="linenos">5746</span></a><span class="k">class</span> <span class="nc">StartsWith</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5747"><a href="#L-5747"><span class="linenos">5747</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STARTS_WITH"</span><span class="p">,</span> <span class="s2">"STARTSWITH"</span><span class="p">]</span> -</span><span id="L-5748"><a href="#L-5748"><span class="linenos">5748</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5749"><a href="#L-5749"><span class="linenos">5749</span></a> -</span><span id="L-5750"><a href="#L-5750"><span class="linenos">5750</span></a> -</span><span id="L-5751"><a href="#L-5751"><span class="linenos">5751</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5752"><a href="#L-5752"><span class="linenos">5752</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5753"><a href="#L-5753"><span class="linenos">5753</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5754"><a href="#L-5754"><span class="linenos">5754</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5755"><a href="#L-5755"><span class="linenos">5755</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5756"><a href="#L-5756"><span class="linenos">5756</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5757"><a href="#L-5757"><span class="linenos">5757</span></a> <span class="p">}</span> -</span><span id="L-5758"><a href="#L-5758"><span class="linenos">5758</span></a> -</span><span id="L-5759"><a href="#L-5759"><span class="linenos">5759</span></a> -</span><span id="L-5760"><a href="#L-5760"><span class="linenos">5760</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5761"><a href="#L-5761"><span class="linenos">5761</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5762"><a href="#L-5762"><span class="linenos">5762</span></a> -</span><span id="L-5763"><a href="#L-5763"><span class="linenos">5763</span></a> -</span><span id="L-5764"><a href="#L-5764"><span class="linenos">5764</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5765"><a href="#L-5765"><span class="linenos">5765</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5742"><a href="#L-5742"><span class="linenos">5742</span></a> +</span><span id="L-5743"><a href="#L-5743"><span class="linenos">5743</span></a><span class="c1"># Start may be omitted in the case of postgres</span> +</span><span id="L-5744"><a href="#L-5744"><span class="linenos">5744</span></a><span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> +</span><span id="L-5745"><a href="#L-5745"><span class="linenos">5745</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5746"><a href="#L-5746"><span class="linenos">5746</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5747"><a href="#L-5747"><span class="linenos">5747</span></a> +</span><span id="L-5748"><a href="#L-5748"><span class="linenos">5748</span></a> +</span><span id="L-5749"><a href="#L-5749"><span class="linenos">5749</span></a><span class="k">class</span> <span class="nc">StandardHash</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5750"><a href="#L-5750"><span class="linenos">5750</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5751"><a href="#L-5751"><span class="linenos">5751</span></a> +</span><span id="L-5752"><a href="#L-5752"><span class="linenos">5752</span></a> +</span><span id="L-5753"><a href="#L-5753"><span class="linenos">5753</span></a><span class="k">class</span> <span class="nc">StartsWith</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5754"><a href="#L-5754"><span class="linenos">5754</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STARTS_WITH"</span><span class="p">,</span> <span class="s2">"STARTSWITH"</span><span class="p">]</span> +</span><span id="L-5755"><a href="#L-5755"><span class="linenos">5755</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5756"><a href="#L-5756"><span class="linenos">5756</span></a> +</span><span id="L-5757"><a href="#L-5757"><span class="linenos">5757</span></a> +</span><span id="L-5758"><a href="#L-5758"><span class="linenos">5758</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5759"><a href="#L-5759"><span class="linenos">5759</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5760"><a href="#L-5760"><span class="linenos">5760</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5761"><a href="#L-5761"><span class="linenos">5761</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5762"><a href="#L-5762"><span class="linenos">5762</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5763"><a href="#L-5763"><span class="linenos">5763</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5764"><a href="#L-5764"><span class="linenos">5764</span></a> <span class="p">}</span> +</span><span id="L-5765"><a href="#L-5765"><span class="linenos">5765</span></a> </span><span id="L-5766"><a href="#L-5766"><span class="linenos">5766</span></a> -</span><span id="L-5767"><a href="#L-5767"><span class="linenos">5767</span></a> -</span><span id="L-5768"><a href="#L-5768"><span class="linenos">5768</span></a><span class="c1"># Spark allows unix_timestamp()</span> -</span><span id="L-5769"><a href="#L-5769"><span class="linenos">5769</span></a><span class="c1"># https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html</span> -</span><span id="L-5770"><a href="#L-5770"><span class="linenos">5770</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5771"><a href="#L-5771"><span class="linenos">5771</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5772"><a href="#L-5772"><span class="linenos">5772</span></a> +</span><span id="L-5767"><a href="#L-5767"><span class="linenos">5767</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5768"><a href="#L-5768"><span class="linenos">5768</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5769"><a href="#L-5769"><span class="linenos">5769</span></a> +</span><span id="L-5770"><a href="#L-5770"><span class="linenos">5770</span></a> +</span><span id="L-5771"><a href="#L-5771"><span class="linenos">5771</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5772"><a href="#L-5772"><span class="linenos">5772</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-5773"><a href="#L-5773"><span class="linenos">5773</span></a> -</span><span id="L-5774"><a href="#L-5774"><span class="linenos">5774</span></a><span class="c1"># https://prestodb.io/docs/current/functions/string.html</span> -</span><span id="L-5775"><a href="#L-5775"><span class="linenos">5775</span></a><span class="c1"># https://spark.apache.org/docs/latest/api/sql/index.html#str_to_map</span> -</span><span id="L-5776"><a href="#L-5776"><span class="linenos">5776</span></a><span class="k">class</span> <span class="nc">StrToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5777"><a href="#L-5777"><span class="linenos">5777</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5778"><a href="#L-5778"><span class="linenos">5778</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5779"><a href="#L-5779"><span class="linenos">5779</span></a> <span class="s2">"pair_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5780"><a href="#L-5780"><span class="linenos">5780</span></a> <span class="s2">"key_value_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5781"><a href="#L-5781"><span class="linenos">5781</span></a> <span class="s2">"duplicate_resolution_callback"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5782"><a href="#L-5782"><span class="linenos">5782</span></a> <span class="p">}</span> -</span><span id="L-5783"><a href="#L-5783"><span class="linenos">5783</span></a> -</span><span id="L-5784"><a href="#L-5784"><span class="linenos">5784</span></a> -</span><span id="L-5785"><a href="#L-5785"><span class="linenos">5785</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5786"><a href="#L-5786"><span class="linenos">5786</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5787"><a href="#L-5787"><span class="linenos">5787</span></a> -</span><span id="L-5788"><a href="#L-5788"><span class="linenos">5788</span></a> -</span><span id="L-5789"><a href="#L-5789"><span class="linenos">5789</span></a><span class="k">class</span> <span class="nc">FromBase</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5790"><a href="#L-5790"><span class="linenos">5790</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5774"><a href="#L-5774"><span class="linenos">5774</span></a> +</span><span id="L-5775"><a href="#L-5775"><span class="linenos">5775</span></a><span class="c1"># Spark allows unix_timestamp()</span> +</span><span id="L-5776"><a href="#L-5776"><span class="linenos">5776</span></a><span class="c1"># https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html</span> +</span><span id="L-5777"><a href="#L-5777"><span class="linenos">5777</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5778"><a href="#L-5778"><span class="linenos">5778</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5779"><a href="#L-5779"><span class="linenos">5779</span></a> +</span><span id="L-5780"><a href="#L-5780"><span class="linenos">5780</span></a> +</span><span id="L-5781"><a href="#L-5781"><span class="linenos">5781</span></a><span class="c1"># https://prestodb.io/docs/current/functions/string.html</span> +</span><span id="L-5782"><a href="#L-5782"><span class="linenos">5782</span></a><span class="c1"># https://spark.apache.org/docs/latest/api/sql/index.html#str_to_map</span> +</span><span id="L-5783"><a href="#L-5783"><span class="linenos">5783</span></a><span class="k">class</span> <span class="nc">StrToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5784"><a href="#L-5784"><span class="linenos">5784</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5785"><a href="#L-5785"><span class="linenos">5785</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5786"><a href="#L-5786"><span class="linenos">5786</span></a> <span class="s2">"pair_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5787"><a href="#L-5787"><span class="linenos">5787</span></a> <span class="s2">"key_value_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5788"><a href="#L-5788"><span class="linenos">5788</span></a> <span class="s2">"duplicate_resolution_callback"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5789"><a href="#L-5789"><span class="linenos">5789</span></a> <span class="p">}</span> +</span><span id="L-5790"><a href="#L-5790"><span class="linenos">5790</span></a> </span><span id="L-5791"><a href="#L-5791"><span class="linenos">5791</span></a> -</span><span id="L-5792"><a href="#L-5792"><span class="linenos">5792</span></a> -</span><span id="L-5793"><a href="#L-5793"><span class="linenos">5793</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5794"><a href="#L-5794"><span class="linenos">5794</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5795"><a href="#L-5795"><span class="linenos">5795</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5796"><a href="#L-5796"><span class="linenos">5796</span></a> -</span><span id="L-5797"><a href="#L-5797"><span class="linenos">5797</span></a> -</span><span id="L-5798"><a href="#L-5798"><span class="linenos">5798</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5799"><a href="#L-5799"><span class="linenos">5799</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-5800"><a href="#L-5800"><span class="linenos">5800</span></a> -</span><span id="L-5801"><a href="#L-5801"><span class="linenos">5801</span></a> -</span><span id="L-5802"><a href="#L-5802"><span class="linenos">5802</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-ver16</span> -</span><span id="L-5803"><a href="#L-5803"><span class="linenos">5803</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/insert</span> -</span><span id="L-5804"><a href="#L-5804"><span class="linenos">5804</span></a><span class="k">class</span> <span class="nc">Stuff</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5805"><a href="#L-5805"><span class="linenos">5805</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STUFF"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">]</span> -</span><span id="L-5806"><a href="#L-5806"><span class="linenos">5806</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5792"><a href="#L-5792"><span class="linenos">5792</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5793"><a href="#L-5793"><span class="linenos">5793</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5794"><a href="#L-5794"><span class="linenos">5794</span></a> +</span><span id="L-5795"><a href="#L-5795"><span class="linenos">5795</span></a> +</span><span id="L-5796"><a href="#L-5796"><span class="linenos">5796</span></a><span class="k">class</span> <span class="nc">FromBase</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5797"><a href="#L-5797"><span class="linenos">5797</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5798"><a href="#L-5798"><span class="linenos">5798</span></a> +</span><span id="L-5799"><a href="#L-5799"><span class="linenos">5799</span></a> +</span><span id="L-5800"><a href="#L-5800"><span class="linenos">5800</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5801"><a href="#L-5801"><span class="linenos">5801</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5802"><a href="#L-5802"><span class="linenos">5802</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5803"><a href="#L-5803"><span class="linenos">5803</span></a> +</span><span id="L-5804"><a href="#L-5804"><span class="linenos">5804</span></a> +</span><span id="L-5805"><a href="#L-5805"><span class="linenos">5805</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5806"><a href="#L-5806"><span class="linenos">5806</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-5807"><a href="#L-5807"><span class="linenos">5807</span></a> </span><span id="L-5808"><a href="#L-5808"><span class="linenos">5808</span></a> -</span><span id="L-5809"><a href="#L-5809"><span class="linenos">5809</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5810"><a href="#L-5810"><span class="linenos">5810</span></a> <span class="k">pass</span> -</span><span id="L-5811"><a href="#L-5811"><span class="linenos">5811</span></a> -</span><span id="L-5812"><a href="#L-5812"><span class="linenos">5812</span></a> -</span><span id="L-5813"><a href="#L-5813"><span class="linenos">5813</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5814"><a href="#L-5814"><span class="linenos">5814</span></a> <span class="k">pass</span> +</span><span id="L-5809"><a href="#L-5809"><span class="linenos">5809</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-ver16</span> +</span><span id="L-5810"><a href="#L-5810"><span class="linenos">5810</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/insert</span> +</span><span id="L-5811"><a href="#L-5811"><span class="linenos">5811</span></a><span class="k">class</span> <span class="nc">Stuff</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5812"><a href="#L-5812"><span class="linenos">5812</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STUFF"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">]</span> +</span><span id="L-5813"><a href="#L-5813"><span class="linenos">5813</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-5814"><a href="#L-5814"><span class="linenos">5814</span></a> </span><span id="L-5815"><a href="#L-5815"><span class="linenos">5815</span></a> -</span><span id="L-5816"><a href="#L-5816"><span class="linenos">5816</span></a> -</span><span id="L-5817"><a href="#L-5817"><span class="linenos">5817</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5818"><a href="#L-5818"><span class="linenos">5818</span></a> <span class="k">pass</span> +</span><span id="L-5816"><a href="#L-5816"><span class="linenos">5816</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5817"><a href="#L-5817"><span class="linenos">5817</span></a> <span class="k">pass</span> +</span><span id="L-5818"><a href="#L-5818"><span class="linenos">5818</span></a> </span><span id="L-5819"><a href="#L-5819"><span class="linenos">5819</span></a> -</span><span id="L-5820"><a href="#L-5820"><span class="linenos">5820</span></a> -</span><span id="L-5821"><a href="#L-5821"><span class="linenos">5821</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5822"><a href="#L-5822"><span class="linenos">5822</span></a> <span class="k">pass</span> +</span><span id="L-5820"><a href="#L-5820"><span class="linenos">5820</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5821"><a href="#L-5821"><span class="linenos">5821</span></a> <span class="k">pass</span> +</span><span id="L-5822"><a href="#L-5822"><span class="linenos">5822</span></a> </span><span id="L-5823"><a href="#L-5823"><span class="linenos">5823</span></a> -</span><span id="L-5824"><a href="#L-5824"><span class="linenos">5824</span></a> -</span><span id="L-5825"><a href="#L-5825"><span class="linenos">5825</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5826"><a href="#L-5826"><span class="linenos">5826</span></a> <span class="k">pass</span> +</span><span id="L-5824"><a href="#L-5824"><span class="linenos">5824</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5825"><a href="#L-5825"><span class="linenos">5825</span></a> <span class="k">pass</span> +</span><span id="L-5826"><a href="#L-5826"><span class="linenos">5826</span></a> </span><span id="L-5827"><a href="#L-5827"><span class="linenos">5827</span></a> -</span><span id="L-5828"><a href="#L-5828"><span class="linenos">5828</span></a> -</span><span id="L-5829"><a href="#L-5829"><span class="linenos">5829</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5830"><a href="#L-5830"><span class="linenos">5830</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"timezone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5828"><a href="#L-5828"><span class="linenos">5828</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5829"><a href="#L-5829"><span class="linenos">5829</span></a> <span class="k">pass</span> +</span><span id="L-5830"><a href="#L-5830"><span class="linenos">5830</span></a> </span><span id="L-5831"><a href="#L-5831"><span class="linenos">5831</span></a> -</span><span id="L-5832"><a href="#L-5832"><span class="linenos">5832</span></a> -</span><span id="L-5833"><a href="#L-5833"><span class="linenos">5833</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5834"><a href="#L-5834"><span class="linenos">5834</span></a> <span class="k">pass</span> +</span><span id="L-5832"><a href="#L-5832"><span class="linenos">5832</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5833"><a href="#L-5833"><span class="linenos">5833</span></a> <span class="k">pass</span> +</span><span id="L-5834"><a href="#L-5834"><span class="linenos">5834</span></a> </span><span id="L-5835"><a href="#L-5835"><span class="linenos">5835</span></a> -</span><span id="L-5836"><a href="#L-5836"><span class="linenos">5836</span></a> -</span><span id="L-5837"><a href="#L-5837"><span class="linenos">5837</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5838"><a href="#L-5838"><span class="linenos">5838</span></a> <span class="k">pass</span> +</span><span id="L-5836"><a href="#L-5836"><span class="linenos">5836</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5837"><a href="#L-5837"><span class="linenos">5837</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"timezone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5838"><a href="#L-5838"><span class="linenos">5838</span></a> </span><span id="L-5839"><a href="#L-5839"><span class="linenos">5839</span></a> -</span><span id="L-5840"><a href="#L-5840"><span class="linenos">5840</span></a> -</span><span id="L-5841"><a href="#L-5841"><span class="linenos">5841</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5842"><a href="#L-5842"><span class="linenos">5842</span></a> <span class="k">pass</span> +</span><span id="L-5840"><a href="#L-5840"><span class="linenos">5840</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5841"><a href="#L-5841"><span class="linenos">5841</span></a> <span class="k">pass</span> +</span><span id="L-5842"><a href="#L-5842"><span class="linenos">5842</span></a> </span><span id="L-5843"><a href="#L-5843"><span class="linenos">5843</span></a> -</span><span id="L-5844"><a href="#L-5844"><span class="linenos">5844</span></a> -</span><span id="L-5845"><a href="#L-5845"><span class="linenos">5845</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5846"><a href="#L-5846"><span class="linenos">5846</span></a> <span class="k">pass</span> +</span><span id="L-5844"><a href="#L-5844"><span class="linenos">5844</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5845"><a href="#L-5845"><span class="linenos">5845</span></a> <span class="k">pass</span> +</span><span id="L-5846"><a href="#L-5846"><span class="linenos">5846</span></a> </span><span id="L-5847"><a href="#L-5847"><span class="linenos">5847</span></a> -</span><span id="L-5848"><a href="#L-5848"><span class="linenos">5848</span></a> -</span><span id="L-5849"><a href="#L-5849"><span class="linenos">5849</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5850"><a href="#L-5850"><span class="linenos">5850</span></a> <span class="k">pass</span> +</span><span id="L-5848"><a href="#L-5848"><span class="linenos">5848</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5849"><a href="#L-5849"><span class="linenos">5849</span></a> <span class="k">pass</span> +</span><span id="L-5850"><a href="#L-5850"><span class="linenos">5850</span></a> </span><span id="L-5851"><a href="#L-5851"><span class="linenos">5851</span></a> -</span><span id="L-5852"><a href="#L-5852"><span class="linenos">5852</span></a> -</span><span id="L-5853"><a href="#L-5853"><span class="linenos">5853</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5854"><a href="#L-5854"><span class="linenos">5854</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5855"><a href="#L-5855"><span class="linenos">5855</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5856"><a href="#L-5856"><span class="linenos">5856</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5857"><a href="#L-5857"><span class="linenos">5857</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5858"><a href="#L-5858"><span class="linenos">5858</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5859"><a href="#L-5859"><span class="linenos">5859</span></a> <span class="p">}</span> -</span><span id="L-5860"><a href="#L-5860"><span class="linenos">5860</span></a> -</span><span id="L-5861"><a href="#L-5861"><span class="linenos">5861</span></a> -</span><span id="L-5862"><a href="#L-5862"><span class="linenos">5862</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5863"><a href="#L-5863"><span class="linenos">5863</span></a> <span class="c1"># return_type is used to correctly cast the arguments of this expression when transpiling it</span> -</span><span id="L-5864"><a href="#L-5864"><span class="linenos">5864</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5865"><a href="#L-5865"><span class="linenos">5865</span></a> -</span><span id="L-5866"><a href="#L-5866"><span class="linenos">5866</span></a> <span class="nd">@property</span> -</span><span id="L-5867"><a href="#L-5867"><span class="linenos">5867</span></a> <span class="k">def</span> <span class="nf">return_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="L-5868"><a href="#L-5868"><span class="linenos">5868</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"return_type"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span> -</span><span id="L-5869"><a href="#L-5869"><span class="linenos">5869</span></a> -</span><span id="L-5870"><a href="#L-5870"><span class="linenos">5870</span></a> -</span><span id="L-5871"><a href="#L-5871"><span class="linenos">5871</span></a><span class="k">class</span> <span class="nc">TsOrDsDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-5872"><a href="#L-5872"><span class="linenos">5872</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5873"><a href="#L-5873"><span class="linenos">5873</span></a> -</span><span id="L-5874"><a href="#L-5874"><span class="linenos">5874</span></a> -</span><span id="L-5875"><a href="#L-5875"><span class="linenos">5875</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5876"><a href="#L-5876"><span class="linenos">5876</span></a> <span class="k">pass</span> +</span><span id="L-5852"><a href="#L-5852"><span class="linenos">5852</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5853"><a href="#L-5853"><span class="linenos">5853</span></a> <span class="k">pass</span> +</span><span id="L-5854"><a href="#L-5854"><span class="linenos">5854</span></a> +</span><span id="L-5855"><a href="#L-5855"><span class="linenos">5855</span></a> +</span><span id="L-5856"><a href="#L-5856"><span class="linenos">5856</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5857"><a href="#L-5857"><span class="linenos">5857</span></a> <span class="k">pass</span> +</span><span id="L-5858"><a href="#L-5858"><span class="linenos">5858</span></a> +</span><span id="L-5859"><a href="#L-5859"><span class="linenos">5859</span></a> +</span><span id="L-5860"><a href="#L-5860"><span class="linenos">5860</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5861"><a href="#L-5861"><span class="linenos">5861</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5862"><a href="#L-5862"><span class="linenos">5862</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5863"><a href="#L-5863"><span class="linenos">5863</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5864"><a href="#L-5864"><span class="linenos">5864</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5865"><a href="#L-5865"><span class="linenos">5865</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5866"><a href="#L-5866"><span class="linenos">5866</span></a> <span class="p">}</span> +</span><span id="L-5867"><a href="#L-5867"><span class="linenos">5867</span></a> +</span><span id="L-5868"><a href="#L-5868"><span class="linenos">5868</span></a> +</span><span id="L-5869"><a href="#L-5869"><span class="linenos">5869</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5870"><a href="#L-5870"><span class="linenos">5870</span></a> <span class="c1"># return_type is used to correctly cast the arguments of this expression when transpiling it</span> +</span><span id="L-5871"><a href="#L-5871"><span class="linenos">5871</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5872"><a href="#L-5872"><span class="linenos">5872</span></a> +</span><span id="L-5873"><a href="#L-5873"><span class="linenos">5873</span></a> <span class="nd">@property</span> +</span><span id="L-5874"><a href="#L-5874"><span class="linenos">5874</span></a> <span class="k">def</span> <span class="nf">return_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="L-5875"><a href="#L-5875"><span class="linenos">5875</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"return_type"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span> +</span><span id="L-5876"><a href="#L-5876"><span class="linenos">5876</span></a> </span><span id="L-5877"><a href="#L-5877"><span class="linenos">5877</span></a> -</span><span id="L-5878"><a href="#L-5878"><span class="linenos">5878</span></a> -</span><span id="L-5879"><a href="#L-5879"><span class="linenos">5879</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5880"><a href="#L-5880"><span class="linenos">5880</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5878"><a href="#L-5878"><span class="linenos">5878</span></a><span class="k">class</span> <span class="nc">TsOrDsDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-5879"><a href="#L-5879"><span class="linenos">5879</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5880"><a href="#L-5880"><span class="linenos">5880</span></a> </span><span id="L-5881"><a href="#L-5881"><span class="linenos">5881</span></a> -</span><span id="L-5882"><a href="#L-5882"><span class="linenos">5882</span></a> -</span><span id="L-5883"><a href="#L-5883"><span class="linenos">5883</span></a><span class="k">class</span> <span class="nc">TsOrDsToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5884"><a href="#L-5884"><span class="linenos">5884</span></a> <span class="k">pass</span> +</span><span id="L-5882"><a href="#L-5882"><span class="linenos">5882</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5883"><a href="#L-5883"><span class="linenos">5883</span></a> <span class="k">pass</span> +</span><span id="L-5884"><a href="#L-5884"><span class="linenos">5884</span></a> </span><span id="L-5885"><a href="#L-5885"><span class="linenos">5885</span></a> -</span><span id="L-5886"><a href="#L-5886"><span class="linenos">5886</span></a> -</span><span id="L-5887"><a href="#L-5887"><span class="linenos">5887</span></a><span class="k">class</span> <span class="nc">TsOrDsToTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5888"><a href="#L-5888"><span class="linenos">5888</span></a> <span class="k">pass</span> +</span><span id="L-5886"><a href="#L-5886"><span class="linenos">5886</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5887"><a href="#L-5887"><span class="linenos">5887</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5888"><a href="#L-5888"><span class="linenos">5888</span></a> </span><span id="L-5889"><a href="#L-5889"><span class="linenos">5889</span></a> -</span><span id="L-5890"><a href="#L-5890"><span class="linenos">5890</span></a> -</span><span id="L-5891"><a href="#L-5891"><span class="linenos">5891</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5892"><a href="#L-5892"><span class="linenos">5892</span></a> <span class="k">pass</span> +</span><span id="L-5890"><a href="#L-5890"><span class="linenos">5890</span></a><span class="k">class</span> <span class="nc">TsOrDsToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5891"><a href="#L-5891"><span class="linenos">5891</span></a> <span class="k">pass</span> +</span><span id="L-5892"><a href="#L-5892"><span class="linenos">5892</span></a> </span><span id="L-5893"><a href="#L-5893"><span class="linenos">5893</span></a> -</span><span id="L-5894"><a href="#L-5894"><span class="linenos">5894</span></a> -</span><span id="L-5895"><a href="#L-5895"><span class="linenos">5895</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5896"><a href="#L-5896"><span class="linenos">5896</span></a> <span class="k">pass</span> +</span><span id="L-5894"><a href="#L-5894"><span class="linenos">5894</span></a><span class="k">class</span> <span class="nc">TsOrDsToTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5895"><a href="#L-5895"><span class="linenos">5895</span></a> <span class="k">pass</span> +</span><span id="L-5896"><a href="#L-5896"><span class="linenos">5896</span></a> </span><span id="L-5897"><a href="#L-5897"><span class="linenos">5897</span></a> -</span><span id="L-5898"><a href="#L-5898"><span class="linenos">5898</span></a> -</span><span id="L-5899"><a href="#L-5899"><span class="linenos">5899</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#unix_date</span> -</span><span id="L-5900"><a href="#L-5900"><span class="linenos">5900</span></a><span class="k">class</span> <span class="nc">UnixDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5901"><a href="#L-5901"><span class="linenos">5901</span></a> <span class="k">pass</span> -</span><span id="L-5902"><a href="#L-5902"><span class="linenos">5902</span></a> -</span><span id="L-5903"><a href="#L-5903"><span class="linenos">5903</span></a> -</span><span id="L-5904"><a href="#L-5904"><span class="linenos">5904</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5905"><a href="#L-5905"><span class="linenos">5905</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-5906"><a href="#L-5906"><span class="linenos">5906</span></a> -</span><span id="L-5907"><a href="#L-5907"><span class="linenos">5907</span></a> -</span><span id="L-5908"><a href="#L-5908"><span class="linenos">5908</span></a><span class="c1"># https://prestodb.io/docs/current/functions/datetime.html</span> -</span><span id="L-5909"><a href="#L-5909"><span class="linenos">5909</span></a><span class="c1"># presto has weird zone/hours/minutes</span> -</span><span id="L-5910"><a href="#L-5910"><span class="linenos">5910</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5911"><a href="#L-5911"><span class="linenos">5911</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5912"><a href="#L-5912"><span class="linenos">5912</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5913"><a href="#L-5913"><span class="linenos">5913</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5914"><a href="#L-5914"><span class="linenos">5914</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5915"><a href="#L-5915"><span class="linenos">5915</span></a> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5916"><a href="#L-5916"><span class="linenos">5916</span></a> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5917"><a href="#L-5917"><span class="linenos">5917</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5918"><a href="#L-5918"><span class="linenos">5918</span></a> <span class="p">}</span> -</span><span id="L-5919"><a href="#L-5919"><span class="linenos">5919</span></a> -</span><span id="L-5920"><a href="#L-5920"><span class="linenos">5920</span></a> <span class="n">SECONDS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> -</span><span id="L-5921"><a href="#L-5921"><span class="linenos">5921</span></a> <span class="n">DECIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> -</span><span id="L-5922"><a href="#L-5922"><span class="linenos">5922</span></a> <span class="n">CENTIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="L-5923"><a href="#L-5923"><span class="linenos">5923</span></a> <span class="n">MILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> -</span><span id="L-5924"><a href="#L-5924"><span class="linenos">5924</span></a> <span class="n">DECIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> -</span><span id="L-5925"><a href="#L-5925"><span class="linenos">5925</span></a> <span class="n">CENTIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> -</span><span id="L-5926"><a href="#L-5926"><span class="linenos">5926</span></a> <span class="n">MICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> -</span><span id="L-5927"><a href="#L-5927"><span class="linenos">5927</span></a> <span class="n">DECIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> -</span><span id="L-5928"><a href="#L-5928"><span class="linenos">5928</span></a> <span class="n">CENTIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> -</span><span id="L-5929"><a href="#L-5929"><span class="linenos">5929</span></a> <span class="n">NANOS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> -</span><span id="L-5930"><a href="#L-5930"><span class="linenos">5930</span></a> -</span><span id="L-5931"><a href="#L-5931"><span class="linenos">5931</span></a> -</span><span id="L-5932"><a href="#L-5932"><span class="linenos">5932</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5933"><a href="#L-5933"><span class="linenos">5933</span></a> <span class="k">pass</span> -</span><span id="L-5934"><a href="#L-5934"><span class="linenos">5934</span></a> -</span><span id="L-5935"><a href="#L-5935"><span class="linenos">5935</span></a> -</span><span id="L-5936"><a href="#L-5936"><span class="linenos">5936</span></a><span class="k">class</span> <span class="nc">TimestampFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5937"><a href="#L-5937"><span class="linenos">5937</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMP_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMESTAMPFROMPARTS"</span><span class="p">]</span> -</span><span id="L-5938"><a href="#L-5938"><span class="linenos">5938</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5939"><a href="#L-5939"><span class="linenos">5939</span></a> <span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5940"><a href="#L-5940"><span class="linenos">5940</span></a> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5941"><a href="#L-5941"><span class="linenos">5941</span></a> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5942"><a href="#L-5942"><span class="linenos">5942</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5943"><a href="#L-5943"><span class="linenos">5943</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5944"><a href="#L-5944"><span class="linenos">5944</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5945"><a href="#L-5945"><span class="linenos">5945</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5946"><a href="#L-5946"><span class="linenos">5946</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5947"><a href="#L-5947"><span class="linenos">5947</span></a> <span class="s2">"milli"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5948"><a href="#L-5948"><span class="linenos">5948</span></a> <span class="p">}</span> -</span><span id="L-5949"><a href="#L-5949"><span class="linenos">5949</span></a> -</span><span id="L-5950"><a href="#L-5950"><span class="linenos">5950</span></a> -</span><span id="L-5951"><a href="#L-5951"><span class="linenos">5951</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5952"><a href="#L-5952"><span class="linenos">5952</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> -</span><span id="L-5953"><a href="#L-5953"><span class="linenos">5953</span></a> -</span><span id="L-5954"><a href="#L-5954"><span class="linenos">5954</span></a> -</span><span id="L-5955"><a href="#L-5955"><span class="linenos">5955</span></a><span class="k">class</span> <span class="nc">Corr</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5956"><a href="#L-5956"><span class="linenos">5956</span></a> <span class="k">pass</span> +</span><span id="L-5898"><a href="#L-5898"><span class="linenos">5898</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5899"><a href="#L-5899"><span class="linenos">5899</span></a> <span class="k">pass</span> +</span><span id="L-5900"><a href="#L-5900"><span class="linenos">5900</span></a> +</span><span id="L-5901"><a href="#L-5901"><span class="linenos">5901</span></a> +</span><span id="L-5902"><a href="#L-5902"><span class="linenos">5902</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5903"><a href="#L-5903"><span class="linenos">5903</span></a> <span class="k">pass</span> +</span><span id="L-5904"><a href="#L-5904"><span class="linenos">5904</span></a> +</span><span id="L-5905"><a href="#L-5905"><span class="linenos">5905</span></a> +</span><span id="L-5906"><a href="#L-5906"><span class="linenos">5906</span></a><span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#unix_date</span> +</span><span id="L-5907"><a href="#L-5907"><span class="linenos">5907</span></a><span class="k">class</span> <span class="nc">UnixDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5908"><a href="#L-5908"><span class="linenos">5908</span></a> <span class="k">pass</span> +</span><span id="L-5909"><a href="#L-5909"><span class="linenos">5909</span></a> +</span><span id="L-5910"><a href="#L-5910"><span class="linenos">5910</span></a> +</span><span id="L-5911"><a href="#L-5911"><span class="linenos">5911</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5912"><a href="#L-5912"><span class="linenos">5912</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5913"><a href="#L-5913"><span class="linenos">5913</span></a> +</span><span id="L-5914"><a href="#L-5914"><span class="linenos">5914</span></a> +</span><span id="L-5915"><a href="#L-5915"><span class="linenos">5915</span></a><span class="c1"># https://prestodb.io/docs/current/functions/datetime.html</span> +</span><span id="L-5916"><a href="#L-5916"><span class="linenos">5916</span></a><span class="c1"># presto has weird zone/hours/minutes</span> +</span><span id="L-5917"><a href="#L-5917"><span class="linenos">5917</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5918"><a href="#L-5918"><span class="linenos">5918</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5919"><a href="#L-5919"><span class="linenos">5919</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5920"><a href="#L-5920"><span class="linenos">5920</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5921"><a href="#L-5921"><span class="linenos">5921</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5922"><a href="#L-5922"><span class="linenos">5922</span></a> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5923"><a href="#L-5923"><span class="linenos">5923</span></a> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5924"><a href="#L-5924"><span class="linenos">5924</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5925"><a href="#L-5925"><span class="linenos">5925</span></a> <span class="p">}</span> +</span><span id="L-5926"><a href="#L-5926"><span class="linenos">5926</span></a> +</span><span id="L-5927"><a href="#L-5927"><span class="linenos">5927</span></a> <span class="n">SECONDS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> +</span><span id="L-5928"><a href="#L-5928"><span class="linenos">5928</span></a> <span class="n">DECIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> +</span><span id="L-5929"><a href="#L-5929"><span class="linenos">5929</span></a> <span class="n">CENTIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="L-5930"><a href="#L-5930"><span class="linenos">5930</span></a> <span class="n">MILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> +</span><span id="L-5931"><a href="#L-5931"><span class="linenos">5931</span></a> <span class="n">DECIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> +</span><span id="L-5932"><a href="#L-5932"><span class="linenos">5932</span></a> <span class="n">CENTIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> +</span><span id="L-5933"><a href="#L-5933"><span class="linenos">5933</span></a> <span class="n">MICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> +</span><span id="L-5934"><a href="#L-5934"><span class="linenos">5934</span></a> <span class="n">DECIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> +</span><span id="L-5935"><a href="#L-5935"><span class="linenos">5935</span></a> <span class="n">CENTIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> +</span><span id="L-5936"><a href="#L-5936"><span class="linenos">5936</span></a> <span class="n">NANOS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> +</span><span id="L-5937"><a href="#L-5937"><span class="linenos">5937</span></a> +</span><span id="L-5938"><a href="#L-5938"><span class="linenos">5938</span></a> +</span><span id="L-5939"><a href="#L-5939"><span class="linenos">5939</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5940"><a href="#L-5940"><span class="linenos">5940</span></a> <span class="k">pass</span> +</span><span id="L-5941"><a href="#L-5941"><span class="linenos">5941</span></a> +</span><span id="L-5942"><a href="#L-5942"><span class="linenos">5942</span></a> +</span><span id="L-5943"><a href="#L-5943"><span class="linenos">5943</span></a><span class="k">class</span> <span class="nc">TimestampFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5944"><a href="#L-5944"><span class="linenos">5944</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMP_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMESTAMPFROMPARTS"</span><span class="p">]</span> +</span><span id="L-5945"><a href="#L-5945"><span class="linenos">5945</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-5946"><a href="#L-5946"><span class="linenos">5946</span></a> <span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5947"><a href="#L-5947"><span class="linenos">5947</span></a> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5948"><a href="#L-5948"><span class="linenos">5948</span></a> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5949"><a href="#L-5949"><span class="linenos">5949</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5950"><a href="#L-5950"><span class="linenos">5950</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5951"><a href="#L-5951"><span class="linenos">5951</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5952"><a href="#L-5952"><span class="linenos">5952</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5953"><a href="#L-5953"><span class="linenos">5953</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5954"><a href="#L-5954"><span class="linenos">5954</span></a> <span class="s2">"milli"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-5955"><a href="#L-5955"><span class="linenos">5955</span></a> <span class="p">}</span> +</span><span id="L-5956"><a href="#L-5956"><span class="linenos">5956</span></a> </span><span id="L-5957"><a href="#L-5957"><span class="linenos">5957</span></a> -</span><span id="L-5958"><a href="#L-5958"><span class="linenos">5958</span></a> -</span><span id="L-5959"><a href="#L-5959"><span class="linenos">5959</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5960"><a href="#L-5960"><span class="linenos">5960</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> +</span><span id="L-5958"><a href="#L-5958"><span class="linenos">5958</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5959"><a href="#L-5959"><span class="linenos">5959</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> +</span><span id="L-5960"><a href="#L-5960"><span class="linenos">5960</span></a> </span><span id="L-5961"><a href="#L-5961"><span class="linenos">5961</span></a> -</span><span id="L-5962"><a href="#L-5962"><span class="linenos">5962</span></a> -</span><span id="L-5963"><a href="#L-5963"><span class="linenos">5963</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5964"><a href="#L-5964"><span class="linenos">5964</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> +</span><span id="L-5962"><a href="#L-5962"><span class="linenos">5962</span></a><span class="k">class</span> <span class="nc">Corr</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5963"><a href="#L-5963"><span class="linenos">5963</span></a> <span class="k">pass</span> +</span><span id="L-5964"><a href="#L-5964"><span class="linenos">5964</span></a> </span><span id="L-5965"><a href="#L-5965"><span class="linenos">5965</span></a> -</span><span id="L-5966"><a href="#L-5966"><span class="linenos">5966</span></a> -</span><span id="L-5967"><a href="#L-5967"><span class="linenos">5967</span></a><span class="k">class</span> <span class="nc">CovarSamp</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5968"><a href="#L-5968"><span class="linenos">5968</span></a> <span class="k">pass</span> +</span><span id="L-5966"><a href="#L-5966"><span class="linenos">5966</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5967"><a href="#L-5967"><span class="linenos">5967</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> +</span><span id="L-5968"><a href="#L-5968"><span class="linenos">5968</span></a> </span><span id="L-5969"><a href="#L-5969"><span class="linenos">5969</span></a> -</span><span id="L-5970"><a href="#L-5970"><span class="linenos">5970</span></a> -</span><span id="L-5971"><a href="#L-5971"><span class="linenos">5971</span></a><span class="k">class</span> <span class="nc">CovarPop</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5972"><a href="#L-5972"><span class="linenos">5972</span></a> <span class="k">pass</span> +</span><span id="L-5970"><a href="#L-5970"><span class="linenos">5970</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5971"><a href="#L-5971"><span class="linenos">5971</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> +</span><span id="L-5972"><a href="#L-5972"><span class="linenos">5972</span></a> </span><span id="L-5973"><a href="#L-5973"><span class="linenos">5973</span></a> -</span><span id="L-5974"><a href="#L-5974"><span class="linenos">5974</span></a> -</span><span id="L-5975"><a href="#L-5975"><span class="linenos">5975</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5976"><a href="#L-5976"><span class="linenos">5976</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5974"><a href="#L-5974"><span class="linenos">5974</span></a><span class="k">class</span> <span class="nc">CovarSamp</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5975"><a href="#L-5975"><span class="linenos">5975</span></a> <span class="k">pass</span> +</span><span id="L-5976"><a href="#L-5976"><span class="linenos">5976</span></a> </span><span id="L-5977"><a href="#L-5977"><span class="linenos">5977</span></a> -</span><span id="L-5978"><a href="#L-5978"><span class="linenos">5978</span></a> -</span><span id="L-5979"><a href="#L-5979"><span class="linenos">5979</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5980"><a href="#L-5980"><span class="linenos">5980</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5978"><a href="#L-5978"><span class="linenos">5978</span></a><span class="k">class</span> <span class="nc">CovarPop</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5979"><a href="#L-5979"><span class="linenos">5979</span></a> <span class="k">pass</span> +</span><span id="L-5980"><a href="#L-5980"><span class="linenos">5980</span></a> </span><span id="L-5981"><a href="#L-5981"><span class="linenos">5981</span></a> -</span><span id="L-5982"><a href="#L-5982"><span class="linenos">5982</span></a> -</span><span id="L-5983"><a href="#L-5983"><span class="linenos">5983</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-5984"><a href="#L-5984"><span class="linenos">5984</span></a> <span class="k">pass</span> +</span><span id="L-5982"><a href="#L-5982"><span class="linenos">5982</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5983"><a href="#L-5983"><span class="linenos">5983</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5984"><a href="#L-5984"><span class="linenos">5984</span></a> </span><span id="L-5985"><a href="#L-5985"><span class="linenos">5985</span></a> -</span><span id="L-5986"><a href="#L-5986"><span class="linenos">5986</span></a> -</span><span id="L-5987"><a href="#L-5987"><span class="linenos">5987</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5988"><a href="#L-5988"><span class="linenos">5988</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5986"><a href="#L-5986"><span class="linenos">5986</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5987"><a href="#L-5987"><span class="linenos">5987</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5988"><a href="#L-5988"><span class="linenos">5988</span></a> </span><span id="L-5989"><a href="#L-5989"><span class="linenos">5989</span></a> -</span><span id="L-5990"><a href="#L-5990"><span class="linenos">5990</span></a> -</span><span id="L-5991"><a href="#L-5991"><span class="linenos">5991</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5992"><a href="#L-5992"><span class="linenos">5992</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-5993"><a href="#L-5993"><span class="linenos">5993</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5994"><a href="#L-5994"><span class="linenos">5994</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5995"><a href="#L-5995"><span class="linenos">5995</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5996"><a href="#L-5996"><span class="linenos">5996</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5997"><a href="#L-5997"><span class="linenos">5997</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-5998"><a href="#L-5998"><span class="linenos">5998</span></a> <span class="p">}</span> -</span><span id="L-5999"><a href="#L-5999"><span class="linenos">5999</span></a> -</span><span id="L-6000"><a href="#L-6000"><span class="linenos">6000</span></a> -</span><span id="L-6001"><a href="#L-6001"><span class="linenos">6001</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-6002"><a href="#L-6002"><span class="linenos">6002</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"matched"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"condition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-6003"><a href="#L-6003"><span class="linenos">6003</span></a> -</span><span id="L-6004"><a href="#L-6004"><span class="linenos">6004</span></a> -</span><span id="L-6005"><a href="#L-6005"><span class="linenos">6005</span></a><span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljnextvaluefor.html</span> -</span><span id="L-6006"><a href="#L-6006"><span class="linenos">6006</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/next-value-for-transact-sql?view=sql-server-ver16</span> -</span><span id="L-6007"><a href="#L-6007"><span class="linenos">6007</span></a><span class="k">class</span> <span class="nc">NextValueFor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-6008"><a href="#L-6008"><span class="linenos">6008</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-6009"><a href="#L-6009"><span class="linenos">6009</span></a> +</span><span id="L-5990"><a href="#L-5990"><span class="linenos">5990</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-5991"><a href="#L-5991"><span class="linenos">5991</span></a> <span class="k">pass</span> +</span><span id="L-5992"><a href="#L-5992"><span class="linenos">5992</span></a> +</span><span id="L-5993"><a href="#L-5993"><span class="linenos">5993</span></a> +</span><span id="L-5994"><a href="#L-5994"><span class="linenos">5994</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5995"><a href="#L-5995"><span class="linenos">5995</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-5996"><a href="#L-5996"><span class="linenos">5996</span></a> +</span><span id="L-5997"><a href="#L-5997"><span class="linenos">5997</span></a> +</span><span id="L-5998"><a href="#L-5998"><span class="linenos">5998</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5999"><a href="#L-5999"><span class="linenos">5999</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-6000"><a href="#L-6000"><span class="linenos">6000</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6001"><a href="#L-6001"><span class="linenos">6001</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6002"><a href="#L-6002"><span class="linenos">6002</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6003"><a href="#L-6003"><span class="linenos">6003</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6004"><a href="#L-6004"><span class="linenos">6004</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-6005"><a href="#L-6005"><span class="linenos">6005</span></a> <span class="p">}</span> +</span><span id="L-6006"><a href="#L-6006"><span class="linenos">6006</span></a> +</span><span id="L-6007"><a href="#L-6007"><span class="linenos">6007</span></a> +</span><span id="L-6008"><a href="#L-6008"><span class="linenos">6008</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-6009"><a href="#L-6009"><span class="linenos">6009</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"matched"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"condition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-6010"><a href="#L-6010"><span class="linenos">6010</span></a> -</span><span id="L-6011"><a href="#L-6011"><span class="linenos">6011</span></a><span class="c1"># Refers to a trailing semi-colon. This is only used to preserve trailing comments</span> -</span><span id="L-6012"><a href="#L-6012"><span class="linenos">6012</span></a><span class="c1"># select 1; -- my comment</span> -</span><span id="L-6013"><a href="#L-6013"><span class="linenos">6013</span></a><span class="k">class</span> <span class="nc">Semicolon</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-6014"><a href="#L-6014"><span class="linenos">6014</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-6015"><a href="#L-6015"><span class="linenos">6015</span></a> +</span><span id="L-6011"><a href="#L-6011"><span class="linenos">6011</span></a> +</span><span id="L-6012"><a href="#L-6012"><span class="linenos">6012</span></a><span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljnextvaluefor.html</span> +</span><span id="L-6013"><a href="#L-6013"><span class="linenos">6013</span></a><span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/next-value-for-transact-sql?view=sql-server-ver16</span> +</span><span id="L-6014"><a href="#L-6014"><span class="linenos">6014</span></a><span class="k">class</span> <span class="nc">NextValueFor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-6015"><a href="#L-6015"><span class="linenos">6015</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-6016"><a href="#L-6016"><span class="linenos">6016</span></a> -</span><span id="L-6017"><a href="#L-6017"><span class="linenos">6017</span></a><span class="k">def</span> <span class="nf">_norm_arg</span><span class="p">(</span><span class="n">arg</span><span class="p">):</span> -</span><span id="L-6018"><a href="#L-6018"><span class="linenos">6018</span></a> <span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">str</span> <span class="k">else</span> <span class="n">arg</span> -</span><span id="L-6019"><a href="#L-6019"><span class="linenos">6019</span></a> -</span><span id="L-6020"><a href="#L-6020"><span class="linenos">6020</span></a> -</span><span id="L-6021"><a href="#L-6021"><span class="linenos">6021</span></a><span class="n">ALL_FUNCTIONS</span> <span class="o">=</span> <span class="n">subclasses</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">Func</span><span class="p">,</span> <span class="p">(</span><span class="n">AggFunc</span><span class="p">,</span> <span class="n">Anonymous</span><span class="p">,</span> <span class="n">Func</span><span class="p">))</span> -</span><span id="L-6022"><a href="#L-6022"><span class="linenos">6022</span></a><span class="n">FUNCTION_BY_NAME</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">func</span> <span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="n">ALL_FUNCTIONS</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">func</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> +</span><span id="L-6017"><a href="#L-6017"><span class="linenos">6017</span></a> +</span><span id="L-6018"><a href="#L-6018"><span class="linenos">6018</span></a><span class="c1"># Refers to a trailing semi-colon. This is only used to preserve trailing comments</span> +</span><span id="L-6019"><a href="#L-6019"><span class="linenos">6019</span></a><span class="c1"># select 1; -- my comment</span> +</span><span id="L-6020"><a href="#L-6020"><span class="linenos">6020</span></a><span class="k">class</span> <span class="nc">Semicolon</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-6021"><a href="#L-6021"><span class="linenos">6021</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-6022"><a href="#L-6022"><span class="linenos">6022</span></a> </span><span id="L-6023"><a href="#L-6023"><span class="linenos">6023</span></a> -</span><span id="L-6024"><a href="#L-6024"><span class="linenos">6024</span></a><span class="n">JSON_PATH_PARTS</span> <span class="o">=</span> <span class="n">subclasses</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">JSONPathPart</span><span class="p">,</span> <span class="p">(</span><span class="n">JSONPathPart</span><span class="p">,))</span> -</span><span id="L-6025"><a href="#L-6025"><span class="linenos">6025</span></a> -</span><span id="L-6026"><a href="#L-6026"><span class="linenos">6026</span></a><span class="n">PERCENTILES</span> <span class="o">=</span> <span class="p">(</span><span class="n">PercentileCont</span><span class="p">,</span> <span class="n">PercentileDisc</span><span class="p">)</span> +</span><span id="L-6024"><a href="#L-6024"><span class="linenos">6024</span></a><span class="k">def</span> <span class="nf">_norm_arg</span><span class="p">(</span><span class="n">arg</span><span class="p">):</span> +</span><span id="L-6025"><a href="#L-6025"><span class="linenos">6025</span></a> <span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">str</span> <span class="k">else</span> <span class="n">arg</span> +</span><span id="L-6026"><a href="#L-6026"><span class="linenos">6026</span></a> </span><span id="L-6027"><a href="#L-6027"><span class="linenos">6027</span></a> -</span><span id="L-6028"><a href="#L-6028"><span class="linenos">6028</span></a> -</span><span id="L-6029"><a href="#L-6029"><span class="linenos">6029</span></a><span class="c1"># Helpers</span> -</span><span id="L-6030"><a href="#L-6030"><span class="linenos">6030</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6031"><a href="#L-6031"><span class="linenos">6031</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> -</span><span id="L-6032"><a href="#L-6032"><span class="linenos">6032</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6033"><a href="#L-6033"><span class="linenos">6033</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-6034"><a href="#L-6034"><span class="linenos">6034</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> -</span><span id="L-6035"><a href="#L-6035"><span class="linenos">6035</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-6036"><a href="#L-6036"><span class="linenos">6036</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6037"><a href="#L-6037"><span class="linenos">6037</span></a> <span class="n">copy</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-6038"><a href="#L-6038"><span class="linenos">6038</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6039"><a href="#L-6039"><span class="linenos">6039</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> <span class="o">...</span> -</span><span id="L-6040"><a href="#L-6040"><span class="linenos">6040</span></a> -</span><span id="L-6041"><a href="#L-6041"><span class="linenos">6041</span></a> -</span><span id="L-6042"><a href="#L-6042"><span class="linenos">6042</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6043"><a href="#L-6043"><span class="linenos">6043</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> -</span><span id="L-6044"><a href="#L-6044"><span class="linenos">6044</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">E</span><span class="p">,</span> -</span><span id="L-6045"><a href="#L-6045"><span class="linenos">6045</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-6046"><a href="#L-6046"><span class="linenos">6046</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6047"><a href="#L-6047"><span class="linenos">6047</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-6048"><a href="#L-6048"><span class="linenos">6048</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6049"><a href="#L-6049"><span class="linenos">6049</span></a> <span class="n">copy</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-6050"><a href="#L-6050"><span class="linenos">6050</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6051"><a href="#L-6051"><span class="linenos">6051</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> <span class="o">...</span> -</span><span id="L-6052"><a href="#L-6052"><span class="linenos">6052</span></a> -</span><span id="L-6053"><a href="#L-6053"><span class="linenos">6053</span></a> -</span><span id="L-6054"><a href="#L-6054"><span class="linenos">6054</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> -</span><span id="L-6055"><a href="#L-6055"><span class="linenos">6055</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6056"><a href="#L-6056"><span class="linenos">6056</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-6057"><a href="#L-6057"><span class="linenos">6057</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6058"><a href="#L-6058"><span class="linenos">6058</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-6059"><a href="#L-6059"><span class="linenos">6059</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6060"><a href="#L-6060"><span class="linenos">6060</span></a> <span class="n">copy</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-6061"><a href="#L-6061"><span class="linenos">6061</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6062"><a href="#L-6062"><span class="linenos">6062</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-6063"><a href="#L-6063"><span class="linenos">6063</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> -</span><span id="L-6064"><a href="#L-6064"><span class="linenos">6064</span></a> -</span><span id="L-6065"><a href="#L-6065"><span class="linenos">6065</span></a><span class="sd"> Example:</span> -</span><span id="L-6066"><a href="#L-6066"><span class="linenos">6066</span></a><span class="sd"> >>> maybe_parse("1")</span> -</span><span id="L-6067"><a href="#L-6067"><span class="linenos">6067</span></a><span class="sd"> Literal(this=1, is_string=False)</span> -</span><span id="L-6068"><a href="#L-6068"><span class="linenos">6068</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> -</span><span id="L-6069"><a href="#L-6069"><span class="linenos">6069</span></a><span class="sd"> Identifier(this=x, quoted=False)</span> -</span><span id="L-6070"><a href="#L-6070"><span class="linenos">6070</span></a> -</span><span id="L-6071"><a href="#L-6071"><span class="linenos">6071</span></a><span class="sd"> Args:</span> -</span><span id="L-6072"><a href="#L-6072"><span class="linenos">6072</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> -</span><span id="L-6073"><a href="#L-6073"><span class="linenos">6073</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> -</span><span id="L-6074"><a href="#L-6074"><span class="linenos">6074</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="L-6075"><a href="#L-6075"><span class="linenos">6075</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-6076"><a href="#L-6076"><span class="linenos">6076</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> -</span><span id="L-6077"><a href="#L-6077"><span class="linenos">6077</span></a><span class="sd"> (automatically includes a space)</span> -</span><span id="L-6078"><a href="#L-6078"><span class="linenos">6078</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-6079"><a href="#L-6079"><span class="linenos">6079</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-6080"><a href="#L-6080"><span class="linenos">6080</span></a><span class="sd"> that an input expression is a SQL string).</span> -</span><span id="L-6081"><a href="#L-6081"><span class="linenos">6081</span></a> -</span><span id="L-6082"><a href="#L-6082"><span class="linenos">6082</span></a><span class="sd"> Returns:</span> -</span><span id="L-6083"><a href="#L-6083"><span class="linenos">6083</span></a><span class="sd"> Expression: the parsed or given expression.</span> -</span><span id="L-6084"><a href="#L-6084"><span class="linenos">6084</span></a><span class="sd"> """</span> -</span><span id="L-6085"><a href="#L-6085"><span class="linenos">6085</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-6086"><a href="#L-6086"><span class="linenos">6086</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> -</span><span id="L-6087"><a href="#L-6087"><span class="linenos">6087</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-6088"><a href="#L-6088"><span class="linenos">6088</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> -</span><span id="L-6089"><a href="#L-6089"><span class="linenos">6089</span></a> -</span><span id="L-6090"><a href="#L-6090"><span class="linenos">6090</span></a> <span class="k">if</span> <span class="n">sql_or_expression</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6091"><a href="#L-6091"><span class="linenos">6091</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="s2">"SQL cannot be None"</span><span class="p">)</span> -</span><span id="L-6092"><a href="#L-6092"><span class="linenos">6092</span></a> -</span><span id="L-6093"><a href="#L-6093"><span class="linenos">6093</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="L-6094"><a href="#L-6094"><span class="linenos">6094</span></a> -</span><span id="L-6095"><a href="#L-6095"><span class="linenos">6095</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> -</span><span id="L-6096"><a href="#L-6096"><span class="linenos">6096</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> -</span><span id="L-6097"><a href="#L-6097"><span class="linenos">6097</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-6098"><a href="#L-6098"><span class="linenos">6098</span></a> -</span><span id="L-6099"><a href="#L-6099"><span class="linenos">6099</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</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">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6100"><a href="#L-6100"><span class="linenos">6100</span></a> +</span><span id="L-6028"><a href="#L-6028"><span class="linenos">6028</span></a><span class="n">ALL_FUNCTIONS</span> <span class="o">=</span> <span class="n">subclasses</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">Func</span><span class="p">,</span> <span class="p">(</span><span class="n">AggFunc</span><span class="p">,</span> <span class="n">Anonymous</span><span class="p">,</span> <span class="n">Func</span><span class="p">))</span> +</span><span id="L-6029"><a href="#L-6029"><span class="linenos">6029</span></a><span class="n">FUNCTION_BY_NAME</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">func</span> <span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="n">ALL_FUNCTIONS</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">func</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> +</span><span id="L-6030"><a href="#L-6030"><span class="linenos">6030</span></a> +</span><span id="L-6031"><a href="#L-6031"><span class="linenos">6031</span></a><span class="n">JSON_PATH_PARTS</span> <span class="o">=</span> <span class="n">subclasses</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">JSONPathPart</span><span class="p">,</span> <span class="p">(</span><span class="n">JSONPathPart</span><span class="p">,))</span> +</span><span id="L-6032"><a href="#L-6032"><span class="linenos">6032</span></a> +</span><span id="L-6033"><a href="#L-6033"><span class="linenos">6033</span></a><span class="n">PERCENTILES</span> <span class="o">=</span> <span class="p">(</span><span class="n">PercentileCont</span><span class="p">,</span> <span class="n">PercentileDisc</span><span class="p">)</span> +</span><span id="L-6034"><a href="#L-6034"><span class="linenos">6034</span></a> +</span><span id="L-6035"><a href="#L-6035"><span class="linenos">6035</span></a> +</span><span id="L-6036"><a href="#L-6036"><span class="linenos">6036</span></a><span class="c1"># Helpers</span> +</span><span id="L-6037"><a href="#L-6037"><span class="linenos">6037</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6038"><a href="#L-6038"><span class="linenos">6038</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> +</span><span id="L-6039"><a href="#L-6039"><span class="linenos">6039</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6040"><a href="#L-6040"><span class="linenos">6040</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-6041"><a href="#L-6041"><span class="linenos">6041</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> +</span><span id="L-6042"><a href="#L-6042"><span class="linenos">6042</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-6043"><a href="#L-6043"><span class="linenos">6043</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6044"><a href="#L-6044"><span class="linenos">6044</span></a> <span class="n">copy</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-6045"><a href="#L-6045"><span class="linenos">6045</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6046"><a href="#L-6046"><span class="linenos">6046</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6047"><a href="#L-6047"><span class="linenos">6047</span></a> +</span><span id="L-6048"><a href="#L-6048"><span class="linenos">6048</span></a> +</span><span id="L-6049"><a href="#L-6049"><span class="linenos">6049</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6050"><a href="#L-6050"><span class="linenos">6050</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> +</span><span id="L-6051"><a href="#L-6051"><span class="linenos">6051</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">E</span><span class="p">,</span> +</span><span id="L-6052"><a href="#L-6052"><span class="linenos">6052</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-6053"><a href="#L-6053"><span class="linenos">6053</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6054"><a href="#L-6054"><span class="linenos">6054</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-6055"><a href="#L-6055"><span class="linenos">6055</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6056"><a href="#L-6056"><span class="linenos">6056</span></a> <span class="n">copy</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-6057"><a href="#L-6057"><span class="linenos">6057</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6058"><a href="#L-6058"><span class="linenos">6058</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6059"><a href="#L-6059"><span class="linenos">6059</span></a> +</span><span id="L-6060"><a href="#L-6060"><span class="linenos">6060</span></a> +</span><span id="L-6061"><a href="#L-6061"><span class="linenos">6061</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> +</span><span id="L-6062"><a href="#L-6062"><span class="linenos">6062</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6063"><a href="#L-6063"><span class="linenos">6063</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-6064"><a href="#L-6064"><span class="linenos">6064</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6065"><a href="#L-6065"><span class="linenos">6065</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-6066"><a href="#L-6066"><span class="linenos">6066</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6067"><a href="#L-6067"><span class="linenos">6067</span></a> <span class="n">copy</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-6068"><a href="#L-6068"><span class="linenos">6068</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6069"><a href="#L-6069"><span class="linenos">6069</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-6070"><a href="#L-6070"><span class="linenos">6070</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> +</span><span id="L-6071"><a href="#L-6071"><span class="linenos">6071</span></a> +</span><span id="L-6072"><a href="#L-6072"><span class="linenos">6072</span></a><span class="sd"> Example:</span> +</span><span id="L-6073"><a href="#L-6073"><span class="linenos">6073</span></a><span class="sd"> >>> maybe_parse("1")</span> +</span><span id="L-6074"><a href="#L-6074"><span class="linenos">6074</span></a><span class="sd"> Literal(this=1, is_string=False)</span> +</span><span id="L-6075"><a href="#L-6075"><span class="linenos">6075</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> +</span><span id="L-6076"><a href="#L-6076"><span class="linenos">6076</span></a><span class="sd"> Identifier(this=x, quoted=False)</span> +</span><span id="L-6077"><a href="#L-6077"><span class="linenos">6077</span></a> +</span><span id="L-6078"><a href="#L-6078"><span class="linenos">6078</span></a><span class="sd"> Args:</span> +</span><span id="L-6079"><a href="#L-6079"><span class="linenos">6079</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> +</span><span id="L-6080"><a href="#L-6080"><span class="linenos">6080</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> +</span><span id="L-6081"><a href="#L-6081"><span class="linenos">6081</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="L-6082"><a href="#L-6082"><span class="linenos">6082</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-6083"><a href="#L-6083"><span class="linenos">6083</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> +</span><span id="L-6084"><a href="#L-6084"><span class="linenos">6084</span></a><span class="sd"> (automatically includes a space)</span> +</span><span id="L-6085"><a href="#L-6085"><span class="linenos">6085</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-6086"><a href="#L-6086"><span class="linenos">6086</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-6087"><a href="#L-6087"><span class="linenos">6087</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="L-6088"><a href="#L-6088"><span class="linenos">6088</span></a> +</span><span id="L-6089"><a href="#L-6089"><span class="linenos">6089</span></a><span class="sd"> Returns:</span> +</span><span id="L-6090"><a href="#L-6090"><span class="linenos">6090</span></a><span class="sd"> Expression: the parsed or given expression.</span> +</span><span id="L-6091"><a href="#L-6091"><span class="linenos">6091</span></a><span class="sd"> """</span> +</span><span id="L-6092"><a href="#L-6092"><span class="linenos">6092</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-6093"><a href="#L-6093"><span class="linenos">6093</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> +</span><span id="L-6094"><a href="#L-6094"><span class="linenos">6094</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-6095"><a href="#L-6095"><span class="linenos">6095</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> +</span><span id="L-6096"><a href="#L-6096"><span class="linenos">6096</span></a> +</span><span id="L-6097"><a href="#L-6097"><span class="linenos">6097</span></a> <span class="k">if</span> <span class="n">sql_or_expression</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6098"><a href="#L-6098"><span class="linenos">6098</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="s2">"SQL cannot be None"</span><span class="p">)</span> +</span><span id="L-6099"><a href="#L-6099"><span class="linenos">6099</span></a> +</span><span id="L-6100"><a href="#L-6100"><span class="linenos">6100</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> </span><span id="L-6101"><a href="#L-6101"><span class="linenos">6101</span></a> -</span><span id="L-6102"><a href="#L-6102"><span class="linenos">6102</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6103"><a href="#L-6103"><span class="linenos">6103</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span> -</span><span id="L-6104"><a href="#L-6104"><span class="linenos">6104</span></a> +</span><span id="L-6102"><a href="#L-6102"><span class="linenos">6102</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> +</span><span id="L-6103"><a href="#L-6103"><span class="linenos">6103</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> +</span><span id="L-6104"><a href="#L-6104"><span class="linenos">6104</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-6105"><a href="#L-6105"><span class="linenos">6105</span></a> -</span><span id="L-6106"><a href="#L-6106"><span class="linenos">6106</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6107"><a href="#L-6107"><span class="linenos">6107</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6106"><a href="#L-6106"><span class="linenos">6106</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</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">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6107"><a href="#L-6107"><span class="linenos">6107</span></a> </span><span id="L-6108"><a href="#L-6108"><span class="linenos">6108</span></a> -</span><span id="L-6109"><a href="#L-6109"><span class="linenos">6109</span></a> -</span><span id="L-6110"><a href="#L-6110"><span class="linenos">6110</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-6111"><a href="#L-6111"><span class="linenos">6111</span></a> <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="ow">and</span> <span class="n">instance</span> <span class="k">else</span> <span class="n">instance</span> +</span><span id="L-6109"><a href="#L-6109"><span class="linenos">6109</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6110"><a href="#L-6110"><span class="linenos">6110</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6111"><a href="#L-6111"><span class="linenos">6111</span></a> </span><span id="L-6112"><a href="#L-6112"><span class="linenos">6112</span></a> -</span><span id="L-6113"><a href="#L-6113"><span class="linenos">6113</span></a> -</span><span id="L-6114"><a href="#L-6114"><span class="linenos">6114</span></a><span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="n">node</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="n">verbose</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-6115"><a href="#L-6115"><span class="linenos">6115</span></a><span class="w"> </span><span class="sd">"""Generate a textual representation of an Expression tree"""</span> -</span><span id="L-6116"><a href="#L-6116"><span class="linenos">6116</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="p">(</span><span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> -</span><span id="L-6117"><a href="#L-6117"><span class="linenos">6117</span></a> <span class="n">delim</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">",</span><span class="si">{</span><span class="n">indent</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-6118"><a href="#L-6118"><span class="linenos">6118</span></a> -</span><span id="L-6119"><a href="#L-6119"><span class="linenos">6119</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-6120"><a href="#L-6120"><span class="linenos">6120</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">v</span> <span class="o">!=</span> <span class="p">[])</span> <span class="ow">or</span> <span class="n">verbose</span><span class="p">}</span> -</span><span id="L-6121"><a href="#L-6121"><span class="linenos">6121</span></a> -</span><span id="L-6122"><a href="#L-6122"><span class="linenos">6122</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">verbose</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="L-6123"><a href="#L-6123"><span class="linenos">6123</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"_type"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span> -</span><span id="L-6124"><a href="#L-6124"><span class="linenos">6124</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span> <span class="ow">or</span> <span class="n">verbose</span><span class="p">:</span> -</span><span id="L-6125"><a href="#L-6125"><span class="linenos">6125</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"_comments"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-6126"><a href="#L-6126"><span class="linenos">6126</span></a> -</span><span id="L-6127"><a href="#L-6127"><span class="linenos">6127</span></a> <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> -</span><span id="L-6128"><a href="#L-6128"><span class="linenos">6128</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"_id"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> -</span><span id="L-6129"><a href="#L-6129"><span class="linenos">6129</span></a> -</span><span id="L-6130"><a href="#L-6130"><span class="linenos">6130</span></a> <span class="c1"># Inline leaves for a more compact representation</span> -</span><span id="L-6131"><a href="#L-6131"><span class="linenos">6131</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">is_leaf</span><span class="p">():</span> -</span><span id="L-6132"><a href="#L-6132"><span class="linenos">6132</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-6133"><a href="#L-6133"><span class="linenos">6133</span></a> <span class="n">delim</span> <span class="o">=</span> <span class="s2">", "</span> -</span><span id="L-6134"><a href="#L-6134"><span class="linenos">6134</span></a> -</span><span id="L-6135"><a href="#L-6135"><span class="linenos">6135</span></a> <span class="n">items</span> <span class="o">=</span> <span class="n">delim</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">_to_s</span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="n">verbose</span><span class="p">,</span><span class="w"> </span><span class="n">level</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()])</span> -</span><span id="L-6136"><a href="#L-6136"><span class="linenos">6136</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">indent</span><span class="si">}{</span><span class="n">items</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-6137"><a href="#L-6137"><span class="linenos">6137</span></a> -</span><span id="L-6138"><a href="#L-6138"><span class="linenos">6138</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-6139"><a href="#L-6139"><span class="linenos">6139</span></a> <span class="n">items</span> <span class="o">=</span> <span class="n">delim</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_to_s</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">verbose</span><span class="p">,</span> <span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">node</span><span class="p">)</span> -</span><span id="L-6140"><a href="#L-6140"><span class="linenos">6140</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">indent</span><span class="si">}{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-6141"><a href="#L-6141"><span class="linenos">6141</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-6142"><a href="#L-6142"><span class="linenos">6142</span></a> -</span><span id="L-6143"><a href="#L-6143"><span class="linenos">6143</span></a> <span class="c1"># Indent multiline strings to match the current level</span> -</span><span id="L-6144"><a href="#L-6144"><span class="linenos">6144</span></a> <span class="k">return</span> <span class="n">indent</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">textwrap</span><span class="o">.</span><span class="n">dedent</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">node</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">))</span><span class="o">.</span><span class="n">splitlines</span><span class="p">())</span> -</span><span id="L-6145"><a href="#L-6145"><span class="linenos">6145</span></a> -</span><span id="L-6146"><a href="#L-6146"><span class="linenos">6146</span></a> -</span><span id="L-6147"><a href="#L-6147"><span class="linenos">6147</span></a><span class="k">def</span> <span class="nf">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> -</span><span id="L-6148"><a href="#L-6148"><span class="linenos">6148</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="L-6113"><a href="#L-6113"><span class="linenos">6113</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6114"><a href="#L-6114"><span class="linenos">6114</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6115"><a href="#L-6115"><span class="linenos">6115</span></a> +</span><span id="L-6116"><a href="#L-6116"><span class="linenos">6116</span></a> +</span><span id="L-6117"><a href="#L-6117"><span class="linenos">6117</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-6118"><a href="#L-6118"><span class="linenos">6118</span></a> <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="ow">and</span> <span class="n">instance</span> <span class="k">else</span> <span class="n">instance</span> +</span><span id="L-6119"><a href="#L-6119"><span class="linenos">6119</span></a> +</span><span id="L-6120"><a href="#L-6120"><span class="linenos">6120</span></a> +</span><span id="L-6121"><a href="#L-6121"><span class="linenos">6121</span></a><span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="n">node</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="n">verbose</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-6122"><a href="#L-6122"><span class="linenos">6122</span></a><span class="w"> </span><span class="sd">"""Generate a textual representation of an Expression tree"""</span> +</span><span id="L-6123"><a href="#L-6123"><span class="linenos">6123</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="p">(</span><span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-6124"><a href="#L-6124"><span class="linenos">6124</span></a> <span class="n">delim</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">",</span><span class="si">{</span><span class="n">indent</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-6125"><a href="#L-6125"><span class="linenos">6125</span></a> +</span><span id="L-6126"><a href="#L-6126"><span class="linenos">6126</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-6127"><a href="#L-6127"><span class="linenos">6127</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">v</span> <span class="o">!=</span> <span class="p">[])</span> <span class="ow">or</span> <span class="n">verbose</span><span class="p">}</span> +</span><span id="L-6128"><a href="#L-6128"><span class="linenos">6128</span></a> +</span><span id="L-6129"><a href="#L-6129"><span class="linenos">6129</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">type</span> <span class="ow">or</span> <span class="n">verbose</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="L-6130"><a href="#L-6130"><span class="linenos">6130</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"_type"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span> +</span><span id="L-6131"><a href="#L-6131"><span class="linenos">6131</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span> <span class="ow">or</span> <span class="n">verbose</span><span class="p">:</span> +</span><span id="L-6132"><a href="#L-6132"><span class="linenos">6132</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"_comments"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span> +</span><span id="L-6133"><a href="#L-6133"><span class="linenos">6133</span></a> +</span><span id="L-6134"><a href="#L-6134"><span class="linenos">6134</span></a> <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> +</span><span id="L-6135"><a href="#L-6135"><span class="linenos">6135</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"_id"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> +</span><span id="L-6136"><a href="#L-6136"><span class="linenos">6136</span></a> +</span><span id="L-6137"><a href="#L-6137"><span class="linenos">6137</span></a> <span class="c1"># Inline leaves for a more compact representation</span> +</span><span id="L-6138"><a href="#L-6138"><span class="linenos">6138</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">is_leaf</span><span class="p">():</span> +</span><span id="L-6139"><a href="#L-6139"><span class="linenos">6139</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-6140"><a href="#L-6140"><span class="linenos">6140</span></a> <span class="n">delim</span> <span class="o">=</span> <span class="s2">", "</span> +</span><span id="L-6141"><a href="#L-6141"><span class="linenos">6141</span></a> +</span><span id="L-6142"><a href="#L-6142"><span class="linenos">6142</span></a> <span class="n">items</span> <span class="o">=</span> <span class="n">delim</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">_to_s</span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="n">verbose</span><span class="p">,</span><span class="w"> </span><span class="n">level</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()])</span> +</span><span id="L-6143"><a href="#L-6143"><span class="linenos">6143</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">indent</span><span class="si">}{</span><span class="n">items</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-6144"><a href="#L-6144"><span class="linenos">6144</span></a> +</span><span id="L-6145"><a href="#L-6145"><span class="linenos">6145</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-6146"><a href="#L-6146"><span class="linenos">6146</span></a> <span class="n">items</span> <span class="o">=</span> <span class="n">delim</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_to_s</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">verbose</span><span class="p">,</span> <span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">node</span><span class="p">)</span> +</span><span id="L-6147"><a href="#L-6147"><span class="linenos">6147</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">indent</span><span class="si">}{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-6148"><a href="#L-6148"><span class="linenos">6148</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">]"</span> </span><span id="L-6149"><a href="#L-6149"><span class="linenos">6149</span></a> -</span><span id="L-6150"><a href="#L-6150"><span class="linenos">6150</span></a> -</span><span id="L-6151"><a href="#L-6151"><span class="linenos">6151</span></a><span class="k">def</span> <span class="nf">_apply_builder</span><span class="p">(</span> -</span><span id="L-6152"><a href="#L-6152"><span class="linenos">6152</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-6153"><a href="#L-6153"><span class="linenos">6153</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-6154"><a href="#L-6154"><span class="linenos">6154</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-6155"><a href="#L-6155"><span class="linenos">6155</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6156"><a href="#L-6156"><span class="linenos">6156</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6157"><a href="#L-6157"><span class="linenos">6157</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6158"><a href="#L-6158"><span class="linenos">6158</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6159"><a href="#L-6159"><span class="linenos">6159</span></a> <span class="n">into_arg</span><span class="o">=</span><span class="s2">"this"</span><span class="p">,</span> -</span><span id="L-6160"><a href="#L-6160"><span class="linenos">6160</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6161"><a href="#L-6161"><span class="linenos">6161</span></a><span class="p">):</span> -</span><span id="L-6162"><a href="#L-6162"><span class="linenos">6162</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> -</span><span id="L-6163"><a href="#L-6163"><span class="linenos">6163</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="n">into_arg</span><span class="p">:</span> <span class="n">expression</span><span class="p">})</span> -</span><span id="L-6164"><a href="#L-6164"><span class="linenos">6164</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-6165"><a href="#L-6165"><span class="linenos">6165</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-6166"><a href="#L-6166"><span class="linenos">6166</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-6167"><a href="#L-6167"><span class="linenos">6167</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-6168"><a href="#L-6168"><span class="linenos">6168</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> -</span><span id="L-6169"><a href="#L-6169"><span class="linenos">6169</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-6170"><a href="#L-6170"><span class="linenos">6170</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6171"><a href="#L-6171"><span class="linenos">6171</span></a> <span class="p">)</span> -</span><span id="L-6172"><a href="#L-6172"><span class="linenos">6172</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-6173"><a href="#L-6173"><span class="linenos">6173</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-6174"><a href="#L-6174"><span class="linenos">6174</span></a> -</span><span id="L-6175"><a href="#L-6175"><span class="linenos">6175</span></a> -</span><span id="L-6176"><a href="#L-6176"><span class="linenos">6176</span></a><span class="k">def</span> <span class="nf">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-6177"><a href="#L-6177"><span class="linenos">6177</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-6178"><a href="#L-6178"><span class="linenos">6178</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-6179"><a href="#L-6179"><span class="linenos">6179</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-6180"><a href="#L-6180"><span class="linenos">6180</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6181"><a href="#L-6181"><span class="linenos">6181</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6182"><a href="#L-6182"><span class="linenos">6182</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6183"><a href="#L-6183"><span class="linenos">6183</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6184"><a href="#L-6184"><span class="linenos">6184</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6185"><a href="#L-6185"><span class="linenos">6185</span></a> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6186"><a href="#L-6186"><span class="linenos">6186</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6187"><a href="#L-6187"><span class="linenos">6187</span></a><span class="p">):</span> -</span><span id="L-6188"><a href="#L-6188"><span class="linenos">6188</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-6189"><a href="#L-6189"><span class="linenos">6189</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6190"><a href="#L-6190"><span class="linenos">6190</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">properties</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">properties</span> -</span><span id="L-6191"><a href="#L-6191"><span class="linenos">6191</span></a> -</span><span id="L-6192"><a href="#L-6192"><span class="linenos">6192</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-6193"><a href="#L-6193"><span class="linenos">6193</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6194"><a href="#L-6194"><span class="linenos">6194</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> -</span><span id="L-6195"><a href="#L-6195"><span class="linenos">6195</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> -</span><span id="L-6196"><a href="#L-6196"><span class="linenos">6196</span></a> -</span><span id="L-6197"><a href="#L-6197"><span class="linenos">6197</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-6198"><a href="#L-6198"><span class="linenos">6198</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-6199"><a href="#L-6199"><span class="linenos">6199</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> -</span><span id="L-6200"><a href="#L-6200"><span class="linenos">6200</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-6201"><a href="#L-6201"><span class="linenos">6201</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-6202"><a href="#L-6202"><span class="linenos">6202</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6203"><a href="#L-6203"><span class="linenos">6203</span></a> <span class="p">)</span> -</span><span id="L-6204"><a href="#L-6204"><span class="linenos">6204</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">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-6205"><a href="#L-6205"><span class="linenos">6205</span></a> <span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="s2">"expressions"</span><span class="p">:</span> -</span><span id="L-6206"><a href="#L-6206"><span class="linenos">6206</span></a> <span class="n">parsed</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> -</span><span id="L-6207"><a href="#L-6207"><span class="linenos">6207</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6208"><a href="#L-6208"><span class="linenos">6208</span></a> <span class="n">properties</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> -</span><span id="L-6209"><a href="#L-6209"><span class="linenos">6209</span></a> -</span><span id="L-6210"><a href="#L-6210"><span class="linenos">6210</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">instance</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-6211"><a href="#L-6211"><span class="linenos">6211</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span><span class="p">:</span> -</span><span id="L-6212"><a href="#L-6212"><span class="linenos">6212</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="n">existing</span><span class="o">.</span><span class="n">expressions</span> <span class="o">+</span> <span class="n">parsed</span> -</span><span id="L-6213"><a href="#L-6213"><span class="linenos">6213</span></a> -</span><span id="L-6214"><a href="#L-6214"><span class="linenos">6214</span></a> <span class="n">child</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">parsed</span><span class="p">)</span> -</span><span id="L-6215"><a href="#L-6215"><span class="linenos">6215</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">properties</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-6216"><a href="#L-6216"><span class="linenos">6216</span></a> <span class="n">child</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> -</span><span id="L-6217"><a href="#L-6217"><span class="linenos">6217</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">child</span><span class="p">)</span> -</span><span id="L-6218"><a href="#L-6218"><span class="linenos">6218</span></a> -</span><span id="L-6219"><a href="#L-6219"><span class="linenos">6219</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-6150"><a href="#L-6150"><span class="linenos">6150</span></a> <span class="c1"># Indent multiline strings to match the current level</span> +</span><span id="L-6151"><a href="#L-6151"><span class="linenos">6151</span></a> <span class="k">return</span> <span class="n">indent</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">textwrap</span><span class="o">.</span><span class="n">dedent</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">node</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">))</span><span class="o">.</span><span class="n">splitlines</span><span class="p">())</span> +</span><span id="L-6152"><a href="#L-6152"><span class="linenos">6152</span></a> +</span><span id="L-6153"><a href="#L-6153"><span class="linenos">6153</span></a> +</span><span id="L-6154"><a href="#L-6154"><span class="linenos">6154</span></a><span class="k">def</span> <span class="nf">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> +</span><span id="L-6155"><a href="#L-6155"><span class="linenos">6155</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="L-6156"><a href="#L-6156"><span class="linenos">6156</span></a> +</span><span id="L-6157"><a href="#L-6157"><span class="linenos">6157</span></a> +</span><span id="L-6158"><a href="#L-6158"><span class="linenos">6158</span></a><span class="k">def</span> <span class="nf">_apply_builder</span><span class="p">(</span> +</span><span id="L-6159"><a href="#L-6159"><span class="linenos">6159</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-6160"><a href="#L-6160"><span class="linenos">6160</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-6161"><a href="#L-6161"><span class="linenos">6161</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-6162"><a href="#L-6162"><span class="linenos">6162</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6163"><a href="#L-6163"><span class="linenos">6163</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6164"><a href="#L-6164"><span class="linenos">6164</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6165"><a href="#L-6165"><span class="linenos">6165</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6166"><a href="#L-6166"><span class="linenos">6166</span></a> <span class="n">into_arg</span><span class="o">=</span><span class="s2">"this"</span><span class="p">,</span> +</span><span id="L-6167"><a href="#L-6167"><span class="linenos">6167</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6168"><a href="#L-6168"><span class="linenos">6168</span></a><span class="p">):</span> +</span><span id="L-6169"><a href="#L-6169"><span class="linenos">6169</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> +</span><span id="L-6170"><a href="#L-6170"><span class="linenos">6170</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="n">into_arg</span><span class="p">:</span> <span class="n">expression</span><span class="p">})</span> +</span><span id="L-6171"><a href="#L-6171"><span class="linenos">6171</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-6172"><a href="#L-6172"><span class="linenos">6172</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-6173"><a href="#L-6173"><span class="linenos">6173</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-6174"><a href="#L-6174"><span class="linenos">6174</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-6175"><a href="#L-6175"><span class="linenos">6175</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> +</span><span id="L-6176"><a href="#L-6176"><span class="linenos">6176</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-6177"><a href="#L-6177"><span class="linenos">6177</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6178"><a href="#L-6178"><span class="linenos">6178</span></a> <span class="p">)</span> +</span><span id="L-6179"><a href="#L-6179"><span class="linenos">6179</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-6180"><a href="#L-6180"><span class="linenos">6180</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-6181"><a href="#L-6181"><span class="linenos">6181</span></a> +</span><span id="L-6182"><a href="#L-6182"><span class="linenos">6182</span></a> +</span><span id="L-6183"><a href="#L-6183"><span class="linenos">6183</span></a><span class="k">def</span> <span class="nf">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-6184"><a href="#L-6184"><span class="linenos">6184</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-6185"><a href="#L-6185"><span class="linenos">6185</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-6186"><a href="#L-6186"><span class="linenos">6186</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-6187"><a href="#L-6187"><span class="linenos">6187</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6188"><a href="#L-6188"><span class="linenos">6188</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6189"><a href="#L-6189"><span class="linenos">6189</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6190"><a href="#L-6190"><span class="linenos">6190</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6191"><a href="#L-6191"><span class="linenos">6191</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6192"><a href="#L-6192"><span class="linenos">6192</span></a> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6193"><a href="#L-6193"><span class="linenos">6193</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6194"><a href="#L-6194"><span class="linenos">6194</span></a><span class="p">):</span> +</span><span id="L-6195"><a href="#L-6195"><span class="linenos">6195</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-6196"><a href="#L-6196"><span class="linenos">6196</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6197"><a href="#L-6197"><span class="linenos">6197</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">properties</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">properties</span> +</span><span id="L-6198"><a href="#L-6198"><span class="linenos">6198</span></a> +</span><span id="L-6199"><a href="#L-6199"><span class="linenos">6199</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-6200"><a href="#L-6200"><span class="linenos">6200</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6201"><a href="#L-6201"><span class="linenos">6201</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> +</span><span id="L-6202"><a href="#L-6202"><span class="linenos">6202</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> +</span><span id="L-6203"><a href="#L-6203"><span class="linenos">6203</span></a> +</span><span id="L-6204"><a href="#L-6204"><span class="linenos">6204</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-6205"><a href="#L-6205"><span class="linenos">6205</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-6206"><a href="#L-6206"><span class="linenos">6206</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> +</span><span id="L-6207"><a href="#L-6207"><span class="linenos">6207</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-6208"><a href="#L-6208"><span class="linenos">6208</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-6209"><a href="#L-6209"><span class="linenos">6209</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6210"><a href="#L-6210"><span class="linenos">6210</span></a> <span class="p">)</span> +</span><span id="L-6211"><a href="#L-6211"><span class="linenos">6211</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">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-6212"><a href="#L-6212"><span class="linenos">6212</span></a> <span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="s2">"expressions"</span><span class="p">:</span> +</span><span id="L-6213"><a href="#L-6213"><span class="linenos">6213</span></a> <span class="n">parsed</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> +</span><span id="L-6214"><a href="#L-6214"><span class="linenos">6214</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6215"><a href="#L-6215"><span class="linenos">6215</span></a> <span class="n">properties</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> +</span><span id="L-6216"><a href="#L-6216"><span class="linenos">6216</span></a> +</span><span id="L-6217"><a href="#L-6217"><span class="linenos">6217</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">instance</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="L-6218"><a href="#L-6218"><span class="linenos">6218</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span><span class="p">:</span> +</span><span id="L-6219"><a href="#L-6219"><span class="linenos">6219</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="n">existing</span><span class="o">.</span><span class="n">expressions</span> <span class="o">+</span> <span class="n">parsed</span> </span><span id="L-6220"><a href="#L-6220"><span class="linenos">6220</span></a> -</span><span id="L-6221"><a href="#L-6221"><span class="linenos">6221</span></a> -</span><span id="L-6222"><a href="#L-6222"><span class="linenos">6222</span></a><span class="k">def</span> <span class="nf">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-6223"><a href="#L-6223"><span class="linenos">6223</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-6224"><a href="#L-6224"><span class="linenos">6224</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-6225"><a href="#L-6225"><span class="linenos">6225</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-6226"><a href="#L-6226"><span class="linenos">6226</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6227"><a href="#L-6227"><span class="linenos">6227</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6228"><a href="#L-6228"><span class="linenos">6228</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6229"><a href="#L-6229"><span class="linenos">6229</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6230"><a href="#L-6230"><span class="linenos">6230</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6231"><a href="#L-6231"><span class="linenos">6231</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6232"><a href="#L-6232"><span class="linenos">6232</span></a><span class="p">):</span> -</span><span id="L-6233"><a href="#L-6233"><span class="linenos">6233</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-6234"><a href="#L-6234"><span class="linenos">6234</span></a> -</span><span id="L-6235"><a href="#L-6235"><span class="linenos">6235</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-6236"><a href="#L-6236"><span class="linenos">6236</span></a> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-6237"><a href="#L-6237"><span class="linenos">6237</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-6238"><a href="#L-6238"><span class="linenos">6238</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> -</span><span id="L-6239"><a href="#L-6239"><span class="linenos">6239</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-6240"><a href="#L-6240"><span class="linenos">6240</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-6241"><a href="#L-6241"><span class="linenos">6241</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6242"><a href="#L-6242"><span class="linenos">6242</span></a> <span class="p">)</span> -</span><span id="L-6243"><a href="#L-6243"><span class="linenos">6243</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="L-6244"><a href="#L-6244"><span class="linenos">6244</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="L-6245"><a href="#L-6245"><span class="linenos">6245</span></a> <span class="p">]</span> -</span><span id="L-6246"><a href="#L-6246"><span class="linenos">6246</span></a> -</span><span id="L-6247"><a href="#L-6247"><span class="linenos">6247</span></a> <span class="n">existing_expressions</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-6248"><a href="#L-6248"><span class="linenos">6248</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing_expressions</span><span class="p">:</span> -</span><span id="L-6249"><a href="#L-6249"><span class="linenos">6249</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">existing_expressions</span> <span class="o">+</span> <span class="n">expressions</span> -</span><span id="L-6250"><a href="#L-6250"><span class="linenos">6250</span></a> -</span><span id="L-6251"><a href="#L-6251"><span class="linenos">6251</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="L-6252"><a href="#L-6252"><span class="linenos">6252</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="L-6221"><a href="#L-6221"><span class="linenos">6221</span></a> <span class="n">child</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">parsed</span><span class="p">)</span> +</span><span id="L-6222"><a href="#L-6222"><span class="linenos">6222</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">properties</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-6223"><a href="#L-6223"><span class="linenos">6223</span></a> <span class="n">child</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> +</span><span id="L-6224"><a href="#L-6224"><span class="linenos">6224</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">child</span><span class="p">)</span> +</span><span id="L-6225"><a href="#L-6225"><span class="linenos">6225</span></a> +</span><span id="L-6226"><a href="#L-6226"><span class="linenos">6226</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-6227"><a href="#L-6227"><span class="linenos">6227</span></a> +</span><span id="L-6228"><a href="#L-6228"><span class="linenos">6228</span></a> +</span><span id="L-6229"><a href="#L-6229"><span class="linenos">6229</span></a><span class="k">def</span> <span class="nf">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-6230"><a href="#L-6230"><span class="linenos">6230</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-6231"><a href="#L-6231"><span class="linenos">6231</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-6232"><a href="#L-6232"><span class="linenos">6232</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-6233"><a href="#L-6233"><span class="linenos">6233</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6234"><a href="#L-6234"><span class="linenos">6234</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6235"><a href="#L-6235"><span class="linenos">6235</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6236"><a href="#L-6236"><span class="linenos">6236</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6237"><a href="#L-6237"><span class="linenos">6237</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6238"><a href="#L-6238"><span class="linenos">6238</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6239"><a href="#L-6239"><span class="linenos">6239</span></a><span class="p">):</span> +</span><span id="L-6240"><a href="#L-6240"><span class="linenos">6240</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-6241"><a href="#L-6241"><span class="linenos">6241</span></a> +</span><span id="L-6242"><a href="#L-6242"><span class="linenos">6242</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="L-6243"><a href="#L-6243"><span class="linenos">6243</span></a> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-6244"><a href="#L-6244"><span class="linenos">6244</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-6245"><a href="#L-6245"><span class="linenos">6245</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> +</span><span id="L-6246"><a href="#L-6246"><span class="linenos">6246</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-6247"><a href="#L-6247"><span class="linenos">6247</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-6248"><a href="#L-6248"><span class="linenos">6248</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6249"><a href="#L-6249"><span class="linenos">6249</span></a> <span class="p">)</span> +</span><span id="L-6250"><a href="#L-6250"><span class="linenos">6250</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="L-6251"><a href="#L-6251"><span class="linenos">6251</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="L-6252"><a href="#L-6252"><span class="linenos">6252</span></a> <span class="p">]</span> </span><span id="L-6253"><a href="#L-6253"><span class="linenos">6253</span></a> -</span><span id="L-6254"><a href="#L-6254"><span class="linenos">6254</span></a> -</span><span id="L-6255"><a href="#L-6255"><span class="linenos">6255</span></a><span class="k">def</span> <span class="nf">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="L-6256"><a href="#L-6256"><span class="linenos">6256</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-6257"><a href="#L-6257"><span class="linenos">6257</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-6258"><a href="#L-6258"><span class="linenos">6258</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-6259"><a href="#L-6259"><span class="linenos">6259</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6260"><a href="#L-6260"><span class="linenos">6260</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6261"><a href="#L-6261"><span class="linenos">6261</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6262"><a href="#L-6262"><span class="linenos">6262</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-6263"><a href="#L-6263"><span class="linenos">6263</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6264"><a href="#L-6264"><span class="linenos">6264</span></a><span class="p">):</span> -</span><span id="L-6265"><a href="#L-6265"><span class="linenos">6265</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span> <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="n">expressions</span> <span class="k">if</span> <span class="n">exp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">exp</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">]</span> -</span><span id="L-6266"><a href="#L-6266"><span class="linenos">6266</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-6267"><a href="#L-6267"><span class="linenos">6267</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-6268"><a href="#L-6268"><span class="linenos">6268</span></a> -</span><span id="L-6269"><a href="#L-6269"><span class="linenos">6269</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-6270"><a href="#L-6270"><span class="linenos">6270</span></a> -</span><span id="L-6271"><a href="#L-6271"><span class="linenos">6271</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-6272"><a href="#L-6272"><span class="linenos">6272</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6273"><a href="#L-6273"><span class="linenos">6273</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">existing</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">existing</span><span class="p">]</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-6274"><a href="#L-6274"><span class="linenos">6274</span></a> -</span><span id="L-6275"><a href="#L-6275"><span class="linenos">6275</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6276"><a href="#L-6276"><span class="linenos">6276</span></a> -</span><span id="L-6277"><a href="#L-6277"><span class="linenos">6277</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">into</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="p">)</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">node</span><span class="p">)</span> -</span><span id="L-6278"><a href="#L-6278"><span class="linenos">6278</span></a> <span class="k">return</span> <span class="n">inst</span> -</span><span id="L-6279"><a href="#L-6279"><span class="linenos">6279</span></a> -</span><span id="L-6280"><a href="#L-6280"><span class="linenos">6280</span></a> -</span><span id="L-6281"><a href="#L-6281"><span class="linenos">6281</span></a><span class="k">def</span> <span class="nf">_apply_cte_builder</span><span class="p">(</span> -</span><span id="L-6282"><a href="#L-6282"><span class="linenos">6282</span></a> <span class="n">instance</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> -</span><span id="L-6283"><a href="#L-6283"><span class="linenos">6283</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6284"><a href="#L-6284"><span class="linenos">6284</span></a> <span class="n">as_</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6285"><a href="#L-6285"><span class="linenos">6285</span></a> <span class="n">recursive</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">None</span><span class="p">,</span> -</span><span id="L-6286"><a href="#L-6286"><span class="linenos">6286</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6287"><a href="#L-6287"><span class="linenos">6287</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-6288"><a href="#L-6288"><span class="linenos">6288</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6289"><a href="#L-6289"><span class="linenos">6289</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6290"><a href="#L-6290"><span class="linenos">6290</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-6291"><a href="#L-6291"><span class="linenos">6291</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">alias</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">TableAlias</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6292"><a href="#L-6292"><span class="linenos">6292</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">as_</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6293"><a href="#L-6293"><span class="linenos">6293</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">)</span> -</span><span id="L-6294"><a href="#L-6294"><span class="linenos">6294</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-6295"><a href="#L-6295"><span class="linenos">6295</span></a> <span class="n">cte</span><span class="p">,</span> -</span><span id="L-6296"><a href="#L-6296"><span class="linenos">6296</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="L-6297"><a href="#L-6297"><span class="linenos">6297</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> -</span><span id="L-6298"><a href="#L-6298"><span class="linenos">6298</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-6299"><a href="#L-6299"><span class="linenos">6299</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-6300"><a href="#L-6300"><span class="linenos">6300</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> -</span><span id="L-6301"><a href="#L-6301"><span class="linenos">6301</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> -</span><span id="L-6302"><a href="#L-6302"><span class="linenos">6302</span></a> <span class="p">)</span> -</span><span id="L-6303"><a href="#L-6303"><span class="linenos">6303</span></a> -</span><span id="L-6304"><a href="#L-6304"><span class="linenos">6304</span></a> -</span><span id="L-6305"><a href="#L-6305"><span class="linenos">6305</span></a><span class="k">def</span> <span class="nf">_combine</span><span class="p">(</span> -</span><span id="L-6306"><a href="#L-6306"><span class="linenos">6306</span></a> <span class="n">expressions</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="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]],</span> -</span><span id="L-6307"><a href="#L-6307"><span class="linenos">6307</span></a> <span class="n">operator</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Connector</span><span class="p">],</span> -</span><span id="L-6308"><a href="#L-6308"><span class="linenos">6308</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-6309"><a href="#L-6309"><span class="linenos">6309</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6310"><a href="#L-6310"><span class="linenos">6310</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6311"><a href="#L-6311"><span class="linenos">6311</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-6312"><a href="#L-6312"><span class="linenos">6312</span></a> <span class="n">conditions</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-6313"><a href="#L-6313"><span class="linenos">6313</span></a> <span class="n">condition</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6314"><a href="#L-6314"><span class="linenos">6314</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="L-6315"><a href="#L-6315"><span class="linenos">6315</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="L-6316"><a href="#L-6316"><span class="linenos">6316</span></a> <span class="p">]</span> -</span><span id="L-6317"><a href="#L-6317"><span class="linenos">6317</span></a> -</span><span id="L-6318"><a href="#L-6318"><span class="linenos">6318</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">rest</span> <span class="o">=</span> <span class="n">conditions</span> -</span><span id="L-6319"><a href="#L-6319"><span class="linenos">6319</span></a> <span class="k">if</span> <span class="n">rest</span><span class="p">:</span> -</span><span id="L-6320"><a href="#L-6320"><span class="linenos">6320</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">_wrap</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Connector</span><span class="p">)</span> -</span><span id="L-6321"><a href="#L-6321"><span class="linenos">6321</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">rest</span><span class="p">:</span> -</span><span id="L-6322"><a href="#L-6322"><span class="linenos">6322</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">operator</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">_wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Connector</span><span class="p">))</span> -</span><span id="L-6323"><a href="#L-6323"><span class="linenos">6323</span></a> -</span><span id="L-6324"><a href="#L-6324"><span class="linenos">6324</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-6325"><a href="#L-6325"><span class="linenos">6325</span></a> -</span><span id="L-6326"><a href="#L-6326"><span class="linenos">6326</span></a> -</span><span id="L-6327"><a href="#L-6327"><span class="linenos">6327</span></a><span class="k">def</span> <span class="nf">_wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">E</span> <span class="o">|</span> <span class="n">Paren</span><span class="p">:</span> -</span><span id="L-6328"><a href="#L-6328"><span class="linenos">6328</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> -</span><span id="L-6329"><a href="#L-6329"><span class="linenos">6329</span></a> +</span><span id="L-6254"><a href="#L-6254"><span class="linenos">6254</span></a> <span class="n">existing_expressions</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="L-6255"><a href="#L-6255"><span class="linenos">6255</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing_expressions</span><span class="p">:</span> +</span><span id="L-6256"><a href="#L-6256"><span class="linenos">6256</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">existing_expressions</span> <span class="o">+</span> <span class="n">expressions</span> +</span><span id="L-6257"><a href="#L-6257"><span class="linenos">6257</span></a> +</span><span id="L-6258"><a href="#L-6258"><span class="linenos">6258</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-6259"><a href="#L-6259"><span class="linenos">6259</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="L-6260"><a href="#L-6260"><span class="linenos">6260</span></a> +</span><span id="L-6261"><a href="#L-6261"><span class="linenos">6261</span></a> +</span><span id="L-6262"><a href="#L-6262"><span class="linenos">6262</span></a><span class="k">def</span> <span class="nf">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="L-6263"><a href="#L-6263"><span class="linenos">6263</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-6264"><a href="#L-6264"><span class="linenos">6264</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-6265"><a href="#L-6265"><span class="linenos">6265</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-6266"><a href="#L-6266"><span class="linenos">6266</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6267"><a href="#L-6267"><span class="linenos">6267</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6268"><a href="#L-6268"><span class="linenos">6268</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6269"><a href="#L-6269"><span class="linenos">6269</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-6270"><a href="#L-6270"><span class="linenos">6270</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6271"><a href="#L-6271"><span class="linenos">6271</span></a><span class="p">):</span> +</span><span id="L-6272"><a href="#L-6272"><span class="linenos">6272</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span> <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="n">expressions</span> <span class="k">if</span> <span class="n">exp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">exp</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">]</span> +</span><span id="L-6273"><a href="#L-6273"><span class="linenos">6273</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-6274"><a href="#L-6274"><span class="linenos">6274</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-6275"><a href="#L-6275"><span class="linenos">6275</span></a> +</span><span id="L-6276"><a href="#L-6276"><span class="linenos">6276</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-6277"><a href="#L-6277"><span class="linenos">6277</span></a> +</span><span id="L-6278"><a href="#L-6278"><span class="linenos">6278</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="L-6279"><a href="#L-6279"><span class="linenos">6279</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6280"><a href="#L-6280"><span class="linenos">6280</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">existing</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">existing</span><span class="p">]</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-6281"><a href="#L-6281"><span class="linenos">6281</span></a> +</span><span id="L-6282"><a href="#L-6282"><span class="linenos">6282</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6283"><a href="#L-6283"><span class="linenos">6283</span></a> +</span><span id="L-6284"><a href="#L-6284"><span class="linenos">6284</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">into</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="p">)</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">node</span><span class="p">)</span> +</span><span id="L-6285"><a href="#L-6285"><span class="linenos">6285</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="L-6286"><a href="#L-6286"><span class="linenos">6286</span></a> +</span><span id="L-6287"><a href="#L-6287"><span class="linenos">6287</span></a> +</span><span id="L-6288"><a href="#L-6288"><span class="linenos">6288</span></a><span class="k">def</span> <span class="nf">_apply_cte_builder</span><span class="p">(</span> +</span><span id="L-6289"><a href="#L-6289"><span class="linenos">6289</span></a> <span class="n">instance</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> +</span><span id="L-6290"><a href="#L-6290"><span class="linenos">6290</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6291"><a href="#L-6291"><span class="linenos">6291</span></a> <span class="n">as_</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6292"><a href="#L-6292"><span class="linenos">6292</span></a> <span class="n">recursive</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">None</span><span class="p">,</span> +</span><span id="L-6293"><a href="#L-6293"><span class="linenos">6293</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6294"><a href="#L-6294"><span class="linenos">6294</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-6295"><a href="#L-6295"><span class="linenos">6295</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6296"><a href="#L-6296"><span class="linenos">6296</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6297"><a href="#L-6297"><span class="linenos">6297</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-6298"><a href="#L-6298"><span class="linenos">6298</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">alias</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">TableAlias</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6299"><a href="#L-6299"><span class="linenos">6299</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">as_</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6300"><a href="#L-6300"><span class="linenos">6300</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">)</span> +</span><span id="L-6301"><a href="#L-6301"><span class="linenos">6301</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-6302"><a href="#L-6302"><span class="linenos">6302</span></a> <span class="n">cte</span><span class="p">,</span> +</span><span id="L-6303"><a href="#L-6303"><span class="linenos">6303</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="L-6304"><a href="#L-6304"><span class="linenos">6304</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> +</span><span id="L-6305"><a href="#L-6305"><span class="linenos">6305</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-6306"><a href="#L-6306"><span class="linenos">6306</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-6307"><a href="#L-6307"><span class="linenos">6307</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> +</span><span id="L-6308"><a href="#L-6308"><span class="linenos">6308</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> +</span><span id="L-6309"><a href="#L-6309"><span class="linenos">6309</span></a> <span class="p">)</span> +</span><span id="L-6310"><a href="#L-6310"><span class="linenos">6310</span></a> +</span><span id="L-6311"><a href="#L-6311"><span class="linenos">6311</span></a> +</span><span id="L-6312"><a href="#L-6312"><span class="linenos">6312</span></a><span class="k">def</span> <span class="nf">_combine</span><span class="p">(</span> +</span><span id="L-6313"><a href="#L-6313"><span class="linenos">6313</span></a> <span class="n">expressions</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="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]],</span> +</span><span id="L-6314"><a href="#L-6314"><span class="linenos">6314</span></a> <span class="n">operator</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Connector</span><span class="p">],</span> +</span><span id="L-6315"><a href="#L-6315"><span class="linenos">6315</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-6316"><a href="#L-6316"><span class="linenos">6316</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6317"><a href="#L-6317"><span class="linenos">6317</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6318"><a href="#L-6318"><span class="linenos">6318</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-6319"><a href="#L-6319"><span class="linenos">6319</span></a> <span class="n">conditions</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="L-6320"><a href="#L-6320"><span class="linenos">6320</span></a> <span class="n">condition</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6321"><a href="#L-6321"><span class="linenos">6321</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="L-6322"><a href="#L-6322"><span class="linenos">6322</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="L-6323"><a href="#L-6323"><span class="linenos">6323</span></a> <span class="p">]</span> +</span><span id="L-6324"><a href="#L-6324"><span class="linenos">6324</span></a> +</span><span id="L-6325"><a href="#L-6325"><span class="linenos">6325</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">rest</span> <span class="o">=</span> <span class="n">conditions</span> +</span><span id="L-6326"><a href="#L-6326"><span class="linenos">6326</span></a> <span class="k">if</span> <span class="n">rest</span><span class="p">:</span> +</span><span id="L-6327"><a href="#L-6327"><span class="linenos">6327</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">_wrap</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Connector</span><span class="p">)</span> +</span><span id="L-6328"><a href="#L-6328"><span class="linenos">6328</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">rest</span><span class="p">:</span> +</span><span id="L-6329"><a href="#L-6329"><span class="linenos">6329</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">operator</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">_wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Connector</span><span class="p">))</span> </span><span id="L-6330"><a href="#L-6330"><span class="linenos">6330</span></a> -</span><span id="L-6331"><a href="#L-6331"><span class="linenos">6331</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span> -</span><span id="L-6332"><a href="#L-6332"><span class="linenos">6332</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6333"><a href="#L-6333"><span class="linenos">6333</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6334"><a href="#L-6334"><span class="linenos">6334</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6335"><a href="#L-6335"><span class="linenos">6335</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-6336"><a href="#L-6336"><span class="linenos">6336</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6337"><a href="#L-6337"><span class="linenos">6337</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6338"><a href="#L-6338"><span class="linenos">6338</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> -</span><span id="L-6339"><a href="#L-6339"><span class="linenos">6339</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6340"><a href="#L-6340"><span class="linenos">6340</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> -</span><span id="L-6341"><a href="#L-6341"><span class="linenos">6341</span></a> -</span><span id="L-6342"><a href="#L-6342"><span class="linenos">6342</span></a><span class="sd"> Example:</span> -</span><span id="L-6343"><a href="#L-6343"><span class="linenos">6343</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="L-6344"><a href="#L-6344"><span class="linenos">6344</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> -</span><span id="L-6345"><a href="#L-6345"><span class="linenos">6345</span></a> -</span><span id="L-6346"><a href="#L-6346"><span class="linenos">6346</span></a><span class="sd"> Args:</span> -</span><span id="L-6347"><a href="#L-6347"><span class="linenos">6347</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> -</span><span id="L-6348"><a href="#L-6348"><span class="linenos">6348</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-6349"><a href="#L-6349"><span class="linenos">6349</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> -</span><span id="L-6350"><a href="#L-6350"><span class="linenos">6350</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-6351"><a href="#L-6351"><span class="linenos">6351</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-6352"><a href="#L-6352"><span class="linenos">6352</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6353"><a href="#L-6353"><span class="linenos">6353</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-6354"><a href="#L-6354"><span class="linenos">6354</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="L-6355"><a href="#L-6355"><span class="linenos">6355</span></a> -</span><span id="L-6356"><a href="#L-6356"><span class="linenos">6356</span></a><span class="sd"> Returns:</span> -</span><span id="L-6357"><a href="#L-6357"><span class="linenos">6357</span></a><span class="sd"> The new Union instance.</span> -</span><span id="L-6358"><a href="#L-6358"><span class="linenos">6358</span></a><span class="sd"> """</span> -</span><span id="L-6359"><a href="#L-6359"><span class="linenos">6359</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6360"><a href="#L-6360"><span class="linenos">6360</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6361"><a href="#L-6361"><span class="linenos">6361</span></a> -</span><span id="L-6362"><a href="#L-6362"><span class="linenos">6362</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> -</span><span id="L-6363"><a href="#L-6363"><span class="linenos">6363</span></a> -</span><span id="L-6364"><a href="#L-6364"><span class="linenos">6364</span></a> -</span><span id="L-6365"><a href="#L-6365"><span class="linenos">6365</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span> -</span><span id="L-6366"><a href="#L-6366"><span class="linenos">6366</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6367"><a href="#L-6367"><span class="linenos">6367</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6368"><a href="#L-6368"><span class="linenos">6368</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6369"><a href="#L-6369"><span class="linenos">6369</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-6370"><a href="#L-6370"><span class="linenos">6370</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6371"><a href="#L-6371"><span class="linenos">6371</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6372"><a href="#L-6372"><span class="linenos">6372</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Intersect</span><span class="p">:</span> -</span><span id="L-6373"><a href="#L-6373"><span class="linenos">6373</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6374"><a href="#L-6374"><span class="linenos">6374</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> -</span><span id="L-6375"><a href="#L-6375"><span class="linenos">6375</span></a> -</span><span id="L-6376"><a href="#L-6376"><span class="linenos">6376</span></a><span class="sd"> Example:</span> -</span><span id="L-6377"><a href="#L-6377"><span class="linenos">6377</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="L-6378"><a href="#L-6378"><span class="linenos">6378</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="L-6379"><a href="#L-6379"><span class="linenos">6379</span></a> -</span><span id="L-6380"><a href="#L-6380"><span class="linenos">6380</span></a><span class="sd"> Args:</span> -</span><span id="L-6381"><a href="#L-6381"><span class="linenos">6381</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> -</span><span id="L-6382"><a href="#L-6382"><span class="linenos">6382</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-6383"><a href="#L-6383"><span class="linenos">6383</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> -</span><span id="L-6384"><a href="#L-6384"><span class="linenos">6384</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-6385"><a href="#L-6385"><span class="linenos">6385</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-6386"><a href="#L-6386"><span class="linenos">6386</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6387"><a href="#L-6387"><span class="linenos">6387</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-6388"><a href="#L-6388"><span class="linenos">6388</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="L-6389"><a href="#L-6389"><span class="linenos">6389</span></a> -</span><span id="L-6390"><a href="#L-6390"><span class="linenos">6390</span></a><span class="sd"> Returns:</span> -</span><span id="L-6391"><a href="#L-6391"><span class="linenos">6391</span></a><span class="sd"> The new Intersect instance.</span> -</span><span id="L-6392"><a href="#L-6392"><span class="linenos">6392</span></a><span class="sd"> """</span> -</span><span id="L-6393"><a href="#L-6393"><span class="linenos">6393</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6394"><a href="#L-6394"><span class="linenos">6394</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6395"><a href="#L-6395"><span class="linenos">6395</span></a> -</span><span id="L-6396"><a href="#L-6396"><span class="linenos">6396</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> -</span><span id="L-6397"><a href="#L-6397"><span class="linenos">6397</span></a> -</span><span id="L-6398"><a href="#L-6398"><span class="linenos">6398</span></a> -</span><span id="L-6399"><a href="#L-6399"><span class="linenos">6399</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span> -</span><span id="L-6400"><a href="#L-6400"><span class="linenos">6400</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6401"><a href="#L-6401"><span class="linenos">6401</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6402"><a href="#L-6402"><span class="linenos">6402</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6403"><a href="#L-6403"><span class="linenos">6403</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-6404"><a href="#L-6404"><span class="linenos">6404</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6405"><a href="#L-6405"><span class="linenos">6405</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6406"><a href="#L-6406"><span class="linenos">6406</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Except</span><span class="p">:</span> -</span><span id="L-6407"><a href="#L-6407"><span class="linenos">6407</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6408"><a href="#L-6408"><span class="linenos">6408</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> -</span><span id="L-6409"><a href="#L-6409"><span class="linenos">6409</span></a> -</span><span id="L-6410"><a href="#L-6410"><span class="linenos">6410</span></a><span class="sd"> Example:</span> -</span><span id="L-6411"><a href="#L-6411"><span class="linenos">6411</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="L-6412"><a href="#L-6412"><span class="linenos">6412</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> -</span><span id="L-6413"><a href="#L-6413"><span class="linenos">6413</span></a> -</span><span id="L-6414"><a href="#L-6414"><span class="linenos">6414</span></a><span class="sd"> Args:</span> -</span><span id="L-6415"><a href="#L-6415"><span class="linenos">6415</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> -</span><span id="L-6416"><a href="#L-6416"><span class="linenos">6416</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-6417"><a href="#L-6417"><span class="linenos">6417</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> -</span><span id="L-6418"><a href="#L-6418"><span class="linenos">6418</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-6419"><a href="#L-6419"><span class="linenos">6419</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-6420"><a href="#L-6420"><span class="linenos">6420</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6421"><a href="#L-6421"><span class="linenos">6421</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-6422"><a href="#L-6422"><span class="linenos">6422</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="L-6423"><a href="#L-6423"><span class="linenos">6423</span></a> -</span><span id="L-6424"><a href="#L-6424"><span class="linenos">6424</span></a><span class="sd"> Returns:</span> -</span><span id="L-6425"><a href="#L-6425"><span class="linenos">6425</span></a><span class="sd"> The new Except instance.</span> -</span><span id="L-6426"><a href="#L-6426"><span class="linenos">6426</span></a><span class="sd"> """</span> -</span><span id="L-6427"><a href="#L-6427"><span class="linenos">6427</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6428"><a href="#L-6428"><span class="linenos">6428</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6429"><a href="#L-6429"><span class="linenos">6429</span></a> -</span><span id="L-6430"><a href="#L-6430"><span class="linenos">6430</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> -</span><span id="L-6431"><a href="#L-6431"><span class="linenos">6431</span></a> -</span><span id="L-6432"><a href="#L-6432"><span class="linenos">6432</span></a> -</span><span id="L-6433"><a href="#L-6433"><span class="linenos">6433</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-6434"><a href="#L-6434"><span class="linenos">6434</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6435"><a href="#L-6435"><span class="linenos">6435</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> +</span><span id="L-6331"><a href="#L-6331"><span class="linenos">6331</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-6332"><a href="#L-6332"><span class="linenos">6332</span></a> +</span><span id="L-6333"><a href="#L-6333"><span class="linenos">6333</span></a> +</span><span id="L-6334"><a href="#L-6334"><span class="linenos">6334</span></a><span class="k">def</span> <span class="nf">_wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">E</span> <span class="o">|</span> <span class="n">Paren</span><span class="p">:</span> +</span><span id="L-6335"><a href="#L-6335"><span class="linenos">6335</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> +</span><span id="L-6336"><a href="#L-6336"><span class="linenos">6336</span></a> +</span><span id="L-6337"><a href="#L-6337"><span class="linenos">6337</span></a> +</span><span id="L-6338"><a href="#L-6338"><span class="linenos">6338</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span> +</span><span id="L-6339"><a href="#L-6339"><span class="linenos">6339</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6340"><a href="#L-6340"><span class="linenos">6340</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6341"><a href="#L-6341"><span class="linenos">6341</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6342"><a href="#L-6342"><span class="linenos">6342</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-6343"><a href="#L-6343"><span class="linenos">6343</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6344"><a href="#L-6344"><span class="linenos">6344</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6345"><a href="#L-6345"><span class="linenos">6345</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> +</span><span id="L-6346"><a href="#L-6346"><span class="linenos">6346</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6347"><a href="#L-6347"><span class="linenos">6347</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> +</span><span id="L-6348"><a href="#L-6348"><span class="linenos">6348</span></a> +</span><span id="L-6349"><a href="#L-6349"><span class="linenos">6349</span></a><span class="sd"> Example:</span> +</span><span id="L-6350"><a href="#L-6350"><span class="linenos">6350</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="L-6351"><a href="#L-6351"><span class="linenos">6351</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="L-6352"><a href="#L-6352"><span class="linenos">6352</span></a> +</span><span id="L-6353"><a href="#L-6353"><span class="linenos">6353</span></a><span class="sd"> Args:</span> +</span><span id="L-6354"><a href="#L-6354"><span class="linenos">6354</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> +</span><span id="L-6355"><a href="#L-6355"><span class="linenos">6355</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-6356"><a href="#L-6356"><span class="linenos">6356</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> +</span><span id="L-6357"><a href="#L-6357"><span class="linenos">6357</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-6358"><a href="#L-6358"><span class="linenos">6358</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-6359"><a href="#L-6359"><span class="linenos">6359</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6360"><a href="#L-6360"><span class="linenos">6360</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-6361"><a href="#L-6361"><span class="linenos">6361</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="L-6362"><a href="#L-6362"><span class="linenos">6362</span></a> +</span><span id="L-6363"><a href="#L-6363"><span class="linenos">6363</span></a><span class="sd"> Returns:</span> +</span><span id="L-6364"><a href="#L-6364"><span class="linenos">6364</span></a><span class="sd"> The new Union instance.</span> +</span><span id="L-6365"><a href="#L-6365"><span class="linenos">6365</span></a><span class="sd"> """</span> +</span><span id="L-6366"><a href="#L-6366"><span class="linenos">6366</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6367"><a href="#L-6367"><span class="linenos">6367</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6368"><a href="#L-6368"><span class="linenos">6368</span></a> +</span><span id="L-6369"><a href="#L-6369"><span class="linenos">6369</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> +</span><span id="L-6370"><a href="#L-6370"><span class="linenos">6370</span></a> +</span><span id="L-6371"><a href="#L-6371"><span class="linenos">6371</span></a> +</span><span id="L-6372"><a href="#L-6372"><span class="linenos">6372</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span> +</span><span id="L-6373"><a href="#L-6373"><span class="linenos">6373</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6374"><a href="#L-6374"><span class="linenos">6374</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6375"><a href="#L-6375"><span class="linenos">6375</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6376"><a href="#L-6376"><span class="linenos">6376</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-6377"><a href="#L-6377"><span class="linenos">6377</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6378"><a href="#L-6378"><span class="linenos">6378</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6379"><a href="#L-6379"><span class="linenos">6379</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Intersect</span><span class="p">:</span> +</span><span id="L-6380"><a href="#L-6380"><span class="linenos">6380</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6381"><a href="#L-6381"><span class="linenos">6381</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> +</span><span id="L-6382"><a href="#L-6382"><span class="linenos">6382</span></a> +</span><span id="L-6383"><a href="#L-6383"><span class="linenos">6383</span></a><span class="sd"> Example:</span> +</span><span id="L-6384"><a href="#L-6384"><span class="linenos">6384</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="L-6385"><a href="#L-6385"><span class="linenos">6385</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> +</span><span id="L-6386"><a href="#L-6386"><span class="linenos">6386</span></a> +</span><span id="L-6387"><a href="#L-6387"><span class="linenos">6387</span></a><span class="sd"> Args:</span> +</span><span id="L-6388"><a href="#L-6388"><span class="linenos">6388</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> +</span><span id="L-6389"><a href="#L-6389"><span class="linenos">6389</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-6390"><a href="#L-6390"><span class="linenos">6390</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> +</span><span id="L-6391"><a href="#L-6391"><span class="linenos">6391</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-6392"><a href="#L-6392"><span class="linenos">6392</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-6393"><a href="#L-6393"><span class="linenos">6393</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6394"><a href="#L-6394"><span class="linenos">6394</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-6395"><a href="#L-6395"><span class="linenos">6395</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="L-6396"><a href="#L-6396"><span class="linenos">6396</span></a> +</span><span id="L-6397"><a href="#L-6397"><span class="linenos">6397</span></a><span class="sd"> Returns:</span> +</span><span id="L-6398"><a href="#L-6398"><span class="linenos">6398</span></a><span class="sd"> The new Intersect instance.</span> +</span><span id="L-6399"><a href="#L-6399"><span class="linenos">6399</span></a><span class="sd"> """</span> +</span><span id="L-6400"><a href="#L-6400"><span class="linenos">6400</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6401"><a href="#L-6401"><span class="linenos">6401</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6402"><a href="#L-6402"><span class="linenos">6402</span></a> +</span><span id="L-6403"><a href="#L-6403"><span class="linenos">6403</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> +</span><span id="L-6404"><a href="#L-6404"><span class="linenos">6404</span></a> +</span><span id="L-6405"><a href="#L-6405"><span class="linenos">6405</span></a> +</span><span id="L-6406"><a href="#L-6406"><span class="linenos">6406</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span> +</span><span id="L-6407"><a href="#L-6407"><span class="linenos">6407</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6408"><a href="#L-6408"><span class="linenos">6408</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6409"><a href="#L-6409"><span class="linenos">6409</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6410"><a href="#L-6410"><span class="linenos">6410</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-6411"><a href="#L-6411"><span class="linenos">6411</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6412"><a href="#L-6412"><span class="linenos">6412</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6413"><a href="#L-6413"><span class="linenos">6413</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Except</span><span class="p">:</span> +</span><span id="L-6414"><a href="#L-6414"><span class="linenos">6414</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6415"><a href="#L-6415"><span class="linenos">6415</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> +</span><span id="L-6416"><a href="#L-6416"><span class="linenos">6416</span></a> +</span><span id="L-6417"><a href="#L-6417"><span class="linenos">6417</span></a><span class="sd"> Example:</span> +</span><span id="L-6418"><a href="#L-6418"><span class="linenos">6418</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="L-6419"><a href="#L-6419"><span class="linenos">6419</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="L-6420"><a href="#L-6420"><span class="linenos">6420</span></a> +</span><span id="L-6421"><a href="#L-6421"><span class="linenos">6421</span></a><span class="sd"> Args:</span> +</span><span id="L-6422"><a href="#L-6422"><span class="linenos">6422</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> +</span><span id="L-6423"><a href="#L-6423"><span class="linenos">6423</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-6424"><a href="#L-6424"><span class="linenos">6424</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> +</span><span id="L-6425"><a href="#L-6425"><span class="linenos">6425</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-6426"><a href="#L-6426"><span class="linenos">6426</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-6427"><a href="#L-6427"><span class="linenos">6427</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6428"><a href="#L-6428"><span class="linenos">6428</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-6429"><a href="#L-6429"><span class="linenos">6429</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="L-6430"><a href="#L-6430"><span class="linenos">6430</span></a> +</span><span id="L-6431"><a href="#L-6431"><span class="linenos">6431</span></a><span class="sd"> Returns:</span> +</span><span id="L-6432"><a href="#L-6432"><span class="linenos">6432</span></a><span class="sd"> The new Except instance.</span> +</span><span id="L-6433"><a href="#L-6433"><span class="linenos">6433</span></a><span class="sd"> """</span> +</span><span id="L-6434"><a href="#L-6434"><span class="linenos">6434</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6435"><a href="#L-6435"><span class="linenos">6435</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-6436"><a href="#L-6436"><span class="linenos">6436</span></a> -</span><span id="L-6437"><a href="#L-6437"><span class="linenos">6437</span></a><span class="sd"> Example:</span> -</span><span id="L-6438"><a href="#L-6438"><span class="linenos">6438</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> -</span><span id="L-6439"><a href="#L-6439"><span class="linenos">6439</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> -</span><span id="L-6440"><a href="#L-6440"><span class="linenos">6440</span></a> -</span><span id="L-6441"><a href="#L-6441"><span class="linenos">6441</span></a><span class="sd"> Args:</span> -</span><span id="L-6442"><a href="#L-6442"><span class="linenos">6442</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> -</span><span id="L-6443"><a href="#L-6443"><span class="linenos">6443</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6444"><a href="#L-6444"><span class="linenos">6444</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="L-6445"><a href="#L-6445"><span class="linenos">6445</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-6446"><a href="#L-6446"><span class="linenos">6446</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-6447"><a href="#L-6447"><span class="linenos">6447</span></a><span class="sd"> that an input expression is a SQL string).</span> -</span><span id="L-6448"><a href="#L-6448"><span class="linenos">6448</span></a> -</span><span id="L-6449"><a href="#L-6449"><span class="linenos">6449</span></a><span class="sd"> Returns:</span> -</span><span id="L-6450"><a href="#L-6450"><span class="linenos">6450</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="L-6451"><a href="#L-6451"><span class="linenos">6451</span></a><span class="sd"> """</span> -</span><span id="L-6452"><a href="#L-6452"><span class="linenos">6452</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6453"><a href="#L-6453"><span class="linenos">6453</span></a> -</span><span id="L-6454"><a href="#L-6454"><span class="linenos">6454</span></a> -</span><span id="L-6455"><a href="#L-6455"><span class="linenos">6455</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-6456"><a href="#L-6456"><span class="linenos">6456</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6457"><a href="#L-6457"><span class="linenos">6457</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> -</span><span id="L-6458"><a href="#L-6458"><span class="linenos">6458</span></a> -</span><span id="L-6459"><a href="#L-6459"><span class="linenos">6459</span></a><span class="sd"> Example:</span> -</span><span id="L-6460"><a href="#L-6460"><span class="linenos">6460</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> -</span><span id="L-6461"><a href="#L-6461"><span class="linenos">6461</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> -</span><span id="L-6462"><a href="#L-6462"><span class="linenos">6462</span></a> -</span><span id="L-6463"><a href="#L-6463"><span class="linenos">6463</span></a><span class="sd"> Args:</span> -</span><span id="L-6464"><a href="#L-6464"><span class="linenos">6464</span></a><span class="sd"> *expression: the SQL code string to parse as the FROM expressions of a</span> -</span><span id="L-6465"><a href="#L-6465"><span class="linenos">6465</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6466"><a href="#L-6466"><span class="linenos">6466</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> -</span><span id="L-6467"><a href="#L-6467"><span class="linenos">6467</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-6468"><a href="#L-6468"><span class="linenos">6468</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-6469"><a href="#L-6469"><span class="linenos">6469</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="L-6470"><a href="#L-6470"><span class="linenos">6470</span></a> -</span><span id="L-6471"><a href="#L-6471"><span class="linenos">6471</span></a><span class="sd"> Returns:</span> -</span><span id="L-6472"><a href="#L-6472"><span class="linenos">6472</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="L-6473"><a href="#L-6473"><span class="linenos">6473</span></a><span class="sd"> """</span> -</span><span id="L-6474"><a href="#L-6474"><span class="linenos">6474</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6475"><a href="#L-6475"><span class="linenos">6475</span></a> -</span><span id="L-6476"><a href="#L-6476"><span class="linenos">6476</span></a> -</span><span id="L-6477"><a href="#L-6477"><span class="linenos">6477</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span> -</span><span id="L-6478"><a href="#L-6478"><span class="linenos">6478</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="L-6479"><a href="#L-6479"><span class="linenos">6479</span></a> <span class="n">properties</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> -</span><span id="L-6480"><a href="#L-6480"><span class="linenos">6480</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6481"><a href="#L-6481"><span class="linenos">6481</span></a> <span class="n">from_</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6482"><a href="#L-6482"><span class="linenos">6482</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-6483"><a href="#L-6483"><span class="linenos">6483</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6484"><a href="#L-6484"><span class="linenos">6484</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> -</span><span id="L-6485"><a href="#L-6485"><span class="linenos">6485</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6486"><a href="#L-6486"><span class="linenos">6486</span></a><span class="sd"> Creates an update statement.</span> -</span><span id="L-6487"><a href="#L-6487"><span class="linenos">6487</span></a> -</span><span id="L-6488"><a href="#L-6488"><span class="linenos">6488</span></a><span class="sd"> Example:</span> -</span><span id="L-6489"><a href="#L-6489"><span class="linenos">6489</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> -</span><span id="L-6490"><a href="#L-6490"><span class="linenos">6490</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> -</span><span id="L-6491"><a href="#L-6491"><span class="linenos">6491</span></a> -</span><span id="L-6492"><a href="#L-6492"><span class="linenos">6492</span></a><span class="sd"> Args:</span> -</span><span id="L-6493"><a href="#L-6493"><span class="linenos">6493</span></a><span class="sd"> *properties: dictionary of properties to set which are</span> -</span><span id="L-6494"><a href="#L-6494"><span class="linenos">6494</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> -</span><span id="L-6495"><a href="#L-6495"><span class="linenos">6495</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> -</span><span id="L-6496"><a href="#L-6496"><span class="linenos">6496</span></a><span class="sd"> from_: sql statement parsed into a FROM statement</span> -</span><span id="L-6497"><a href="#L-6497"><span class="linenos">6497</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="L-6498"><a href="#L-6498"><span class="linenos">6498</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-6499"><a href="#L-6499"><span class="linenos">6499</span></a> -</span><span id="L-6500"><a href="#L-6500"><span class="linenos">6500</span></a><span class="sd"> Returns:</span> -</span><span id="L-6501"><a href="#L-6501"><span class="linenos">6501</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> -</span><span id="L-6502"><a href="#L-6502"><span class="linenos">6502</span></a><span class="sd"> """</span> -</span><span id="L-6503"><a href="#L-6503"><span class="linenos">6503</span></a> <span class="n">update_expr</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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-6504"><a href="#L-6504"><span class="linenos">6504</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-6505"><a href="#L-6505"><span class="linenos">6505</span></a> <span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="L-6506"><a href="#L-6506"><span class="linenos">6506</span></a> <span class="p">[</span> -</span><span id="L-6507"><a href="#L-6507"><span class="linenos">6507</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> -</span><span id="L-6508"><a href="#L-6508"><span class="linenos">6508</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">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-6509"><a href="#L-6509"><span class="linenos">6509</span></a> <span class="p">],</span> -</span><span id="L-6510"><a href="#L-6510"><span class="linenos">6510</span></a> <span class="p">)</span> -</span><span id="L-6511"><a href="#L-6511"><span class="linenos">6511</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="L-6512"><a href="#L-6512"><span class="linenos">6512</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-6513"><a href="#L-6513"><span class="linenos">6513</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="L-6514"><a href="#L-6514"><span class="linenos">6514</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</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">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-6515"><a href="#L-6515"><span class="linenos">6515</span></a> <span class="p">)</span> -</span><span id="L-6516"><a href="#L-6516"><span class="linenos">6516</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="L-6517"><a href="#L-6517"><span class="linenos">6517</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="L-6518"><a href="#L-6518"><span class="linenos">6518</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="L-6437"><a href="#L-6437"><span class="linenos">6437</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> +</span><span id="L-6438"><a href="#L-6438"><span class="linenos">6438</span></a> +</span><span id="L-6439"><a href="#L-6439"><span class="linenos">6439</span></a> +</span><span id="L-6440"><a href="#L-6440"><span class="linenos">6440</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-6441"><a href="#L-6441"><span class="linenos">6441</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6442"><a href="#L-6442"><span class="linenos">6442</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> +</span><span id="L-6443"><a href="#L-6443"><span class="linenos">6443</span></a> +</span><span id="L-6444"><a href="#L-6444"><span class="linenos">6444</span></a><span class="sd"> Example:</span> +</span><span id="L-6445"><a href="#L-6445"><span class="linenos">6445</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> +</span><span id="L-6446"><a href="#L-6446"><span class="linenos">6446</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="L-6447"><a href="#L-6447"><span class="linenos">6447</span></a> +</span><span id="L-6448"><a href="#L-6448"><span class="linenos">6448</span></a><span class="sd"> Args:</span> +</span><span id="L-6449"><a href="#L-6449"><span class="linenos">6449</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> +</span><span id="L-6450"><a href="#L-6450"><span class="linenos">6450</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6451"><a href="#L-6451"><span class="linenos">6451</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="L-6452"><a href="#L-6452"><span class="linenos">6452</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-6453"><a href="#L-6453"><span class="linenos">6453</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-6454"><a href="#L-6454"><span class="linenos">6454</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="L-6455"><a href="#L-6455"><span class="linenos">6455</span></a> +</span><span id="L-6456"><a href="#L-6456"><span class="linenos">6456</span></a><span class="sd"> Returns:</span> +</span><span id="L-6457"><a href="#L-6457"><span class="linenos">6457</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="L-6458"><a href="#L-6458"><span class="linenos">6458</span></a><span class="sd"> """</span> +</span><span id="L-6459"><a href="#L-6459"><span class="linenos">6459</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6460"><a href="#L-6460"><span class="linenos">6460</span></a> +</span><span id="L-6461"><a href="#L-6461"><span class="linenos">6461</span></a> +</span><span id="L-6462"><a href="#L-6462"><span class="linenos">6462</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-6463"><a href="#L-6463"><span class="linenos">6463</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6464"><a href="#L-6464"><span class="linenos">6464</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> +</span><span id="L-6465"><a href="#L-6465"><span class="linenos">6465</span></a> +</span><span id="L-6466"><a href="#L-6466"><span class="linenos">6466</span></a><span class="sd"> Example:</span> +</span><span id="L-6467"><a href="#L-6467"><span class="linenos">6467</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> +</span><span id="L-6468"><a href="#L-6468"><span class="linenos">6468</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="L-6469"><a href="#L-6469"><span class="linenos">6469</span></a> +</span><span id="L-6470"><a href="#L-6470"><span class="linenos">6470</span></a><span class="sd"> Args:</span> +</span><span id="L-6471"><a href="#L-6471"><span class="linenos">6471</span></a><span class="sd"> *expression: the SQL code string to parse as the FROM expressions of a</span> +</span><span id="L-6472"><a href="#L-6472"><span class="linenos">6472</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6473"><a href="#L-6473"><span class="linenos">6473</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> +</span><span id="L-6474"><a href="#L-6474"><span class="linenos">6474</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-6475"><a href="#L-6475"><span class="linenos">6475</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-6476"><a href="#L-6476"><span class="linenos">6476</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="L-6477"><a href="#L-6477"><span class="linenos">6477</span></a> +</span><span id="L-6478"><a href="#L-6478"><span class="linenos">6478</span></a><span class="sd"> Returns:</span> +</span><span id="L-6479"><a href="#L-6479"><span class="linenos">6479</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="L-6480"><a href="#L-6480"><span class="linenos">6480</span></a><span class="sd"> """</span> +</span><span id="L-6481"><a href="#L-6481"><span class="linenos">6481</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6482"><a href="#L-6482"><span class="linenos">6482</span></a> +</span><span id="L-6483"><a href="#L-6483"><span class="linenos">6483</span></a> +</span><span id="L-6484"><a href="#L-6484"><span class="linenos">6484</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span> +</span><span id="L-6485"><a href="#L-6485"><span class="linenos">6485</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="L-6486"><a href="#L-6486"><span class="linenos">6486</span></a> <span class="n">properties</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> +</span><span id="L-6487"><a href="#L-6487"><span class="linenos">6487</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6488"><a href="#L-6488"><span class="linenos">6488</span></a> <span class="n">from_</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6489"><a href="#L-6489"><span class="linenos">6489</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-6490"><a href="#L-6490"><span class="linenos">6490</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6491"><a href="#L-6491"><span class="linenos">6491</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> +</span><span id="L-6492"><a href="#L-6492"><span class="linenos">6492</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6493"><a href="#L-6493"><span class="linenos">6493</span></a><span class="sd"> Creates an update statement.</span> +</span><span id="L-6494"><a href="#L-6494"><span class="linenos">6494</span></a> +</span><span id="L-6495"><a href="#L-6495"><span class="linenos">6495</span></a><span class="sd"> Example:</span> +</span><span id="L-6496"><a href="#L-6496"><span class="linenos">6496</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> +</span><span id="L-6497"><a href="#L-6497"><span class="linenos">6497</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> +</span><span id="L-6498"><a href="#L-6498"><span class="linenos">6498</span></a> +</span><span id="L-6499"><a href="#L-6499"><span class="linenos">6499</span></a><span class="sd"> Args:</span> +</span><span id="L-6500"><a href="#L-6500"><span class="linenos">6500</span></a><span class="sd"> *properties: dictionary of properties to set which are</span> +</span><span id="L-6501"><a href="#L-6501"><span class="linenos">6501</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> +</span><span id="L-6502"><a href="#L-6502"><span class="linenos">6502</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> +</span><span id="L-6503"><a href="#L-6503"><span class="linenos">6503</span></a><span class="sd"> from_: sql statement parsed into a FROM statement</span> +</span><span id="L-6504"><a href="#L-6504"><span class="linenos">6504</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="L-6505"><a href="#L-6505"><span class="linenos">6505</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6506"><a href="#L-6506"><span class="linenos">6506</span></a> +</span><span id="L-6507"><a href="#L-6507"><span class="linenos">6507</span></a><span class="sd"> Returns:</span> +</span><span id="L-6508"><a href="#L-6508"><span class="linenos">6508</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> +</span><span id="L-6509"><a href="#L-6509"><span class="linenos">6509</span></a><span class="sd"> """</span> +</span><span id="L-6510"><a href="#L-6510"><span class="linenos">6510</span></a> <span class="n">update_expr</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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-6511"><a href="#L-6511"><span class="linenos">6511</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-6512"><a href="#L-6512"><span class="linenos">6512</span></a> <span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="L-6513"><a href="#L-6513"><span class="linenos">6513</span></a> <span class="p">[</span> +</span><span id="L-6514"><a href="#L-6514"><span class="linenos">6514</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> +</span><span id="L-6515"><a href="#L-6515"><span class="linenos">6515</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">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-6516"><a href="#L-6516"><span class="linenos">6516</span></a> <span class="p">],</span> +</span><span id="L-6517"><a href="#L-6517"><span class="linenos">6517</span></a> <span class="p">)</span> +</span><span id="L-6518"><a href="#L-6518"><span class="linenos">6518</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> </span><span id="L-6519"><a href="#L-6519"><span class="linenos">6519</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-6520"><a href="#L-6520"><span class="linenos">6520</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="L-6521"><a href="#L-6521"><span class="linenos">6521</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</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">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-6520"><a href="#L-6520"><span class="linenos">6520</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="L-6521"><a href="#L-6521"><span class="linenos">6521</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</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">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> </span><span id="L-6522"><a href="#L-6522"><span class="linenos">6522</span></a> <span class="p">)</span> -</span><span id="L-6523"><a href="#L-6523"><span class="linenos">6523</span></a> <span class="k">return</span> <span class="n">update_expr</span> -</span><span id="L-6524"><a href="#L-6524"><span class="linenos">6524</span></a> -</span><span id="L-6525"><a href="#L-6525"><span class="linenos">6525</span></a> -</span><span id="L-6526"><a href="#L-6526"><span class="linenos">6526</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span> -</span><span id="L-6527"><a href="#L-6527"><span class="linenos">6527</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6528"><a href="#L-6528"><span class="linenos">6528</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6529"><a href="#L-6529"><span class="linenos">6529</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6530"><a href="#L-6530"><span class="linenos">6530</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-6531"><a href="#L-6531"><span class="linenos">6531</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6532"><a href="#L-6532"><span class="linenos">6532</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> -</span><span id="L-6533"><a href="#L-6533"><span class="linenos">6533</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6534"><a href="#L-6534"><span class="linenos">6534</span></a><span class="sd"> Builds a delete statement.</span> -</span><span id="L-6535"><a href="#L-6535"><span class="linenos">6535</span></a> -</span><span id="L-6536"><a href="#L-6536"><span class="linenos">6536</span></a><span class="sd"> Example:</span> -</span><span id="L-6537"><a href="#L-6537"><span class="linenos">6537</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> -</span><span id="L-6538"><a href="#L-6538"><span class="linenos">6538</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> -</span><span id="L-6539"><a href="#L-6539"><span class="linenos">6539</span></a> -</span><span id="L-6540"><a href="#L-6540"><span class="linenos">6540</span></a><span class="sd"> Args:</span> -</span><span id="L-6541"><a href="#L-6541"><span class="linenos">6541</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> -</span><span id="L-6542"><a href="#L-6542"><span class="linenos">6542</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> -</span><span id="L-6543"><a href="#L-6543"><span class="linenos">6543</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="L-6544"><a href="#L-6544"><span class="linenos">6544</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-6545"><a href="#L-6545"><span class="linenos">6545</span></a> -</span><span id="L-6546"><a href="#L-6546"><span class="linenos">6546</span></a><span class="sd"> Returns:</span> -</span><span id="L-6547"><a href="#L-6547"><span class="linenos">6547</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> -</span><span id="L-6548"><a href="#L-6548"><span class="linenos">6548</span></a><span class="sd"> """</span> -</span><span id="L-6549"><a href="#L-6549"><span class="linenos">6549</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">Delete</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6550"><a href="#L-6550"><span class="linenos">6550</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> -</span><span id="L-6551"><a href="#L-6551"><span class="linenos">6551</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6552"><a href="#L-6552"><span class="linenos">6552</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> -</span><span id="L-6553"><a href="#L-6553"><span class="linenos">6553</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> -</span><span id="L-6554"><a href="#L-6554"><span class="linenos">6554</span></a> <span class="n">Delete</span><span class="p">,</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6555"><a href="#L-6555"><span class="linenos">6555</span></a> <span class="p">)</span> -</span><span id="L-6556"><a href="#L-6556"><span class="linenos">6556</span></a> <span class="k">return</span> <span class="n">delete_expr</span> -</span><span id="L-6557"><a href="#L-6557"><span class="linenos">6557</span></a> -</span><span id="L-6558"><a href="#L-6558"><span class="linenos">6558</span></a> -</span><span id="L-6559"><a href="#L-6559"><span class="linenos">6559</span></a><span class="k">def</span> <span class="nf">insert</span><span class="p">(</span> -</span><span id="L-6560"><a href="#L-6560"><span class="linenos">6560</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6561"><a href="#L-6561"><span class="linenos">6561</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6562"><a href="#L-6562"><span class="linenos">6562</span></a> <span class="n">columns</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">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6563"><a href="#L-6563"><span class="linenos">6563</span></a> <span class="n">overwrite</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">None</span><span class="p">,</span> -</span><span id="L-6564"><a href="#L-6564"><span class="linenos">6564</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6565"><a href="#L-6565"><span class="linenos">6565</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-6566"><a href="#L-6566"><span class="linenos">6566</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6567"><a href="#L-6567"><span class="linenos">6567</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6568"><a href="#L-6568"><span class="linenos">6568</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Insert</span><span class="p">:</span> -</span><span id="L-6569"><a href="#L-6569"><span class="linenos">6569</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6570"><a href="#L-6570"><span class="linenos">6570</span></a><span class="sd"> Builds an INSERT statement.</span> -</span><span id="L-6571"><a href="#L-6571"><span class="linenos">6571</span></a> -</span><span id="L-6572"><a href="#L-6572"><span class="linenos">6572</span></a><span class="sd"> Example:</span> -</span><span id="L-6573"><a href="#L-6573"><span class="linenos">6573</span></a><span class="sd"> >>> insert("VALUES (1, 2, 3)", "tbl").sql()</span> -</span><span id="L-6574"><a href="#L-6574"><span class="linenos">6574</span></a><span class="sd"> 'INSERT INTO tbl VALUES (1, 2, 3)'</span> -</span><span id="L-6575"><a href="#L-6575"><span class="linenos">6575</span></a> -</span><span id="L-6576"><a href="#L-6576"><span class="linenos">6576</span></a><span class="sd"> Args:</span> -</span><span id="L-6577"><a href="#L-6577"><span class="linenos">6577</span></a><span class="sd"> expression: the sql string or expression of the INSERT statement</span> -</span><span id="L-6578"><a href="#L-6578"><span class="linenos">6578</span></a><span class="sd"> into: the tbl to insert data to.</span> -</span><span id="L-6579"><a href="#L-6579"><span class="linenos">6579</span></a><span class="sd"> columns: optionally the table's column names.</span> -</span><span id="L-6580"><a href="#L-6580"><span class="linenos">6580</span></a><span class="sd"> overwrite: whether to INSERT OVERWRITE or not.</span> -</span><span id="L-6581"><a href="#L-6581"><span class="linenos">6581</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> -</span><span id="L-6582"><a href="#L-6582"><span class="linenos">6582</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="L-6583"><a href="#L-6583"><span class="linenos">6583</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-6584"><a href="#L-6584"><span class="linenos">6584</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-6585"><a href="#L-6585"><span class="linenos">6585</span></a> -</span><span id="L-6586"><a href="#L-6586"><span class="linenos">6586</span></a><span class="sd"> Returns:</span> -</span><span id="L-6587"><a href="#L-6587"><span class="linenos">6587</span></a><span class="sd"> Insert: the syntax tree for the INSERT statement.</span> -</span><span id="L-6588"><a href="#L-6588"><span class="linenos">6588</span></a><span class="sd"> """</span> -</span><span id="L-6589"><a href="#L-6589"><span class="linenos">6589</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6590"><a href="#L-6590"><span class="linenos">6590</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="n">Schema</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6591"><a href="#L-6591"><span class="linenos">6591</span></a> -</span><span id="L-6592"><a href="#L-6592"><span class="linenos">6592</span></a> <span class="k">if</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="L-6593"><a href="#L-6593"><span class="linenos">6593</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> -</span><span id="L-6594"><a href="#L-6594"><span class="linenos">6594</span></a> -</span><span id="L-6595"><a href="#L-6595"><span class="linenos">6595</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">Insert</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">)</span> -</span><span id="L-6596"><a href="#L-6596"><span class="linenos">6596</span></a> -</span><span id="L-6597"><a href="#L-6597"><span class="linenos">6597</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> -</span><span id="L-6598"><a href="#L-6598"><span class="linenos">6598</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Insert</span><span class="p">,</span> <span class="n">insert</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="L-6599"><a href="#L-6599"><span class="linenos">6599</span></a> -</span><span id="L-6600"><a href="#L-6600"><span class="linenos">6600</span></a> <span class="k">return</span> <span class="n">insert</span> +</span><span id="L-6523"><a href="#L-6523"><span class="linenos">6523</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="L-6524"><a href="#L-6524"><span class="linenos">6524</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="L-6525"><a href="#L-6525"><span class="linenos">6525</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="L-6526"><a href="#L-6526"><span class="linenos">6526</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-6527"><a href="#L-6527"><span class="linenos">6527</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="L-6528"><a href="#L-6528"><span class="linenos">6528</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</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">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-6529"><a href="#L-6529"><span class="linenos">6529</span></a> <span class="p">)</span> +</span><span id="L-6530"><a href="#L-6530"><span class="linenos">6530</span></a> <span class="k">return</span> <span class="n">update_expr</span> +</span><span id="L-6531"><a href="#L-6531"><span class="linenos">6531</span></a> +</span><span id="L-6532"><a href="#L-6532"><span class="linenos">6532</span></a> +</span><span id="L-6533"><a href="#L-6533"><span class="linenos">6533</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span> +</span><span id="L-6534"><a href="#L-6534"><span class="linenos">6534</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6535"><a href="#L-6535"><span class="linenos">6535</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6536"><a href="#L-6536"><span class="linenos">6536</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6537"><a href="#L-6537"><span class="linenos">6537</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-6538"><a href="#L-6538"><span class="linenos">6538</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6539"><a href="#L-6539"><span class="linenos">6539</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> +</span><span id="L-6540"><a href="#L-6540"><span class="linenos">6540</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6541"><a href="#L-6541"><span class="linenos">6541</span></a><span class="sd"> Builds a delete statement.</span> +</span><span id="L-6542"><a href="#L-6542"><span class="linenos">6542</span></a> +</span><span id="L-6543"><a href="#L-6543"><span class="linenos">6543</span></a><span class="sd"> Example:</span> +</span><span id="L-6544"><a href="#L-6544"><span class="linenos">6544</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> +</span><span id="L-6545"><a href="#L-6545"><span class="linenos">6545</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> +</span><span id="L-6546"><a href="#L-6546"><span class="linenos">6546</span></a> +</span><span id="L-6547"><a href="#L-6547"><span class="linenos">6547</span></a><span class="sd"> Args:</span> +</span><span id="L-6548"><a href="#L-6548"><span class="linenos">6548</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> +</span><span id="L-6549"><a href="#L-6549"><span class="linenos">6549</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> +</span><span id="L-6550"><a href="#L-6550"><span class="linenos">6550</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="L-6551"><a href="#L-6551"><span class="linenos">6551</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6552"><a href="#L-6552"><span class="linenos">6552</span></a> +</span><span id="L-6553"><a href="#L-6553"><span class="linenos">6553</span></a><span class="sd"> Returns:</span> +</span><span id="L-6554"><a href="#L-6554"><span class="linenos">6554</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> +</span><span id="L-6555"><a href="#L-6555"><span class="linenos">6555</span></a><span class="sd"> """</span> +</span><span id="L-6556"><a href="#L-6556"><span class="linenos">6556</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">Delete</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6557"><a href="#L-6557"><span class="linenos">6557</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="L-6558"><a href="#L-6558"><span class="linenos">6558</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6559"><a href="#L-6559"><span class="linenos">6559</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> +</span><span id="L-6560"><a href="#L-6560"><span class="linenos">6560</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> +</span><span id="L-6561"><a href="#L-6561"><span class="linenos">6561</span></a> <span class="n">Delete</span><span class="p">,</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6562"><a href="#L-6562"><span class="linenos">6562</span></a> <span class="p">)</span> +</span><span id="L-6563"><a href="#L-6563"><span class="linenos">6563</span></a> <span class="k">return</span> <span class="n">delete_expr</span> +</span><span id="L-6564"><a href="#L-6564"><span class="linenos">6564</span></a> +</span><span id="L-6565"><a href="#L-6565"><span class="linenos">6565</span></a> +</span><span id="L-6566"><a href="#L-6566"><span class="linenos">6566</span></a><span class="k">def</span> <span class="nf">insert</span><span class="p">(</span> +</span><span id="L-6567"><a href="#L-6567"><span class="linenos">6567</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6568"><a href="#L-6568"><span class="linenos">6568</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6569"><a href="#L-6569"><span class="linenos">6569</span></a> <span class="n">columns</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">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6570"><a href="#L-6570"><span class="linenos">6570</span></a> <span class="n">overwrite</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">None</span><span class="p">,</span> +</span><span id="L-6571"><a href="#L-6571"><span class="linenos">6571</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6572"><a href="#L-6572"><span class="linenos">6572</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-6573"><a href="#L-6573"><span class="linenos">6573</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6574"><a href="#L-6574"><span class="linenos">6574</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6575"><a href="#L-6575"><span class="linenos">6575</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Insert</span><span class="p">:</span> +</span><span id="L-6576"><a href="#L-6576"><span class="linenos">6576</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6577"><a href="#L-6577"><span class="linenos">6577</span></a><span class="sd"> Builds an INSERT statement.</span> +</span><span id="L-6578"><a href="#L-6578"><span class="linenos">6578</span></a> +</span><span id="L-6579"><a href="#L-6579"><span class="linenos">6579</span></a><span class="sd"> Example:</span> +</span><span id="L-6580"><a href="#L-6580"><span class="linenos">6580</span></a><span class="sd"> >>> insert("VALUES (1, 2, 3)", "tbl").sql()</span> +</span><span id="L-6581"><a href="#L-6581"><span class="linenos">6581</span></a><span class="sd"> 'INSERT INTO tbl VALUES (1, 2, 3)'</span> +</span><span id="L-6582"><a href="#L-6582"><span class="linenos">6582</span></a> +</span><span id="L-6583"><a href="#L-6583"><span class="linenos">6583</span></a><span class="sd"> Args:</span> +</span><span id="L-6584"><a href="#L-6584"><span class="linenos">6584</span></a><span class="sd"> expression: the sql string or expression of the INSERT statement</span> +</span><span id="L-6585"><a href="#L-6585"><span class="linenos">6585</span></a><span class="sd"> into: the tbl to insert data to.</span> +</span><span id="L-6586"><a href="#L-6586"><span class="linenos">6586</span></a><span class="sd"> columns: optionally the table's column names.</span> +</span><span id="L-6587"><a href="#L-6587"><span class="linenos">6587</span></a><span class="sd"> overwrite: whether to INSERT OVERWRITE or not.</span> +</span><span id="L-6588"><a href="#L-6588"><span class="linenos">6588</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> +</span><span id="L-6589"><a href="#L-6589"><span class="linenos">6589</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="L-6590"><a href="#L-6590"><span class="linenos">6590</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-6591"><a href="#L-6591"><span class="linenos">6591</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6592"><a href="#L-6592"><span class="linenos">6592</span></a> +</span><span id="L-6593"><a href="#L-6593"><span class="linenos">6593</span></a><span class="sd"> Returns:</span> +</span><span id="L-6594"><a href="#L-6594"><span class="linenos">6594</span></a><span class="sd"> Insert: the syntax tree for the INSERT statement.</span> +</span><span id="L-6595"><a href="#L-6595"><span class="linenos">6595</span></a><span class="sd"> """</span> +</span><span id="L-6596"><a href="#L-6596"><span class="linenos">6596</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6597"><a href="#L-6597"><span class="linenos">6597</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="n">Schema</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6598"><a href="#L-6598"><span class="linenos">6598</span></a> +</span><span id="L-6599"><a href="#L-6599"><span class="linenos">6599</span></a> <span class="k">if</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="L-6600"><a href="#L-6600"><span class="linenos">6600</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> </span><span id="L-6601"><a href="#L-6601"><span class="linenos">6601</span></a> -</span><span id="L-6602"><a href="#L-6602"><span class="linenos">6602</span></a> -</span><span id="L-6603"><a href="#L-6603"><span class="linenos">6603</span></a><span class="k">def</span> <span class="nf">condition</span><span class="p">(</span> -</span><span id="L-6604"><a href="#L-6604"><span class="linenos">6604</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="L-6605"><a href="#L-6605"><span class="linenos">6605</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="L-6606"><a href="#L-6606"><span class="linenos">6606</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6607"><a href="#L-6607"><span class="linenos">6607</span></a><span class="sd"> Initialize a logical condition expression.</span> +</span><span id="L-6602"><a href="#L-6602"><span class="linenos">6602</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">Insert</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">)</span> +</span><span id="L-6603"><a href="#L-6603"><span class="linenos">6603</span></a> +</span><span id="L-6604"><a href="#L-6604"><span class="linenos">6604</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> +</span><span id="L-6605"><a href="#L-6605"><span class="linenos">6605</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Insert</span><span class="p">,</span> <span class="n">insert</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="L-6606"><a href="#L-6606"><span class="linenos">6606</span></a> +</span><span id="L-6607"><a href="#L-6607"><span class="linenos">6607</span></a> <span class="k">return</span> <span class="n">insert</span> </span><span id="L-6608"><a href="#L-6608"><span class="linenos">6608</span></a> -</span><span id="L-6609"><a href="#L-6609"><span class="linenos">6609</span></a><span class="sd"> Example:</span> -</span><span id="L-6610"><a href="#L-6610"><span class="linenos">6610</span></a><span class="sd"> >>> condition("x=1").sql()</span> -</span><span id="L-6611"><a href="#L-6611"><span class="linenos">6611</span></a><span class="sd"> 'x = 1'</span> -</span><span id="L-6612"><a href="#L-6612"><span class="linenos">6612</span></a> -</span><span id="L-6613"><a href="#L-6613"><span class="linenos">6613</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> -</span><span id="L-6614"><a href="#L-6614"><span class="linenos">6614</span></a><span class="sd"> >>> where = condition("x=1")</span> -</span><span id="L-6615"><a href="#L-6615"><span class="linenos">6615</span></a><span class="sd"> >>> where = where.and_("y=1")</span> -</span><span id="L-6616"><a href="#L-6616"><span class="linenos">6616</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> -</span><span id="L-6617"><a href="#L-6617"><span class="linenos">6617</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> -</span><span id="L-6618"><a href="#L-6618"><span class="linenos">6618</span></a> -</span><span id="L-6619"><a href="#L-6619"><span class="linenos">6619</span></a><span class="sd"> Args:</span> -</span><span id="L-6620"><a href="#L-6620"><span class="linenos">6620</span></a><span class="sd"> *expression: the SQL code string to parse.</span> -</span><span id="L-6621"><a href="#L-6621"><span class="linenos">6621</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6622"><a href="#L-6622"><span class="linenos">6622</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> -</span><span id="L-6623"><a href="#L-6623"><span class="linenos">6623</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-6624"><a href="#L-6624"><span class="linenos">6624</span></a><span class="sd"> copy: Whether to copy `expression` (only applies to expressions).</span> -</span><span id="L-6625"><a href="#L-6625"><span class="linenos">6625</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-6626"><a href="#L-6626"><span class="linenos">6626</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="L-6627"><a href="#L-6627"><span class="linenos">6627</span></a> -</span><span id="L-6628"><a href="#L-6628"><span class="linenos">6628</span></a><span class="sd"> Returns:</span> -</span><span id="L-6629"><a href="#L-6629"><span class="linenos">6629</span></a><span class="sd"> The new Condition instance</span> -</span><span id="L-6630"><a href="#L-6630"><span class="linenos">6630</span></a><span class="sd"> """</span> -</span><span id="L-6631"><a href="#L-6631"><span class="linenos">6631</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-6632"><a href="#L-6632"><span class="linenos">6632</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-6633"><a href="#L-6633"><span class="linenos">6633</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> -</span><span id="L-6634"><a href="#L-6634"><span class="linenos">6634</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-6635"><a href="#L-6635"><span class="linenos">6635</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-6636"><a href="#L-6636"><span class="linenos">6636</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6637"><a href="#L-6637"><span class="linenos">6637</span></a> <span class="p">)</span> -</span><span id="L-6638"><a href="#L-6638"><span class="linenos">6638</span></a> -</span><span id="L-6639"><a href="#L-6639"><span class="linenos">6639</span></a> -</span><span id="L-6640"><a href="#L-6640"><span class="linenos">6640</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span> -</span><span id="L-6641"><a href="#L-6641"><span class="linenos">6641</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="L-6642"><a href="#L-6642"><span class="linenos">6642</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="L-6643"><a href="#L-6643"><span class="linenos">6643</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6644"><a href="#L-6644"><span class="linenos">6644</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> +</span><span id="L-6609"><a href="#L-6609"><span class="linenos">6609</span></a> +</span><span id="L-6610"><a href="#L-6610"><span class="linenos">6610</span></a><span class="k">def</span> <span class="nf">condition</span><span class="p">(</span> +</span><span id="L-6611"><a href="#L-6611"><span class="linenos">6611</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="L-6612"><a href="#L-6612"><span class="linenos">6612</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="L-6613"><a href="#L-6613"><span class="linenos">6613</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6614"><a href="#L-6614"><span class="linenos">6614</span></a><span class="sd"> Initialize a logical condition expression.</span> +</span><span id="L-6615"><a href="#L-6615"><span class="linenos">6615</span></a> +</span><span id="L-6616"><a href="#L-6616"><span class="linenos">6616</span></a><span class="sd"> Example:</span> +</span><span id="L-6617"><a href="#L-6617"><span class="linenos">6617</span></a><span class="sd"> >>> condition("x=1").sql()</span> +</span><span id="L-6618"><a href="#L-6618"><span class="linenos">6618</span></a><span class="sd"> 'x = 1'</span> +</span><span id="L-6619"><a href="#L-6619"><span class="linenos">6619</span></a> +</span><span id="L-6620"><a href="#L-6620"><span class="linenos">6620</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> +</span><span id="L-6621"><a href="#L-6621"><span class="linenos">6621</span></a><span class="sd"> >>> where = condition("x=1")</span> +</span><span id="L-6622"><a href="#L-6622"><span class="linenos">6622</span></a><span class="sd"> >>> where = where.and_("y=1")</span> +</span><span id="L-6623"><a href="#L-6623"><span class="linenos">6623</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> +</span><span id="L-6624"><a href="#L-6624"><span class="linenos">6624</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> +</span><span id="L-6625"><a href="#L-6625"><span class="linenos">6625</span></a> +</span><span id="L-6626"><a href="#L-6626"><span class="linenos">6626</span></a><span class="sd"> Args:</span> +</span><span id="L-6627"><a href="#L-6627"><span class="linenos">6627</span></a><span class="sd"> *expression: the SQL code string to parse.</span> +</span><span id="L-6628"><a href="#L-6628"><span class="linenos">6628</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6629"><a href="#L-6629"><span class="linenos">6629</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> +</span><span id="L-6630"><a href="#L-6630"><span class="linenos">6630</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-6631"><a href="#L-6631"><span class="linenos">6631</span></a><span class="sd"> copy: Whether to copy `expression` (only applies to expressions).</span> +</span><span id="L-6632"><a href="#L-6632"><span class="linenos">6632</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-6633"><a href="#L-6633"><span class="linenos">6633</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="L-6634"><a href="#L-6634"><span class="linenos">6634</span></a> +</span><span id="L-6635"><a href="#L-6635"><span class="linenos">6635</span></a><span class="sd"> Returns:</span> +</span><span id="L-6636"><a href="#L-6636"><span class="linenos">6636</span></a><span class="sd"> The new Condition instance</span> +</span><span id="L-6637"><a href="#L-6637"><span class="linenos">6637</span></a><span class="sd"> """</span> +</span><span id="L-6638"><a href="#L-6638"><span class="linenos">6638</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-6639"><a href="#L-6639"><span class="linenos">6639</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-6640"><a href="#L-6640"><span class="linenos">6640</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> +</span><span id="L-6641"><a href="#L-6641"><span class="linenos">6641</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-6642"><a href="#L-6642"><span class="linenos">6642</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-6643"><a href="#L-6643"><span class="linenos">6643</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6644"><a href="#L-6644"><span class="linenos">6644</span></a> <span class="p">)</span> </span><span id="L-6645"><a href="#L-6645"><span class="linenos">6645</span></a> -</span><span id="L-6646"><a href="#L-6646"><span class="linenos">6646</span></a><span class="sd"> Example:</span> -</span><span id="L-6647"><a href="#L-6647"><span class="linenos">6647</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> -</span><span id="L-6648"><a href="#L-6648"><span class="linenos">6648</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> -</span><span id="L-6649"><a href="#L-6649"><span class="linenos">6649</span></a> -</span><span id="L-6650"><a href="#L-6650"><span class="linenos">6650</span></a><span class="sd"> Args:</span> -</span><span id="L-6651"><a href="#L-6651"><span class="linenos">6651</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="L-6652"><a href="#L-6652"><span class="linenos">6652</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6653"><a href="#L-6653"><span class="linenos">6653</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6654"><a href="#L-6654"><span class="linenos">6654</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> -</span><span id="L-6655"><a href="#L-6655"><span class="linenos">6655</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6646"><a href="#L-6646"><span class="linenos">6646</span></a> +</span><span id="L-6647"><a href="#L-6647"><span class="linenos">6647</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span> +</span><span id="L-6648"><a href="#L-6648"><span class="linenos">6648</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="L-6649"><a href="#L-6649"><span class="linenos">6649</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="L-6650"><a href="#L-6650"><span class="linenos">6650</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6651"><a href="#L-6651"><span class="linenos">6651</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> +</span><span id="L-6652"><a href="#L-6652"><span class="linenos">6652</span></a> +</span><span id="L-6653"><a href="#L-6653"><span class="linenos">6653</span></a><span class="sd"> Example:</span> +</span><span id="L-6654"><a href="#L-6654"><span class="linenos">6654</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> +</span><span id="L-6655"><a href="#L-6655"><span class="linenos">6655</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> </span><span id="L-6656"><a href="#L-6656"><span class="linenos">6656</span></a> -</span><span id="L-6657"><a href="#L-6657"><span class="linenos">6657</span></a><span class="sd"> Returns:</span> -</span><span id="L-6658"><a href="#L-6658"><span class="linenos">6658</span></a><span class="sd"> The new condition</span> -</span><span id="L-6659"><a href="#L-6659"><span class="linenos">6659</span></a><span class="sd"> """</span> -</span><span id="L-6660"><a href="#L-6660"><span class="linenos">6660</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="L-6661"><a href="#L-6661"><span class="linenos">6661</span></a> -</span><span id="L-6662"><a href="#L-6662"><span class="linenos">6662</span></a> -</span><span id="L-6663"><a href="#L-6663"><span class="linenos">6663</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span> -</span><span id="L-6664"><a href="#L-6664"><span class="linenos">6664</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="L-6665"><a href="#L-6665"><span class="linenos">6665</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="L-6666"><a href="#L-6666"><span class="linenos">6666</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6667"><a href="#L-6667"><span class="linenos">6667</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> +</span><span id="L-6657"><a href="#L-6657"><span class="linenos">6657</span></a><span class="sd"> Args:</span> +</span><span id="L-6658"><a href="#L-6658"><span class="linenos">6658</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="L-6659"><a href="#L-6659"><span class="linenos">6659</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6660"><a href="#L-6660"><span class="linenos">6660</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6661"><a href="#L-6661"><span class="linenos">6661</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> +</span><span id="L-6662"><a href="#L-6662"><span class="linenos">6662</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6663"><a href="#L-6663"><span class="linenos">6663</span></a> +</span><span id="L-6664"><a href="#L-6664"><span class="linenos">6664</span></a><span class="sd"> Returns:</span> +</span><span id="L-6665"><a href="#L-6665"><span class="linenos">6665</span></a><span class="sd"> The new condition</span> +</span><span id="L-6666"><a href="#L-6666"><span class="linenos">6666</span></a><span class="sd"> """</span> +</span><span id="L-6667"><a href="#L-6667"><span class="linenos">6667</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> </span><span id="L-6668"><a href="#L-6668"><span class="linenos">6668</span></a> -</span><span id="L-6669"><a href="#L-6669"><span class="linenos">6669</span></a><span class="sd"> Example:</span> -</span><span id="L-6670"><a href="#L-6670"><span class="linenos">6670</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> -</span><span id="L-6671"><a href="#L-6671"><span class="linenos">6671</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> -</span><span id="L-6672"><a href="#L-6672"><span class="linenos">6672</span></a> -</span><span id="L-6673"><a href="#L-6673"><span class="linenos">6673</span></a><span class="sd"> Args:</span> -</span><span id="L-6674"><a href="#L-6674"><span class="linenos">6674</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="L-6675"><a href="#L-6675"><span class="linenos">6675</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6676"><a href="#L-6676"><span class="linenos">6676</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6677"><a href="#L-6677"><span class="linenos">6677</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> -</span><span id="L-6678"><a href="#L-6678"><span class="linenos">6678</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6669"><a href="#L-6669"><span class="linenos">6669</span></a> +</span><span id="L-6670"><a href="#L-6670"><span class="linenos">6670</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span> +</span><span id="L-6671"><a href="#L-6671"><span class="linenos">6671</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="L-6672"><a href="#L-6672"><span class="linenos">6672</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="L-6673"><a href="#L-6673"><span class="linenos">6673</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6674"><a href="#L-6674"><span class="linenos">6674</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> +</span><span id="L-6675"><a href="#L-6675"><span class="linenos">6675</span></a> +</span><span id="L-6676"><a href="#L-6676"><span class="linenos">6676</span></a><span class="sd"> Example:</span> +</span><span id="L-6677"><a href="#L-6677"><span class="linenos">6677</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> +</span><span id="L-6678"><a href="#L-6678"><span class="linenos">6678</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> </span><span id="L-6679"><a href="#L-6679"><span class="linenos">6679</span></a> -</span><span id="L-6680"><a href="#L-6680"><span class="linenos">6680</span></a><span class="sd"> Returns:</span> -</span><span id="L-6681"><a href="#L-6681"><span class="linenos">6681</span></a><span class="sd"> The new condition</span> -</span><span id="L-6682"><a href="#L-6682"><span class="linenos">6682</span></a><span class="sd"> """</span> -</span><span id="L-6683"><a href="#L-6683"><span class="linenos">6683</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="L-6684"><a href="#L-6684"><span class="linenos">6684</span></a> -</span><span id="L-6685"><a href="#L-6685"><span class="linenos">6685</span></a> -</span><span id="L-6686"><a href="#L-6686"><span class="linenos">6686</span></a><span class="k">def</span> <span class="nf">xor</span><span class="p">(</span> -</span><span id="L-6687"><a href="#L-6687"><span class="linenos">6687</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="L-6688"><a href="#L-6688"><span class="linenos">6688</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="L-6689"><a href="#L-6689"><span class="linenos">6689</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6690"><a href="#L-6690"><span class="linenos">6690</span></a><span class="sd"> Combine multiple conditions with an XOR logical operator.</span> +</span><span id="L-6680"><a href="#L-6680"><span class="linenos">6680</span></a><span class="sd"> Args:</span> +</span><span id="L-6681"><a href="#L-6681"><span class="linenos">6681</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="L-6682"><a href="#L-6682"><span class="linenos">6682</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6683"><a href="#L-6683"><span class="linenos">6683</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6684"><a href="#L-6684"><span class="linenos">6684</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> +</span><span id="L-6685"><a href="#L-6685"><span class="linenos">6685</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6686"><a href="#L-6686"><span class="linenos">6686</span></a> +</span><span id="L-6687"><a href="#L-6687"><span class="linenos">6687</span></a><span class="sd"> Returns:</span> +</span><span id="L-6688"><a href="#L-6688"><span class="linenos">6688</span></a><span class="sd"> The new condition</span> +</span><span id="L-6689"><a href="#L-6689"><span class="linenos">6689</span></a><span class="sd"> """</span> +</span><span id="L-6690"><a href="#L-6690"><span class="linenos">6690</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> </span><span id="L-6691"><a href="#L-6691"><span class="linenos">6691</span></a> -</span><span id="L-6692"><a href="#L-6692"><span class="linenos">6692</span></a><span class="sd"> Example:</span> -</span><span id="L-6693"><a href="#L-6693"><span class="linenos">6693</span></a><span class="sd"> >>> xor("x=1", xor("y=1", "z=1")).sql()</span> -</span><span id="L-6694"><a href="#L-6694"><span class="linenos">6694</span></a><span class="sd"> 'x = 1 XOR (y = 1 XOR z = 1)'</span> -</span><span id="L-6695"><a href="#L-6695"><span class="linenos">6695</span></a> -</span><span id="L-6696"><a href="#L-6696"><span class="linenos">6696</span></a><span class="sd"> Args:</span> -</span><span id="L-6697"><a href="#L-6697"><span class="linenos">6697</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="L-6698"><a href="#L-6698"><span class="linenos">6698</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6699"><a href="#L-6699"><span class="linenos">6699</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6700"><a href="#L-6700"><span class="linenos">6700</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> -</span><span id="L-6701"><a href="#L-6701"><span class="linenos">6701</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6692"><a href="#L-6692"><span class="linenos">6692</span></a> +</span><span id="L-6693"><a href="#L-6693"><span class="linenos">6693</span></a><span class="k">def</span> <span class="nf">xor</span><span class="p">(</span> +</span><span id="L-6694"><a href="#L-6694"><span class="linenos">6694</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="L-6695"><a href="#L-6695"><span class="linenos">6695</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="L-6696"><a href="#L-6696"><span class="linenos">6696</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6697"><a href="#L-6697"><span class="linenos">6697</span></a><span class="sd"> Combine multiple conditions with an XOR logical operator.</span> +</span><span id="L-6698"><a href="#L-6698"><span class="linenos">6698</span></a> +</span><span id="L-6699"><a href="#L-6699"><span class="linenos">6699</span></a><span class="sd"> Example:</span> +</span><span id="L-6700"><a href="#L-6700"><span class="linenos">6700</span></a><span class="sd"> >>> xor("x=1", xor("y=1", "z=1")).sql()</span> +</span><span id="L-6701"><a href="#L-6701"><span class="linenos">6701</span></a><span class="sd"> 'x = 1 XOR (y = 1 XOR z = 1)'</span> </span><span id="L-6702"><a href="#L-6702"><span class="linenos">6702</span></a> -</span><span id="L-6703"><a href="#L-6703"><span class="linenos">6703</span></a><span class="sd"> Returns:</span> -</span><span id="L-6704"><a href="#L-6704"><span class="linenos">6704</span></a><span class="sd"> The new condition</span> -</span><span id="L-6705"><a href="#L-6705"><span class="linenos">6705</span></a><span class="sd"> """</span> -</span><span id="L-6706"><a href="#L-6706"><span class="linenos">6706</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Xor</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="L-6707"><a href="#L-6707"><span class="linenos">6707</span></a> -</span><span id="L-6708"><a href="#L-6708"><span class="linenos">6708</span></a> -</span><span id="L-6709"><a href="#L-6709"><span class="linenos">6709</span></a><span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> -</span><span id="L-6710"><a href="#L-6710"><span class="linenos">6710</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6711"><a href="#L-6711"><span class="linenos">6711</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> -</span><span id="L-6712"><a href="#L-6712"><span class="linenos">6712</span></a> -</span><span id="L-6713"><a href="#L-6713"><span class="linenos">6713</span></a><span class="sd"> Example:</span> -</span><span id="L-6714"><a href="#L-6714"><span class="linenos">6714</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> -</span><span id="L-6715"><a href="#L-6715"><span class="linenos">6715</span></a><span class="sd"> "NOT this_suit = 'black'"</span> -</span><span id="L-6716"><a href="#L-6716"><span class="linenos">6716</span></a> -</span><span id="L-6717"><a href="#L-6717"><span class="linenos">6717</span></a><span class="sd"> Args:</span> -</span><span id="L-6718"><a href="#L-6718"><span class="linenos">6718</span></a><span class="sd"> expression: the SQL code string to parse.</span> -</span><span id="L-6719"><a href="#L-6719"><span class="linenos">6719</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6720"><a href="#L-6720"><span class="linenos">6720</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6721"><a href="#L-6721"><span class="linenos">6721</span></a><span class="sd"> copy: whether to copy the expression or not.</span> -</span><span id="L-6722"><a href="#L-6722"><span class="linenos">6722</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6703"><a href="#L-6703"><span class="linenos">6703</span></a><span class="sd"> Args:</span> +</span><span id="L-6704"><a href="#L-6704"><span class="linenos">6704</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="L-6705"><a href="#L-6705"><span class="linenos">6705</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6706"><a href="#L-6706"><span class="linenos">6706</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6707"><a href="#L-6707"><span class="linenos">6707</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> +</span><span id="L-6708"><a href="#L-6708"><span class="linenos">6708</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6709"><a href="#L-6709"><span class="linenos">6709</span></a> +</span><span id="L-6710"><a href="#L-6710"><span class="linenos">6710</span></a><span class="sd"> Returns:</span> +</span><span id="L-6711"><a href="#L-6711"><span class="linenos">6711</span></a><span class="sd"> The new condition</span> +</span><span id="L-6712"><a href="#L-6712"><span class="linenos">6712</span></a><span class="sd"> """</span> +</span><span id="L-6713"><a href="#L-6713"><span class="linenos">6713</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Xor</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="L-6714"><a href="#L-6714"><span class="linenos">6714</span></a> +</span><span id="L-6715"><a href="#L-6715"><span class="linenos">6715</span></a> +</span><span id="L-6716"><a href="#L-6716"><span class="linenos">6716</span></a><span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> +</span><span id="L-6717"><a href="#L-6717"><span class="linenos">6717</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6718"><a href="#L-6718"><span class="linenos">6718</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> +</span><span id="L-6719"><a href="#L-6719"><span class="linenos">6719</span></a> +</span><span id="L-6720"><a href="#L-6720"><span class="linenos">6720</span></a><span class="sd"> Example:</span> +</span><span id="L-6721"><a href="#L-6721"><span class="linenos">6721</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> +</span><span id="L-6722"><a href="#L-6722"><span class="linenos">6722</span></a><span class="sd"> "NOT this_suit = 'black'"</span> </span><span id="L-6723"><a href="#L-6723"><span class="linenos">6723</span></a> -</span><span id="L-6724"><a href="#L-6724"><span class="linenos">6724</span></a><span class="sd"> Returns:</span> -</span><span id="L-6725"><a href="#L-6725"><span class="linenos">6725</span></a><span class="sd"> The new condition.</span> -</span><span id="L-6726"><a href="#L-6726"><span class="linenos">6726</span></a><span class="sd"> """</span> -</span><span id="L-6727"><a href="#L-6727"><span class="linenos">6727</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> -</span><span id="L-6728"><a href="#L-6728"><span class="linenos">6728</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-6729"><a href="#L-6729"><span class="linenos">6729</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-6730"><a href="#L-6730"><span class="linenos">6730</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-6731"><a href="#L-6731"><span class="linenos">6731</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6732"><a href="#L-6732"><span class="linenos">6732</span></a> <span class="p">)</span> -</span><span id="L-6733"><a href="#L-6733"><span class="linenos">6733</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Connector</span><span class="p">))</span> -</span><span id="L-6734"><a href="#L-6734"><span class="linenos">6734</span></a> -</span><span id="L-6735"><a href="#L-6735"><span class="linenos">6735</span></a> -</span><span id="L-6736"><a href="#L-6736"><span class="linenos">6736</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> -</span><span id="L-6737"><a href="#L-6737"><span class="linenos">6737</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6738"><a href="#L-6738"><span class="linenos">6738</span></a><span class="sd"> Wrap an expression in parentheses.</span> -</span><span id="L-6739"><a href="#L-6739"><span class="linenos">6739</span></a> -</span><span id="L-6740"><a href="#L-6740"><span class="linenos">6740</span></a><span class="sd"> Example:</span> -</span><span id="L-6741"><a href="#L-6741"><span class="linenos">6741</span></a><span class="sd"> >>> paren("5 + 3").sql()</span> -</span><span id="L-6742"><a href="#L-6742"><span class="linenos">6742</span></a><span class="sd"> '(5 + 3)'</span> -</span><span id="L-6743"><a href="#L-6743"><span class="linenos">6743</span></a> -</span><span id="L-6744"><a href="#L-6744"><span class="linenos">6744</span></a><span class="sd"> Args:</span> -</span><span id="L-6745"><a href="#L-6745"><span class="linenos">6745</span></a><span class="sd"> expression: the SQL code string to parse.</span> -</span><span id="L-6746"><a href="#L-6746"><span class="linenos">6746</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6747"><a href="#L-6747"><span class="linenos">6747</span></a><span class="sd"> copy: whether to copy the expression or not.</span> -</span><span id="L-6748"><a href="#L-6748"><span class="linenos">6748</span></a> -</span><span id="L-6749"><a href="#L-6749"><span class="linenos">6749</span></a><span class="sd"> Returns:</span> -</span><span id="L-6750"><a href="#L-6750"><span class="linenos">6750</span></a><span class="sd"> The wrapped expression.</span> -</span><span id="L-6751"><a href="#L-6751"><span class="linenos">6751</span></a><span class="sd"> """</span> -</span><span id="L-6752"><a href="#L-6752"><span class="linenos">6752</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> -</span><span id="L-6753"><a href="#L-6753"><span class="linenos">6753</span></a> -</span><span id="L-6754"><a href="#L-6754"><span class="linenos">6754</span></a> -</span><span id="L-6755"><a href="#L-6755"><span class="linenos">6755</span></a><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Pattern</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^[_a-zA-Z][\w]*$"</span><span class="p">)</span> -</span><span id="L-6756"><a href="#L-6756"><span class="linenos">6756</span></a> -</span><span id="L-6757"><a href="#L-6757"><span class="linenos">6757</span></a> -</span><span id="L-6758"><a href="#L-6758"><span class="linenos">6758</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6759"><a href="#L-6759"><span class="linenos">6759</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">quoted</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">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6724"><a href="#L-6724"><span class="linenos">6724</span></a><span class="sd"> Args:</span> +</span><span id="L-6725"><a href="#L-6725"><span class="linenos">6725</span></a><span class="sd"> expression: the SQL code string to parse.</span> +</span><span id="L-6726"><a href="#L-6726"><span class="linenos">6726</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6727"><a href="#L-6727"><span class="linenos">6727</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6728"><a href="#L-6728"><span class="linenos">6728</span></a><span class="sd"> copy: whether to copy the expression or not.</span> +</span><span id="L-6729"><a href="#L-6729"><span class="linenos">6729</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6730"><a href="#L-6730"><span class="linenos">6730</span></a> +</span><span id="L-6731"><a href="#L-6731"><span class="linenos">6731</span></a><span class="sd"> Returns:</span> +</span><span id="L-6732"><a href="#L-6732"><span class="linenos">6732</span></a><span class="sd"> The new condition.</span> +</span><span id="L-6733"><a href="#L-6733"><span class="linenos">6733</span></a><span class="sd"> """</span> +</span><span id="L-6734"><a href="#L-6734"><span class="linenos">6734</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> +</span><span id="L-6735"><a href="#L-6735"><span class="linenos">6735</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-6736"><a href="#L-6736"><span class="linenos">6736</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-6737"><a href="#L-6737"><span class="linenos">6737</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-6738"><a href="#L-6738"><span class="linenos">6738</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6739"><a href="#L-6739"><span class="linenos">6739</span></a> <span class="p">)</span> +</span><span id="L-6740"><a href="#L-6740"><span class="linenos">6740</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Connector</span><span class="p">))</span> +</span><span id="L-6741"><a href="#L-6741"><span class="linenos">6741</span></a> +</span><span id="L-6742"><a href="#L-6742"><span class="linenos">6742</span></a> +</span><span id="L-6743"><a href="#L-6743"><span class="linenos">6743</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> +</span><span id="L-6744"><a href="#L-6744"><span class="linenos">6744</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6745"><a href="#L-6745"><span class="linenos">6745</span></a><span class="sd"> Wrap an expression in parentheses.</span> +</span><span id="L-6746"><a href="#L-6746"><span class="linenos">6746</span></a> +</span><span id="L-6747"><a href="#L-6747"><span class="linenos">6747</span></a><span class="sd"> Example:</span> +</span><span id="L-6748"><a href="#L-6748"><span class="linenos">6748</span></a><span class="sd"> >>> paren("5 + 3").sql()</span> +</span><span id="L-6749"><a href="#L-6749"><span class="linenos">6749</span></a><span class="sd"> '(5 + 3)'</span> +</span><span id="L-6750"><a href="#L-6750"><span class="linenos">6750</span></a> +</span><span id="L-6751"><a href="#L-6751"><span class="linenos">6751</span></a><span class="sd"> Args:</span> +</span><span id="L-6752"><a href="#L-6752"><span class="linenos">6752</span></a><span class="sd"> expression: the SQL code string to parse.</span> +</span><span id="L-6753"><a href="#L-6753"><span class="linenos">6753</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6754"><a href="#L-6754"><span class="linenos">6754</span></a><span class="sd"> copy: whether to copy the expression or not.</span> +</span><span id="L-6755"><a href="#L-6755"><span class="linenos">6755</span></a> +</span><span id="L-6756"><a href="#L-6756"><span class="linenos">6756</span></a><span class="sd"> Returns:</span> +</span><span id="L-6757"><a href="#L-6757"><span class="linenos">6757</span></a><span class="sd"> The wrapped expression.</span> +</span><span id="L-6758"><a href="#L-6758"><span class="linenos">6758</span></a><span class="sd"> """</span> +</span><span id="L-6759"><a href="#L-6759"><span class="linenos">6759</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> </span><span id="L-6760"><a href="#L-6760"><span class="linenos">6760</span></a> </span><span id="L-6761"><a href="#L-6761"><span class="linenos">6761</span></a> -</span><span id="L-6762"><a href="#L-6762"><span class="linenos">6762</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6763"><a href="#L-6763"><span class="linenos">6763</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span> -</span><span id="L-6764"><a href="#L-6764"><span class="linenos">6764</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">quoted</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">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-6765"><a href="#L-6765"><span class="linenos">6765</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> <span class="o">...</span> -</span><span id="L-6766"><a href="#L-6766"><span class="linenos">6766</span></a> +</span><span id="L-6762"><a href="#L-6762"><span class="linenos">6762</span></a><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Pattern</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^[_a-zA-Z][\w]*$"</span><span class="p">)</span> +</span><span id="L-6763"><a href="#L-6763"><span class="linenos">6763</span></a> +</span><span id="L-6764"><a href="#L-6764"><span class="linenos">6764</span></a> +</span><span id="L-6765"><a href="#L-6765"><span class="linenos">6765</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6766"><a href="#L-6766"><span class="linenos">6766</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">quoted</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">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span> </span><span id="L-6767"><a href="#L-6767"><span class="linenos">6767</span></a> -</span><span id="L-6768"><a href="#L-6768"><span class="linenos">6768</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-6769"><a href="#L-6769"><span class="linenos">6769</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> -</span><span id="L-6770"><a href="#L-6770"><span class="linenos">6770</span></a> -</span><span id="L-6771"><a href="#L-6771"><span class="linenos">6771</span></a><span class="sd"> Args:</span> -</span><span id="L-6772"><a href="#L-6772"><span class="linenos">6772</span></a><span class="sd"> name: The name to turn into an identifier.</span> -</span><span id="L-6773"><a href="#L-6773"><span class="linenos">6773</span></a><span class="sd"> quoted: Whether to force quote the identifier.</span> -</span><span id="L-6774"><a href="#L-6774"><span class="linenos">6774</span></a><span class="sd"> copy: Whether to copy name if it's an Identifier.</span> -</span><span id="L-6775"><a href="#L-6775"><span class="linenos">6775</span></a> -</span><span id="L-6776"><a href="#L-6776"><span class="linenos">6776</span></a><span class="sd"> Returns:</span> -</span><span id="L-6777"><a href="#L-6777"><span class="linenos">6777</span></a><span class="sd"> The identifier ast node.</span> -</span><span id="L-6778"><a href="#L-6778"><span class="linenos">6778</span></a><span class="sd"> """</span> -</span><span id="L-6779"><a href="#L-6779"><span class="linenos">6779</span></a> -</span><span id="L-6780"><a href="#L-6780"><span class="linenos">6780</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6781"><a href="#L-6781"><span class="linenos">6781</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6768"><a href="#L-6768"><span class="linenos">6768</span></a> +</span><span id="L-6769"><a href="#L-6769"><span class="linenos">6769</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6770"><a href="#L-6770"><span class="linenos">6770</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span> +</span><span id="L-6771"><a href="#L-6771"><span class="linenos">6771</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">quoted</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">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-6772"><a href="#L-6772"><span class="linenos">6772</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-6773"><a href="#L-6773"><span class="linenos">6773</span></a> +</span><span id="L-6774"><a href="#L-6774"><span class="linenos">6774</span></a> +</span><span id="L-6775"><a href="#L-6775"><span class="linenos">6775</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-6776"><a href="#L-6776"><span class="linenos">6776</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> +</span><span id="L-6777"><a href="#L-6777"><span class="linenos">6777</span></a> +</span><span id="L-6778"><a href="#L-6778"><span class="linenos">6778</span></a><span class="sd"> Args:</span> +</span><span id="L-6779"><a href="#L-6779"><span class="linenos">6779</span></a><span class="sd"> name: The name to turn into an identifier.</span> +</span><span id="L-6780"><a href="#L-6780"><span class="linenos">6780</span></a><span class="sd"> quoted: Whether to force quote the identifier.</span> +</span><span id="L-6781"><a href="#L-6781"><span class="linenos">6781</span></a><span class="sd"> copy: Whether to copy name if it's an Identifier.</span> </span><span id="L-6782"><a href="#L-6782"><span class="linenos">6782</span></a> -</span><span id="L-6783"><a href="#L-6783"><span class="linenos">6783</span></a> <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="n">Identifier</span><span class="p">):</span> -</span><span id="L-6784"><a href="#L-6784"><span class="linenos">6784</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-6785"><a href="#L-6785"><span class="linenos">6785</span></a> <span class="k">elif</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><span id="L-6786"><a href="#L-6786"><span class="linenos">6786</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> -</span><span id="L-6787"><a href="#L-6787"><span class="linenos">6787</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> -</span><span id="L-6788"><a href="#L-6788"><span class="linenos">6788</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> -</span><span id="L-6789"><a href="#L-6789"><span class="linenos">6789</span></a> <span class="p">)</span> -</span><span id="L-6790"><a href="#L-6790"><span class="linenos">6790</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6791"><a href="#L-6791"><span class="linenos">6791</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-6792"><a href="#L-6792"><span class="linenos">6792</span></a> <span class="k">return</span> <span class="n">identifier</span> -</span><span id="L-6793"><a href="#L-6793"><span class="linenos">6793</span></a> -</span><span id="L-6794"><a href="#L-6794"><span class="linenos">6794</span></a> -</span><span id="L-6795"><a href="#L-6795"><span class="linenos">6795</span></a><span class="k">def</span> <span class="nf">parse_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> -</span><span id="L-6796"><a href="#L-6796"><span class="linenos">6796</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6797"><a href="#L-6797"><span class="linenos">6797</span></a><span class="sd"> Parses a given string into an identifier.</span> -</span><span id="L-6798"><a href="#L-6798"><span class="linenos">6798</span></a> -</span><span id="L-6799"><a href="#L-6799"><span class="linenos">6799</span></a><span class="sd"> Args:</span> -</span><span id="L-6800"><a href="#L-6800"><span class="linenos">6800</span></a><span class="sd"> name: The name to parse into an identifier.</span> -</span><span id="L-6801"><a href="#L-6801"><span class="linenos">6801</span></a><span class="sd"> dialect: The dialect to parse against.</span> -</span><span id="L-6802"><a href="#L-6802"><span class="linenos">6802</span></a> -</span><span id="L-6803"><a href="#L-6803"><span class="linenos">6803</span></a><span class="sd"> Returns:</span> -</span><span id="L-6804"><a href="#L-6804"><span class="linenos">6804</span></a><span class="sd"> The identifier ast node.</span> -</span><span id="L-6805"><a href="#L-6805"><span class="linenos">6805</span></a><span class="sd"> """</span> -</span><span id="L-6806"><a href="#L-6806"><span class="linenos">6806</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-6807"><a href="#L-6807"><span class="linenos">6807</span></a> <span class="n">expression</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">Identifier</span><span class="p">)</span> -</span><span id="L-6808"><a href="#L-6808"><span class="linenos">6808</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="L-6809"><a href="#L-6809"><span class="linenos">6809</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-6810"><a href="#L-6810"><span class="linenos">6810</span></a> -</span><span id="L-6811"><a href="#L-6811"><span class="linenos">6811</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-6812"><a href="#L-6812"><span class="linenos">6812</span></a> -</span><span id="L-6813"><a href="#L-6813"><span class="linenos">6813</span></a> -</span><span id="L-6814"><a href="#L-6814"><span class="linenos">6814</span></a><span class="n">INTERVAL_STRING_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\s*([0-9]+)\s*([a-zA-Z]+)\s*"</span><span class="p">)</span> -</span><span id="L-6815"><a href="#L-6815"><span class="linenos">6815</span></a> -</span><span id="L-6816"><a href="#L-6816"><span class="linenos">6816</span></a> -</span><span id="L-6817"><a href="#L-6817"><span class="linenos">6817</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> -</span><span id="L-6818"><a href="#L-6818"><span class="linenos">6818</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> -</span><span id="L-6819"><a href="#L-6819"><span class="linenos">6819</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> -</span><span id="L-6820"><a href="#L-6820"><span class="linenos">6820</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-6821"><a href="#L-6821"><span class="linenos">6821</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="L-6783"><a href="#L-6783"><span class="linenos">6783</span></a><span class="sd"> Returns:</span> +</span><span id="L-6784"><a href="#L-6784"><span class="linenos">6784</span></a><span class="sd"> The identifier ast node.</span> +</span><span id="L-6785"><a href="#L-6785"><span class="linenos">6785</span></a><span class="sd"> """</span> +</span><span id="L-6786"><a href="#L-6786"><span class="linenos">6786</span></a> +</span><span id="L-6787"><a href="#L-6787"><span class="linenos">6787</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6788"><a href="#L-6788"><span class="linenos">6788</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6789"><a href="#L-6789"><span class="linenos">6789</span></a> +</span><span id="L-6790"><a href="#L-6790"><span class="linenos">6790</span></a> <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="n">Identifier</span><span class="p">):</span> +</span><span id="L-6791"><a href="#L-6791"><span class="linenos">6791</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-6792"><a href="#L-6792"><span class="linenos">6792</span></a> <span class="k">elif</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><span id="L-6793"><a href="#L-6793"><span class="linenos">6793</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> +</span><span id="L-6794"><a href="#L-6794"><span class="linenos">6794</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> +</span><span id="L-6795"><a href="#L-6795"><span class="linenos">6795</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> +</span><span id="L-6796"><a href="#L-6796"><span class="linenos">6796</span></a> <span class="p">)</span> +</span><span id="L-6797"><a href="#L-6797"><span class="linenos">6797</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6798"><a href="#L-6798"><span class="linenos">6798</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-6799"><a href="#L-6799"><span class="linenos">6799</span></a> <span class="k">return</span> <span class="n">identifier</span> +</span><span id="L-6800"><a href="#L-6800"><span class="linenos">6800</span></a> +</span><span id="L-6801"><a href="#L-6801"><span class="linenos">6801</span></a> +</span><span id="L-6802"><a href="#L-6802"><span class="linenos">6802</span></a><span class="k">def</span> <span class="nf">parse_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> +</span><span id="L-6803"><a href="#L-6803"><span class="linenos">6803</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6804"><a href="#L-6804"><span class="linenos">6804</span></a><span class="sd"> Parses a given string into an identifier.</span> +</span><span id="L-6805"><a href="#L-6805"><span class="linenos">6805</span></a> +</span><span id="L-6806"><a href="#L-6806"><span class="linenos">6806</span></a><span class="sd"> Args:</span> +</span><span id="L-6807"><a href="#L-6807"><span class="linenos">6807</span></a><span class="sd"> name: The name to parse into an identifier.</span> +</span><span id="L-6808"><a href="#L-6808"><span class="linenos">6808</span></a><span class="sd"> dialect: The dialect to parse against.</span> +</span><span id="L-6809"><a href="#L-6809"><span class="linenos">6809</span></a> +</span><span id="L-6810"><a href="#L-6810"><span class="linenos">6810</span></a><span class="sd"> Returns:</span> +</span><span id="L-6811"><a href="#L-6811"><span class="linenos">6811</span></a><span class="sd"> The identifier ast node.</span> +</span><span id="L-6812"><a href="#L-6812"><span class="linenos">6812</span></a><span class="sd"> """</span> +</span><span id="L-6813"><a href="#L-6813"><span class="linenos">6813</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-6814"><a href="#L-6814"><span class="linenos">6814</span></a> <span class="n">expression</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">Identifier</span><span class="p">)</span> +</span><span id="L-6815"><a href="#L-6815"><span class="linenos">6815</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="L-6816"><a href="#L-6816"><span class="linenos">6816</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-6817"><a href="#L-6817"><span class="linenos">6817</span></a> +</span><span id="L-6818"><a href="#L-6818"><span class="linenos">6818</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-6819"><a href="#L-6819"><span class="linenos">6819</span></a> +</span><span id="L-6820"><a href="#L-6820"><span class="linenos">6820</span></a> +</span><span id="L-6821"><a href="#L-6821"><span class="linenos">6821</span></a><span class="n">INTERVAL_STRING_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\s*([0-9]+)\s*([a-zA-Z]+)\s*"</span><span class="p">)</span> </span><span id="L-6822"><a href="#L-6822"><span class="linenos">6822</span></a> -</span><span id="L-6823"><a href="#L-6823"><span class="linenos">6823</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-6824"><a href="#L-6824"><span class="linenos">6824</span></a> -</span><span id="L-6825"><a href="#L-6825"><span class="linenos">6825</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-6826"><a href="#L-6826"><span class="linenos">6826</span></a> -</span><span id="L-6827"><a href="#L-6827"><span class="linenos">6827</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> -</span><span id="L-6828"><a href="#L-6828"><span class="linenos">6828</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="L-6823"><a href="#L-6823"><span class="linenos">6823</span></a> +</span><span id="L-6824"><a href="#L-6824"><span class="linenos">6824</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> +</span><span id="L-6825"><a href="#L-6825"><span class="linenos">6825</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> +</span><span id="L-6826"><a href="#L-6826"><span class="linenos">6826</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> +</span><span id="L-6827"><a href="#L-6827"><span class="linenos">6827</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-6828"><a href="#L-6828"><span class="linenos">6828</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> </span><span id="L-6829"><a href="#L-6829"><span class="linenos">6829</span></a> -</span><span id="L-6830"><a href="#L-6830"><span class="linenos">6830</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="L-6831"><a href="#L-6831"><span class="linenos">6831</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="L-6832"><a href="#L-6832"><span class="linenos">6832</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> -</span><span id="L-6833"><a href="#L-6833"><span class="linenos">6833</span></a> <span class="p">)</span> -</span><span id="L-6834"><a href="#L-6834"><span class="linenos">6834</span></a> -</span><span id="L-6835"><a href="#L-6835"><span class="linenos">6835</span></a> -</span><span id="L-6836"><a href="#L-6836"><span class="linenos">6836</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span> -</span><span id="L-6837"><a href="#L-6837"><span class="linenos">6837</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-6838"><a href="#L-6838"><span class="linenos">6838</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> -</span><span id="L-6839"><a href="#L-6839"><span class="linenos">6839</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6840"><a href="#L-6840"><span class="linenos">6840</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> -</span><span id="L-6841"><a href="#L-6841"><span class="linenos">6841</span></a><span class="sd"> If a table is passed in then that table is returned.</span> +</span><span id="L-6830"><a href="#L-6830"><span class="linenos">6830</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-6831"><a href="#L-6831"><span class="linenos">6831</span></a> +</span><span id="L-6832"><a href="#L-6832"><span class="linenos">6832</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-6833"><a href="#L-6833"><span class="linenos">6833</span></a> +</span><span id="L-6834"><a href="#L-6834"><span class="linenos">6834</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> +</span><span id="L-6835"><a href="#L-6835"><span class="linenos">6835</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="L-6836"><a href="#L-6836"><span class="linenos">6836</span></a> +</span><span id="L-6837"><a href="#L-6837"><span class="linenos">6837</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="L-6838"><a href="#L-6838"><span class="linenos">6838</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="L-6839"><a href="#L-6839"><span class="linenos">6839</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> +</span><span id="L-6840"><a href="#L-6840"><span class="linenos">6840</span></a> <span class="p">)</span> +</span><span id="L-6841"><a href="#L-6841"><span class="linenos">6841</span></a> </span><span id="L-6842"><a href="#L-6842"><span class="linenos">6842</span></a> -</span><span id="L-6843"><a href="#L-6843"><span class="linenos">6843</span></a><span class="sd"> Args:</span> -</span><span id="L-6844"><a href="#L-6844"><span class="linenos">6844</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> -</span><span id="L-6845"><a href="#L-6845"><span class="linenos">6845</span></a><span class="sd"> dialect: the source dialect according to which the table name will be parsed.</span> -</span><span id="L-6846"><a href="#L-6846"><span class="linenos">6846</span></a><span class="sd"> copy: Whether to copy a table if it is passed in.</span> -</span><span id="L-6847"><a href="#L-6847"><span class="linenos">6847</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Table` expression with.</span> -</span><span id="L-6848"><a href="#L-6848"><span class="linenos">6848</span></a> -</span><span id="L-6849"><a href="#L-6849"><span class="linenos">6849</span></a><span class="sd"> Returns:</span> -</span><span id="L-6850"><a href="#L-6850"><span class="linenos">6850</span></a><span class="sd"> A table expression.</span> -</span><span id="L-6851"><a href="#L-6851"><span class="linenos">6851</span></a><span class="sd"> """</span> -</span><span id="L-6852"><a href="#L-6852"><span class="linenos">6852</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="L-6853"><a href="#L-6853"><span class="linenos">6853</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="L-6854"><a href="#L-6854"><span class="linenos">6854</span></a> -</span><span id="L-6855"><a href="#L-6855"><span class="linenos">6855</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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-6856"><a href="#L-6856"><span class="linenos">6856</span></a> -</span><span id="L-6857"><a href="#L-6857"><span class="linenos">6857</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-6858"><a href="#L-6858"><span class="linenos">6858</span></a> <span class="n">table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> -</span><span id="L-6859"><a href="#L-6859"><span class="linenos">6859</span></a> -</span><span id="L-6860"><a href="#L-6860"><span class="linenos">6860</span></a> <span class="k">return</span> <span class="n">table</span> +</span><span id="L-6843"><a href="#L-6843"><span class="linenos">6843</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span> +</span><span id="L-6844"><a href="#L-6844"><span class="linenos">6844</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-6845"><a href="#L-6845"><span class="linenos">6845</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="L-6846"><a href="#L-6846"><span class="linenos">6846</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6847"><a href="#L-6847"><span class="linenos">6847</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> +</span><span id="L-6848"><a href="#L-6848"><span class="linenos">6848</span></a><span class="sd"> If a table is passed in then that table is returned.</span> +</span><span id="L-6849"><a href="#L-6849"><span class="linenos">6849</span></a> +</span><span id="L-6850"><a href="#L-6850"><span class="linenos">6850</span></a><span class="sd"> Args:</span> +</span><span id="L-6851"><a href="#L-6851"><span class="linenos">6851</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> +</span><span id="L-6852"><a href="#L-6852"><span class="linenos">6852</span></a><span class="sd"> dialect: the source dialect according to which the table name will be parsed.</span> +</span><span id="L-6853"><a href="#L-6853"><span class="linenos">6853</span></a><span class="sd"> copy: Whether to copy a table if it is passed in.</span> +</span><span id="L-6854"><a href="#L-6854"><span class="linenos">6854</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Table` expression with.</span> +</span><span id="L-6855"><a href="#L-6855"><span class="linenos">6855</span></a> +</span><span id="L-6856"><a href="#L-6856"><span class="linenos">6856</span></a><span class="sd"> Returns:</span> +</span><span id="L-6857"><a href="#L-6857"><span class="linenos">6857</span></a><span class="sd"> A table expression.</span> +</span><span id="L-6858"><a href="#L-6858"><span class="linenos">6858</span></a><span class="sd"> """</span> +</span><span id="L-6859"><a href="#L-6859"><span class="linenos">6859</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="L-6860"><a href="#L-6860"><span class="linenos">6860</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> </span><span id="L-6861"><a href="#L-6861"><span class="linenos">6861</span></a> -</span><span id="L-6862"><a href="#L-6862"><span class="linenos">6862</span></a> -</span><span id="L-6863"><a href="#L-6863"><span class="linenos">6863</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span> -</span><span id="L-6864"><a href="#L-6864"><span class="linenos">6864</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> -</span><span id="L-6865"><a href="#L-6865"><span class="linenos">6865</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="L-6866"><a href="#L-6866"><span class="linenos">6866</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-6867"><a href="#L-6867"><span class="linenos">6867</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6868"><a href="#L-6868"><span class="linenos">6868</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="L-6869"><a href="#L-6869"><span class="linenos">6869</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="L-6870"><a href="#L-6870"><span class="linenos">6870</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6871"><a href="#L-6871"><span class="linenos">6871</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Table is optional.</span> -</span><span id="L-6872"><a href="#L-6872"><span class="linenos">6872</span></a><span class="sd"> If a column is passed in then that column is returned.</span> -</span><span id="L-6873"><a href="#L-6873"><span class="linenos">6873</span></a> -</span><span id="L-6874"><a href="#L-6874"><span class="linenos">6874</span></a><span class="sd"> Args:</span> -</span><span id="L-6875"><a href="#L-6875"><span class="linenos">6875</span></a><span class="sd"> sql_path: a `[table].[column]` string.</span> -</span><span id="L-6876"><a href="#L-6876"><span class="linenos">6876</span></a><span class="sd"> quoted: Whether or not to force quote identifiers.</span> -</span><span id="L-6877"><a href="#L-6877"><span class="linenos">6877</span></a><span class="sd"> dialect: the source dialect according to which the column name will be parsed.</span> -</span><span id="L-6878"><a href="#L-6878"><span class="linenos">6878</span></a><span class="sd"> copy: Whether to copy a column if it is passed in.</span> -</span><span id="L-6879"><a href="#L-6879"><span class="linenos">6879</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Column` expression with.</span> +</span><span id="L-6862"><a href="#L-6862"><span class="linenos">6862</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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-6863"><a href="#L-6863"><span class="linenos">6863</span></a> +</span><span id="L-6864"><a href="#L-6864"><span class="linenos">6864</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-6865"><a href="#L-6865"><span class="linenos">6865</span></a> <span class="n">table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> +</span><span id="L-6866"><a href="#L-6866"><span class="linenos">6866</span></a> +</span><span id="L-6867"><a href="#L-6867"><span class="linenos">6867</span></a> <span class="k">return</span> <span class="n">table</span> +</span><span id="L-6868"><a href="#L-6868"><span class="linenos">6868</span></a> +</span><span id="L-6869"><a href="#L-6869"><span class="linenos">6869</span></a> +</span><span id="L-6870"><a href="#L-6870"><span class="linenos">6870</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span> +</span><span id="L-6871"><a href="#L-6871"><span class="linenos">6871</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> +</span><span id="L-6872"><a href="#L-6872"><span class="linenos">6872</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="L-6873"><a href="#L-6873"><span class="linenos">6873</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-6874"><a href="#L-6874"><span class="linenos">6874</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6875"><a href="#L-6875"><span class="linenos">6875</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="L-6876"><a href="#L-6876"><span class="linenos">6876</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="L-6877"><a href="#L-6877"><span class="linenos">6877</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6878"><a href="#L-6878"><span class="linenos">6878</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Table is optional.</span> +</span><span id="L-6879"><a href="#L-6879"><span class="linenos">6879</span></a><span class="sd"> If a column is passed in then that column is returned.</span> </span><span id="L-6880"><a href="#L-6880"><span class="linenos">6880</span></a> -</span><span id="L-6881"><a href="#L-6881"><span class="linenos">6881</span></a><span class="sd"> Returns:</span> -</span><span id="L-6882"><a href="#L-6882"><span class="linenos">6882</span></a><span class="sd"> A column expression.</span> -</span><span id="L-6883"><a href="#L-6883"><span class="linenos">6883</span></a><span class="sd"> """</span> -</span><span id="L-6884"><a href="#L-6884"><span class="linenos">6884</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="L-6885"><a href="#L-6885"><span class="linenos">6885</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="L-6886"><a href="#L-6886"><span class="linenos">6886</span></a> -</span><span id="L-6887"><a href="#L-6887"><span class="linenos">6887</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-6888"><a href="#L-6888"><span class="linenos">6888</span></a> <span class="n">col</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Column</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-6889"><a href="#L-6889"><span class="linenos">6889</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="L-6890"><a href="#L-6890"><span class="linenos">6890</span></a> <span class="k">return</span> <span class="n">column</span><span class="p">(</span><span class="o">*</span><span class="nb">reversed</span><span class="p">(</span><span class="n">sql_path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)),</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-6891"><a href="#L-6891"><span class="linenos">6891</span></a> -</span><span id="L-6892"><a href="#L-6892"><span class="linenos">6892</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-6893"><a href="#L-6893"><span class="linenos">6893</span></a> <span class="n">col</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> -</span><span id="L-6894"><a href="#L-6894"><span class="linenos">6894</span></a> -</span><span id="L-6895"><a href="#L-6895"><span class="linenos">6895</span></a> <span class="k">if</span> <span class="n">quoted</span><span class="p">:</span> -</span><span id="L-6896"><a href="#L-6896"><span class="linenos">6896</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">col</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-6897"><a href="#L-6897"><span class="linenos">6897</span></a> <span class="n">i</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"quoted"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-6881"><a href="#L-6881"><span class="linenos">6881</span></a><span class="sd"> Args:</span> +</span><span id="L-6882"><a href="#L-6882"><span class="linenos">6882</span></a><span class="sd"> sql_path: a `[table].[column]` string.</span> +</span><span id="L-6883"><a href="#L-6883"><span class="linenos">6883</span></a><span class="sd"> quoted: Whether or not to force quote identifiers.</span> +</span><span id="L-6884"><a href="#L-6884"><span class="linenos">6884</span></a><span class="sd"> dialect: the source dialect according to which the column name will be parsed.</span> +</span><span id="L-6885"><a href="#L-6885"><span class="linenos">6885</span></a><span class="sd"> copy: Whether to copy a column if it is passed in.</span> +</span><span id="L-6886"><a href="#L-6886"><span class="linenos">6886</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Column` expression with.</span> +</span><span id="L-6887"><a href="#L-6887"><span class="linenos">6887</span></a> +</span><span id="L-6888"><a href="#L-6888"><span class="linenos">6888</span></a><span class="sd"> Returns:</span> +</span><span id="L-6889"><a href="#L-6889"><span class="linenos">6889</span></a><span class="sd"> A column expression.</span> +</span><span id="L-6890"><a href="#L-6890"><span class="linenos">6890</span></a><span class="sd"> """</span> +</span><span id="L-6891"><a href="#L-6891"><span class="linenos">6891</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="L-6892"><a href="#L-6892"><span class="linenos">6892</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="L-6893"><a href="#L-6893"><span class="linenos">6893</span></a> +</span><span id="L-6894"><a href="#L-6894"><span class="linenos">6894</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-6895"><a href="#L-6895"><span class="linenos">6895</span></a> <span class="n">col</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Column</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-6896"><a href="#L-6896"><span class="linenos">6896</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="L-6897"><a href="#L-6897"><span class="linenos">6897</span></a> <span class="k">return</span> <span class="n">column</span><span class="p">(</span><span class="o">*</span><span class="nb">reversed</span><span class="p">(</span><span class="n">sql_path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)),</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-6898"><a href="#L-6898"><span class="linenos">6898</span></a> -</span><span id="L-6899"><a href="#L-6899"><span class="linenos">6899</span></a> <span class="k">return</span> <span class="n">col</span> -</span><span id="L-6900"><a href="#L-6900"><span class="linenos">6900</span></a> +</span><span id="L-6899"><a href="#L-6899"><span class="linenos">6899</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-6900"><a href="#L-6900"><span class="linenos">6900</span></a> <span class="n">col</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> </span><span id="L-6901"><a href="#L-6901"><span class="linenos">6901</span></a> -</span><span id="L-6902"><a href="#L-6902"><span class="linenos">6902</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> -</span><span id="L-6903"><a href="#L-6903"><span class="linenos">6903</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6904"><a href="#L-6904"><span class="linenos">6904</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">],</span> -</span><span id="L-6905"><a href="#L-6905"><span class="linenos">6905</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</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="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-6906"><a href="#L-6906"><span class="linenos">6906</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="L-6907"><a href="#L-6907"><span class="linenos">6907</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-6908"><a href="#L-6908"><span class="linenos">6908</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6909"><a href="#L-6909"><span class="linenos">6909</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6910"><a href="#L-6910"><span class="linenos">6910</span></a><span class="p">):</span> -</span><span id="L-6911"><a href="#L-6911"><span class="linenos">6911</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> -</span><span id="L-6912"><a href="#L-6912"><span class="linenos">6912</span></a> -</span><span id="L-6913"><a href="#L-6913"><span class="linenos">6913</span></a><span class="sd"> Example:</span> -</span><span id="L-6914"><a href="#L-6914"><span class="linenos">6914</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> -</span><span id="L-6915"><a href="#L-6915"><span class="linenos">6915</span></a><span class="sd"> 'foo AS bar'</span> -</span><span id="L-6916"><a href="#L-6916"><span class="linenos">6916</span></a> -</span><span id="L-6917"><a href="#L-6917"><span class="linenos">6917</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> -</span><span id="L-6918"><a href="#L-6918"><span class="linenos">6918</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> +</span><span id="L-6902"><a href="#L-6902"><span class="linenos">6902</span></a> <span class="k">if</span> <span class="n">quoted</span><span class="p">:</span> +</span><span id="L-6903"><a href="#L-6903"><span class="linenos">6903</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">col</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-6904"><a href="#L-6904"><span class="linenos">6904</span></a> <span class="n">i</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"quoted"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-6905"><a href="#L-6905"><span class="linenos">6905</span></a> +</span><span id="L-6906"><a href="#L-6906"><span class="linenos">6906</span></a> <span class="k">return</span> <span class="n">col</span> +</span><span id="L-6907"><a href="#L-6907"><span class="linenos">6907</span></a> +</span><span id="L-6908"><a href="#L-6908"><span class="linenos">6908</span></a> +</span><span id="L-6909"><a href="#L-6909"><span class="linenos">6909</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> +</span><span id="L-6910"><a href="#L-6910"><span class="linenos">6910</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6911"><a href="#L-6911"><span class="linenos">6911</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">],</span> +</span><span id="L-6912"><a href="#L-6912"><span class="linenos">6912</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</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="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-6913"><a href="#L-6913"><span class="linenos">6913</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="L-6914"><a href="#L-6914"><span class="linenos">6914</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-6915"><a href="#L-6915"><span class="linenos">6915</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-6916"><a href="#L-6916"><span class="linenos">6916</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6917"><a href="#L-6917"><span class="linenos">6917</span></a><span class="p">):</span> +</span><span id="L-6918"><a href="#L-6918"><span class="linenos">6918</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> </span><span id="L-6919"><a href="#L-6919"><span class="linenos">6919</span></a> -</span><span id="L-6920"><a href="#L-6920"><span class="linenos">6920</span></a><span class="sd"> Args:</span> -</span><span id="L-6921"><a href="#L-6921"><span class="linenos">6921</span></a><span class="sd"> expression: the SQL code strings to parse.</span> -</span><span id="L-6922"><a href="#L-6922"><span class="linenos">6922</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6923"><a href="#L-6923"><span class="linenos">6923</span></a><span class="sd"> alias: the alias name to use. If the name has</span> -</span><span id="L-6924"><a href="#L-6924"><span class="linenos">6924</span></a><span class="sd"> special characters it is quoted.</span> -</span><span id="L-6925"><a href="#L-6925"><span class="linenos">6925</span></a><span class="sd"> table: Whether to create a table alias, can also be a list of columns.</span> -</span><span id="L-6926"><a href="#L-6926"><span class="linenos">6926</span></a><span class="sd"> quoted: whether to quote the alias</span> -</span><span id="L-6927"><a href="#L-6927"><span class="linenos">6927</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6928"><a href="#L-6928"><span class="linenos">6928</span></a><span class="sd"> copy: Whether to copy the expression.</span> -</span><span id="L-6929"><a href="#L-6929"><span class="linenos">6929</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-6930"><a href="#L-6930"><span class="linenos">6930</span></a> -</span><span id="L-6931"><a href="#L-6931"><span class="linenos">6931</span></a><span class="sd"> Returns:</span> -</span><span id="L-6932"><a href="#L-6932"><span class="linenos">6932</span></a><span class="sd"> Alias: the aliased expression</span> -</span><span id="L-6933"><a href="#L-6933"><span class="linenos">6933</span></a><span class="sd"> """</span> -</span><span id="L-6934"><a href="#L-6934"><span class="linenos">6934</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6935"><a href="#L-6935"><span class="linenos">6935</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> -</span><span id="L-6936"><a href="#L-6936"><span class="linenos">6936</span></a> -</span><span id="L-6937"><a href="#L-6937"><span class="linenos">6937</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-6938"><a href="#L-6938"><span class="linenos">6938</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-6939"><a href="#L-6939"><span class="linenos">6939</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> -</span><span id="L-6940"><a href="#L-6940"><span class="linenos">6940</span></a> -</span><span id="L-6941"><a href="#L-6941"><span class="linenos">6941</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="L-6942"><a href="#L-6942"><span class="linenos">6942</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-6943"><a href="#L-6943"><span class="linenos">6943</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> -</span><span id="L-6944"><a href="#L-6944"><span class="linenos">6944</span></a> -</span><span id="L-6945"><a href="#L-6945"><span class="linenos">6945</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="L-6946"><a href="#L-6946"><span class="linenos">6946</span></a> -</span><span id="L-6947"><a href="#L-6947"><span class="linenos">6947</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> -</span><span id="L-6948"><a href="#L-6948"><span class="linenos">6948</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> -</span><span id="L-6949"><a href="#L-6949"><span class="linenos">6949</span></a> <span class="c1"># for the complete Window expression.</span> -</span><span id="L-6950"><a href="#L-6950"><span class="linenos">6950</span></a> <span class="c1">#</span> -</span><span id="L-6951"><a href="#L-6951"><span class="linenos">6951</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> -</span><span id="L-6952"><a href="#L-6952"><span class="linenos">6952</span></a> -</span><span id="L-6953"><a href="#L-6953"><span class="linenos">6953</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> -</span><span id="L-6954"><a href="#L-6954"><span class="linenos">6954</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> -</span><span id="L-6955"><a href="#L-6955"><span class="linenos">6955</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="L-6956"><a href="#L-6956"><span class="linenos">6956</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-6957"><a href="#L-6957"><span class="linenos">6957</span></a> -</span><span id="L-6958"><a href="#L-6958"><span class="linenos">6958</span></a> -</span><span id="L-6959"><a href="#L-6959"><span class="linenos">6959</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span> -</span><span id="L-6960"><a href="#L-6960"><span class="linenos">6960</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="L-6961"><a href="#L-6961"><span class="linenos">6961</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6962"><a href="#L-6962"><span class="linenos">6962</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-6963"><a href="#L-6963"><span class="linenos">6963</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-6964"><a href="#L-6964"><span class="linenos">6964</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-6965"><a href="#L-6965"><span class="linenos">6965</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-6966"><a href="#L-6966"><span class="linenos">6966</span></a><span class="sd"> Build a subquery expression that's selected from.</span> -</span><span id="L-6967"><a href="#L-6967"><span class="linenos">6967</span></a> -</span><span id="L-6968"><a href="#L-6968"><span class="linenos">6968</span></a><span class="sd"> Example:</span> -</span><span id="L-6969"><a href="#L-6969"><span class="linenos">6969</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> -</span><span id="L-6970"><a href="#L-6970"><span class="linenos">6970</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> -</span><span id="L-6971"><a href="#L-6971"><span class="linenos">6971</span></a> -</span><span id="L-6972"><a href="#L-6972"><span class="linenos">6972</span></a><span class="sd"> Args:</span> -</span><span id="L-6973"><a href="#L-6973"><span class="linenos">6973</span></a><span class="sd"> expression: the SQL code strings to parse.</span> -</span><span id="L-6974"><a href="#L-6974"><span class="linenos">6974</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-6975"><a href="#L-6975"><span class="linenos">6975</span></a><span class="sd"> alias: the alias name to use.</span> -</span><span id="L-6976"><a href="#L-6976"><span class="linenos">6976</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-6977"><a href="#L-6977"><span class="linenos">6977</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6920"><a href="#L-6920"><span class="linenos">6920</span></a><span class="sd"> Example:</span> +</span><span id="L-6921"><a href="#L-6921"><span class="linenos">6921</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> +</span><span id="L-6922"><a href="#L-6922"><span class="linenos">6922</span></a><span class="sd"> 'foo AS bar'</span> +</span><span id="L-6923"><a href="#L-6923"><span class="linenos">6923</span></a> +</span><span id="L-6924"><a href="#L-6924"><span class="linenos">6924</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> +</span><span id="L-6925"><a href="#L-6925"><span class="linenos">6925</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> +</span><span id="L-6926"><a href="#L-6926"><span class="linenos">6926</span></a> +</span><span id="L-6927"><a href="#L-6927"><span class="linenos">6927</span></a><span class="sd"> Args:</span> +</span><span id="L-6928"><a href="#L-6928"><span class="linenos">6928</span></a><span class="sd"> expression: the SQL code strings to parse.</span> +</span><span id="L-6929"><a href="#L-6929"><span class="linenos">6929</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6930"><a href="#L-6930"><span class="linenos">6930</span></a><span class="sd"> alias: the alias name to use. If the name has</span> +</span><span id="L-6931"><a href="#L-6931"><span class="linenos">6931</span></a><span class="sd"> special characters it is quoted.</span> +</span><span id="L-6932"><a href="#L-6932"><span class="linenos">6932</span></a><span class="sd"> table: Whether to create a table alias, can also be a list of columns.</span> +</span><span id="L-6933"><a href="#L-6933"><span class="linenos">6933</span></a><span class="sd"> quoted: whether to quote the alias</span> +</span><span id="L-6934"><a href="#L-6934"><span class="linenos">6934</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6935"><a href="#L-6935"><span class="linenos">6935</span></a><span class="sd"> copy: Whether to copy the expression.</span> +</span><span id="L-6936"><a href="#L-6936"><span class="linenos">6936</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-6937"><a href="#L-6937"><span class="linenos">6937</span></a> +</span><span id="L-6938"><a href="#L-6938"><span class="linenos">6938</span></a><span class="sd"> Returns:</span> +</span><span id="L-6939"><a href="#L-6939"><span class="linenos">6939</span></a><span class="sd"> Alias: the aliased expression</span> +</span><span id="L-6940"><a href="#L-6940"><span class="linenos">6940</span></a><span class="sd"> """</span> +</span><span id="L-6941"><a href="#L-6941"><span class="linenos">6941</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6942"><a href="#L-6942"><span class="linenos">6942</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="L-6943"><a href="#L-6943"><span class="linenos">6943</span></a> +</span><span id="L-6944"><a href="#L-6944"><span class="linenos">6944</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-6945"><a href="#L-6945"><span class="linenos">6945</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-6946"><a href="#L-6946"><span class="linenos">6946</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> +</span><span id="L-6947"><a href="#L-6947"><span class="linenos">6947</span></a> +</span><span id="L-6948"><a href="#L-6948"><span class="linenos">6948</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="L-6949"><a href="#L-6949"><span class="linenos">6949</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-6950"><a href="#L-6950"><span class="linenos">6950</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> +</span><span id="L-6951"><a href="#L-6951"><span class="linenos">6951</span></a> +</span><span id="L-6952"><a href="#L-6952"><span class="linenos">6952</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="L-6953"><a href="#L-6953"><span class="linenos">6953</span></a> +</span><span id="L-6954"><a href="#L-6954"><span class="linenos">6954</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> +</span><span id="L-6955"><a href="#L-6955"><span class="linenos">6955</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> +</span><span id="L-6956"><a href="#L-6956"><span class="linenos">6956</span></a> <span class="c1"># for the complete Window expression.</span> +</span><span id="L-6957"><a href="#L-6957"><span class="linenos">6957</span></a> <span class="c1">#</span> +</span><span id="L-6958"><a href="#L-6958"><span class="linenos">6958</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> +</span><span id="L-6959"><a href="#L-6959"><span class="linenos">6959</span></a> +</span><span id="L-6960"><a href="#L-6960"><span class="linenos">6960</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> +</span><span id="L-6961"><a href="#L-6961"><span class="linenos">6961</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="L-6962"><a href="#L-6962"><span class="linenos">6962</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="L-6963"><a href="#L-6963"><span class="linenos">6963</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-6964"><a href="#L-6964"><span class="linenos">6964</span></a> +</span><span id="L-6965"><a href="#L-6965"><span class="linenos">6965</span></a> +</span><span id="L-6966"><a href="#L-6966"><span class="linenos">6966</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span> +</span><span id="L-6967"><a href="#L-6967"><span class="linenos">6967</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="L-6968"><a href="#L-6968"><span class="linenos">6968</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6969"><a href="#L-6969"><span class="linenos">6969</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-6970"><a href="#L-6970"><span class="linenos">6970</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-6971"><a href="#L-6971"><span class="linenos">6971</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-6972"><a href="#L-6972"><span class="linenos">6972</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-6973"><a href="#L-6973"><span class="linenos">6973</span></a><span class="sd"> Build a subquery expression that's selected from.</span> +</span><span id="L-6974"><a href="#L-6974"><span class="linenos">6974</span></a> +</span><span id="L-6975"><a href="#L-6975"><span class="linenos">6975</span></a><span class="sd"> Example:</span> +</span><span id="L-6976"><a href="#L-6976"><span class="linenos">6976</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> +</span><span id="L-6977"><a href="#L-6977"><span class="linenos">6977</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> </span><span id="L-6978"><a href="#L-6978"><span class="linenos">6978</span></a> -</span><span id="L-6979"><a href="#L-6979"><span class="linenos">6979</span></a><span class="sd"> Returns:</span> -</span><span id="L-6980"><a href="#L-6980"><span class="linenos">6980</span></a><span class="sd"> A new Select instance with the subquery expression included.</span> -</span><span id="L-6981"><a href="#L-6981"><span class="linenos">6981</span></a><span class="sd"> """</span> -</span><span id="L-6982"><a href="#L-6982"><span class="linenos">6982</span></a> -</span><span id="L-6983"><a href="#L-6983"><span class="linenos">6983</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-6984"><a href="#L-6984"><span class="linenos">6984</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6979"><a href="#L-6979"><span class="linenos">6979</span></a><span class="sd"> Args:</span> +</span><span id="L-6980"><a href="#L-6980"><span class="linenos">6980</span></a><span class="sd"> expression: the SQL code strings to parse.</span> +</span><span id="L-6981"><a href="#L-6981"><span class="linenos">6981</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-6982"><a href="#L-6982"><span class="linenos">6982</span></a><span class="sd"> alias: the alias name to use.</span> +</span><span id="L-6983"><a href="#L-6983"><span class="linenos">6983</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-6984"><a href="#L-6984"><span class="linenos">6984</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> </span><span id="L-6985"><a href="#L-6985"><span class="linenos">6985</span></a> -</span><span id="L-6986"><a href="#L-6986"><span class="linenos">6986</span></a> -</span><span id="L-6987"><a href="#L-6987"><span class="linenos">6987</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-6988"><a href="#L-6988"><span class="linenos">6988</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> -</span><span id="L-6989"><a href="#L-6989"><span class="linenos">6989</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> -</span><span id="L-6990"><a href="#L-6990"><span class="linenos">6990</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6991"><a href="#L-6991"><span class="linenos">6991</span></a> <span class="n">db</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6992"><a href="#L-6992"><span class="linenos">6992</span></a> <span class="n">catalog</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6993"><a href="#L-6993"><span class="linenos">6993</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-6994"><a href="#L-6994"><span class="linenos">6994</span></a> <span class="n">fields</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Identifier</span><span class="p">]],</span> -</span><span id="L-6995"><a href="#L-6995"><span class="linenos">6995</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="L-6996"><a href="#L-6996"><span class="linenos">6996</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-6997"><a href="#L-6997"><span class="linenos">6997</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> -</span><span id="L-6998"><a href="#L-6998"><span class="linenos">6998</span></a> <span class="k">pass</span> -</span><span id="L-6999"><a href="#L-6999"><span class="linenos">6999</span></a> -</span><span id="L-7000"><a href="#L-7000"><span class="linenos">7000</span></a> -</span><span id="L-7001"><a href="#L-7001"><span class="linenos">7001</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-7002"><a href="#L-7002"><span class="linenos">7002</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> -</span><span id="L-7003"><a href="#L-7003"><span class="linenos">7003</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> -</span><span id="L-7004"><a href="#L-7004"><span class="linenos">7004</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7005"><a href="#L-7005"><span class="linenos">7005</span></a> <span class="n">db</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7006"><a href="#L-7006"><span class="linenos">7006</span></a> <span class="n">catalog</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7007"><a href="#L-7007"><span class="linenos">7007</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-7008"><a href="#L-7008"><span class="linenos">7008</span></a> <span class="n">fields</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7009"><a href="#L-7009"><span class="linenos">7009</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="L-7010"><a href="#L-7010"><span class="linenos">7010</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-7011"><a href="#L-7011"><span class="linenos">7011</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="L-7012"><a href="#L-7012"><span class="linenos">7012</span></a> <span class="k">pass</span> -</span><span id="L-7013"><a href="#L-7013"><span class="linenos">7013</span></a> -</span><span id="L-7014"><a href="#L-7014"><span class="linenos">7014</span></a> -</span><span id="L-7015"><a href="#L-7015"><span class="linenos">7015</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> -</span><span id="L-7016"><a href="#L-7016"><span class="linenos">7016</span></a> <span class="n">col</span><span class="p">,</span> -</span><span id="L-7017"><a href="#L-7017"><span class="linenos">7017</span></a> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-7018"><a href="#L-7018"><span class="linenos">7018</span></a> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-7019"><a href="#L-7019"><span class="linenos">7019</span></a> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-7020"><a href="#L-7020"><span class="linenos">7020</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-7021"><a href="#L-7021"><span class="linenos">7021</span></a> <span class="n">fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-7022"><a href="#L-7022"><span class="linenos">7022</span></a> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-7023"><a href="#L-7023"><span class="linenos">7023</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-7024"><a href="#L-7024"><span class="linenos">7024</span></a><span class="p">):</span> -</span><span id="L-7025"><a href="#L-7025"><span class="linenos">7025</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7026"><a href="#L-7026"><span class="linenos">7026</span></a><span class="sd"> Build a Column.</span> -</span><span id="L-7027"><a href="#L-7027"><span class="linenos">7027</span></a> -</span><span id="L-7028"><a href="#L-7028"><span class="linenos">7028</span></a><span class="sd"> Args:</span> -</span><span id="L-7029"><a href="#L-7029"><span class="linenos">7029</span></a><span class="sd"> col: Column name.</span> -</span><span id="L-7030"><a href="#L-7030"><span class="linenos">7030</span></a><span class="sd"> table: Table name.</span> -</span><span id="L-7031"><a href="#L-7031"><span class="linenos">7031</span></a><span class="sd"> db: Database name.</span> -</span><span id="L-7032"><a href="#L-7032"><span class="linenos">7032</span></a><span class="sd"> catalog: Catalog name.</span> -</span><span id="L-7033"><a href="#L-7033"><span class="linenos">7033</span></a><span class="sd"> fields: Additional fields using dots.</span> -</span><span id="L-7034"><a href="#L-7034"><span class="linenos">7034</span></a><span class="sd"> quoted: Whether to force quotes on the column's identifiers.</span> -</span><span id="L-7035"><a href="#L-7035"><span class="linenos">7035</span></a><span class="sd"> copy: Whether to copy identifiers if passed in.</span> -</span><span id="L-7036"><a href="#L-7036"><span class="linenos">7036</span></a> -</span><span id="L-7037"><a href="#L-7037"><span class="linenos">7037</span></a><span class="sd"> Returns:</span> -</span><span id="L-7038"><a href="#L-7038"><span class="linenos">7038</span></a><span class="sd"> The new Column instance.</span> -</span><span id="L-7039"><a href="#L-7039"><span class="linenos">7039</span></a><span class="sd"> """</span> -</span><span id="L-7040"><a href="#L-7040"><span class="linenos">7040</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span> -</span><span id="L-7041"><a href="#L-7041"><span class="linenos">7041</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="L-7042"><a href="#L-7042"><span class="linenos">7042</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="L-7043"><a href="#L-7043"><span class="linenos">7043</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="L-7044"><a href="#L-7044"><span class="linenos">7044</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="L-7045"><a href="#L-7045"><span class="linenos">7045</span></a> <span class="p">)</span> -</span><span id="L-7046"><a href="#L-7046"><span class="linenos">7046</span></a> -</span><span id="L-7047"><a href="#L-7047"><span class="linenos">7047</span></a> <span class="k">if</span> <span class="n">fields</span><span class="p">:</span> -</span><span id="L-7048"><a href="#L-7048"><span class="linenos">7048</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">build</span><span class="p">(</span> -</span><span id="L-7049"><a href="#L-7049"><span class="linenos">7049</span></a> <span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">))</span> -</span><span id="L-7050"><a href="#L-7050"><span class="linenos">7050</span></a> <span class="p">)</span> -</span><span id="L-7051"><a href="#L-7051"><span class="linenos">7051</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-7052"><a href="#L-7052"><span class="linenos">7052</span></a> +</span><span id="L-6986"><a href="#L-6986"><span class="linenos">6986</span></a><span class="sd"> Returns:</span> +</span><span id="L-6987"><a href="#L-6987"><span class="linenos">6987</span></a><span class="sd"> A new Select instance with the subquery expression included.</span> +</span><span id="L-6988"><a href="#L-6988"><span class="linenos">6988</span></a><span class="sd"> """</span> +</span><span id="L-6989"><a href="#L-6989"><span class="linenos">6989</span></a> +</span><span id="L-6990"><a href="#L-6990"><span class="linenos">6990</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6991"><a href="#L-6991"><span class="linenos">6991</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-6992"><a href="#L-6992"><span class="linenos">6992</span></a> +</span><span id="L-6993"><a href="#L-6993"><span class="linenos">6993</span></a> +</span><span id="L-6994"><a href="#L-6994"><span class="linenos">6994</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-6995"><a href="#L-6995"><span class="linenos">6995</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> +</span><span id="L-6996"><a href="#L-6996"><span class="linenos">6996</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> +</span><span id="L-6997"><a href="#L-6997"><span class="linenos">6997</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6998"><a href="#L-6998"><span class="linenos">6998</span></a> <span class="n">db</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6999"><a href="#L-6999"><span class="linenos">6999</span></a> <span class="n">catalog</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7000"><a href="#L-7000"><span class="linenos">7000</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-7001"><a href="#L-7001"><span class="linenos">7001</span></a> <span class="n">fields</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Identifier</span><span class="p">]],</span> +</span><span id="L-7002"><a href="#L-7002"><span class="linenos">7002</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="L-7003"><a href="#L-7003"><span class="linenos">7003</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-7004"><a href="#L-7004"><span class="linenos">7004</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> +</span><span id="L-7005"><a href="#L-7005"><span class="linenos">7005</span></a> <span class="k">pass</span> +</span><span id="L-7006"><a href="#L-7006"><span class="linenos">7006</span></a> +</span><span id="L-7007"><a href="#L-7007"><span class="linenos">7007</span></a> +</span><span id="L-7008"><a href="#L-7008"><span class="linenos">7008</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-7009"><a href="#L-7009"><span class="linenos">7009</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> +</span><span id="L-7010"><a href="#L-7010"><span class="linenos">7010</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> +</span><span id="L-7011"><a href="#L-7011"><span class="linenos">7011</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7012"><a href="#L-7012"><span class="linenos">7012</span></a> <span class="n">db</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7013"><a href="#L-7013"><span class="linenos">7013</span></a> <span class="n">catalog</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7014"><a href="#L-7014"><span class="linenos">7014</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-7015"><a href="#L-7015"><span class="linenos">7015</span></a> <span class="n">fields</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7016"><a href="#L-7016"><span class="linenos">7016</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="L-7017"><a href="#L-7017"><span class="linenos">7017</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-7018"><a href="#L-7018"><span class="linenos">7018</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="L-7019"><a href="#L-7019"><span class="linenos">7019</span></a> <span class="k">pass</span> +</span><span id="L-7020"><a href="#L-7020"><span class="linenos">7020</span></a> +</span><span id="L-7021"><a href="#L-7021"><span class="linenos">7021</span></a> +</span><span id="L-7022"><a href="#L-7022"><span class="linenos">7022</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> +</span><span id="L-7023"><a href="#L-7023"><span class="linenos">7023</span></a> <span class="n">col</span><span class="p">,</span> +</span><span id="L-7024"><a href="#L-7024"><span class="linenos">7024</span></a> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-7025"><a href="#L-7025"><span class="linenos">7025</span></a> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-7026"><a href="#L-7026"><span class="linenos">7026</span></a> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-7027"><a href="#L-7027"><span class="linenos">7027</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-7028"><a href="#L-7028"><span class="linenos">7028</span></a> <span class="n">fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-7029"><a href="#L-7029"><span class="linenos">7029</span></a> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-7030"><a href="#L-7030"><span class="linenos">7030</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-7031"><a href="#L-7031"><span class="linenos">7031</span></a><span class="p">):</span> +</span><span id="L-7032"><a href="#L-7032"><span class="linenos">7032</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7033"><a href="#L-7033"><span class="linenos">7033</span></a><span class="sd"> Build a Column.</span> +</span><span id="L-7034"><a href="#L-7034"><span class="linenos">7034</span></a> +</span><span id="L-7035"><a href="#L-7035"><span class="linenos">7035</span></a><span class="sd"> Args:</span> +</span><span id="L-7036"><a href="#L-7036"><span class="linenos">7036</span></a><span class="sd"> col: Column name.</span> +</span><span id="L-7037"><a href="#L-7037"><span class="linenos">7037</span></a><span class="sd"> table: Table name.</span> +</span><span id="L-7038"><a href="#L-7038"><span class="linenos">7038</span></a><span class="sd"> db: Database name.</span> +</span><span id="L-7039"><a href="#L-7039"><span class="linenos">7039</span></a><span class="sd"> catalog: Catalog name.</span> +</span><span id="L-7040"><a href="#L-7040"><span class="linenos">7040</span></a><span class="sd"> fields: Additional fields using dots.</span> +</span><span id="L-7041"><a href="#L-7041"><span class="linenos">7041</span></a><span class="sd"> quoted: Whether to force quotes on the column's identifiers.</span> +</span><span id="L-7042"><a href="#L-7042"><span class="linenos">7042</span></a><span class="sd"> copy: Whether to copy identifiers if passed in.</span> +</span><span id="L-7043"><a href="#L-7043"><span class="linenos">7043</span></a> +</span><span id="L-7044"><a href="#L-7044"><span class="linenos">7044</span></a><span class="sd"> Returns:</span> +</span><span id="L-7045"><a href="#L-7045"><span class="linenos">7045</span></a><span class="sd"> The new Column instance.</span> +</span><span id="L-7046"><a href="#L-7046"><span class="linenos">7046</span></a><span class="sd"> """</span> +</span><span id="L-7047"><a href="#L-7047"><span class="linenos">7047</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span> +</span><span id="L-7048"><a href="#L-7048"><span class="linenos">7048</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="L-7049"><a href="#L-7049"><span class="linenos">7049</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="L-7050"><a href="#L-7050"><span class="linenos">7050</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="L-7051"><a href="#L-7051"><span class="linenos">7051</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="L-7052"><a href="#L-7052"><span class="linenos">7052</span></a> <span class="p">)</span> </span><span id="L-7053"><a href="#L-7053"><span class="linenos">7053</span></a> -</span><span id="L-7054"><a href="#L-7054"><span class="linenos">7054</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> -</span><span id="L-7055"><a href="#L-7055"><span class="linenos">7055</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> -</span><span id="L-7056"><a href="#L-7056"><span class="linenos">7056</span></a> -</span><span id="L-7057"><a href="#L-7057"><span class="linenos">7057</span></a><span class="sd"> Example:</span> -</span><span id="L-7058"><a href="#L-7058"><span class="linenos">7058</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> -</span><span id="L-7059"><a href="#L-7059"><span class="linenos">7059</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> +</span><span id="L-7054"><a href="#L-7054"><span class="linenos">7054</span></a> <span class="k">if</span> <span class="n">fields</span><span class="p">:</span> +</span><span id="L-7055"><a href="#L-7055"><span class="linenos">7055</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">build</span><span class="p">(</span> +</span><span id="L-7056"><a href="#L-7056"><span class="linenos">7056</span></a> <span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">))</span> +</span><span id="L-7057"><a href="#L-7057"><span class="linenos">7057</span></a> <span class="p">)</span> +</span><span id="L-7058"><a href="#L-7058"><span class="linenos">7058</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-7059"><a href="#L-7059"><span class="linenos">7059</span></a> </span><span id="L-7060"><a href="#L-7060"><span class="linenos">7060</span></a> -</span><span id="L-7061"><a href="#L-7061"><span class="linenos">7061</span></a><span class="sd"> Args:</span> -</span><span id="L-7062"><a href="#L-7062"><span class="linenos">7062</span></a><span class="sd"> expression: The expression to cast.</span> -</span><span id="L-7063"><a href="#L-7063"><span class="linenos">7063</span></a><span class="sd"> to: The datatype to cast to.</span> -</span><span id="L-7064"><a href="#L-7064"><span class="linenos">7064</span></a><span class="sd"> copy: Whether to copy the supplied expressions.</span> -</span><span id="L-7065"><a href="#L-7065"><span class="linenos">7065</span></a> -</span><span id="L-7066"><a href="#L-7066"><span class="linenos">7066</span></a><span class="sd"> Returns:</span> -</span><span id="L-7067"><a href="#L-7067"><span class="linenos">7067</span></a><span class="sd"> The new Cast instance.</span> -</span><span id="L-7068"><a href="#L-7068"><span class="linenos">7068</span></a><span class="sd"> """</span> -</span><span id="L-7069"><a href="#L-7069"><span class="linenos">7069</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-7070"><a href="#L-7070"><span class="linenos">7070</span></a> <span class="n">data_type</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">to</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-7071"><a href="#L-7071"><span class="linenos">7071</span></a> -</span><span id="L-7072"><a href="#L-7072"><span class="linenos">7072</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">data_type</span><span class="p">):</span> -</span><span id="L-7073"><a href="#L-7073"><span class="linenos">7073</span></a> <span class="k">return</span> <span class="n">expr</span> -</span><span id="L-7074"><a href="#L-7074"><span class="linenos">7074</span></a> -</span><span id="L-7075"><a href="#L-7075"><span class="linenos">7075</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="L-7076"><a href="#L-7076"><span class="linenos">7076</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">data_type</span> -</span><span id="L-7077"><a href="#L-7077"><span class="linenos">7077</span></a> -</span><span id="L-7078"><a href="#L-7078"><span class="linenos">7078</span></a> <span class="k">return</span> <span class="n">expr</span> -</span><span id="L-7079"><a href="#L-7079"><span class="linenos">7079</span></a> -</span><span id="L-7080"><a href="#L-7080"><span class="linenos">7080</span></a> -</span><span id="L-7081"><a href="#L-7081"><span class="linenos">7081</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span> -</span><span id="L-7082"><a href="#L-7082"><span class="linenos">7082</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-7083"><a href="#L-7083"><span class="linenos">7083</span></a> <span class="n">db</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7084"><a href="#L-7084"><span class="linenos">7084</span></a> <span class="n">catalog</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7085"><a href="#L-7085"><span class="linenos">7085</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="L-7086"><a href="#L-7086"><span class="linenos">7086</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7087"><a href="#L-7087"><span class="linenos">7087</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> -</span><span id="L-7088"><a href="#L-7088"><span class="linenos">7088</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> -</span><span id="L-7089"><a href="#L-7089"><span class="linenos">7089</span></a> -</span><span id="L-7090"><a href="#L-7090"><span class="linenos">7090</span></a><span class="sd"> Args:</span> -</span><span id="L-7091"><a href="#L-7091"><span class="linenos">7091</span></a><span class="sd"> table: Table name.</span> -</span><span id="L-7092"><a href="#L-7092"><span class="linenos">7092</span></a><span class="sd"> db: Database name.</span> -</span><span id="L-7093"><a href="#L-7093"><span class="linenos">7093</span></a><span class="sd"> catalog: Catalog name.</span> -</span><span id="L-7094"><a href="#L-7094"><span class="linenos">7094</span></a><span class="sd"> quote: Whether to force quotes on the table's identifiers.</span> -</span><span id="L-7095"><a href="#L-7095"><span class="linenos">7095</span></a><span class="sd"> alias: Table's alias.</span> +</span><span id="L-7061"><a href="#L-7061"><span class="linenos">7061</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> +</span><span id="L-7062"><a href="#L-7062"><span class="linenos">7062</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> +</span><span id="L-7063"><a href="#L-7063"><span class="linenos">7063</span></a> +</span><span id="L-7064"><a href="#L-7064"><span class="linenos">7064</span></a><span class="sd"> Example:</span> +</span><span id="L-7065"><a href="#L-7065"><span class="linenos">7065</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> +</span><span id="L-7066"><a href="#L-7066"><span class="linenos">7066</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> +</span><span id="L-7067"><a href="#L-7067"><span class="linenos">7067</span></a> +</span><span id="L-7068"><a href="#L-7068"><span class="linenos">7068</span></a><span class="sd"> Args:</span> +</span><span id="L-7069"><a href="#L-7069"><span class="linenos">7069</span></a><span class="sd"> expression: The expression to cast.</span> +</span><span id="L-7070"><a href="#L-7070"><span class="linenos">7070</span></a><span class="sd"> to: The datatype to cast to.</span> +</span><span id="L-7071"><a href="#L-7071"><span class="linenos">7071</span></a><span class="sd"> copy: Whether to copy the supplied expressions.</span> +</span><span id="L-7072"><a href="#L-7072"><span class="linenos">7072</span></a> +</span><span id="L-7073"><a href="#L-7073"><span class="linenos">7073</span></a><span class="sd"> Returns:</span> +</span><span id="L-7074"><a href="#L-7074"><span class="linenos">7074</span></a><span class="sd"> The new Cast instance.</span> +</span><span id="L-7075"><a href="#L-7075"><span class="linenos">7075</span></a><span class="sd"> """</span> +</span><span id="L-7076"><a href="#L-7076"><span class="linenos">7076</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-7077"><a href="#L-7077"><span class="linenos">7077</span></a> <span class="n">data_type</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">to</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-7078"><a href="#L-7078"><span class="linenos">7078</span></a> +</span><span id="L-7079"><a href="#L-7079"><span class="linenos">7079</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">data_type</span><span class="p">):</span> +</span><span id="L-7080"><a href="#L-7080"><span class="linenos">7080</span></a> <span class="k">return</span> <span class="n">expr</span> +</span><span id="L-7081"><a href="#L-7081"><span class="linenos">7081</span></a> +</span><span id="L-7082"><a href="#L-7082"><span class="linenos">7082</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="L-7083"><a href="#L-7083"><span class="linenos">7083</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">data_type</span> +</span><span id="L-7084"><a href="#L-7084"><span class="linenos">7084</span></a> +</span><span id="L-7085"><a href="#L-7085"><span class="linenos">7085</span></a> <span class="k">return</span> <span class="n">expr</span> +</span><span id="L-7086"><a href="#L-7086"><span class="linenos">7086</span></a> +</span><span id="L-7087"><a href="#L-7087"><span class="linenos">7087</span></a> +</span><span id="L-7088"><a href="#L-7088"><span class="linenos">7088</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span> +</span><span id="L-7089"><a href="#L-7089"><span class="linenos">7089</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-7090"><a href="#L-7090"><span class="linenos">7090</span></a> <span class="n">db</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7091"><a href="#L-7091"><span class="linenos">7091</span></a> <span class="n">catalog</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7092"><a href="#L-7092"><span class="linenos">7092</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="L-7093"><a href="#L-7093"><span class="linenos">7093</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7094"><a href="#L-7094"><span class="linenos">7094</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="L-7095"><a href="#L-7095"><span class="linenos">7095</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> </span><span id="L-7096"><a href="#L-7096"><span class="linenos">7096</span></a> -</span><span id="L-7097"><a href="#L-7097"><span class="linenos">7097</span></a><span class="sd"> Returns:</span> -</span><span id="L-7098"><a href="#L-7098"><span class="linenos">7098</span></a><span class="sd"> The new Table instance.</span> -</span><span id="L-7099"><a href="#L-7099"><span class="linenos">7099</span></a><span class="sd"> """</span> -</span><span id="L-7100"><a href="#L-7100"><span class="linenos">7100</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> -</span><span id="L-7101"><a href="#L-7101"><span class="linenos">7101</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7102"><a href="#L-7102"><span class="linenos">7102</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">db</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7103"><a href="#L-7103"><span class="linenos">7103</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">catalog</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7104"><a href="#L-7104"><span class="linenos">7104</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7105"><a href="#L-7105"><span class="linenos">7105</span></a> <span class="p">)</span> -</span><span id="L-7106"><a href="#L-7106"><span class="linenos">7106</span></a> -</span><span id="L-7107"><a href="#L-7107"><span class="linenos">7107</span></a> -</span><span id="L-7108"><a href="#L-7108"><span class="linenos">7108</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> -</span><span id="L-7109"><a href="#L-7109"><span class="linenos">7109</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</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="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> -</span><span id="L-7110"><a href="#L-7110"><span class="linenos">7110</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7111"><a href="#L-7111"><span class="linenos">7111</span></a> <span class="n">columns</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">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7112"><a href="#L-7112"><span class="linenos">7112</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> -</span><span id="L-7113"><a href="#L-7113"><span class="linenos">7113</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> +</span><span id="L-7097"><a href="#L-7097"><span class="linenos">7097</span></a><span class="sd"> Args:</span> +</span><span id="L-7098"><a href="#L-7098"><span class="linenos">7098</span></a><span class="sd"> table: Table name.</span> +</span><span id="L-7099"><a href="#L-7099"><span class="linenos">7099</span></a><span class="sd"> db: Database name.</span> +</span><span id="L-7100"><a href="#L-7100"><span class="linenos">7100</span></a><span class="sd"> catalog: Catalog name.</span> +</span><span id="L-7101"><a href="#L-7101"><span class="linenos">7101</span></a><span class="sd"> quote: Whether to force quotes on the table's identifiers.</span> +</span><span id="L-7102"><a href="#L-7102"><span class="linenos">7102</span></a><span class="sd"> alias: Table's alias.</span> +</span><span id="L-7103"><a href="#L-7103"><span class="linenos">7103</span></a> +</span><span id="L-7104"><a href="#L-7104"><span class="linenos">7104</span></a><span class="sd"> Returns:</span> +</span><span id="L-7105"><a href="#L-7105"><span class="linenos">7105</span></a><span class="sd"> The new Table instance.</span> +</span><span id="L-7106"><a href="#L-7106"><span class="linenos">7106</span></a><span class="sd"> """</span> +</span><span id="L-7107"><a href="#L-7107"><span class="linenos">7107</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> +</span><span id="L-7108"><a href="#L-7108"><span class="linenos">7108</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7109"><a href="#L-7109"><span class="linenos">7109</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">db</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7110"><a href="#L-7110"><span class="linenos">7110</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">catalog</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7111"><a href="#L-7111"><span class="linenos">7111</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7112"><a href="#L-7112"><span class="linenos">7112</span></a> <span class="p">)</span> +</span><span id="L-7113"><a href="#L-7113"><span class="linenos">7113</span></a> </span><span id="L-7114"><a href="#L-7114"><span class="linenos">7114</span></a> -</span><span id="L-7115"><a href="#L-7115"><span class="linenos">7115</span></a><span class="sd"> Example:</span> -</span><span id="L-7116"><a href="#L-7116"><span class="linenos">7116</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> -</span><span id="L-7117"><a href="#L-7117"><span class="linenos">7117</span></a><span class="sd"> "VALUES (1, '2')"</span> -</span><span id="L-7118"><a href="#L-7118"><span class="linenos">7118</span></a> -</span><span id="L-7119"><a href="#L-7119"><span class="linenos">7119</span></a><span class="sd"> Args:</span> -</span><span id="L-7120"><a href="#L-7120"><span class="linenos">7120</span></a><span class="sd"> values: values statements that will be converted to SQL</span> -</span><span id="L-7121"><a href="#L-7121"><span class="linenos">7121</span></a><span class="sd"> alias: optional alias</span> -</span><span id="L-7122"><a href="#L-7122"><span class="linenos">7122</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> -</span><span id="L-7123"><a href="#L-7123"><span class="linenos">7123</span></a><span class="sd"> If either are provided then an alias is also required.</span> -</span><span id="L-7124"><a href="#L-7124"><span class="linenos">7124</span></a> -</span><span id="L-7125"><a href="#L-7125"><span class="linenos">7125</span></a><span class="sd"> Returns:</span> -</span><span id="L-7126"><a href="#L-7126"><span class="linenos">7126</span></a><span class="sd"> Values: the Values expression object</span> -</span><span id="L-7127"><a href="#L-7127"><span class="linenos">7127</span></a><span class="sd"> """</span> -</span><span id="L-7128"><a href="#L-7128"><span class="linenos">7128</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-7129"><a href="#L-7129"><span class="linenos">7129</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> -</span><span id="L-7130"><a href="#L-7130"><span class="linenos">7130</span></a> -</span><span id="L-7131"><a href="#L-7131"><span class="linenos">7131</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> -</span><span id="L-7132"><a href="#L-7132"><span class="linenos">7132</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">],</span> -</span><span id="L-7133"><a href="#L-7133"><span class="linenos">7133</span></a> <span class="n">alias</span><span class="o">=</span><span class="p">(</span> -</span><span id="L-7134"><a href="#L-7134"><span class="linenos">7134</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> -</span><span id="L-7135"><a href="#L-7135"><span class="linenos">7135</span></a> <span class="k">if</span> <span class="n">columns</span> -</span><span id="L-7136"><a href="#L-7136"><span class="linenos">7136</span></a> <span class="k">else</span> <span class="p">(</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-7137"><a href="#L-7137"><span class="linenos">7137</span></a> <span class="p">),</span> -</span><span id="L-7138"><a href="#L-7138"><span class="linenos">7138</span></a> <span class="p">)</span> -</span><span id="L-7139"><a href="#L-7139"><span class="linenos">7139</span></a> -</span><span id="L-7140"><a href="#L-7140"><span class="linenos">7140</span></a> -</span><span id="L-7141"><a href="#L-7141"><span class="linenos">7141</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> -</span><span id="L-7142"><a href="#L-7142"><span class="linenos">7142</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> -</span><span id="L-7143"><a href="#L-7143"><span class="linenos">7143</span></a> -</span><span id="L-7144"><a href="#L-7144"><span class="linenos">7144</span></a><span class="sd"> Example:</span> -</span><span id="L-7145"><a href="#L-7145"><span class="linenos">7145</span></a><span class="sd"> >>> repr(var('x'))</span> -</span><span id="L-7146"><a href="#L-7146"><span class="linenos">7146</span></a><span class="sd"> 'Var(this=x)'</span> +</span><span id="L-7115"><a href="#L-7115"><span class="linenos">7115</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> +</span><span id="L-7116"><a href="#L-7116"><span class="linenos">7116</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</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="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> +</span><span id="L-7117"><a href="#L-7117"><span class="linenos">7117</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7118"><a href="#L-7118"><span class="linenos">7118</span></a> <span class="n">columns</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">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7119"><a href="#L-7119"><span class="linenos">7119</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> +</span><span id="L-7120"><a href="#L-7120"><span class="linenos">7120</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> +</span><span id="L-7121"><a href="#L-7121"><span class="linenos">7121</span></a> +</span><span id="L-7122"><a href="#L-7122"><span class="linenos">7122</span></a><span class="sd"> Example:</span> +</span><span id="L-7123"><a href="#L-7123"><span class="linenos">7123</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> +</span><span id="L-7124"><a href="#L-7124"><span class="linenos">7124</span></a><span class="sd"> "VALUES (1, '2')"</span> +</span><span id="L-7125"><a href="#L-7125"><span class="linenos">7125</span></a> +</span><span id="L-7126"><a href="#L-7126"><span class="linenos">7126</span></a><span class="sd"> Args:</span> +</span><span id="L-7127"><a href="#L-7127"><span class="linenos">7127</span></a><span class="sd"> values: values statements that will be converted to SQL</span> +</span><span id="L-7128"><a href="#L-7128"><span class="linenos">7128</span></a><span class="sd"> alias: optional alias</span> +</span><span id="L-7129"><a href="#L-7129"><span class="linenos">7129</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> +</span><span id="L-7130"><a href="#L-7130"><span class="linenos">7130</span></a><span class="sd"> If either are provided then an alias is also required.</span> +</span><span id="L-7131"><a href="#L-7131"><span class="linenos">7131</span></a> +</span><span id="L-7132"><a href="#L-7132"><span class="linenos">7132</span></a><span class="sd"> Returns:</span> +</span><span id="L-7133"><a href="#L-7133"><span class="linenos">7133</span></a><span class="sd"> Values: the Values expression object</span> +</span><span id="L-7134"><a href="#L-7134"><span class="linenos">7134</span></a><span class="sd"> """</span> +</span><span id="L-7135"><a href="#L-7135"><span class="linenos">7135</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-7136"><a href="#L-7136"><span class="linenos">7136</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> +</span><span id="L-7137"><a href="#L-7137"><span class="linenos">7137</span></a> +</span><span id="L-7138"><a href="#L-7138"><span class="linenos">7138</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> +</span><span id="L-7139"><a href="#L-7139"><span class="linenos">7139</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">],</span> +</span><span id="L-7140"><a href="#L-7140"><span class="linenos">7140</span></a> <span class="n">alias</span><span class="o">=</span><span class="p">(</span> +</span><span id="L-7141"><a href="#L-7141"><span class="linenos">7141</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> +</span><span id="L-7142"><a href="#L-7142"><span class="linenos">7142</span></a> <span class="k">if</span> <span class="n">columns</span> +</span><span id="L-7143"><a href="#L-7143"><span class="linenos">7143</span></a> <span class="k">else</span> <span class="p">(</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-7144"><a href="#L-7144"><span class="linenos">7144</span></a> <span class="p">),</span> +</span><span id="L-7145"><a href="#L-7145"><span class="linenos">7145</span></a> <span class="p">)</span> +</span><span id="L-7146"><a href="#L-7146"><span class="linenos">7146</span></a> </span><span id="L-7147"><a href="#L-7147"><span class="linenos">7147</span></a> -</span><span id="L-7148"><a href="#L-7148"><span class="linenos">7148</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> -</span><span id="L-7149"><a href="#L-7149"><span class="linenos">7149</span></a><span class="sd"> 'Var(this=x)'</span> +</span><span id="L-7148"><a href="#L-7148"><span class="linenos">7148</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> +</span><span id="L-7149"><a href="#L-7149"><span class="linenos">7149</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> </span><span id="L-7150"><a href="#L-7150"><span class="linenos">7150</span></a> -</span><span id="L-7151"><a href="#L-7151"><span class="linenos">7151</span></a><span class="sd"> Args:</span> -</span><span id="L-7152"><a href="#L-7152"><span class="linenos">7152</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> -</span><span id="L-7153"><a href="#L-7153"><span class="linenos">7153</span></a> -</span><span id="L-7154"><a href="#L-7154"><span class="linenos">7154</span></a><span class="sd"> Returns:</span> -</span><span id="L-7155"><a href="#L-7155"><span class="linenos">7155</span></a><span class="sd"> The new variable node.</span> -</span><span id="L-7156"><a href="#L-7156"><span class="linenos">7156</span></a><span class="sd"> """</span> -</span><span id="L-7157"><a href="#L-7157"><span class="linenos">7157</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> -</span><span id="L-7158"><a href="#L-7158"><span class="linenos">7158</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> -</span><span id="L-7159"><a href="#L-7159"><span class="linenos">7159</span></a> -</span><span id="L-7160"><a href="#L-7160"><span class="linenos">7160</span></a> <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="n">Expression</span><span class="p">):</span> -</span><span id="L-7161"><a href="#L-7161"><span class="linenos">7161</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-7162"><a href="#L-7162"><span class="linenos">7162</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-7163"><a href="#L-7163"><span class="linenos">7163</span></a> -</span><span id="L-7164"><a href="#L-7164"><span class="linenos">7164</span></a> -</span><span id="L-7165"><a href="#L-7165"><span class="linenos">7165</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span> -</span><span id="L-7166"><a href="#L-7166"><span class="linenos">7166</span></a> <span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="L-7167"><a href="#L-7167"><span class="linenos">7167</span></a> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="L-7168"><a href="#L-7168"><span class="linenos">7168</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-7169"><a href="#L-7169"><span class="linenos">7169</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> -</span><span id="L-7170"><a href="#L-7170"><span class="linenos">7170</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> +</span><span id="L-7151"><a href="#L-7151"><span class="linenos">7151</span></a><span class="sd"> Example:</span> +</span><span id="L-7152"><a href="#L-7152"><span class="linenos">7152</span></a><span class="sd"> >>> repr(var('x'))</span> +</span><span id="L-7153"><a href="#L-7153"><span class="linenos">7153</span></a><span class="sd"> 'Var(this=x)'</span> +</span><span id="L-7154"><a href="#L-7154"><span class="linenos">7154</span></a> +</span><span id="L-7155"><a href="#L-7155"><span class="linenos">7155</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> +</span><span id="L-7156"><a href="#L-7156"><span class="linenos">7156</span></a><span class="sd"> 'Var(this=x)'</span> +</span><span id="L-7157"><a href="#L-7157"><span class="linenos">7157</span></a> +</span><span id="L-7158"><a href="#L-7158"><span class="linenos">7158</span></a><span class="sd"> Args:</span> +</span><span id="L-7159"><a href="#L-7159"><span class="linenos">7159</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> +</span><span id="L-7160"><a href="#L-7160"><span class="linenos">7160</span></a> +</span><span id="L-7161"><a href="#L-7161"><span class="linenos">7161</span></a><span class="sd"> Returns:</span> +</span><span id="L-7162"><a href="#L-7162"><span class="linenos">7162</span></a><span class="sd"> The new variable node.</span> +</span><span id="L-7163"><a href="#L-7163"><span class="linenos">7163</span></a><span class="sd"> """</span> +</span><span id="L-7164"><a href="#L-7164"><span class="linenos">7164</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> +</span><span id="L-7165"><a href="#L-7165"><span class="linenos">7165</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> +</span><span id="L-7166"><a href="#L-7166"><span class="linenos">7166</span></a> +</span><span id="L-7167"><a href="#L-7167"><span class="linenos">7167</span></a> <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="n">Expression</span><span class="p">):</span> +</span><span id="L-7168"><a href="#L-7168"><span class="linenos">7168</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-7169"><a href="#L-7169"><span class="linenos">7169</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-7170"><a href="#L-7170"><span class="linenos">7170</span></a> </span><span id="L-7171"><a href="#L-7171"><span class="linenos">7171</span></a> -</span><span id="L-7172"><a href="#L-7172"><span class="linenos">7172</span></a><span class="sd"> Args:</span> -</span><span id="L-7173"><a href="#L-7173"><span class="linenos">7173</span></a><span class="sd"> old_name: The old name of the table</span> -</span><span id="L-7174"><a href="#L-7174"><span class="linenos">7174</span></a><span class="sd"> new_name: The new name of the table</span> -</span><span id="L-7175"><a href="#L-7175"><span class="linenos">7175</span></a><span class="sd"> dialect: The dialect to parse the table.</span> -</span><span id="L-7176"><a href="#L-7176"><span class="linenos">7176</span></a> -</span><span id="L-7177"><a href="#L-7177"><span class="linenos">7177</span></a><span class="sd"> Returns:</span> -</span><span id="L-7178"><a href="#L-7178"><span class="linenos">7178</span></a><span class="sd"> Alter table expression</span> -</span><span id="L-7179"><a href="#L-7179"><span class="linenos">7179</span></a><span class="sd"> """</span> -</span><span id="L-7180"><a href="#L-7180"><span class="linenos">7180</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_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><span id="L-7181"><a href="#L-7181"><span class="linenos">7181</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_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><span id="L-7182"><a href="#L-7182"><span class="linenos">7182</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> -</span><span id="L-7183"><a href="#L-7183"><span class="linenos">7183</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> -</span><span id="L-7184"><a href="#L-7184"><span class="linenos">7184</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-7185"><a href="#L-7185"><span class="linenos">7185</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> -</span><span id="L-7186"><a href="#L-7186"><span class="linenos">7186</span></a> <span class="p">],</span> -</span><span id="L-7187"><a href="#L-7187"><span class="linenos">7187</span></a> <span class="p">)</span> -</span><span id="L-7188"><a href="#L-7188"><span class="linenos">7188</span></a> -</span><span id="L-7189"><a href="#L-7189"><span class="linenos">7189</span></a> -</span><span id="L-7190"><a href="#L-7190"><span class="linenos">7190</span></a><span class="k">def</span> <span class="nf">rename_column</span><span class="p">(</span> -</span><span id="L-7191"><a href="#L-7191"><span class="linenos">7191</span></a> <span class="n">table_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="L-7192"><a href="#L-7192"><span class="linenos">7192</span></a> <span class="n">old_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> -</span><span id="L-7193"><a href="#L-7193"><span class="linenos">7193</span></a> <span class="n">new_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> -</span><span id="L-7194"><a href="#L-7194"><span class="linenos">7194</span></a> <span class="n">exists</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">None</span><span class="p">,</span> -</span><span id="L-7195"><a href="#L-7195"><span class="linenos">7195</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-7196"><a href="#L-7196"><span class="linenos">7196</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> -</span><span id="L-7197"><a href="#L-7197"><span class="linenos">7197</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME COLUMN... expression</span> -</span><span id="L-7198"><a href="#L-7198"><span class="linenos">7198</span></a> -</span><span id="L-7199"><a href="#L-7199"><span class="linenos">7199</span></a><span class="sd"> Args:</span> -</span><span id="L-7200"><a href="#L-7200"><span class="linenos">7200</span></a><span class="sd"> table_name: Name of the table</span> -</span><span id="L-7201"><a href="#L-7201"><span class="linenos">7201</span></a><span class="sd"> old_column: The old name of the column</span> -</span><span id="L-7202"><a href="#L-7202"><span class="linenos">7202</span></a><span class="sd"> new_column: The new name of the column</span> -</span><span id="L-7203"><a href="#L-7203"><span class="linenos">7203</span></a><span class="sd"> exists: Whether to add the `IF EXISTS` clause</span> -</span><span id="L-7204"><a href="#L-7204"><span class="linenos">7204</span></a><span class="sd"> dialect: The dialect to parse the table/column.</span> +</span><span id="L-7172"><a href="#L-7172"><span class="linenos">7172</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span> +</span><span id="L-7173"><a href="#L-7173"><span class="linenos">7173</span></a> <span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="L-7174"><a href="#L-7174"><span class="linenos">7174</span></a> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="L-7175"><a href="#L-7175"><span class="linenos">7175</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-7176"><a href="#L-7176"><span class="linenos">7176</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> +</span><span id="L-7177"><a href="#L-7177"><span class="linenos">7177</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> +</span><span id="L-7178"><a href="#L-7178"><span class="linenos">7178</span></a> +</span><span id="L-7179"><a href="#L-7179"><span class="linenos">7179</span></a><span class="sd"> Args:</span> +</span><span id="L-7180"><a href="#L-7180"><span class="linenos">7180</span></a><span class="sd"> old_name: The old name of the table</span> +</span><span id="L-7181"><a href="#L-7181"><span class="linenos">7181</span></a><span class="sd"> new_name: The new name of the table</span> +</span><span id="L-7182"><a href="#L-7182"><span class="linenos">7182</span></a><span class="sd"> dialect: The dialect to parse the table.</span> +</span><span id="L-7183"><a href="#L-7183"><span class="linenos">7183</span></a> +</span><span id="L-7184"><a href="#L-7184"><span class="linenos">7184</span></a><span class="sd"> Returns:</span> +</span><span id="L-7185"><a href="#L-7185"><span class="linenos">7185</span></a><span class="sd"> Alter table expression</span> +</span><span id="L-7186"><a href="#L-7186"><span class="linenos">7186</span></a><span class="sd"> """</span> +</span><span id="L-7187"><a href="#L-7187"><span class="linenos">7187</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_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><span id="L-7188"><a href="#L-7188"><span class="linenos">7188</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_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><span id="L-7189"><a href="#L-7189"><span class="linenos">7189</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> +</span><span id="L-7190"><a href="#L-7190"><span class="linenos">7190</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> +</span><span id="L-7191"><a href="#L-7191"><span class="linenos">7191</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-7192"><a href="#L-7192"><span class="linenos">7192</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> +</span><span id="L-7193"><a href="#L-7193"><span class="linenos">7193</span></a> <span class="p">],</span> +</span><span id="L-7194"><a href="#L-7194"><span class="linenos">7194</span></a> <span class="p">)</span> +</span><span id="L-7195"><a href="#L-7195"><span class="linenos">7195</span></a> +</span><span id="L-7196"><a href="#L-7196"><span class="linenos">7196</span></a> +</span><span id="L-7197"><a href="#L-7197"><span class="linenos">7197</span></a><span class="k">def</span> <span class="nf">rename_column</span><span class="p">(</span> +</span><span id="L-7198"><a href="#L-7198"><span class="linenos">7198</span></a> <span class="n">table_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="L-7199"><a href="#L-7199"><span class="linenos">7199</span></a> <span class="n">old_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> +</span><span id="L-7200"><a href="#L-7200"><span class="linenos">7200</span></a> <span class="n">new_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> +</span><span id="L-7201"><a href="#L-7201"><span class="linenos">7201</span></a> <span class="n">exists</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">None</span><span class="p">,</span> +</span><span id="L-7202"><a href="#L-7202"><span class="linenos">7202</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-7203"><a href="#L-7203"><span class="linenos">7203</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> +</span><span id="L-7204"><a href="#L-7204"><span class="linenos">7204</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME COLUMN... expression</span> </span><span id="L-7205"><a href="#L-7205"><span class="linenos">7205</span></a> -</span><span id="L-7206"><a href="#L-7206"><span class="linenos">7206</span></a><span class="sd"> Returns:</span> -</span><span id="L-7207"><a href="#L-7207"><span class="linenos">7207</span></a><span class="sd"> Alter table expression</span> -</span><span id="L-7208"><a href="#L-7208"><span class="linenos">7208</span></a><span class="sd"> """</span> -</span><span id="L-7209"><a href="#L-7209"><span class="linenos">7209</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">table_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><span id="L-7210"><a href="#L-7210"><span class="linenos">7210</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">old_column_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><span id="L-7211"><a href="#L-7211"><span class="linenos">7211</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">new_column_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><span id="L-7212"><a href="#L-7212"><span class="linenos">7212</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> -</span><span id="L-7213"><a href="#L-7213"><span class="linenos">7213</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="L-7214"><a href="#L-7214"><span class="linenos">7214</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-7215"><a href="#L-7215"><span class="linenos">7215</span></a> <span class="n">RenameColumn</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">),</span> -</span><span id="L-7216"><a href="#L-7216"><span class="linenos">7216</span></a> <span class="p">],</span> -</span><span id="L-7217"><a href="#L-7217"><span class="linenos">7217</span></a> <span class="p">)</span> -</span><span id="L-7218"><a href="#L-7218"><span class="linenos">7218</span></a> -</span><span id="L-7219"><a href="#L-7219"><span class="linenos">7219</span></a> -</span><span id="L-7220"><a href="#L-7220"><span class="linenos">7220</span></a><span class="k">def</span> <span class="nf">convert</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="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-7221"><a href="#L-7221"><span class="linenos">7221</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> -</span><span id="L-7222"><a href="#L-7222"><span class="linenos">7222</span></a> -</span><span id="L-7223"><a href="#L-7223"><span class="linenos">7223</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> -</span><span id="L-7224"><a href="#L-7224"><span class="linenos">7224</span></a> -</span><span id="L-7225"><a href="#L-7225"><span class="linenos">7225</span></a><span class="sd"> Args:</span> -</span><span id="L-7226"><a href="#L-7226"><span class="linenos">7226</span></a><span class="sd"> value: A python object.</span> -</span><span id="L-7227"><a href="#L-7227"><span class="linenos">7227</span></a><span class="sd"> copy: Whether to copy `value` (only applies to Expressions and collections).</span> -</span><span id="L-7228"><a href="#L-7228"><span class="linenos">7228</span></a> -</span><span id="L-7229"><a href="#L-7229"><span class="linenos">7229</span></a><span class="sd"> Returns:</span> -</span><span id="L-7230"><a href="#L-7230"><span class="linenos">7230</span></a><span class="sd"> The equivalent expression object.</span> -</span><span id="L-7231"><a href="#L-7231"><span class="linenos">7231</span></a><span class="sd"> """</span> -</span><span id="L-7232"><a href="#L-7232"><span class="linenos">7232</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-7233"><a href="#L-7233"><span class="linenos">7233</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-7234"><a href="#L-7234"><span class="linenos">7234</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-7235"><a href="#L-7235"><span class="linenos">7235</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-7236"><a href="#L-7236"><span class="linenos">7236</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="L-7237"><a href="#L-7237"><span class="linenos">7237</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-7238"><a href="#L-7238"><span class="linenos">7238</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">)):</span> -</span><span id="L-7239"><a href="#L-7239"><span class="linenos">7239</span></a> <span class="k">return</span> <span class="n">null</span><span class="p">()</span> -</span><span id="L-7240"><a href="#L-7240"><span class="linenos">7240</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> -</span><span id="L-7241"><a href="#L-7241"><span class="linenos">7241</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-7242"><a href="#L-7242"><span class="linenos">7242</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span> -</span><span id="L-7243"><a href="#L-7243"><span class="linenos">7243</span></a> <span class="k">return</span> <span class="n">HexString</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="o">.</span><span class="n">hex</span><span class="p">())</span> -</span><span id="L-7244"><a href="#L-7244"><span class="linenos">7244</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> -</span><span id="L-7245"><a href="#L-7245"><span class="linenos">7245</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="L-7246"><a href="#L-7246"><span class="linenos">7246</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span> -</span><span id="L-7247"><a href="#L-7247"><span class="linenos">7247</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span> -</span><span id="L-7248"><a href="#L-7248"><span class="linenos">7248</span></a> <span class="p">)</span> -</span><span id="L-7249"><a href="#L-7249"><span class="linenos">7249</span></a> <span class="p">)</span> -</span><span id="L-7250"><a href="#L-7250"><span class="linenos">7250</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> -</span><span id="L-7251"><a href="#L-7251"><span class="linenos">7251</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> -</span><span id="L-7252"><a href="#L-7252"><span class="linenos">7252</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> -</span><span id="L-7253"><a href="#L-7253"><span class="linenos">7253</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> -</span><span id="L-7254"><a href="#L-7254"><span class="linenos">7254</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> -</span><span id="L-7255"><a href="#L-7255"><span class="linenos">7255</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"_fields"</span><span class="p">):</span> -</span><span id="L-7256"><a href="#L-7256"><span class="linenos">7256</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> -</span><span id="L-7257"><a href="#L-7257"><span class="linenos">7257</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-7258"><a href="#L-7258"><span class="linenos">7258</span></a> <span class="n">PropertyEQ</span><span class="p">(</span> -</span><span id="L-7259"><a href="#L-7259"><span class="linenos">7259</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">k</span><span class="p">),</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="L-7260"><a href="#L-7260"><span class="linenos">7260</span></a> <span class="p">)</span> -</span><span id="L-7261"><a href="#L-7261"><span class="linenos">7261</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">_fields</span> -</span><span id="L-7262"><a href="#L-7262"><span class="linenos">7262</span></a> <span class="p">]</span> -</span><span id="L-7263"><a href="#L-7263"><span class="linenos">7263</span></a> <span class="p">)</span> -</span><span id="L-7264"><a href="#L-7264"><span class="linenos">7264</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="L-7265"><a href="#L-7265"><span class="linenos">7265</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-7266"><a href="#L-7266"><span class="linenos">7266</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="L-7267"><a href="#L-7267"><span class="linenos">7267</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="L-7268"><a href="#L-7268"><span class="linenos">7268</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> -</span><span id="L-7269"><a href="#L-7269"><span class="linenos">7269</span></a> <span class="n">keys</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]),</span> -</span><span id="L-7270"><a href="#L-7270"><span class="linenos">7270</span></a> <span class="n">values</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()]),</span> -</span><span id="L-7271"><a href="#L-7271"><span class="linenos">7271</span></a> <span class="p">)</span> -</span><span id="L-7272"><a href="#L-7272"><span class="linenos">7272</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"__dict__"</span><span class="p">):</span> -</span><span id="L-7273"><a href="#L-7273"><span class="linenos">7273</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> -</span><span id="L-7274"><a href="#L-7274"><span class="linenos">7274</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-7275"><a href="#L-7275"><span class="linenos">7275</span></a> <span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> -</span><span id="L-7276"><a href="#L-7276"><span class="linenos">7276</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">value</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-7277"><a href="#L-7277"><span class="linenos">7277</span></a> <span class="p">]</span> +</span><span id="L-7206"><a href="#L-7206"><span class="linenos">7206</span></a><span class="sd"> Args:</span> +</span><span id="L-7207"><a href="#L-7207"><span class="linenos">7207</span></a><span class="sd"> table_name: Name of the table</span> +</span><span id="L-7208"><a href="#L-7208"><span class="linenos">7208</span></a><span class="sd"> old_column: The old name of the column</span> +</span><span id="L-7209"><a href="#L-7209"><span class="linenos">7209</span></a><span class="sd"> new_column: The new name of the column</span> +</span><span id="L-7210"><a href="#L-7210"><span class="linenos">7210</span></a><span class="sd"> exists: Whether to add the `IF EXISTS` clause</span> +</span><span id="L-7211"><a href="#L-7211"><span class="linenos">7211</span></a><span class="sd"> dialect: The dialect to parse the table/column.</span> +</span><span id="L-7212"><a href="#L-7212"><span class="linenos">7212</span></a> +</span><span id="L-7213"><a href="#L-7213"><span class="linenos">7213</span></a><span class="sd"> Returns:</span> +</span><span id="L-7214"><a href="#L-7214"><span class="linenos">7214</span></a><span class="sd"> Alter table expression</span> +</span><span id="L-7215"><a href="#L-7215"><span class="linenos">7215</span></a><span class="sd"> """</span> +</span><span id="L-7216"><a href="#L-7216"><span class="linenos">7216</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">table_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><span id="L-7217"><a href="#L-7217"><span class="linenos">7217</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">old_column_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><span id="L-7218"><a href="#L-7218"><span class="linenos">7218</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">new_column_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><span id="L-7219"><a href="#L-7219"><span class="linenos">7219</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> +</span><span id="L-7220"><a href="#L-7220"><span class="linenos">7220</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="L-7221"><a href="#L-7221"><span class="linenos">7221</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-7222"><a href="#L-7222"><span class="linenos">7222</span></a> <span class="n">RenameColumn</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">),</span> +</span><span id="L-7223"><a href="#L-7223"><span class="linenos">7223</span></a> <span class="p">],</span> +</span><span id="L-7224"><a href="#L-7224"><span class="linenos">7224</span></a> <span class="p">)</span> +</span><span id="L-7225"><a href="#L-7225"><span class="linenos">7225</span></a> +</span><span id="L-7226"><a href="#L-7226"><span class="linenos">7226</span></a> +</span><span id="L-7227"><a href="#L-7227"><span class="linenos">7227</span></a><span class="k">def</span> <span class="nf">convert</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="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-7228"><a href="#L-7228"><span class="linenos">7228</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> +</span><span id="L-7229"><a href="#L-7229"><span class="linenos">7229</span></a> +</span><span id="L-7230"><a href="#L-7230"><span class="linenos">7230</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> +</span><span id="L-7231"><a href="#L-7231"><span class="linenos">7231</span></a> +</span><span id="L-7232"><a href="#L-7232"><span class="linenos">7232</span></a><span class="sd"> Args:</span> +</span><span id="L-7233"><a href="#L-7233"><span class="linenos">7233</span></a><span class="sd"> value: A python object.</span> +</span><span id="L-7234"><a href="#L-7234"><span class="linenos">7234</span></a><span class="sd"> copy: Whether to copy `value` (only applies to Expressions and collections).</span> +</span><span id="L-7235"><a href="#L-7235"><span class="linenos">7235</span></a> +</span><span id="L-7236"><a href="#L-7236"><span class="linenos">7236</span></a><span class="sd"> Returns:</span> +</span><span id="L-7237"><a href="#L-7237"><span class="linenos">7237</span></a><span class="sd"> The equivalent expression object.</span> +</span><span id="L-7238"><a href="#L-7238"><span class="linenos">7238</span></a><span class="sd"> """</span> +</span><span id="L-7239"><a href="#L-7239"><span class="linenos">7239</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-7240"><a href="#L-7240"><span class="linenos">7240</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-7241"><a href="#L-7241"><span class="linenos">7241</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-7242"><a href="#L-7242"><span class="linenos">7242</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-7243"><a href="#L-7243"><span class="linenos">7243</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="L-7244"><a href="#L-7244"><span class="linenos">7244</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-7245"><a href="#L-7245"><span class="linenos">7245</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">)):</span> +</span><span id="L-7246"><a href="#L-7246"><span class="linenos">7246</span></a> <span class="k">return</span> <span class="n">null</span><span class="p">()</span> +</span><span id="L-7247"><a href="#L-7247"><span class="linenos">7247</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> +</span><span id="L-7248"><a href="#L-7248"><span class="linenos">7248</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-7249"><a href="#L-7249"><span class="linenos">7249</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span> +</span><span id="L-7250"><a href="#L-7250"><span class="linenos">7250</span></a> <span class="k">return</span> <span class="n">HexString</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="o">.</span><span class="n">hex</span><span class="p">())</span> +</span><span id="L-7251"><a href="#L-7251"><span class="linenos">7251</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> +</span><span id="L-7252"><a href="#L-7252"><span class="linenos">7252</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="L-7253"><a href="#L-7253"><span class="linenos">7253</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span> +</span><span id="L-7254"><a href="#L-7254"><span class="linenos">7254</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span> +</span><span id="L-7255"><a href="#L-7255"><span class="linenos">7255</span></a> <span class="p">)</span> +</span><span id="L-7256"><a href="#L-7256"><span class="linenos">7256</span></a> <span class="p">)</span> +</span><span id="L-7257"><a href="#L-7257"><span class="linenos">7257</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> +</span><span id="L-7258"><a href="#L-7258"><span class="linenos">7258</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> +</span><span id="L-7259"><a href="#L-7259"><span class="linenos">7259</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> +</span><span id="L-7260"><a href="#L-7260"><span class="linenos">7260</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> +</span><span id="L-7261"><a href="#L-7261"><span class="linenos">7261</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> +</span><span id="L-7262"><a href="#L-7262"><span class="linenos">7262</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"_fields"</span><span class="p">):</span> +</span><span id="L-7263"><a href="#L-7263"><span class="linenos">7263</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> +</span><span id="L-7264"><a href="#L-7264"><span class="linenos">7264</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-7265"><a href="#L-7265"><span class="linenos">7265</span></a> <span class="n">PropertyEQ</span><span class="p">(</span> +</span><span id="L-7266"><a href="#L-7266"><span class="linenos">7266</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">k</span><span class="p">),</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="L-7267"><a href="#L-7267"><span class="linenos">7267</span></a> <span class="p">)</span> +</span><span id="L-7268"><a href="#L-7268"><span class="linenos">7268</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">_fields</span> +</span><span id="L-7269"><a href="#L-7269"><span class="linenos">7269</span></a> <span class="p">]</span> +</span><span id="L-7270"><a href="#L-7270"><span class="linenos">7270</span></a> <span class="p">)</span> +</span><span id="L-7271"><a href="#L-7271"><span class="linenos">7271</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="L-7272"><a href="#L-7272"><span class="linenos">7272</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-7273"><a href="#L-7273"><span class="linenos">7273</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="L-7274"><a href="#L-7274"><span class="linenos">7274</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="L-7275"><a href="#L-7275"><span class="linenos">7275</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> +</span><span id="L-7276"><a href="#L-7276"><span class="linenos">7276</span></a> <span class="n">keys</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]),</span> +</span><span id="L-7277"><a href="#L-7277"><span class="linenos">7277</span></a> <span class="n">values</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()]),</span> </span><span id="L-7278"><a href="#L-7278"><span class="linenos">7278</span></a> <span class="p">)</span> -</span><span id="L-7279"><a href="#L-7279"><span class="linenos">7279</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-7280"><a href="#L-7280"><span class="linenos">7280</span></a> -</span><span id="L-7281"><a href="#L-7281"><span class="linenos">7281</span></a> -</span><span id="L-7282"><a href="#L-7282"><span class="linenos">7282</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-7283"><a href="#L-7283"><span class="linenos">7283</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7284"><a href="#L-7284"><span class="linenos">7284</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> -</span><span id="L-7285"><a href="#L-7285"><span class="linenos">7285</span></a><span class="sd"> """</span> -</span><span id="L-7286"><a href="#L-7286"><span class="linenos">7286</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="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span> -</span><span id="L-7287"><a href="#L-7287"><span class="linenos">7287</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span> +</span><span id="L-7279"><a href="#L-7279"><span class="linenos">7279</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"__dict__"</span><span class="p">):</span> +</span><span id="L-7280"><a href="#L-7280"><span class="linenos">7280</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> +</span><span id="L-7281"><a href="#L-7281"><span class="linenos">7281</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-7282"><a href="#L-7282"><span class="linenos">7282</span></a> <span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> +</span><span id="L-7283"><a href="#L-7283"><span class="linenos">7283</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">value</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-7284"><a href="#L-7284"><span class="linenos">7284</span></a> <span class="p">]</span> +</span><span id="L-7285"><a href="#L-7285"><span class="linenos">7285</span></a> <span class="p">)</span> +</span><span id="L-7286"><a href="#L-7286"><span class="linenos">7286</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-7287"><a href="#L-7287"><span class="linenos">7287</span></a> </span><span id="L-7288"><a href="#L-7288"><span class="linenos">7288</span></a> -</span><span id="L-7289"><a href="#L-7289"><span class="linenos">7289</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> -</span><span id="L-7290"><a href="#L-7290"><span class="linenos">7290</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-7291"><a href="#L-7291"><span class="linenos">7291</span></a> -</span><span id="L-7292"><a href="#L-7292"><span class="linenos">7292</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> -</span><span id="L-7293"><a href="#L-7293"><span class="linenos">7293</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-7294"><a href="#L-7294"><span class="linenos">7294</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)):</span> -</span><span id="L-7295"><a href="#L-7295"><span class="linenos">7295</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> -</span><span id="L-7296"><a href="#L-7296"><span class="linenos">7296</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7297"><a href="#L-7297"><span class="linenos">7297</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> +</span><span id="L-7289"><a href="#L-7289"><span class="linenos">7289</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-7290"><a href="#L-7290"><span class="linenos">7290</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7291"><a href="#L-7291"><span class="linenos">7291</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> +</span><span id="L-7292"><a href="#L-7292"><span class="linenos">7292</span></a><span class="sd"> """</span> +</span><span id="L-7293"><a href="#L-7293"><span class="linenos">7293</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="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span> +</span><span id="L-7294"><a href="#L-7294"><span class="linenos">7294</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span> +</span><span id="L-7295"><a href="#L-7295"><span class="linenos">7295</span></a> +</span><span id="L-7296"><a href="#L-7296"><span class="linenos">7296</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> +</span><span id="L-7297"><a href="#L-7297"><span class="linenos">7297</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-7298"><a href="#L-7298"><span class="linenos">7298</span></a> -</span><span id="L-7299"><a href="#L-7299"><span class="linenos">7299</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> -</span><span id="L-7300"><a href="#L-7300"><span class="linenos">7300</span></a> -</span><span id="L-7301"><a href="#L-7301"><span class="linenos">7301</span></a> -</span><span id="L-7302"><a href="#L-7302"><span class="linenos">7302</span></a><span class="k">def</span> <span class="nf">replace_tree</span><span class="p">(</span> -</span><span id="L-7303"><a href="#L-7303"><span class="linenos">7303</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="L-7304"><a href="#L-7304"><span class="linenos">7304</span></a> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> -</span><span id="L-7305"><a href="#L-7305"><span class="linenos">7305</span></a> <span class="n">prune</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">Callable</span><span class="p">[[</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7306"><a href="#L-7306"><span class="linenos">7306</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-7307"><a href="#L-7307"><span class="linenos">7307</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7308"><a href="#L-7308"><span class="linenos">7308</span></a><span class="sd"> Replace an entire tree with the result of function calls on each node.</span> -</span><span id="L-7309"><a href="#L-7309"><span class="linenos">7309</span></a> -</span><span id="L-7310"><a href="#L-7310"><span class="linenos">7310</span></a><span class="sd"> This will be traversed in reverse dfs, so leaves first.</span> -</span><span id="L-7311"><a href="#L-7311"><span class="linenos">7311</span></a><span class="sd"> If new nodes are created as a result of function calls, they will also be traversed.</span> -</span><span id="L-7312"><a href="#L-7312"><span class="linenos">7312</span></a><span class="sd"> """</span> -</span><span id="L-7313"><a href="#L-7313"><span class="linenos">7313</span></a> <span class="n">stack</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">))</span> -</span><span id="L-7314"><a href="#L-7314"><span class="linenos">7314</span></a> -</span><span id="L-7315"><a href="#L-7315"><span class="linenos">7315</span></a> <span class="k">while</span> <span class="n">stack</span><span class="p">:</span> -</span><span id="L-7316"><a href="#L-7316"><span class="linenos">7316</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> -</span><span id="L-7317"><a href="#L-7317"><span class="linenos">7317</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> -</span><span id="L-7318"><a href="#L-7318"><span class="linenos">7318</span></a> -</span><span id="L-7319"><a href="#L-7319"><span class="linenos">7319</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="L-7320"><a href="#L-7320"><span class="linenos">7320</span></a> <span class="n">node</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> +</span><span id="L-7299"><a href="#L-7299"><span class="linenos">7299</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> +</span><span id="L-7300"><a href="#L-7300"><span class="linenos">7300</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-7301"><a href="#L-7301"><span class="linenos">7301</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)):</span> +</span><span id="L-7302"><a href="#L-7302"><span class="linenos">7302</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> +</span><span id="L-7303"><a href="#L-7303"><span class="linenos">7303</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7304"><a href="#L-7304"><span class="linenos">7304</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> +</span><span id="L-7305"><a href="#L-7305"><span class="linenos">7305</span></a> +</span><span id="L-7306"><a href="#L-7306"><span class="linenos">7306</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-7307"><a href="#L-7307"><span class="linenos">7307</span></a> +</span><span id="L-7308"><a href="#L-7308"><span class="linenos">7308</span></a> +</span><span id="L-7309"><a href="#L-7309"><span class="linenos">7309</span></a><span class="k">def</span> <span class="nf">replace_tree</span><span class="p">(</span> +</span><span id="L-7310"><a href="#L-7310"><span class="linenos">7310</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-7311"><a href="#L-7311"><span class="linenos">7311</span></a> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> +</span><span id="L-7312"><a href="#L-7312"><span class="linenos">7312</span></a> <span class="n">prune</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">Callable</span><span class="p">[[</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7313"><a href="#L-7313"><span class="linenos">7313</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-7314"><a href="#L-7314"><span class="linenos">7314</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7315"><a href="#L-7315"><span class="linenos">7315</span></a><span class="sd"> Replace an entire tree with the result of function calls on each node.</span> +</span><span id="L-7316"><a href="#L-7316"><span class="linenos">7316</span></a> +</span><span id="L-7317"><a href="#L-7317"><span class="linenos">7317</span></a><span class="sd"> This will be traversed in reverse dfs, so leaves first.</span> +</span><span id="L-7318"><a href="#L-7318"><span class="linenos">7318</span></a><span class="sd"> If new nodes are created as a result of function calls, they will also be traversed.</span> +</span><span id="L-7319"><a href="#L-7319"><span class="linenos">7319</span></a><span class="sd"> """</span> +</span><span id="L-7320"><a href="#L-7320"><span class="linenos">7320</span></a> <span class="n">stack</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">))</span> </span><span id="L-7321"><a href="#L-7321"><span class="linenos">7321</span></a> -</span><span id="L-7322"><a href="#L-7322"><span class="linenos">7322</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-7323"><a href="#L-7323"><span class="linenos">7323</span></a> <span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> -</span><span id="L-7324"><a href="#L-7324"><span class="linenos">7324</span></a> -</span><span id="L-7325"><a href="#L-7325"><span class="linenos">7325</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="L-7326"><a href="#L-7326"><span class="linenos">7326</span></a> -</span><span id="L-7327"><a href="#L-7327"><span class="linenos">7327</span></a> -</span><span id="L-7328"><a href="#L-7328"><span class="linenos">7328</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">exclude</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> -</span><span id="L-7329"><a href="#L-7329"><span class="linenos">7329</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7330"><a href="#L-7330"><span class="linenos">7330</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> +</span><span id="L-7322"><a href="#L-7322"><span class="linenos">7322</span></a> <span class="k">while</span> <span class="n">stack</span><span class="p">:</span> +</span><span id="L-7323"><a href="#L-7323"><span class="linenos">7323</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> +</span><span id="L-7324"><a href="#L-7324"><span class="linenos">7324</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> +</span><span id="L-7325"><a href="#L-7325"><span class="linenos">7325</span></a> +</span><span id="L-7326"><a href="#L-7326"><span class="linenos">7326</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="L-7327"><a href="#L-7327"><span class="linenos">7327</span></a> <span class="n">node</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> +</span><span id="L-7328"><a href="#L-7328"><span class="linenos">7328</span></a> +</span><span id="L-7329"><a href="#L-7329"><span class="linenos">7329</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-7330"><a href="#L-7330"><span class="linenos">7330</span></a> <span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> </span><span id="L-7331"><a href="#L-7331"><span class="linenos">7331</span></a> -</span><span id="L-7332"><a href="#L-7332"><span class="linenos">7332</span></a><span class="sd"> Example:</span> -</span><span id="L-7333"><a href="#L-7333"><span class="linenos">7333</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-7334"><a href="#L-7334"><span class="linenos">7334</span></a><span class="sd"> >>> sorted(column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")))</span> -</span><span id="L-7335"><a href="#L-7335"><span class="linenos">7335</span></a><span class="sd"> ['a', 'c']</span> -</span><span id="L-7336"><a href="#L-7336"><span class="linenos">7336</span></a> -</span><span id="L-7337"><a href="#L-7337"><span class="linenos">7337</span></a><span class="sd"> Args:</span> -</span><span id="L-7338"><a href="#L-7338"><span class="linenos">7338</span></a><span class="sd"> expression: expression to find table names.</span> -</span><span id="L-7339"><a href="#L-7339"><span class="linenos">7339</span></a><span class="sd"> exclude: a table name to exclude</span> -</span><span id="L-7340"><a href="#L-7340"><span class="linenos">7340</span></a> -</span><span id="L-7341"><a href="#L-7341"><span class="linenos">7341</span></a><span class="sd"> Returns:</span> -</span><span id="L-7342"><a href="#L-7342"><span class="linenos">7342</span></a><span class="sd"> A list of unique names.</span> -</span><span id="L-7343"><a href="#L-7343"><span class="linenos">7343</span></a><span class="sd"> """</span> -</span><span id="L-7344"><a href="#L-7344"><span class="linenos">7344</span></a> <span class="k">return</span> <span class="p">{</span> -</span><span id="L-7345"><a href="#L-7345"><span class="linenos">7345</span></a> <span class="n">table</span> -</span><span id="L-7346"><a href="#L-7346"><span class="linenos">7346</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">))</span> -</span><span id="L-7347"><a href="#L-7347"><span class="linenos">7347</span></a> <span class="k">if</span> <span class="n">table</span> <span class="ow">and</span> <span class="n">table</span> <span class="o">!=</span> <span class="n">exclude</span> -</span><span id="L-7348"><a href="#L-7348"><span class="linenos">7348</span></a> <span class="p">}</span> -</span><span id="L-7349"><a href="#L-7349"><span class="linenos">7349</span></a> -</span><span id="L-7350"><a href="#L-7350"><span class="linenos">7350</span></a> -</span><span id="L-7351"><a href="#L-7351"><span class="linenos">7351</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-7352"><a href="#L-7352"><span class="linenos">7352</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> -</span><span id="L-7353"><a href="#L-7353"><span class="linenos">7353</span></a> -</span><span id="L-7354"><a href="#L-7354"><span class="linenos">7354</span></a><span class="sd"> Args:</span> -</span><span id="L-7355"><a href="#L-7355"><span class="linenos">7355</span></a><span class="sd"> table: Table expression node or string.</span> -</span><span id="L-7356"><a href="#L-7356"><span class="linenos">7356</span></a><span class="sd"> dialect: The dialect to generate the table name for.</span> -</span><span id="L-7357"><a href="#L-7357"><span class="linenos">7357</span></a><span class="sd"> identify: Determines when an identifier should be quoted. Possible values are:</span> -</span><span id="L-7358"><a href="#L-7358"><span class="linenos">7358</span></a><span class="sd"> False (default): Never quote, except in cases where it's mandatory by the dialect.</span> -</span><span id="L-7359"><a href="#L-7359"><span class="linenos">7359</span></a><span class="sd"> True: Always quote.</span> +</span><span id="L-7332"><a href="#L-7332"><span class="linenos">7332</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="L-7333"><a href="#L-7333"><span class="linenos">7333</span></a> +</span><span id="L-7334"><a href="#L-7334"><span class="linenos">7334</span></a> +</span><span id="L-7335"><a href="#L-7335"><span class="linenos">7335</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">exclude</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="L-7336"><a href="#L-7336"><span class="linenos">7336</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7337"><a href="#L-7337"><span class="linenos">7337</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> +</span><span id="L-7338"><a href="#L-7338"><span class="linenos">7338</span></a> +</span><span id="L-7339"><a href="#L-7339"><span class="linenos">7339</span></a><span class="sd"> Example:</span> +</span><span id="L-7340"><a href="#L-7340"><span class="linenos">7340</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-7341"><a href="#L-7341"><span class="linenos">7341</span></a><span class="sd"> >>> sorted(column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")))</span> +</span><span id="L-7342"><a href="#L-7342"><span class="linenos">7342</span></a><span class="sd"> ['a', 'c']</span> +</span><span id="L-7343"><a href="#L-7343"><span class="linenos">7343</span></a> +</span><span id="L-7344"><a href="#L-7344"><span class="linenos">7344</span></a><span class="sd"> Args:</span> +</span><span id="L-7345"><a href="#L-7345"><span class="linenos">7345</span></a><span class="sd"> expression: expression to find table names.</span> +</span><span id="L-7346"><a href="#L-7346"><span class="linenos">7346</span></a><span class="sd"> exclude: a table name to exclude</span> +</span><span id="L-7347"><a href="#L-7347"><span class="linenos">7347</span></a> +</span><span id="L-7348"><a href="#L-7348"><span class="linenos">7348</span></a><span class="sd"> Returns:</span> +</span><span id="L-7349"><a href="#L-7349"><span class="linenos">7349</span></a><span class="sd"> A list of unique names.</span> +</span><span id="L-7350"><a href="#L-7350"><span class="linenos">7350</span></a><span class="sd"> """</span> +</span><span id="L-7351"><a href="#L-7351"><span class="linenos">7351</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="L-7352"><a href="#L-7352"><span class="linenos">7352</span></a> <span class="n">table</span> +</span><span id="L-7353"><a href="#L-7353"><span class="linenos">7353</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">))</span> +</span><span id="L-7354"><a href="#L-7354"><span class="linenos">7354</span></a> <span class="k">if</span> <span class="n">table</span> <span class="ow">and</span> <span class="n">table</span> <span class="o">!=</span> <span class="n">exclude</span> +</span><span id="L-7355"><a href="#L-7355"><span class="linenos">7355</span></a> <span class="p">}</span> +</span><span id="L-7356"><a href="#L-7356"><span class="linenos">7356</span></a> +</span><span id="L-7357"><a href="#L-7357"><span class="linenos">7357</span></a> +</span><span id="L-7358"><a href="#L-7358"><span class="linenos">7358</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-7359"><a href="#L-7359"><span class="linenos">7359</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> </span><span id="L-7360"><a href="#L-7360"><span class="linenos">7360</span></a> -</span><span id="L-7361"><a href="#L-7361"><span class="linenos">7361</span></a><span class="sd"> Examples:</span> -</span><span id="L-7362"><a href="#L-7362"><span class="linenos">7362</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="L-7363"><a href="#L-7363"><span class="linenos">7363</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> -</span><span id="L-7364"><a href="#L-7364"><span class="linenos">7364</span></a><span class="sd"> 'a.b.c'</span> -</span><span id="L-7365"><a href="#L-7365"><span class="linenos">7365</span></a> -</span><span id="L-7366"><a href="#L-7366"><span class="linenos">7366</span></a><span class="sd"> Returns:</span> -</span><span id="L-7367"><a href="#L-7367"><span class="linenos">7367</span></a><span class="sd"> The table name.</span> -</span><span id="L-7368"><a href="#L-7368"><span class="linenos">7368</span></a><span class="sd"> """</span> -</span><span id="L-7369"><a href="#L-7369"><span class="linenos">7369</span></a> -</span><span id="L-7370"><a href="#L-7370"><span class="linenos">7370</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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-7371"><a href="#L-7371"><span class="linenos">7371</span></a> -</span><span id="L-7372"><a href="#L-7372"><span class="linenos">7372</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-7373"><a href="#L-7373"><span class="linenos">7373</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-7374"><a href="#L-7374"><span class="linenos">7374</span></a> -</span><span id="L-7375"><a href="#L-7375"><span class="linenos">7375</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-7376"><a href="#L-7376"><span class="linenos">7376</span></a> <span class="p">(</span> -</span><span id="L-7377"><a href="#L-7377"><span class="linenos">7377</span></a> <span class="n">part</span><span class="o">.</span><span class="n">sql</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">identify</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-7378"><a href="#L-7378"><span class="linenos">7378</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-7379"><a href="#L-7379"><span class="linenos">7379</span></a> <span class="k">else</span> <span class="n">part</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-7380"><a href="#L-7380"><span class="linenos">7380</span></a> <span class="p">)</span> -</span><span id="L-7381"><a href="#L-7381"><span class="linenos">7381</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">table</span><span class="o">.</span><span class="n">parts</span> -</span><span id="L-7382"><a href="#L-7382"><span class="linenos">7382</span></a> <span class="p">)</span> -</span><span id="L-7383"><a href="#L-7383"><span class="linenos">7383</span></a> -</span><span id="L-7384"><a href="#L-7384"><span class="linenos">7384</span></a> -</span><span id="L-7385"><a href="#L-7385"><span class="linenos">7385</span></a><span class="k">def</span> <span class="nf">normalize_table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-7386"><a href="#L-7386"><span class="linenos">7386</span></a><span class="w"> </span><span class="sd">"""Returns a case normalized table name without quotes.</span> -</span><span id="L-7387"><a href="#L-7387"><span class="linenos">7387</span></a> -</span><span id="L-7388"><a href="#L-7388"><span class="linenos">7388</span></a><span class="sd"> Args:</span> -</span><span id="L-7389"><a href="#L-7389"><span class="linenos">7389</span></a><span class="sd"> table: the table to normalize</span> -</span><span id="L-7390"><a href="#L-7390"><span class="linenos">7390</span></a><span class="sd"> dialect: the dialect to use for normalization rules</span> -</span><span id="L-7391"><a href="#L-7391"><span class="linenos">7391</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-7392"><a href="#L-7392"><span class="linenos">7392</span></a> -</span><span id="L-7393"><a href="#L-7393"><span class="linenos">7393</span></a><span class="sd"> Examples:</span> -</span><span id="L-7394"><a href="#L-7394"><span class="linenos">7394</span></a><span class="sd"> >>> normalize_table_name("`A-B`.c", dialect="bigquery")</span> -</span><span id="L-7395"><a href="#L-7395"><span class="linenos">7395</span></a><span class="sd"> 'A-B.c'</span> -</span><span id="L-7396"><a href="#L-7396"><span class="linenos">7396</span></a><span class="sd"> """</span> -</span><span id="L-7397"><a href="#L-7397"><span class="linenos">7397</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> -</span><span id="L-7398"><a href="#L-7398"><span class="linenos">7398</span></a> -</span><span id="L-7399"><a href="#L-7399"><span class="linenos">7399</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-7400"><a href="#L-7400"><span class="linenos">7400</span></a> <span class="n">p</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-7401"><a href="#L-7401"><span class="linenos">7401</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">normalize_identifiers</span><span class="p">(</span> -</span><span id="L-7402"><a href="#L-7402"><span class="linenos">7402</span></a> <span class="n">to_table</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> -</span><span id="L-7403"><a href="#L-7403"><span class="linenos">7403</span></a> <span class="p">)</span><span class="o">.</span><span class="n">parts</span> -</span><span id="L-7404"><a href="#L-7404"><span class="linenos">7404</span></a> <span class="p">)</span> +</span><span id="L-7361"><a href="#L-7361"><span class="linenos">7361</span></a><span class="sd"> Args:</span> +</span><span id="L-7362"><a href="#L-7362"><span class="linenos">7362</span></a><span class="sd"> table: Table expression node or string.</span> +</span><span id="L-7363"><a href="#L-7363"><span class="linenos">7363</span></a><span class="sd"> dialect: The dialect to generate the table name for.</span> +</span><span id="L-7364"><a href="#L-7364"><span class="linenos">7364</span></a><span class="sd"> identify: Determines when an identifier should be quoted. Possible values are:</span> +</span><span id="L-7365"><a href="#L-7365"><span class="linenos">7365</span></a><span class="sd"> False (default): Never quote, except in cases where it's mandatory by the dialect.</span> +</span><span id="L-7366"><a href="#L-7366"><span class="linenos">7366</span></a><span class="sd"> True: Always quote.</span> +</span><span id="L-7367"><a href="#L-7367"><span class="linenos">7367</span></a> +</span><span id="L-7368"><a href="#L-7368"><span class="linenos">7368</span></a><span class="sd"> Examples:</span> +</span><span id="L-7369"><a href="#L-7369"><span class="linenos">7369</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="L-7370"><a href="#L-7370"><span class="linenos">7370</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> +</span><span id="L-7371"><a href="#L-7371"><span class="linenos">7371</span></a><span class="sd"> 'a.b.c'</span> +</span><span id="L-7372"><a href="#L-7372"><span class="linenos">7372</span></a> +</span><span id="L-7373"><a href="#L-7373"><span class="linenos">7373</span></a><span class="sd"> Returns:</span> +</span><span id="L-7374"><a href="#L-7374"><span class="linenos">7374</span></a><span class="sd"> The table name.</span> +</span><span id="L-7375"><a href="#L-7375"><span class="linenos">7375</span></a><span class="sd"> """</span> +</span><span id="L-7376"><a href="#L-7376"><span class="linenos">7376</span></a> +</span><span id="L-7377"><a href="#L-7377"><span class="linenos">7377</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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-7378"><a href="#L-7378"><span class="linenos">7378</span></a> +</span><span id="L-7379"><a href="#L-7379"><span class="linenos">7379</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-7380"><a href="#L-7380"><span class="linenos">7380</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-7381"><a href="#L-7381"><span class="linenos">7381</span></a> +</span><span id="L-7382"><a href="#L-7382"><span class="linenos">7382</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-7383"><a href="#L-7383"><span class="linenos">7383</span></a> <span class="p">(</span> +</span><span id="L-7384"><a href="#L-7384"><span class="linenos">7384</span></a> <span class="n">part</span><span class="o">.</span><span class="n">sql</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">identify</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-7385"><a href="#L-7385"><span class="linenos">7385</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-7386"><a href="#L-7386"><span class="linenos">7386</span></a> <span class="k">else</span> <span class="n">part</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-7387"><a href="#L-7387"><span class="linenos">7387</span></a> <span class="p">)</span> +</span><span id="L-7388"><a href="#L-7388"><span class="linenos">7388</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">table</span><span class="o">.</span><span class="n">parts</span> +</span><span id="L-7389"><a href="#L-7389"><span class="linenos">7389</span></a> <span class="p">)</span> +</span><span id="L-7390"><a href="#L-7390"><span class="linenos">7390</span></a> +</span><span id="L-7391"><a href="#L-7391"><span class="linenos">7391</span></a> +</span><span id="L-7392"><a href="#L-7392"><span class="linenos">7392</span></a><span class="k">def</span> <span class="nf">normalize_table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-7393"><a href="#L-7393"><span class="linenos">7393</span></a><span class="w"> </span><span class="sd">"""Returns a case normalized table name without quotes.</span> +</span><span id="L-7394"><a href="#L-7394"><span class="linenos">7394</span></a> +</span><span id="L-7395"><a href="#L-7395"><span class="linenos">7395</span></a><span class="sd"> Args:</span> +</span><span id="L-7396"><a href="#L-7396"><span class="linenos">7396</span></a><span class="sd"> table: the table to normalize</span> +</span><span id="L-7397"><a href="#L-7397"><span class="linenos">7397</span></a><span class="sd"> dialect: the dialect to use for normalization rules</span> +</span><span id="L-7398"><a href="#L-7398"><span class="linenos">7398</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-7399"><a href="#L-7399"><span class="linenos">7399</span></a> +</span><span id="L-7400"><a href="#L-7400"><span class="linenos">7400</span></a><span class="sd"> Examples:</span> +</span><span id="L-7401"><a href="#L-7401"><span class="linenos">7401</span></a><span class="sd"> >>> normalize_table_name("`A-B`.c", dialect="bigquery")</span> +</span><span id="L-7402"><a href="#L-7402"><span class="linenos">7402</span></a><span class="sd"> 'A-B.c'</span> +</span><span id="L-7403"><a href="#L-7403"><span class="linenos">7403</span></a><span class="sd"> """</span> +</span><span id="L-7404"><a href="#L-7404"><span class="linenos">7404</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> </span><span id="L-7405"><a href="#L-7405"><span class="linenos">7405</span></a> -</span><span id="L-7406"><a href="#L-7406"><span class="linenos">7406</span></a> -</span><span id="L-7407"><a href="#L-7407"><span class="linenos">7407</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span> -</span><span id="L-7408"><a href="#L-7408"><span class="linenos">7408</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">E</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">Dict</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-7409"><a href="#L-7409"><span class="linenos">7409</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-7410"><a href="#L-7410"><span class="linenos">7410</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> -</span><span id="L-7411"><a href="#L-7411"><span class="linenos">7411</span></a> -</span><span id="L-7412"><a href="#L-7412"><span class="linenos">7412</span></a><span class="sd"> Args:</span> -</span><span id="L-7413"><a href="#L-7413"><span class="linenos">7413</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> -</span><span id="L-7414"><a href="#L-7414"><span class="linenos">7414</span></a><span class="sd"> mapping: mapping of table names.</span> -</span><span id="L-7415"><a href="#L-7415"><span class="linenos">7415</span></a><span class="sd"> dialect: the dialect of the mapping table</span> -</span><span id="L-7416"><a href="#L-7416"><span class="linenos">7416</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="L-7417"><a href="#L-7417"><span class="linenos">7417</span></a> -</span><span id="L-7418"><a href="#L-7418"><span class="linenos">7418</span></a><span class="sd"> Examples:</span> -</span><span id="L-7419"><a href="#L-7419"><span class="linenos">7419</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="L-7420"><a href="#L-7420"><span class="linenos">7420</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> -</span><span id="L-7421"><a href="#L-7421"><span class="linenos">7421</span></a><span class="sd"> 'SELECT * FROM c /* a.b */'</span> -</span><span id="L-7422"><a href="#L-7422"><span class="linenos">7422</span></a> -</span><span id="L-7423"><a href="#L-7423"><span class="linenos">7423</span></a><span class="sd"> Returns:</span> -</span><span id="L-7424"><a href="#L-7424"><span class="linenos">7424</span></a><span class="sd"> The mapped expression.</span> -</span><span id="L-7425"><a href="#L-7425"><span class="linenos">7425</span></a><span class="sd"> """</span> -</span><span id="L-7426"><a href="#L-7426"><span class="linenos">7426</span></a> -</span><span id="L-7427"><a href="#L-7427"><span class="linenos">7427</span></a> <span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="L-7428"><a href="#L-7428"><span class="linenos">7428</span></a> -</span><span id="L-7429"><a href="#L-7429"><span class="linenos">7429</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-7430"><a href="#L-7430"><span class="linenos">7430</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="L-7431"><a href="#L-7431"><span class="linenos">7431</span></a> <span class="n">original</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-7432"><a href="#L-7432"><span class="linenos">7432</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">original</span><span class="p">)</span> +</span><span id="L-7406"><a href="#L-7406"><span class="linenos">7406</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-7407"><a href="#L-7407"><span class="linenos">7407</span></a> <span class="n">p</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-7408"><a href="#L-7408"><span class="linenos">7408</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">normalize_identifiers</span><span class="p">(</span> +</span><span id="L-7409"><a href="#L-7409"><span class="linenos">7409</span></a> <span class="n">to_table</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> +</span><span id="L-7410"><a href="#L-7410"><span class="linenos">7410</span></a> <span class="p">)</span><span class="o">.</span><span class="n">parts</span> +</span><span id="L-7411"><a href="#L-7411"><span class="linenos">7411</span></a> <span class="p">)</span> +</span><span id="L-7412"><a href="#L-7412"><span class="linenos">7412</span></a> +</span><span id="L-7413"><a href="#L-7413"><span class="linenos">7413</span></a> +</span><span id="L-7414"><a href="#L-7414"><span class="linenos">7414</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span> +</span><span id="L-7415"><a href="#L-7415"><span class="linenos">7415</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">E</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">Dict</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-7416"><a href="#L-7416"><span class="linenos">7416</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-7417"><a href="#L-7417"><span class="linenos">7417</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> +</span><span id="L-7418"><a href="#L-7418"><span class="linenos">7418</span></a> +</span><span id="L-7419"><a href="#L-7419"><span class="linenos">7419</span></a><span class="sd"> Args:</span> +</span><span id="L-7420"><a href="#L-7420"><span class="linenos">7420</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> +</span><span id="L-7421"><a href="#L-7421"><span class="linenos">7421</span></a><span class="sd"> mapping: mapping of table names.</span> +</span><span id="L-7422"><a href="#L-7422"><span class="linenos">7422</span></a><span class="sd"> dialect: the dialect of the mapping table</span> +</span><span id="L-7423"><a href="#L-7423"><span class="linenos">7423</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="L-7424"><a href="#L-7424"><span class="linenos">7424</span></a> +</span><span id="L-7425"><a href="#L-7425"><span class="linenos">7425</span></a><span class="sd"> Examples:</span> +</span><span id="L-7426"><a href="#L-7426"><span class="linenos">7426</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="L-7427"><a href="#L-7427"><span class="linenos">7427</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> +</span><span id="L-7428"><a href="#L-7428"><span class="linenos">7428</span></a><span class="sd"> 'SELECT * FROM c /* a.b */'</span> +</span><span id="L-7429"><a href="#L-7429"><span class="linenos">7429</span></a> +</span><span id="L-7430"><a href="#L-7430"><span class="linenos">7430</span></a><span class="sd"> Returns:</span> +</span><span id="L-7431"><a href="#L-7431"><span class="linenos">7431</span></a><span class="sd"> The mapped expression.</span> +</span><span id="L-7432"><a href="#L-7432"><span class="linenos">7432</span></a><span class="sd"> """</span> </span><span id="L-7433"><a href="#L-7433"><span class="linenos">7433</span></a> -</span><span id="L-7434"><a href="#L-7434"><span class="linenos">7434</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> -</span><span id="L-7435"><a href="#L-7435"><span class="linenos">7435</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span> -</span><span id="L-7436"><a href="#L-7436"><span class="linenos">7436</span></a> <span class="n">new_name</span><span class="p">,</span> -</span><span id="L-7437"><a href="#L-7437"><span class="linenos">7437</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">TABLE_PARTS</span><span class="p">},</span> -</span><span id="L-7438"><a href="#L-7438"><span class="linenos">7438</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-7439"><a href="#L-7439"><span class="linenos">7439</span></a> <span class="p">)</span> -</span><span id="L-7440"><a href="#L-7440"><span class="linenos">7440</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span> -</span><span id="L-7441"><a href="#L-7441"><span class="linenos">7441</span></a> <span class="k">return</span> <span class="n">table</span> -</span><span id="L-7442"><a href="#L-7442"><span class="linenos">7442</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="L-7443"><a href="#L-7443"><span class="linenos">7443</span></a> -</span><span id="L-7444"><a href="#L-7444"><span class="linenos">7444</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-7445"><a href="#L-7445"><span class="linenos">7445</span></a> -</span><span id="L-7446"><a href="#L-7446"><span class="linenos">7446</span></a> -</span><span id="L-7447"><a href="#L-7447"><span class="linenos">7447</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-7448"><a href="#L-7448"><span class="linenos">7448</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> -</span><span id="L-7449"><a href="#L-7449"><span class="linenos">7449</span></a> -</span><span id="L-7450"><a href="#L-7450"><span class="linenos">7450</span></a><span class="sd"> Args:</span> -</span><span id="L-7451"><a href="#L-7451"><span class="linenos">7451</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> -</span><span id="L-7452"><a href="#L-7452"><span class="linenos">7452</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> -</span><span id="L-7453"><a href="#L-7453"><span class="linenos">7453</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> -</span><span id="L-7454"><a href="#L-7454"><span class="linenos">7454</span></a> -</span><span id="L-7455"><a href="#L-7455"><span class="linenos">7455</span></a><span class="sd"> Examples:</span> -</span><span id="L-7456"><a href="#L-7456"><span class="linenos">7456</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="L-7457"><a href="#L-7457"><span class="linenos">7457</span></a><span class="sd"> >>> replace_placeholders(</span> -</span><span id="L-7458"><a href="#L-7458"><span class="linenos">7458</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"),</span> -</span><span id="L-7459"><a href="#L-7459"><span class="linenos">7459</span></a><span class="sd"> ... exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")</span> -</span><span id="L-7460"><a href="#L-7460"><span class="linenos">7460</span></a><span class="sd"> ... ).sql()</span> -</span><span id="L-7461"><a href="#L-7461"><span class="linenos">7461</span></a><span class="sd"> "SELECT * FROM foo WHERE str_col = 'b'"</span> -</span><span id="L-7462"><a href="#L-7462"><span class="linenos">7462</span></a> -</span><span id="L-7463"><a href="#L-7463"><span class="linenos">7463</span></a><span class="sd"> Returns:</span> -</span><span id="L-7464"><a href="#L-7464"><span class="linenos">7464</span></a><span class="sd"> The mapped expression.</span> -</span><span id="L-7465"><a href="#L-7465"><span class="linenos">7465</span></a><span class="sd"> """</span> -</span><span id="L-7466"><a href="#L-7466"><span class="linenos">7466</span></a> -</span><span id="L-7467"><a href="#L-7467"><span class="linenos">7467</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-7468"><a href="#L-7468"><span class="linenos">7468</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> -</span><span id="L-7469"><a href="#L-7469"><span class="linenos">7469</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> -</span><span id="L-7470"><a href="#L-7470"><span class="linenos">7470</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-7471"><a href="#L-7471"><span class="linenos">7471</span></a> <span class="k">if</span> <span class="n">new_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-7472"><a href="#L-7472"><span class="linenos">7472</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> -</span><span id="L-7473"><a href="#L-7473"><span class="linenos">7473</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7474"><a href="#L-7474"><span class="linenos">7474</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-7475"><a href="#L-7475"><span class="linenos">7475</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> -</span><span id="L-7476"><a href="#L-7476"><span class="linenos">7476</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> -</span><span id="L-7477"><a href="#L-7477"><span class="linenos">7477</span></a> <span class="k">pass</span> -</span><span id="L-7478"><a href="#L-7478"><span class="linenos">7478</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="L-7479"><a href="#L-7479"><span class="linenos">7479</span></a> -</span><span id="L-7480"><a href="#L-7480"><span class="linenos">7480</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-7481"><a href="#L-7481"><span class="linenos">7481</span></a> -</span><span id="L-7482"><a href="#L-7482"><span class="linenos">7482</span></a> -</span><span id="L-7483"><a href="#L-7483"><span class="linenos">7483</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span> -</span><span id="L-7484"><a href="#L-7484"><span class="linenos">7484</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="L-7485"><a href="#L-7485"><span class="linenos">7485</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Query</span><span class="p">],</span> -</span><span id="L-7486"><a href="#L-7486"><span class="linenos">7486</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-7487"><a href="#L-7487"><span class="linenos">7487</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-7488"><a href="#L-7488"><span class="linenos">7488</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-7489"><a href="#L-7489"><span class="linenos">7489</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> -</span><span id="L-7490"><a href="#L-7490"><span class="linenos">7490</span></a> -</span><span id="L-7491"><a href="#L-7491"><span class="linenos">7491</span></a><span class="sd"> Examples:</span> -</span><span id="L-7492"><a href="#L-7492"><span class="linenos">7492</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="L-7493"><a href="#L-7493"><span class="linenos">7493</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> -</span><span id="L-7494"><a href="#L-7494"><span class="linenos">7494</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> -</span><span id="L-7495"><a href="#L-7495"><span class="linenos">7495</span></a> -</span><span id="L-7496"><a href="#L-7496"><span class="linenos">7496</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()</span> -</span><span id="L-7497"><a href="#L-7497"><span class="linenos">7497</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'</span> -</span><span id="L-7498"><a href="#L-7498"><span class="linenos">7498</span></a> -</span><span id="L-7499"><a href="#L-7499"><span class="linenos">7499</span></a><span class="sd"> Args:</span> -</span><span id="L-7500"><a href="#L-7500"><span class="linenos">7500</span></a><span class="sd"> expression: The expression to expand.</span> -</span><span id="L-7501"><a href="#L-7501"><span class="linenos">7501</span></a><span class="sd"> sources: A dictionary of name to Queries.</span> -</span><span id="L-7502"><a href="#L-7502"><span class="linenos">7502</span></a><span class="sd"> dialect: The dialect of the sources dict.</span> -</span><span id="L-7503"><a href="#L-7503"><span class="linenos">7503</span></a><span class="sd"> copy: Whether to copy the expression during transformation. Defaults to True.</span> -</span><span id="L-7504"><a href="#L-7504"><span class="linenos">7504</span></a> -</span><span id="L-7505"><a href="#L-7505"><span class="linenos">7505</span></a><span class="sd"> Returns:</span> -</span><span id="L-7506"><a href="#L-7506"><span class="linenos">7506</span></a><span class="sd"> The transformed expression.</span> -</span><span id="L-7507"><a href="#L-7507"><span class="linenos">7507</span></a><span class="sd"> """</span> -</span><span id="L-7508"><a href="#L-7508"><span class="linenos">7508</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="L-7509"><a href="#L-7509"><span class="linenos">7509</span></a> -</span><span id="L-7510"><a href="#L-7510"><span class="linenos">7510</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-7511"><a href="#L-7511"><span class="linenos">7511</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="L-7512"><a href="#L-7512"><span class="linenos">7512</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-7513"><a href="#L-7513"><span class="linenos">7513</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-7514"><a href="#L-7514"><span class="linenos">7514</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> -</span><span id="L-7515"><a href="#L-7515"><span class="linenos">7515</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> -</span><span id="L-7516"><a href="#L-7516"><span class="linenos">7516</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> -</span><span id="L-7517"><a href="#L-7517"><span class="linenos">7517</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-7518"><a href="#L-7518"><span class="linenos">7518</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="L-7519"><a href="#L-7519"><span class="linenos">7519</span></a> -</span><span id="L-7520"><a href="#L-7520"><span class="linenos">7520</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="L-7521"><a href="#L-7521"><span class="linenos">7521</span></a> -</span><span id="L-7522"><a href="#L-7522"><span class="linenos">7522</span></a> -</span><span id="L-7523"><a href="#L-7523"><span class="linenos">7523</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> -</span><span id="L-7524"><a href="#L-7524"><span class="linenos">7524</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7525"><a href="#L-7525"><span class="linenos">7525</span></a><span class="sd"> Returns a Func expression.</span> +</span><span id="L-7434"><a href="#L-7434"><span class="linenos">7434</span></a> <span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-7435"><a href="#L-7435"><span class="linenos">7435</span></a> +</span><span id="L-7436"><a href="#L-7436"><span class="linenos">7436</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-7437"><a href="#L-7437"><span class="linenos">7437</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="L-7438"><a href="#L-7438"><span class="linenos">7438</span></a> <span class="n">original</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-7439"><a href="#L-7439"><span class="linenos">7439</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">original</span><span class="p">)</span> +</span><span id="L-7440"><a href="#L-7440"><span class="linenos">7440</span></a> +</span><span id="L-7441"><a href="#L-7441"><span class="linenos">7441</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> +</span><span id="L-7442"><a href="#L-7442"><span class="linenos">7442</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span> +</span><span id="L-7443"><a href="#L-7443"><span class="linenos">7443</span></a> <span class="n">new_name</span><span class="p">,</span> +</span><span id="L-7444"><a href="#L-7444"><span class="linenos">7444</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">TABLE_PARTS</span><span class="p">},</span> +</span><span id="L-7445"><a href="#L-7445"><span class="linenos">7445</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-7446"><a href="#L-7446"><span class="linenos">7446</span></a> <span class="p">)</span> +</span><span id="L-7447"><a href="#L-7447"><span class="linenos">7447</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span> +</span><span id="L-7448"><a href="#L-7448"><span class="linenos">7448</span></a> <span class="k">return</span> <span class="n">table</span> +</span><span id="L-7449"><a href="#L-7449"><span class="linenos">7449</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-7450"><a href="#L-7450"><span class="linenos">7450</span></a> +</span><span id="L-7451"><a href="#L-7451"><span class="linenos">7451</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-7452"><a href="#L-7452"><span class="linenos">7452</span></a> +</span><span id="L-7453"><a href="#L-7453"><span class="linenos">7453</span></a> +</span><span id="L-7454"><a href="#L-7454"><span class="linenos">7454</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-7455"><a href="#L-7455"><span class="linenos">7455</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> +</span><span id="L-7456"><a href="#L-7456"><span class="linenos">7456</span></a> +</span><span id="L-7457"><a href="#L-7457"><span class="linenos">7457</span></a><span class="sd"> Args:</span> +</span><span id="L-7458"><a href="#L-7458"><span class="linenos">7458</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> +</span><span id="L-7459"><a href="#L-7459"><span class="linenos">7459</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> +</span><span id="L-7460"><a href="#L-7460"><span class="linenos">7460</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> +</span><span id="L-7461"><a href="#L-7461"><span class="linenos">7461</span></a> +</span><span id="L-7462"><a href="#L-7462"><span class="linenos">7462</span></a><span class="sd"> Examples:</span> +</span><span id="L-7463"><a href="#L-7463"><span class="linenos">7463</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="L-7464"><a href="#L-7464"><span class="linenos">7464</span></a><span class="sd"> >>> replace_placeholders(</span> +</span><span id="L-7465"><a href="#L-7465"><span class="linenos">7465</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"),</span> +</span><span id="L-7466"><a href="#L-7466"><span class="linenos">7466</span></a><span class="sd"> ... exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")</span> +</span><span id="L-7467"><a href="#L-7467"><span class="linenos">7467</span></a><span class="sd"> ... ).sql()</span> +</span><span id="L-7468"><a href="#L-7468"><span class="linenos">7468</span></a><span class="sd"> "SELECT * FROM foo WHERE str_col = 'b'"</span> +</span><span id="L-7469"><a href="#L-7469"><span class="linenos">7469</span></a> +</span><span id="L-7470"><a href="#L-7470"><span class="linenos">7470</span></a><span class="sd"> Returns:</span> +</span><span id="L-7471"><a href="#L-7471"><span class="linenos">7471</span></a><span class="sd"> The mapped expression.</span> +</span><span id="L-7472"><a href="#L-7472"><span class="linenos">7472</span></a><span class="sd"> """</span> +</span><span id="L-7473"><a href="#L-7473"><span class="linenos">7473</span></a> +</span><span id="L-7474"><a href="#L-7474"><span class="linenos">7474</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-7475"><a href="#L-7475"><span class="linenos">7475</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> +</span><span id="L-7476"><a href="#L-7476"><span class="linenos">7476</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> +</span><span id="L-7477"><a href="#L-7477"><span class="linenos">7477</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-7478"><a href="#L-7478"><span class="linenos">7478</span></a> <span class="k">if</span> <span class="n">new_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-7479"><a href="#L-7479"><span class="linenos">7479</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> +</span><span id="L-7480"><a href="#L-7480"><span class="linenos">7480</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7481"><a href="#L-7481"><span class="linenos">7481</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-7482"><a href="#L-7482"><span class="linenos">7482</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> +</span><span id="L-7483"><a href="#L-7483"><span class="linenos">7483</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> +</span><span id="L-7484"><a href="#L-7484"><span class="linenos">7484</span></a> <span class="k">pass</span> +</span><span id="L-7485"><a href="#L-7485"><span class="linenos">7485</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-7486"><a href="#L-7486"><span class="linenos">7486</span></a> +</span><span id="L-7487"><a href="#L-7487"><span class="linenos">7487</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-7488"><a href="#L-7488"><span class="linenos">7488</span></a> +</span><span id="L-7489"><a href="#L-7489"><span class="linenos">7489</span></a> +</span><span id="L-7490"><a href="#L-7490"><span class="linenos">7490</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span> +</span><span id="L-7491"><a href="#L-7491"><span class="linenos">7491</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-7492"><a href="#L-7492"><span class="linenos">7492</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Query</span><span class="p">],</span> +</span><span id="L-7493"><a href="#L-7493"><span class="linenos">7493</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-7494"><a href="#L-7494"><span class="linenos">7494</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-7495"><a href="#L-7495"><span class="linenos">7495</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-7496"><a href="#L-7496"><span class="linenos">7496</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> +</span><span id="L-7497"><a href="#L-7497"><span class="linenos">7497</span></a> +</span><span id="L-7498"><a href="#L-7498"><span class="linenos">7498</span></a><span class="sd"> Examples:</span> +</span><span id="L-7499"><a href="#L-7499"><span class="linenos">7499</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="L-7500"><a href="#L-7500"><span class="linenos">7500</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> +</span><span id="L-7501"><a href="#L-7501"><span class="linenos">7501</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> +</span><span id="L-7502"><a href="#L-7502"><span class="linenos">7502</span></a> +</span><span id="L-7503"><a href="#L-7503"><span class="linenos">7503</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()</span> +</span><span id="L-7504"><a href="#L-7504"><span class="linenos">7504</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'</span> +</span><span id="L-7505"><a href="#L-7505"><span class="linenos">7505</span></a> +</span><span id="L-7506"><a href="#L-7506"><span class="linenos">7506</span></a><span class="sd"> Args:</span> +</span><span id="L-7507"><a href="#L-7507"><span class="linenos">7507</span></a><span class="sd"> expression: The expression to expand.</span> +</span><span id="L-7508"><a href="#L-7508"><span class="linenos">7508</span></a><span class="sd"> sources: A dictionary of name to Queries.</span> +</span><span id="L-7509"><a href="#L-7509"><span class="linenos">7509</span></a><span class="sd"> dialect: The dialect of the sources dict.</span> +</span><span id="L-7510"><a href="#L-7510"><span class="linenos">7510</span></a><span class="sd"> copy: Whether to copy the expression during transformation. Defaults to True.</span> +</span><span id="L-7511"><a href="#L-7511"><span class="linenos">7511</span></a> +</span><span id="L-7512"><a href="#L-7512"><span class="linenos">7512</span></a><span class="sd"> Returns:</span> +</span><span id="L-7513"><a href="#L-7513"><span class="linenos">7513</span></a><span class="sd"> The transformed expression.</span> +</span><span id="L-7514"><a href="#L-7514"><span class="linenos">7514</span></a><span class="sd"> """</span> +</span><span id="L-7515"><a href="#L-7515"><span class="linenos">7515</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-7516"><a href="#L-7516"><span class="linenos">7516</span></a> +</span><span id="L-7517"><a href="#L-7517"><span class="linenos">7517</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-7518"><a href="#L-7518"><span class="linenos">7518</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="L-7519"><a href="#L-7519"><span class="linenos">7519</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-7520"><a href="#L-7520"><span class="linenos">7520</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-7521"><a href="#L-7521"><span class="linenos">7521</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> +</span><span id="L-7522"><a href="#L-7522"><span class="linenos">7522</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> +</span><span id="L-7523"><a href="#L-7523"><span class="linenos">7523</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> +</span><span id="L-7524"><a href="#L-7524"><span class="linenos">7524</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-7525"><a href="#L-7525"><span class="linenos">7525</span></a> <span class="k">return</span> <span class="n">node</span> </span><span id="L-7526"><a href="#L-7526"><span class="linenos">7526</span></a> -</span><span id="L-7527"><a href="#L-7527"><span class="linenos">7527</span></a><span class="sd"> Examples:</span> -</span><span id="L-7528"><a href="#L-7528"><span class="linenos">7528</span></a><span class="sd"> >>> func("abs", 5).sql()</span> -</span><span id="L-7529"><a href="#L-7529"><span class="linenos">7529</span></a><span class="sd"> 'ABS(5)'</span> -</span><span id="L-7530"><a href="#L-7530"><span class="linenos">7530</span></a> -</span><span id="L-7531"><a href="#L-7531"><span class="linenos">7531</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> -</span><span id="L-7532"><a href="#L-7532"><span class="linenos">7532</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> +</span><span id="L-7527"><a href="#L-7527"><span class="linenos">7527</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="L-7528"><a href="#L-7528"><span class="linenos">7528</span></a> +</span><span id="L-7529"><a href="#L-7529"><span class="linenos">7529</span></a> +</span><span id="L-7530"><a href="#L-7530"><span class="linenos">7530</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> +</span><span id="L-7531"><a href="#L-7531"><span class="linenos">7531</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7532"><a href="#L-7532"><span class="linenos">7532</span></a><span class="sd"> Returns a Func expression.</span> </span><span id="L-7533"><a href="#L-7533"><span class="linenos">7533</span></a> -</span><span id="L-7534"><a href="#L-7534"><span class="linenos">7534</span></a><span class="sd"> Args:</span> -</span><span id="L-7535"><a href="#L-7535"><span class="linenos">7535</span></a><span class="sd"> name: the name of the function to build.</span> -</span><span id="L-7536"><a href="#L-7536"><span class="linenos">7536</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> -</span><span id="L-7537"><a href="#L-7537"><span class="linenos">7537</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> -</span><span id="L-7538"><a href="#L-7538"><span class="linenos">7538</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="L-7539"><a href="#L-7539"><span class="linenos">7539</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="L-7534"><a href="#L-7534"><span class="linenos">7534</span></a><span class="sd"> Examples:</span> +</span><span id="L-7535"><a href="#L-7535"><span class="linenos">7535</span></a><span class="sd"> >>> func("abs", 5).sql()</span> +</span><span id="L-7536"><a href="#L-7536"><span class="linenos">7536</span></a><span class="sd"> 'ABS(5)'</span> +</span><span id="L-7537"><a href="#L-7537"><span class="linenos">7537</span></a> +</span><span id="L-7538"><a href="#L-7538"><span class="linenos">7538</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> +</span><span id="L-7539"><a href="#L-7539"><span class="linenos">7539</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> </span><span id="L-7540"><a href="#L-7540"><span class="linenos">7540</span></a> -</span><span id="L-7541"><a href="#L-7541"><span class="linenos">7541</span></a><span class="sd"> Note:</span> -</span><span id="L-7542"><a href="#L-7542"><span class="linenos">7542</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> -</span><span id="L-7543"><a href="#L-7543"><span class="linenos">7543</span></a> -</span><span id="L-7544"><a href="#L-7544"><span class="linenos">7544</span></a><span class="sd"> Returns:</span> -</span><span id="L-7545"><a href="#L-7545"><span class="linenos">7545</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> -</span><span id="L-7546"><a href="#L-7546"><span class="linenos">7546</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> -</span><span id="L-7547"><a href="#L-7547"><span class="linenos">7547</span></a><span class="sd"> """</span> -</span><span id="L-7548"><a href="#L-7548"><span class="linenos">7548</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> -</span><span id="L-7549"><a href="#L-7549"><span class="linenos">7549</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> +</span><span id="L-7541"><a href="#L-7541"><span class="linenos">7541</span></a><span class="sd"> Args:</span> +</span><span id="L-7542"><a href="#L-7542"><span class="linenos">7542</span></a><span class="sd"> name: the name of the function to build.</span> +</span><span id="L-7543"><a href="#L-7543"><span class="linenos">7543</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> +</span><span id="L-7544"><a href="#L-7544"><span class="linenos">7544</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> +</span><span id="L-7545"><a href="#L-7545"><span class="linenos">7545</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="L-7546"><a href="#L-7546"><span class="linenos">7546</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="L-7547"><a href="#L-7547"><span class="linenos">7547</span></a> +</span><span id="L-7548"><a href="#L-7548"><span class="linenos">7548</span></a><span class="sd"> Note:</span> +</span><span id="L-7549"><a href="#L-7549"><span class="linenos">7549</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> </span><span id="L-7550"><a href="#L-7550"><span class="linenos">7550</span></a> -</span><span id="L-7551"><a href="#L-7551"><span class="linenos">7551</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="L-7552"><a href="#L-7552"><span class="linenos">7552</span></a> -</span><span id="L-7553"><a href="#L-7553"><span class="linenos">7553</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-7554"><a href="#L-7554"><span class="linenos">7554</span></a> -</span><span id="L-7555"><a href="#L-7555"><span class="linenos">7555</span></a> <span class="n">converted</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span> -</span><span id="L-7556"><a href="#L-7556"><span class="linenos">7556</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-7551"><a href="#L-7551"><span class="linenos">7551</span></a><span class="sd"> Returns:</span> +</span><span id="L-7552"><a href="#L-7552"><span class="linenos">7552</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> +</span><span id="L-7553"><a href="#L-7553"><span class="linenos">7553</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> +</span><span id="L-7554"><a href="#L-7554"><span class="linenos">7554</span></a><span class="sd"> """</span> +</span><span id="L-7555"><a href="#L-7555"><span class="linenos">7555</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> +</span><span id="L-7556"><a href="#L-7556"><span class="linenos">7556</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> </span><span id="L-7557"><a href="#L-7557"><span class="linenos">7557</span></a> -</span><span id="L-7558"><a href="#L-7558"><span class="linenos">7558</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-7559"><a href="#L-7559"><span class="linenos">7559</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> -</span><span id="L-7560"><a href="#L-7560"><span class="linenos">7560</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span> -</span><span id="L-7561"><a href="#L-7561"><span class="linenos">7561</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> -</span><span id="L-7562"><a href="#L-7562"><span class="linenos">7562</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-7563"><a href="#L-7563"><span class="linenos">7563</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7564"><a href="#L-7564"><span class="linenos">7564</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span> -</span><span id="L-7565"><a href="#L-7565"><span class="linenos">7565</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"from_arg_list"</span><span class="p">:</span> -</span><span id="L-7566"><a href="#L-7566"><span class="linenos">7566</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-7567"><a href="#L-7567"><span class="linenos">7567</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7568"><a href="#L-7568"><span class="linenos">7568</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-7569"><a href="#L-7569"><span class="linenos">7569</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> -</span><span id="L-7570"><a href="#L-7570"><span class="linenos">7570</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-7571"><a href="#L-7571"><span class="linenos">7571</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7572"><a href="#L-7572"><span class="linenos">7572</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> -</span><span id="L-7573"><a href="#L-7573"><span class="linenos">7573</span></a> <span class="sa">f</span><span class="s2">"Unable to convert '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' into a Func. Either manually construct "</span> -</span><span id="L-7574"><a href="#L-7574"><span class="linenos">7574</span></a> <span class="s2">"the Func expression of interest or parse the function call."</span> -</span><span id="L-7575"><a href="#L-7575"><span class="linenos">7575</span></a> <span class="p">)</span> -</span><span id="L-7576"><a href="#L-7576"><span class="linenos">7576</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7577"><a href="#L-7577"><span class="linenos">7577</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span> -</span><span id="L-7578"><a href="#L-7578"><span class="linenos">7578</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-7579"><a href="#L-7579"><span class="linenos">7579</span></a> -</span><span id="L-7580"><a href="#L-7580"><span class="linenos">7580</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span> -</span><span id="L-7581"><a href="#L-7581"><span class="linenos">7581</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="L-7582"><a href="#L-7582"><span class="linenos">7582</span></a> -</span><span id="L-7583"><a href="#L-7583"><span class="linenos">7583</span></a> <span class="k">return</span> <span class="n">function</span> -</span><span id="L-7584"><a href="#L-7584"><span class="linenos">7584</span></a> -</span><span id="L-7585"><a href="#L-7585"><span class="linenos">7585</span></a> -</span><span id="L-7586"><a href="#L-7586"><span class="linenos">7586</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span> -</span><span id="L-7587"><a href="#L-7587"><span class="linenos">7587</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-7588"><a href="#L-7588"><span class="linenos">7588</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-7589"><a href="#L-7589"><span class="linenos">7589</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="L-7590"><a href="#L-7590"><span class="linenos">7590</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7591"><a href="#L-7591"><span class="linenos">7591</span></a><span class="sd"> Initialize a CASE statement.</span> +</span><span id="L-7558"><a href="#L-7558"><span class="linenos">7558</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="L-7559"><a href="#L-7559"><span class="linenos">7559</span></a> +</span><span id="L-7560"><a href="#L-7560"><span class="linenos">7560</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-7561"><a href="#L-7561"><span class="linenos">7561</span></a> +</span><span id="L-7562"><a href="#L-7562"><span class="linenos">7562</span></a> <span class="n">converted</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span> +</span><span id="L-7563"><a href="#L-7563"><span class="linenos">7563</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-7564"><a href="#L-7564"><span class="linenos">7564</span></a> +</span><span id="L-7565"><a href="#L-7565"><span class="linenos">7565</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-7566"><a href="#L-7566"><span class="linenos">7566</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> +</span><span id="L-7567"><a href="#L-7567"><span class="linenos">7567</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span> +</span><span id="L-7568"><a href="#L-7568"><span class="linenos">7568</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> +</span><span id="L-7569"><a href="#L-7569"><span class="linenos">7569</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-7570"><a href="#L-7570"><span class="linenos">7570</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7571"><a href="#L-7571"><span class="linenos">7571</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span> +</span><span id="L-7572"><a href="#L-7572"><span class="linenos">7572</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"from_arg_list"</span><span class="p">:</span> +</span><span id="L-7573"><a href="#L-7573"><span class="linenos">7573</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-7574"><a href="#L-7574"><span class="linenos">7574</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7575"><a href="#L-7575"><span class="linenos">7575</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-7576"><a href="#L-7576"><span class="linenos">7576</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> +</span><span id="L-7577"><a href="#L-7577"><span class="linenos">7577</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-7578"><a href="#L-7578"><span class="linenos">7578</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7579"><a href="#L-7579"><span class="linenos">7579</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> +</span><span id="L-7580"><a href="#L-7580"><span class="linenos">7580</span></a> <span class="sa">f</span><span class="s2">"Unable to convert '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' into a Func. Either manually construct "</span> +</span><span id="L-7581"><a href="#L-7581"><span class="linenos">7581</span></a> <span class="s2">"the Func expression of interest or parse the function call."</span> +</span><span id="L-7582"><a href="#L-7582"><span class="linenos">7582</span></a> <span class="p">)</span> +</span><span id="L-7583"><a href="#L-7583"><span class="linenos">7583</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7584"><a href="#L-7584"><span class="linenos">7584</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span> +</span><span id="L-7585"><a href="#L-7585"><span class="linenos">7585</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-7586"><a href="#L-7586"><span class="linenos">7586</span></a> +</span><span id="L-7587"><a href="#L-7587"><span class="linenos">7587</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span> +</span><span id="L-7588"><a href="#L-7588"><span class="linenos">7588</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="L-7589"><a href="#L-7589"><span class="linenos">7589</span></a> +</span><span id="L-7590"><a href="#L-7590"><span class="linenos">7590</span></a> <span class="k">return</span> <span class="n">function</span> +</span><span id="L-7591"><a href="#L-7591"><span class="linenos">7591</span></a> </span><span id="L-7592"><a href="#L-7592"><span class="linenos">7592</span></a> -</span><span id="L-7593"><a href="#L-7593"><span class="linenos">7593</span></a><span class="sd"> Example:</span> -</span><span id="L-7594"><a href="#L-7594"><span class="linenos">7594</span></a><span class="sd"> case().when("a = 1", "foo").else_("bar")</span> -</span><span id="L-7595"><a href="#L-7595"><span class="linenos">7595</span></a> -</span><span id="L-7596"><a href="#L-7596"><span class="linenos">7596</span></a><span class="sd"> Args:</span> -</span><span id="L-7597"><a href="#L-7597"><span class="linenos">7597</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span> -</span><span id="L-7598"><a href="#L-7598"><span class="linenos">7598</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span> -</span><span id="L-7599"><a href="#L-7599"><span class="linenos">7599</span></a><span class="sd"> """</span> -</span><span id="L-7600"><a href="#L-7600"><span class="linenos">7600</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-7601"><a href="#L-7601"><span class="linenos">7601</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-7602"><a href="#L-7602"><span class="linenos">7602</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-7603"><a href="#L-7603"><span class="linenos">7603</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-7604"><a href="#L-7604"><span class="linenos">7604</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span> -</span><span id="L-7605"><a href="#L-7605"><span class="linenos">7605</span></a> -</span><span id="L-7606"><a href="#L-7606"><span class="linenos">7606</span></a> -</span><span id="L-7607"><a href="#L-7607"><span class="linenos">7607</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span> -</span><span id="L-7608"><a href="#L-7608"><span class="linenos">7608</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-7609"><a href="#L-7609"><span class="linenos">7609</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Array</span><span class="p">:</span> -</span><span id="L-7610"><a href="#L-7610"><span class="linenos">7610</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7611"><a href="#L-7611"><span class="linenos">7611</span></a><span class="sd"> Returns an array.</span> +</span><span id="L-7593"><a href="#L-7593"><span class="linenos">7593</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span> +</span><span id="L-7594"><a href="#L-7594"><span class="linenos">7594</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-7595"><a href="#L-7595"><span class="linenos">7595</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-7596"><a href="#L-7596"><span class="linenos">7596</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="L-7597"><a href="#L-7597"><span class="linenos">7597</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7598"><a href="#L-7598"><span class="linenos">7598</span></a><span class="sd"> Initialize a CASE statement.</span> +</span><span id="L-7599"><a href="#L-7599"><span class="linenos">7599</span></a> +</span><span id="L-7600"><a href="#L-7600"><span class="linenos">7600</span></a><span class="sd"> Example:</span> +</span><span id="L-7601"><a href="#L-7601"><span class="linenos">7601</span></a><span class="sd"> case().when("a = 1", "foo").else_("bar")</span> +</span><span id="L-7602"><a href="#L-7602"><span class="linenos">7602</span></a> +</span><span id="L-7603"><a href="#L-7603"><span class="linenos">7603</span></a><span class="sd"> Args:</span> +</span><span id="L-7604"><a href="#L-7604"><span class="linenos">7604</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span> +</span><span id="L-7605"><a href="#L-7605"><span class="linenos">7605</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span> +</span><span id="L-7606"><a href="#L-7606"><span class="linenos">7606</span></a><span class="sd"> """</span> +</span><span id="L-7607"><a href="#L-7607"><span class="linenos">7607</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-7608"><a href="#L-7608"><span class="linenos">7608</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-7609"><a href="#L-7609"><span class="linenos">7609</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-7610"><a href="#L-7610"><span class="linenos">7610</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-7611"><a href="#L-7611"><span class="linenos">7611</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span> </span><span id="L-7612"><a href="#L-7612"><span class="linenos">7612</span></a> -</span><span id="L-7613"><a href="#L-7613"><span class="linenos">7613</span></a><span class="sd"> Examples:</span> -</span><span id="L-7614"><a href="#L-7614"><span class="linenos">7614</span></a><span class="sd"> >>> array(1, 'x').sql()</span> -</span><span id="L-7615"><a href="#L-7615"><span class="linenos">7615</span></a><span class="sd"> 'ARRAY(1, x)'</span> -</span><span id="L-7616"><a href="#L-7616"><span class="linenos">7616</span></a> -</span><span id="L-7617"><a href="#L-7617"><span class="linenos">7617</span></a><span class="sd"> Args:</span> -</span><span id="L-7618"><a href="#L-7618"><span class="linenos">7618</span></a><span class="sd"> expressions: the expressions to add to the array.</span> -</span><span id="L-7619"><a href="#L-7619"><span class="linenos">7619</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> -</span><span id="L-7620"><a href="#L-7620"><span class="linenos">7620</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="L-7621"><a href="#L-7621"><span class="linenos">7621</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> -</span><span id="L-7622"><a href="#L-7622"><span class="linenos">7622</span></a> -</span><span id="L-7623"><a href="#L-7623"><span class="linenos">7623</span></a><span class="sd"> Returns:</span> -</span><span id="L-7624"><a href="#L-7624"><span class="linenos">7624</span></a><span class="sd"> An array expression.</span> -</span><span id="L-7625"><a href="#L-7625"><span class="linenos">7625</span></a><span class="sd"> """</span> -</span><span id="L-7626"><a href="#L-7626"><span class="linenos">7626</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span> -</span><span id="L-7627"><a href="#L-7627"><span class="linenos">7627</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-7628"><a href="#L-7628"><span class="linenos">7628</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-7629"><a href="#L-7629"><span class="linenos">7629</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="L-7630"><a href="#L-7630"><span class="linenos">7630</span></a> <span class="p">]</span> -</span><span id="L-7631"><a href="#L-7631"><span class="linenos">7631</span></a> <span class="p">)</span> -</span><span id="L-7632"><a href="#L-7632"><span class="linenos">7632</span></a> -</span><span id="L-7633"><a href="#L-7633"><span class="linenos">7633</span></a> -</span><span id="L-7634"><a href="#L-7634"><span class="linenos">7634</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span> -</span><span id="L-7635"><a href="#L-7635"><span class="linenos">7635</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-7636"><a href="#L-7636"><span class="linenos">7636</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">:</span> -</span><span id="L-7637"><a href="#L-7637"><span class="linenos">7637</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7638"><a href="#L-7638"><span class="linenos">7638</span></a><span class="sd"> Returns an tuple.</span> +</span><span id="L-7613"><a href="#L-7613"><span class="linenos">7613</span></a> +</span><span id="L-7614"><a href="#L-7614"><span class="linenos">7614</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span> +</span><span id="L-7615"><a href="#L-7615"><span class="linenos">7615</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-7616"><a href="#L-7616"><span class="linenos">7616</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Array</span><span class="p">:</span> +</span><span id="L-7617"><a href="#L-7617"><span class="linenos">7617</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7618"><a href="#L-7618"><span class="linenos">7618</span></a><span class="sd"> Returns an array.</span> +</span><span id="L-7619"><a href="#L-7619"><span class="linenos">7619</span></a> +</span><span id="L-7620"><a href="#L-7620"><span class="linenos">7620</span></a><span class="sd"> Examples:</span> +</span><span id="L-7621"><a href="#L-7621"><span class="linenos">7621</span></a><span class="sd"> >>> array(1, 'x').sql()</span> +</span><span id="L-7622"><a href="#L-7622"><span class="linenos">7622</span></a><span class="sd"> 'ARRAY(1, x)'</span> +</span><span id="L-7623"><a href="#L-7623"><span class="linenos">7623</span></a> +</span><span id="L-7624"><a href="#L-7624"><span class="linenos">7624</span></a><span class="sd"> Args:</span> +</span><span id="L-7625"><a href="#L-7625"><span class="linenos">7625</span></a><span class="sd"> expressions: the expressions to add to the array.</span> +</span><span id="L-7626"><a href="#L-7626"><span class="linenos">7626</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> +</span><span id="L-7627"><a href="#L-7627"><span class="linenos">7627</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="L-7628"><a href="#L-7628"><span class="linenos">7628</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="L-7629"><a href="#L-7629"><span class="linenos">7629</span></a> +</span><span id="L-7630"><a href="#L-7630"><span class="linenos">7630</span></a><span class="sd"> Returns:</span> +</span><span id="L-7631"><a href="#L-7631"><span class="linenos">7631</span></a><span class="sd"> An array expression.</span> +</span><span id="L-7632"><a href="#L-7632"><span class="linenos">7632</span></a><span class="sd"> """</span> +</span><span id="L-7633"><a href="#L-7633"><span class="linenos">7633</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span> +</span><span id="L-7634"><a href="#L-7634"><span class="linenos">7634</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-7635"><a href="#L-7635"><span class="linenos">7635</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-7636"><a href="#L-7636"><span class="linenos">7636</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="L-7637"><a href="#L-7637"><span class="linenos">7637</span></a> <span class="p">]</span> +</span><span id="L-7638"><a href="#L-7638"><span class="linenos">7638</span></a> <span class="p">)</span> </span><span id="L-7639"><a href="#L-7639"><span class="linenos">7639</span></a> -</span><span id="L-7640"><a href="#L-7640"><span class="linenos">7640</span></a><span class="sd"> Examples:</span> -</span><span id="L-7641"><a href="#L-7641"><span class="linenos">7641</span></a><span class="sd"> >>> tuple_(1, 'x').sql()</span> -</span><span id="L-7642"><a href="#L-7642"><span class="linenos">7642</span></a><span class="sd"> '(1, x)'</span> -</span><span id="L-7643"><a href="#L-7643"><span class="linenos">7643</span></a> -</span><span id="L-7644"><a href="#L-7644"><span class="linenos">7644</span></a><span class="sd"> Args:</span> -</span><span id="L-7645"><a href="#L-7645"><span class="linenos">7645</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span> -</span><span id="L-7646"><a href="#L-7646"><span class="linenos">7646</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> -</span><span id="L-7647"><a href="#L-7647"><span class="linenos">7647</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="L-7648"><a href="#L-7648"><span class="linenos">7648</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> -</span><span id="L-7649"><a href="#L-7649"><span class="linenos">7649</span></a> -</span><span id="L-7650"><a href="#L-7650"><span class="linenos">7650</span></a><span class="sd"> Returns:</span> -</span><span id="L-7651"><a href="#L-7651"><span class="linenos">7651</span></a><span class="sd"> A tuple expression.</span> -</span><span id="L-7652"><a href="#L-7652"><span class="linenos">7652</span></a><span class="sd"> """</span> -</span><span id="L-7653"><a href="#L-7653"><span class="linenos">7653</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span> -</span><span id="L-7654"><a href="#L-7654"><span class="linenos">7654</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-7655"><a href="#L-7655"><span class="linenos">7655</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-7656"><a href="#L-7656"><span class="linenos">7656</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="L-7657"><a href="#L-7657"><span class="linenos">7657</span></a> <span class="p">]</span> -</span><span id="L-7658"><a href="#L-7658"><span class="linenos">7658</span></a> <span class="p">)</span> -</span><span id="L-7659"><a href="#L-7659"><span class="linenos">7659</span></a> -</span><span id="L-7660"><a href="#L-7660"><span class="linenos">7660</span></a> -</span><span id="L-7661"><a href="#L-7661"><span class="linenos">7661</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> -</span><span id="L-7662"><a href="#L-7662"><span class="linenos">7662</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7663"><a href="#L-7663"><span class="linenos">7663</span></a><span class="sd"> Returns a true Boolean expression.</span> -</span><span id="L-7664"><a href="#L-7664"><span class="linenos">7664</span></a><span class="sd"> """</span> -</span><span id="L-7665"><a href="#L-7665"><span class="linenos">7665</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-7640"><a href="#L-7640"><span class="linenos">7640</span></a> +</span><span id="L-7641"><a href="#L-7641"><span class="linenos">7641</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span> +</span><span id="L-7642"><a href="#L-7642"><span class="linenos">7642</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-7643"><a href="#L-7643"><span class="linenos">7643</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">:</span> +</span><span id="L-7644"><a href="#L-7644"><span class="linenos">7644</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7645"><a href="#L-7645"><span class="linenos">7645</span></a><span class="sd"> Returns an tuple.</span> +</span><span id="L-7646"><a href="#L-7646"><span class="linenos">7646</span></a> +</span><span id="L-7647"><a href="#L-7647"><span class="linenos">7647</span></a><span class="sd"> Examples:</span> +</span><span id="L-7648"><a href="#L-7648"><span class="linenos">7648</span></a><span class="sd"> >>> tuple_(1, 'x').sql()</span> +</span><span id="L-7649"><a href="#L-7649"><span class="linenos">7649</span></a><span class="sd"> '(1, x)'</span> +</span><span id="L-7650"><a href="#L-7650"><span class="linenos">7650</span></a> +</span><span id="L-7651"><a href="#L-7651"><span class="linenos">7651</span></a><span class="sd"> Args:</span> +</span><span id="L-7652"><a href="#L-7652"><span class="linenos">7652</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span> +</span><span id="L-7653"><a href="#L-7653"><span class="linenos">7653</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> +</span><span id="L-7654"><a href="#L-7654"><span class="linenos">7654</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="L-7655"><a href="#L-7655"><span class="linenos">7655</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="L-7656"><a href="#L-7656"><span class="linenos">7656</span></a> +</span><span id="L-7657"><a href="#L-7657"><span class="linenos">7657</span></a><span class="sd"> Returns:</span> +</span><span id="L-7658"><a href="#L-7658"><span class="linenos">7658</span></a><span class="sd"> A tuple expression.</span> +</span><span id="L-7659"><a href="#L-7659"><span class="linenos">7659</span></a><span class="sd"> """</span> +</span><span id="L-7660"><a href="#L-7660"><span class="linenos">7660</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span> +</span><span id="L-7661"><a href="#L-7661"><span class="linenos">7661</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-7662"><a href="#L-7662"><span class="linenos">7662</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-7663"><a href="#L-7663"><span class="linenos">7663</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="L-7664"><a href="#L-7664"><span class="linenos">7664</span></a> <span class="p">]</span> +</span><span id="L-7665"><a href="#L-7665"><span class="linenos">7665</span></a> <span class="p">)</span> </span><span id="L-7666"><a href="#L-7666"><span class="linenos">7666</span></a> </span><span id="L-7667"><a href="#L-7667"><span class="linenos">7667</span></a> -</span><span id="L-7668"><a href="#L-7668"><span class="linenos">7668</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> +</span><span id="L-7668"><a href="#L-7668"><span class="linenos">7668</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> </span><span id="L-7669"><a href="#L-7669"><span class="linenos">7669</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7670"><a href="#L-7670"><span class="linenos">7670</span></a><span class="sd"> Returns a false Boolean expression.</span> +</span><span id="L-7670"><a href="#L-7670"><span class="linenos">7670</span></a><span class="sd"> Returns a true Boolean expression.</span> </span><span id="L-7671"><a href="#L-7671"><span class="linenos">7671</span></a><span class="sd"> """</span> -</span><span id="L-7672"><a href="#L-7672"><span class="linenos">7672</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-7672"><a href="#L-7672"><span class="linenos">7672</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-7673"><a href="#L-7673"><span class="linenos">7673</span></a> </span><span id="L-7674"><a href="#L-7674"><span class="linenos">7674</span></a> -</span><span id="L-7675"><a href="#L-7675"><span class="linenos">7675</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-></span> <span class="n">Null</span><span class="p">:</span> +</span><span id="L-7675"><a href="#L-7675"><span class="linenos">7675</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> </span><span id="L-7676"><a href="#L-7676"><span class="linenos">7676</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-7677"><a href="#L-7677"><span class="linenos">7677</span></a><span class="sd"> Returns a Null expression.</span> +</span><span id="L-7677"><a href="#L-7677"><span class="linenos">7677</span></a><span class="sd"> Returns a false Boolean expression.</span> </span><span id="L-7678"><a href="#L-7678"><span class="linenos">7678</span></a><span class="sd"> """</span> -</span><span id="L-7679"><a href="#L-7679"><span class="linenos">7679</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> +</span><span id="L-7679"><a href="#L-7679"><span class="linenos">7679</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span><span id="L-7680"><a href="#L-7680"><span class="linenos">7680</span></a> </span><span id="L-7681"><a href="#L-7681"><span class="linenos">7681</span></a> -</span><span id="L-7682"><a href="#L-7682"><span class="linenos">7682</span></a><span class="n">NONNULL_CONSTANTS</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-7683"><a href="#L-7683"><span class="linenos">7683</span></a> <span class="n">Literal</span><span class="p">,</span> -</span><span id="L-7684"><a href="#L-7684"><span class="linenos">7684</span></a> <span class="n">Boolean</span><span class="p">,</span> -</span><span id="L-7685"><a href="#L-7685"><span class="linenos">7685</span></a><span class="p">)</span> -</span><span id="L-7686"><a href="#L-7686"><span class="linenos">7686</span></a> -</span><span id="L-7687"><a href="#L-7687"><span class="linenos">7687</span></a><span class="n">CONSTANTS</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-7688"><a href="#L-7688"><span class="linenos">7688</span></a> <span class="n">Literal</span><span class="p">,</span> -</span><span id="L-7689"><a href="#L-7689"><span class="linenos">7689</span></a> <span class="n">Boolean</span><span class="p">,</span> -</span><span id="L-7690"><a href="#L-7690"><span class="linenos">7690</span></a> <span class="n">Null</span><span class="p">,</span> -</span><span id="L-7691"><a href="#L-7691"><span class="linenos">7691</span></a><span class="p">)</span> +</span><span id="L-7682"><a href="#L-7682"><span class="linenos">7682</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-></span> <span class="n">Null</span><span class="p">:</span> +</span><span id="L-7683"><a href="#L-7683"><span class="linenos">7683</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-7684"><a href="#L-7684"><span class="linenos">7684</span></a><span class="sd"> Returns a Null expression.</span> +</span><span id="L-7685"><a href="#L-7685"><span class="linenos">7685</span></a><span class="sd"> """</span> +</span><span id="L-7686"><a href="#L-7686"><span class="linenos">7686</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> +</span><span id="L-7687"><a href="#L-7687"><span class="linenos">7687</span></a> +</span><span id="L-7688"><a href="#L-7688"><span class="linenos">7688</span></a> +</span><span id="L-7689"><a href="#L-7689"><span class="linenos">7689</span></a><span class="n">NONNULL_CONSTANTS</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-7690"><a href="#L-7690"><span class="linenos">7690</span></a> <span class="n">Literal</span><span class="p">,</span> +</span><span id="L-7691"><a href="#L-7691"><span class="linenos">7691</span></a> <span class="n">Boolean</span><span class="p">,</span> +</span><span id="L-7692"><a href="#L-7692"><span class="linenos">7692</span></a><span class="p">)</span> +</span><span id="L-7693"><a href="#L-7693"><span class="linenos">7693</span></a> +</span><span id="L-7694"><a href="#L-7694"><span class="linenos">7694</span></a><span class="n">CONSTANTS</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-7695"><a href="#L-7695"><span class="linenos">7695</span></a> <span class="n">Literal</span><span class="p">,</span> +</span><span id="L-7696"><a href="#L-7696"><span class="linenos">7696</span></a> <span class="n">Boolean</span><span class="p">,</span> +</span><span id="L-7697"><a href="#L-7697"><span class="linenos">7697</span></a> <span class="n">Null</span><span class="p">,</span> +</span><span id="L-7698"><a href="#L-7698"><span class="linenos">7698</span></a><span class="p">)</span> </span></pre></div> @@ -53957,221 +53982,222 @@ Otherwise, this resets the expressions.</li> </span><span id="DataType-3978"><a href="#DataType-3978"><span class="linenos">3978</span></a> <span class="n">IPV6</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="DataType-3979"><a href="#DataType-3979"><span class="linenos">3979</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="DataType-3980"><a href="#DataType-3980"><span class="linenos">3980</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3981"><a href="#DataType-3981"><span class="linenos">3981</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3982"><a href="#DataType-3982"><span class="linenos">3982</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3983"><a href="#DataType-3983"><span class="linenos">3983</span></a> <span class="n">LOWCARDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3984"><a href="#DataType-3984"><span class="linenos">3984</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3985"><a href="#DataType-3985"><span class="linenos">3985</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3986"><a href="#DataType-3986"><span class="linenos">3986</span></a> <span class="n">MEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3987"><a href="#DataType-3987"><span class="linenos">3987</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3988"><a href="#DataType-3988"><span class="linenos">3988</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3989"><a href="#DataType-3989"><span class="linenos">3989</span></a> <span class="n">NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3990"><a href="#DataType-3990"><span class="linenos">3990</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3991"><a href="#DataType-3991"><span class="linenos">3991</span></a> <span class="n">NESTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3992"><a href="#DataType-3992"><span class="linenos">3992</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3993"><a href="#DataType-3993"><span class="linenos">3993</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3994"><a href="#DataType-3994"><span class="linenos">3994</span></a> <span class="n">NUMMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3995"><a href="#DataType-3995"><span class="linenos">3995</span></a> <span class="n">NUMRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3996"><a href="#DataType-3996"><span class="linenos">3996</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3997"><a href="#DataType-3997"><span class="linenos">3997</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3998"><a href="#DataType-3998"><span class="linenos">3998</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-3999"><a href="#DataType-3999"><span class="linenos">3999</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4000"><a href="#DataType-4000"><span class="linenos">4000</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4001"><a href="#DataType-4001"><span class="linenos">4001</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4002"><a href="#DataType-4002"><span class="linenos">4002</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4003"><a href="#DataType-4003"><span class="linenos">4003</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4004"><a href="#DataType-4004"><span class="linenos">4004</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4005"><a href="#DataType-4005"><span class="linenos">4005</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4006"><a href="#DataType-4006"><span class="linenos">4006</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4007"><a href="#DataType-4007"><span class="linenos">4007</span></a> <span class="n">TINYBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4008"><a href="#DataType-4008"><span class="linenos">4008</span></a> <span class="n">TINYTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4009"><a href="#DataType-4009"><span class="linenos">4009</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4010"><a href="#DataType-4010"><span class="linenos">4010</span></a> <span class="n">TIMETZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4011"><a href="#DataType-4011"><span class="linenos">4011</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4012"><a href="#DataType-4012"><span class="linenos">4012</span></a> <span class="n">TIMESTAMPNTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4013"><a href="#DataType-4013"><span class="linenos">4013</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4014"><a href="#DataType-4014"><span class="linenos">4014</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4015"><a href="#DataType-4015"><span class="linenos">4015</span></a> <span class="n">TIMESTAMP_S</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4016"><a href="#DataType-4016"><span class="linenos">4016</span></a> <span class="n">TIMESTAMP_MS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4017"><a href="#DataType-4017"><span class="linenos">4017</span></a> <span class="n">TIMESTAMP_NS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4018"><a href="#DataType-4018"><span class="linenos">4018</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4019"><a href="#DataType-4019"><span class="linenos">4019</span></a> <span class="n">TSMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4020"><a href="#DataType-4020"><span class="linenos">4020</span></a> <span class="n">TSRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4021"><a href="#DataType-4021"><span class="linenos">4021</span></a> <span class="n">TSTZMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4022"><a href="#DataType-4022"><span class="linenos">4022</span></a> <span class="n">TSTZRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4023"><a href="#DataType-4023"><span class="linenos">4023</span></a> <span class="n">UBIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4024"><a href="#DataType-4024"><span class="linenos">4024</span></a> <span class="n">UINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4025"><a href="#DataType-4025"><span class="linenos">4025</span></a> <span class="n">UINT128</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4026"><a href="#DataType-4026"><span class="linenos">4026</span></a> <span class="n">UINT256</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4027"><a href="#DataType-4027"><span class="linenos">4027</span></a> <span class="n">UMEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4028"><a href="#DataType-4028"><span class="linenos">4028</span></a> <span class="n">UDECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4029"><a href="#DataType-4029"><span class="linenos">4029</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4030"><a href="#DataType-4030"><span class="linenos">4030</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> -</span><span id="DataType-4031"><a href="#DataType-4031"><span class="linenos">4031</span></a> <span class="n">USERDEFINED</span> <span class="o">=</span> <span class="s2">"USER-DEFINED"</span> -</span><span id="DataType-4032"><a href="#DataType-4032"><span class="linenos">4032</span></a> <span class="n">USMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4033"><a href="#DataType-4033"><span class="linenos">4033</span></a> <span class="n">UTINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4034"><a href="#DataType-4034"><span class="linenos">4034</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4035"><a href="#DataType-4035"><span class="linenos">4035</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4036"><a href="#DataType-4036"><span class="linenos">4036</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4037"><a href="#DataType-4037"><span class="linenos">4037</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4038"><a href="#DataType-4038"><span class="linenos">4038</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4039"><a href="#DataType-4039"><span class="linenos">4039</span></a> <span class="n">YEAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4040"><a href="#DataType-4040"><span class="linenos">4040</span></a> <span class="n">TDIGEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-4041"><a href="#DataType-4041"><span class="linenos">4041</span></a> -</span><span id="DataType-4042"><a href="#DataType-4042"><span class="linenos">4042</span></a> <span class="n">STRUCT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4043"><a href="#DataType-4043"><span class="linenos">4043</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span> -</span><span id="DataType-4044"><a href="#DataType-4044"><span class="linenos">4044</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="DataType-4045"><a href="#DataType-4045"><span class="linenos">4045</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> -</span><span id="DataType-4046"><a href="#DataType-4046"><span class="linenos">4046</span></a> <span class="p">}</span> -</span><span id="DataType-4047"><a href="#DataType-4047"><span class="linenos">4047</span></a> -</span><span id="DataType-4048"><a href="#DataType-4048"><span class="linenos">4048</span></a> <span class="n">NESTED_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4049"><a href="#DataType-4049"><span class="linenos">4049</span></a> <span class="o">*</span><span class="n">STRUCT_TYPES</span><span class="p">,</span> -</span><span id="DataType-4050"><a href="#DataType-4050"><span class="linenos">4050</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="DataType-4051"><a href="#DataType-4051"><span class="linenos">4051</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="DataType-4052"><a href="#DataType-4052"><span class="linenos">4052</span></a> <span class="p">}</span> -</span><span id="DataType-4053"><a href="#DataType-4053"><span class="linenos">4053</span></a> -</span><span id="DataType-4054"><a href="#DataType-4054"><span class="linenos">4054</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4055"><a href="#DataType-4055"><span class="linenos">4055</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="DataType-4056"><a href="#DataType-4056"><span class="linenos">4056</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="DataType-4057"><a href="#DataType-4057"><span class="linenos">4057</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="DataType-4058"><a href="#DataType-4058"><span class="linenos">4058</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="DataType-4059"><a href="#DataType-4059"><span class="linenos">4059</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="DataType-4060"><a href="#DataType-4060"><span class="linenos">4060</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="DataType-4061"><a href="#DataType-4061"><span class="linenos">4061</span></a> <span class="p">}</span> -</span><span id="DataType-4062"><a href="#DataType-4062"><span class="linenos">4062</span></a> -</span><span id="DataType-4063"><a href="#DataType-4063"><span class="linenos">4063</span></a> <span class="n">SIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4064"><a href="#DataType-4064"><span class="linenos">4064</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="DataType-4065"><a href="#DataType-4065"><span class="linenos">4065</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="DataType-4066"><a href="#DataType-4066"><span class="linenos">4066</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> -</span><span id="DataType-4067"><a href="#DataType-4067"><span class="linenos">4067</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> -</span><span id="DataType-4068"><a href="#DataType-4068"><span class="linenos">4068</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> -</span><span id="DataType-4069"><a href="#DataType-4069"><span class="linenos">4069</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="DataType-4070"><a href="#DataType-4070"><span class="linenos">4070</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="DataType-4071"><a href="#DataType-4071"><span class="linenos">4071</span></a> <span class="p">}</span> -</span><span id="DataType-4072"><a href="#DataType-4072"><span class="linenos">4072</span></a> -</span><span id="DataType-4073"><a href="#DataType-4073"><span class="linenos">4073</span></a> <span class="n">UNSIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4074"><a href="#DataType-4074"><span class="linenos">4074</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> -</span><span id="DataType-4075"><a href="#DataType-4075"><span class="linenos">4075</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> -</span><span id="DataType-4076"><a href="#DataType-4076"><span class="linenos">4076</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> -</span><span id="DataType-4077"><a href="#DataType-4077"><span class="linenos">4077</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> -</span><span id="DataType-4078"><a href="#DataType-4078"><span class="linenos">4078</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> -</span><span id="DataType-4079"><a href="#DataType-4079"><span class="linenos">4079</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> -</span><span id="DataType-4080"><a href="#DataType-4080"><span class="linenos">4080</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> -</span><span id="DataType-4081"><a href="#DataType-4081"><span class="linenos">4081</span></a> <span class="p">}</span> -</span><span id="DataType-4082"><a href="#DataType-4082"><span class="linenos">4082</span></a> -</span><span id="DataType-4083"><a href="#DataType-4083"><span class="linenos">4083</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4084"><a href="#DataType-4084"><span class="linenos">4084</span></a> <span class="o">*</span><span class="n">SIGNED_INTEGER_TYPES</span><span class="p">,</span> -</span><span id="DataType-4085"><a href="#DataType-4085"><span class="linenos">4085</span></a> <span class="o">*</span><span class="n">UNSIGNED_INTEGER_TYPES</span><span class="p">,</span> -</span><span id="DataType-4086"><a href="#DataType-4086"><span class="linenos">4086</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> -</span><span id="DataType-4087"><a href="#DataType-4087"><span class="linenos">4087</span></a> <span class="p">}</span> -</span><span id="DataType-4088"><a href="#DataType-4088"><span class="linenos">4088</span></a> -</span><span id="DataType-4089"><a href="#DataType-4089"><span class="linenos">4089</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4090"><a href="#DataType-4090"><span class="linenos">4090</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="DataType-4091"><a href="#DataType-4091"><span class="linenos">4091</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="DataType-4092"><a href="#DataType-4092"><span class="linenos">4092</span></a> <span class="p">}</span> -</span><span id="DataType-4093"><a href="#DataType-4093"><span class="linenos">4093</span></a> -</span><span id="DataType-4094"><a href="#DataType-4094"><span class="linenos">4094</span></a> <span class="n">REAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4095"><a href="#DataType-4095"><span class="linenos">4095</span></a> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">,</span> -</span><span id="DataType-4096"><a href="#DataType-4096"><span class="linenos">4096</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="DataType-4097"><a href="#DataType-4097"><span class="linenos">4097</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="DataType-4098"><a href="#DataType-4098"><span class="linenos">4098</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="DataType-4099"><a href="#DataType-4099"><span class="linenos">4099</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> -</span><span id="DataType-4100"><a href="#DataType-4100"><span class="linenos">4100</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> -</span><span id="DataType-4101"><a href="#DataType-4101"><span class="linenos">4101</span></a> <span class="p">}</span> -</span><span id="DataType-4102"><a href="#DataType-4102"><span class="linenos">4102</span></a> -</span><span id="DataType-4103"><a href="#DataType-4103"><span class="linenos">4103</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4104"><a href="#DataType-4104"><span class="linenos">4104</span></a> <span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> -</span><span id="DataType-4105"><a href="#DataType-4105"><span class="linenos">4105</span></a> <span class="o">*</span><span class="n">REAL_TYPES</span><span class="p">,</span> -</span><span id="DataType-4106"><a href="#DataType-4106"><span class="linenos">4106</span></a> <span class="p">}</span> -</span><span id="DataType-4107"><a href="#DataType-4107"><span class="linenos">4107</span></a> -</span><span id="DataType-4108"><a href="#DataType-4108"><span class="linenos">4108</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-4109"><a href="#DataType-4109"><span class="linenos">4109</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="DataType-4110"><a href="#DataType-4110"><span class="linenos">4110</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> -</span><span id="DataType-4111"><a href="#DataType-4111"><span class="linenos">4111</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="DataType-4112"><a href="#DataType-4112"><span class="linenos">4112</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> -</span><span id="DataType-4113"><a href="#DataType-4113"><span class="linenos">4113</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="DataType-4114"><a href="#DataType-4114"><span class="linenos">4114</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="DataType-4115"><a href="#DataType-4115"><span class="linenos">4115</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="DataType-4116"><a href="#DataType-4116"><span class="linenos">4116</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="DataType-4117"><a href="#DataType-4117"><span class="linenos">4117</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="DataType-4118"><a href="#DataType-4118"><span class="linenos">4118</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> -</span><span id="DataType-4119"><a href="#DataType-4119"><span class="linenos">4119</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> -</span><span id="DataType-4120"><a href="#DataType-4120"><span class="linenos">4120</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> -</span><span id="DataType-4121"><a href="#DataType-4121"><span class="linenos">4121</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="DataType-4122"><a href="#DataType-4122"><span class="linenos">4122</span></a> <span class="p">}</span> -</span><span id="DataType-4123"><a href="#DataType-4123"><span class="linenos">4123</span></a> -</span><span id="DataType-4124"><a href="#DataType-4124"><span class="linenos">4124</span></a> <span class="nd">@classmethod</span> -</span><span id="DataType-4125"><a href="#DataType-4125"><span class="linenos">4125</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> -</span><span id="DataType-4126"><a href="#DataType-4126"><span class="linenos">4126</span></a> <span class="bp">cls</span><span class="p">,</span> -</span><span id="DataType-4127"><a href="#DataType-4127"><span class="linenos">4127</span></a> <span class="n">dtype</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> -</span><span id="DataType-4128"><a href="#DataType-4128"><span class="linenos">4128</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="DataType-4129"><a href="#DataType-4129"><span class="linenos">4129</span></a> <span class="n">udt</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="DataType-4130"><a href="#DataType-4130"><span class="linenos">4130</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="DataType-4131"><a href="#DataType-4131"><span class="linenos">4131</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataType-4132"><a href="#DataType-4132"><span class="linenos">4132</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="DataType-4133"><a href="#DataType-4133"><span class="linenos">4133</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataType-4134"><a href="#DataType-4134"><span class="linenos">4134</span></a><span class="sd"> Constructs a DataType object.</span> -</span><span id="DataType-4135"><a href="#DataType-4135"><span class="linenos">4135</span></a> -</span><span id="DataType-4136"><a href="#DataType-4136"><span class="linenos">4136</span></a><span class="sd"> Args:</span> -</span><span id="DataType-4137"><a href="#DataType-4137"><span class="linenos">4137</span></a><span class="sd"> dtype: the data type of interest.</span> -</span><span id="DataType-4138"><a href="#DataType-4138"><span class="linenos">4138</span></a><span class="sd"> dialect: the dialect to use for parsing `dtype`, in case it's a string.</span> -</span><span id="DataType-4139"><a href="#DataType-4139"><span class="linenos">4139</span></a><span class="sd"> udt: when set to True, `dtype` will be used as-is if it can't be parsed into a</span> -</span><span id="DataType-4140"><a href="#DataType-4140"><span class="linenos">4140</span></a><span class="sd"> DataType, thus creating a user-defined type.</span> -</span><span id="DataType-4141"><a href="#DataType-4141"><span class="linenos">4141</span></a><span class="sd"> copy: whether to copy the data type.</span> -</span><span id="DataType-4142"><a href="#DataType-4142"><span class="linenos">4142</span></a><span class="sd"> kwargs: additional arguments to pass in the constructor of DataType.</span> -</span><span id="DataType-4143"><a href="#DataType-4143"><span class="linenos">4143</span></a> -</span><span id="DataType-4144"><a href="#DataType-4144"><span class="linenos">4144</span></a><span class="sd"> Returns:</span> -</span><span id="DataType-4145"><a href="#DataType-4145"><span class="linenos">4145</span></a><span class="sd"> The constructed DataType object.</span> -</span><span id="DataType-4146"><a href="#DataType-4146"><span class="linenos">4146</span></a><span class="sd"> """</span> -</span><span id="DataType-4147"><a href="#DataType-4147"><span class="linenos">4147</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> -</span><span id="DataType-4148"><a href="#DataType-4148"><span class="linenos">4148</span></a> -</span><span id="DataType-4149"><a href="#DataType-4149"><span class="linenos">4149</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataType-4150"><a href="#DataType-4150"><span class="linenos">4150</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"UNKNOWN"</span><span class="p">:</span> -</span><span id="DataType-4151"><a href="#DataType-4151"><span class="linenos">4151</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="DataType-4152"><a href="#DataType-4152"><span class="linenos">4152</span></a> -</span><span id="DataType-4153"><a href="#DataType-4153"><span class="linenos">4153</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="DataType-4154"><a href="#DataType-4154"><span class="linenos">4154</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span> -</span><span id="DataType-4155"><a href="#DataType-4155"><span class="linenos">4155</span></a> <span class="n">dtype</span><span class="p">,</span> <span class="n">read</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">DataType</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span> -</span><span id="DataType-4156"><a href="#DataType-4156"><span class="linenos">4156</span></a> <span class="p">)</span> -</span><span id="DataType-4157"><a href="#DataType-4157"><span class="linenos">4157</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="DataType-4158"><a href="#DataType-4158"><span class="linenos">4158</span></a> <span class="k">if</span> <span class="n">udt</span><span class="p">:</span> -</span><span id="DataType-4159"><a href="#DataType-4159"><span class="linenos">4159</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="DataType-4160"><a href="#DataType-4160"><span class="linenos">4160</span></a> <span class="k">raise</span> -</span><span id="DataType-4161"><a href="#DataType-4161"><span class="linenos">4161</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="DataType-4162"><a href="#DataType-4162"><span class="linenos">4162</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="DataType-4163"><a href="#DataType-4163"><span class="linenos">4163</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="DataType-4164"><a href="#DataType-4164"><span class="linenos">4164</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="DataType-4165"><a href="#DataType-4165"><span class="linenos">4165</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType-4166"><a href="#DataType-4166"><span class="linenos">4166</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> -</span><span id="DataType-4167"><a href="#DataType-4167"><span class="linenos">4167</span></a> -</span><span id="DataType-4168"><a href="#DataType-4168"><span class="linenos">4168</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> -</span><span id="DataType-4169"><a href="#DataType-4169"><span class="linenos">4169</span></a> -</span><span id="DataType-4170"><a href="#DataType-4170"><span class="linenos">4170</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="DataType-4171"><a href="#DataType-4171"><span class="linenos">4171</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataType-4172"><a href="#DataType-4172"><span class="linenos">4172</span></a><span class="sd"> Checks whether this DataType matches one of the provided data types. Nested types or precision</span> -</span><span id="DataType-4173"><a href="#DataType-4173"><span class="linenos">4173</span></a><span class="sd"> will be compared using "structural equivalence" semantics, so e.g. array<int> != array<float>.</span> -</span><span id="DataType-4174"><a href="#DataType-4174"><span class="linenos">4174</span></a> -</span><span id="DataType-4175"><a href="#DataType-4175"><span class="linenos">4175</span></a><span class="sd"> Args:</span> -</span><span id="DataType-4176"><a href="#DataType-4176"><span class="linenos">4176</span></a><span class="sd"> dtypes: the data types to compare this DataType to.</span> -</span><span id="DataType-4177"><a href="#DataType-4177"><span class="linenos">4177</span></a> -</span><span id="DataType-4178"><a href="#DataType-4178"><span class="linenos">4178</span></a><span class="sd"> Returns:</span> -</span><span id="DataType-4179"><a href="#DataType-4179"><span class="linenos">4179</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this DataType.</span> -</span><span id="DataType-4180"><a href="#DataType-4180"><span class="linenos">4180</span></a><span class="sd"> """</span> -</span><span id="DataType-4181"><a href="#DataType-4181"><span class="linenos">4181</span></a> <span class="k">for</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="n">dtypes</span><span class="p">:</span> -</span><span id="DataType-4182"><a href="#DataType-4182"><span class="linenos">4182</span></a> <span class="n">other</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">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataType-4183"><a href="#DataType-4183"><span class="linenos">4183</span></a> -</span><span id="DataType-4184"><a href="#DataType-4184"><span class="linenos">4184</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="DataType-4185"><a href="#DataType-4185"><span class="linenos">4185</span></a> <span class="n">other</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataType-4186"><a href="#DataType-4186"><span class="linenos">4186</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> -</span><span id="DataType-4187"><a href="#DataType-4187"><span class="linenos">4187</span></a> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> -</span><span id="DataType-4188"><a href="#DataType-4188"><span class="linenos">4188</span></a> <span class="p">):</span> -</span><span id="DataType-4189"><a href="#DataType-4189"><span class="linenos">4189</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">==</span> <span class="n">other</span> -</span><span id="DataType-4190"><a href="#DataType-4190"><span class="linenos">4190</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType-4191"><a href="#DataType-4191"><span class="linenos">4191</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataType-4192"><a href="#DataType-4192"><span class="linenos">4192</span></a> -</span><span id="DataType-4193"><a href="#DataType-4193"><span class="linenos">4193</span></a> <span class="k">if</span> <span class="n">matches</span><span class="p">:</span> -</span><span id="DataType-4194"><a href="#DataType-4194"><span class="linenos">4194</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="DataType-4195"><a href="#DataType-4195"><span class="linenos">4195</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="DataType-3981"><a href="#DataType-3981"><span class="linenos">3981</span></a> <span class="n">LIST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3982"><a href="#DataType-3982"><span class="linenos">3982</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3983"><a href="#DataType-3983"><span class="linenos">3983</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3984"><a href="#DataType-3984"><span class="linenos">3984</span></a> <span class="n">LOWCARDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3985"><a href="#DataType-3985"><span class="linenos">3985</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3986"><a href="#DataType-3986"><span class="linenos">3986</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3987"><a href="#DataType-3987"><span class="linenos">3987</span></a> <span class="n">MEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3988"><a href="#DataType-3988"><span class="linenos">3988</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3989"><a href="#DataType-3989"><span class="linenos">3989</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3990"><a href="#DataType-3990"><span class="linenos">3990</span></a> <span class="n">NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3991"><a href="#DataType-3991"><span class="linenos">3991</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3992"><a href="#DataType-3992"><span class="linenos">3992</span></a> <span class="n">NESTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3993"><a href="#DataType-3993"><span class="linenos">3993</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3994"><a href="#DataType-3994"><span class="linenos">3994</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3995"><a href="#DataType-3995"><span class="linenos">3995</span></a> <span class="n">NUMMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3996"><a href="#DataType-3996"><span class="linenos">3996</span></a> <span class="n">NUMRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3997"><a href="#DataType-3997"><span class="linenos">3997</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3998"><a href="#DataType-3998"><span class="linenos">3998</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-3999"><a href="#DataType-3999"><span class="linenos">3999</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4000"><a href="#DataType-4000"><span class="linenos">4000</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4001"><a href="#DataType-4001"><span class="linenos">4001</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4002"><a href="#DataType-4002"><span class="linenos">4002</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4003"><a href="#DataType-4003"><span class="linenos">4003</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4004"><a href="#DataType-4004"><span class="linenos">4004</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4005"><a href="#DataType-4005"><span class="linenos">4005</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4006"><a href="#DataType-4006"><span class="linenos">4006</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4007"><a href="#DataType-4007"><span class="linenos">4007</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4008"><a href="#DataType-4008"><span class="linenos">4008</span></a> <span class="n">TINYBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4009"><a href="#DataType-4009"><span class="linenos">4009</span></a> <span class="n">TINYTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4010"><a href="#DataType-4010"><span class="linenos">4010</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4011"><a href="#DataType-4011"><span class="linenos">4011</span></a> <span class="n">TIMETZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4012"><a href="#DataType-4012"><span class="linenos">4012</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4013"><a href="#DataType-4013"><span class="linenos">4013</span></a> <span class="n">TIMESTAMPNTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4014"><a href="#DataType-4014"><span class="linenos">4014</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4015"><a href="#DataType-4015"><span class="linenos">4015</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4016"><a href="#DataType-4016"><span class="linenos">4016</span></a> <span class="n">TIMESTAMP_S</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4017"><a href="#DataType-4017"><span class="linenos">4017</span></a> <span class="n">TIMESTAMP_MS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4018"><a href="#DataType-4018"><span class="linenos">4018</span></a> <span class="n">TIMESTAMP_NS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4019"><a href="#DataType-4019"><span class="linenos">4019</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4020"><a href="#DataType-4020"><span class="linenos">4020</span></a> <span class="n">TSMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4021"><a href="#DataType-4021"><span class="linenos">4021</span></a> <span class="n">TSRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4022"><a href="#DataType-4022"><span class="linenos">4022</span></a> <span class="n">TSTZMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4023"><a href="#DataType-4023"><span class="linenos">4023</span></a> <span class="n">TSTZRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4024"><a href="#DataType-4024"><span class="linenos">4024</span></a> <span class="n">UBIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4025"><a href="#DataType-4025"><span class="linenos">4025</span></a> <span class="n">UINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4026"><a href="#DataType-4026"><span class="linenos">4026</span></a> <span class="n">UINT128</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4027"><a href="#DataType-4027"><span class="linenos">4027</span></a> <span class="n">UINT256</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4028"><a href="#DataType-4028"><span class="linenos">4028</span></a> <span class="n">UMEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4029"><a href="#DataType-4029"><span class="linenos">4029</span></a> <span class="n">UDECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4030"><a href="#DataType-4030"><span class="linenos">4030</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4031"><a href="#DataType-4031"><span class="linenos">4031</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> +</span><span id="DataType-4032"><a href="#DataType-4032"><span class="linenos">4032</span></a> <span class="n">USERDEFINED</span> <span class="o">=</span> <span class="s2">"USER-DEFINED"</span> +</span><span id="DataType-4033"><a href="#DataType-4033"><span class="linenos">4033</span></a> <span class="n">USMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4034"><a href="#DataType-4034"><span class="linenos">4034</span></a> <span class="n">UTINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4035"><a href="#DataType-4035"><span class="linenos">4035</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4036"><a href="#DataType-4036"><span class="linenos">4036</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4037"><a href="#DataType-4037"><span class="linenos">4037</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4038"><a href="#DataType-4038"><span class="linenos">4038</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4039"><a href="#DataType-4039"><span class="linenos">4039</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4040"><a href="#DataType-4040"><span class="linenos">4040</span></a> <span class="n">YEAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4041"><a href="#DataType-4041"><span class="linenos">4041</span></a> <span class="n">TDIGEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-4042"><a href="#DataType-4042"><span class="linenos">4042</span></a> +</span><span id="DataType-4043"><a href="#DataType-4043"><span class="linenos">4043</span></a> <span class="n">STRUCT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4044"><a href="#DataType-4044"><span class="linenos">4044</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NESTED</span><span class="p">,</span> +</span><span id="DataType-4045"><a href="#DataType-4045"><span class="linenos">4045</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="DataType-4046"><a href="#DataType-4046"><span class="linenos">4046</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> +</span><span id="DataType-4047"><a href="#DataType-4047"><span class="linenos">4047</span></a> <span class="p">}</span> +</span><span id="DataType-4048"><a href="#DataType-4048"><span class="linenos">4048</span></a> +</span><span id="DataType-4049"><a href="#DataType-4049"><span class="linenos">4049</span></a> <span class="n">NESTED_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4050"><a href="#DataType-4050"><span class="linenos">4050</span></a> <span class="o">*</span><span class="n">STRUCT_TYPES</span><span class="p">,</span> +</span><span id="DataType-4051"><a href="#DataType-4051"><span class="linenos">4051</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> +</span><span id="DataType-4052"><a href="#DataType-4052"><span class="linenos">4052</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="DataType-4053"><a href="#DataType-4053"><span class="linenos">4053</span></a> <span class="p">}</span> +</span><span id="DataType-4054"><a href="#DataType-4054"><span class="linenos">4054</span></a> +</span><span id="DataType-4055"><a href="#DataType-4055"><span class="linenos">4055</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4056"><a href="#DataType-4056"><span class="linenos">4056</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="DataType-4057"><a href="#DataType-4057"><span class="linenos">4057</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="DataType-4058"><a href="#DataType-4058"><span class="linenos">4058</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="DataType-4059"><a href="#DataType-4059"><span class="linenos">4059</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="DataType-4060"><a href="#DataType-4060"><span class="linenos">4060</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="DataType-4061"><a href="#DataType-4061"><span class="linenos">4061</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="DataType-4062"><a href="#DataType-4062"><span class="linenos">4062</span></a> <span class="p">}</span> +</span><span id="DataType-4063"><a href="#DataType-4063"><span class="linenos">4063</span></a> +</span><span id="DataType-4064"><a href="#DataType-4064"><span class="linenos">4064</span></a> <span class="n">SIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4065"><a href="#DataType-4065"><span class="linenos">4065</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="DataType-4066"><a href="#DataType-4066"><span class="linenos">4066</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="DataType-4067"><a href="#DataType-4067"><span class="linenos">4067</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> +</span><span id="DataType-4068"><a href="#DataType-4068"><span class="linenos">4068</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> +</span><span id="DataType-4069"><a href="#DataType-4069"><span class="linenos">4069</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> +</span><span id="DataType-4070"><a href="#DataType-4070"><span class="linenos">4070</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="DataType-4071"><a href="#DataType-4071"><span class="linenos">4071</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="DataType-4072"><a href="#DataType-4072"><span class="linenos">4072</span></a> <span class="p">}</span> +</span><span id="DataType-4073"><a href="#DataType-4073"><span class="linenos">4073</span></a> +</span><span id="DataType-4074"><a href="#DataType-4074"><span class="linenos">4074</span></a> <span class="n">UNSIGNED_INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4075"><a href="#DataType-4075"><span class="linenos">4075</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> +</span><span id="DataType-4076"><a href="#DataType-4076"><span class="linenos">4076</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> +</span><span id="DataType-4077"><a href="#DataType-4077"><span class="linenos">4077</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> +</span><span id="DataType-4078"><a href="#DataType-4078"><span class="linenos">4078</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> +</span><span id="DataType-4079"><a href="#DataType-4079"><span class="linenos">4079</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> +</span><span id="DataType-4080"><a href="#DataType-4080"><span class="linenos">4080</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> +</span><span id="DataType-4081"><a href="#DataType-4081"><span class="linenos">4081</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> +</span><span id="DataType-4082"><a href="#DataType-4082"><span class="linenos">4082</span></a> <span class="p">}</span> +</span><span id="DataType-4083"><a href="#DataType-4083"><span class="linenos">4083</span></a> +</span><span id="DataType-4084"><a href="#DataType-4084"><span class="linenos">4084</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4085"><a href="#DataType-4085"><span class="linenos">4085</span></a> <span class="o">*</span><span class="n">SIGNED_INTEGER_TYPES</span><span class="p">,</span> +</span><span id="DataType-4086"><a href="#DataType-4086"><span class="linenos">4086</span></a> <span class="o">*</span><span class="n">UNSIGNED_INTEGER_TYPES</span><span class="p">,</span> +</span><span id="DataType-4087"><a href="#DataType-4087"><span class="linenos">4087</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> +</span><span id="DataType-4088"><a href="#DataType-4088"><span class="linenos">4088</span></a> <span class="p">}</span> +</span><span id="DataType-4089"><a href="#DataType-4089"><span class="linenos">4089</span></a> +</span><span id="DataType-4090"><a href="#DataType-4090"><span class="linenos">4090</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4091"><a href="#DataType-4091"><span class="linenos">4091</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="DataType-4092"><a href="#DataType-4092"><span class="linenos">4092</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="DataType-4093"><a href="#DataType-4093"><span class="linenos">4093</span></a> <span class="p">}</span> +</span><span id="DataType-4094"><a href="#DataType-4094"><span class="linenos">4094</span></a> +</span><span id="DataType-4095"><a href="#DataType-4095"><span class="linenos">4095</span></a> <span class="n">REAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4096"><a href="#DataType-4096"><span class="linenos">4096</span></a> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">,</span> +</span><span id="DataType-4097"><a href="#DataType-4097"><span class="linenos">4097</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="DataType-4098"><a href="#DataType-4098"><span class="linenos">4098</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="DataType-4099"><a href="#DataType-4099"><span class="linenos">4099</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="DataType-4100"><a href="#DataType-4100"><span class="linenos">4100</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> +</span><span id="DataType-4101"><a href="#DataType-4101"><span class="linenos">4101</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> +</span><span id="DataType-4102"><a href="#DataType-4102"><span class="linenos">4102</span></a> <span class="p">}</span> +</span><span id="DataType-4103"><a href="#DataType-4103"><span class="linenos">4103</span></a> +</span><span id="DataType-4104"><a href="#DataType-4104"><span class="linenos">4104</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4105"><a href="#DataType-4105"><span class="linenos">4105</span></a> <span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> +</span><span id="DataType-4106"><a href="#DataType-4106"><span class="linenos">4106</span></a> <span class="o">*</span><span class="n">REAL_TYPES</span><span class="p">,</span> +</span><span id="DataType-4107"><a href="#DataType-4107"><span class="linenos">4107</span></a> <span class="p">}</span> +</span><span id="DataType-4108"><a href="#DataType-4108"><span class="linenos">4108</span></a> +</span><span id="DataType-4109"><a href="#DataType-4109"><span class="linenos">4109</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-4110"><a href="#DataType-4110"><span class="linenos">4110</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="DataType-4111"><a href="#DataType-4111"><span class="linenos">4111</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> +</span><span id="DataType-4112"><a href="#DataType-4112"><span class="linenos">4112</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="DataType-4113"><a href="#DataType-4113"><span class="linenos">4113</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> +</span><span id="DataType-4114"><a href="#DataType-4114"><span class="linenos">4114</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="DataType-4115"><a href="#DataType-4115"><span class="linenos">4115</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="DataType-4116"><a href="#DataType-4116"><span class="linenos">4116</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="DataType-4117"><a href="#DataType-4117"><span class="linenos">4117</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="DataType-4118"><a href="#DataType-4118"><span class="linenos">4118</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="DataType-4119"><a href="#DataType-4119"><span class="linenos">4119</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> +</span><span id="DataType-4120"><a href="#DataType-4120"><span class="linenos">4120</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> +</span><span id="DataType-4121"><a href="#DataType-4121"><span class="linenos">4121</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> +</span><span id="DataType-4122"><a href="#DataType-4122"><span class="linenos">4122</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="DataType-4123"><a href="#DataType-4123"><span class="linenos">4123</span></a> <span class="p">}</span> +</span><span id="DataType-4124"><a href="#DataType-4124"><span class="linenos">4124</span></a> +</span><span id="DataType-4125"><a href="#DataType-4125"><span class="linenos">4125</span></a> <span class="nd">@classmethod</span> +</span><span id="DataType-4126"><a href="#DataType-4126"><span class="linenos">4126</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> +</span><span id="DataType-4127"><a href="#DataType-4127"><span class="linenos">4127</span></a> <span class="bp">cls</span><span class="p">,</span> +</span><span id="DataType-4128"><a href="#DataType-4128"><span class="linenos">4128</span></a> <span class="n">dtype</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> +</span><span id="DataType-4129"><a href="#DataType-4129"><span class="linenos">4129</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="DataType-4130"><a href="#DataType-4130"><span class="linenos">4130</span></a> <span class="n">udt</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="DataType-4131"><a href="#DataType-4131"><span class="linenos">4131</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="DataType-4132"><a href="#DataType-4132"><span class="linenos">4132</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataType-4133"><a href="#DataType-4133"><span class="linenos">4133</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="DataType-4134"><a href="#DataType-4134"><span class="linenos">4134</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataType-4135"><a href="#DataType-4135"><span class="linenos">4135</span></a><span class="sd"> Constructs a DataType object.</span> +</span><span id="DataType-4136"><a href="#DataType-4136"><span class="linenos">4136</span></a> +</span><span id="DataType-4137"><a href="#DataType-4137"><span class="linenos">4137</span></a><span class="sd"> Args:</span> +</span><span id="DataType-4138"><a href="#DataType-4138"><span class="linenos">4138</span></a><span class="sd"> dtype: the data type of interest.</span> +</span><span id="DataType-4139"><a href="#DataType-4139"><span class="linenos">4139</span></a><span class="sd"> dialect: the dialect to use for parsing `dtype`, in case it's a string.</span> +</span><span id="DataType-4140"><a href="#DataType-4140"><span class="linenos">4140</span></a><span class="sd"> udt: when set to True, `dtype` will be used as-is if it can't be parsed into a</span> +</span><span id="DataType-4141"><a href="#DataType-4141"><span class="linenos">4141</span></a><span class="sd"> DataType, thus creating a user-defined type.</span> +</span><span id="DataType-4142"><a href="#DataType-4142"><span class="linenos">4142</span></a><span class="sd"> copy: whether to copy the data type.</span> +</span><span id="DataType-4143"><a href="#DataType-4143"><span class="linenos">4143</span></a><span class="sd"> kwargs: additional arguments to pass in the constructor of DataType.</span> +</span><span id="DataType-4144"><a href="#DataType-4144"><span class="linenos">4144</span></a> +</span><span id="DataType-4145"><a href="#DataType-4145"><span class="linenos">4145</span></a><span class="sd"> Returns:</span> +</span><span id="DataType-4146"><a href="#DataType-4146"><span class="linenos">4146</span></a><span class="sd"> The constructed DataType object.</span> +</span><span id="DataType-4147"><a href="#DataType-4147"><span class="linenos">4147</span></a><span class="sd"> """</span> +</span><span id="DataType-4148"><a href="#DataType-4148"><span class="linenos">4148</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> +</span><span id="DataType-4149"><a href="#DataType-4149"><span class="linenos">4149</span></a> +</span><span id="DataType-4150"><a href="#DataType-4150"><span class="linenos">4150</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataType-4151"><a href="#DataType-4151"><span class="linenos">4151</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"UNKNOWN"</span><span class="p">:</span> +</span><span id="DataType-4152"><a href="#DataType-4152"><span class="linenos">4152</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="DataType-4153"><a href="#DataType-4153"><span class="linenos">4153</span></a> +</span><span id="DataType-4154"><a href="#DataType-4154"><span class="linenos">4154</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="DataType-4155"><a href="#DataType-4155"><span class="linenos">4155</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span> +</span><span id="DataType-4156"><a href="#DataType-4156"><span class="linenos">4156</span></a> <span class="n">dtype</span><span class="p">,</span> <span class="n">read</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">DataType</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span> +</span><span id="DataType-4157"><a href="#DataType-4157"><span class="linenos">4157</span></a> <span class="p">)</span> +</span><span id="DataType-4158"><a href="#DataType-4158"><span class="linenos">4158</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="DataType-4159"><a href="#DataType-4159"><span class="linenos">4159</span></a> <span class="k">if</span> <span class="n">udt</span><span class="p">:</span> +</span><span id="DataType-4160"><a href="#DataType-4160"><span class="linenos">4160</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="DataType-4161"><a href="#DataType-4161"><span class="linenos">4161</span></a> <span class="k">raise</span> +</span><span id="DataType-4162"><a href="#DataType-4162"><span class="linenos">4162</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="DataType-4163"><a href="#DataType-4163"><span class="linenos">4163</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="DataType-4164"><a href="#DataType-4164"><span class="linenos">4164</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="DataType-4165"><a href="#DataType-4165"><span class="linenos">4165</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="DataType-4166"><a href="#DataType-4166"><span class="linenos">4166</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType-4167"><a href="#DataType-4167"><span class="linenos">4167</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> +</span><span id="DataType-4168"><a href="#DataType-4168"><span class="linenos">4168</span></a> +</span><span id="DataType-4169"><a href="#DataType-4169"><span class="linenos">4169</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> +</span><span id="DataType-4170"><a href="#DataType-4170"><span class="linenos">4170</span></a> +</span><span id="DataType-4171"><a href="#DataType-4171"><span class="linenos">4171</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="DataType-4172"><a href="#DataType-4172"><span class="linenos">4172</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataType-4173"><a href="#DataType-4173"><span class="linenos">4173</span></a><span class="sd"> Checks whether this DataType matches one of the provided data types. Nested types or precision</span> +</span><span id="DataType-4174"><a href="#DataType-4174"><span class="linenos">4174</span></a><span class="sd"> will be compared using "structural equivalence" semantics, so e.g. array<int> != array<float>.</span> +</span><span id="DataType-4175"><a href="#DataType-4175"><span class="linenos">4175</span></a> +</span><span id="DataType-4176"><a href="#DataType-4176"><span class="linenos">4176</span></a><span class="sd"> Args:</span> +</span><span id="DataType-4177"><a href="#DataType-4177"><span class="linenos">4177</span></a><span class="sd"> dtypes: the data types to compare this DataType to.</span> +</span><span id="DataType-4178"><a href="#DataType-4178"><span class="linenos">4178</span></a> +</span><span id="DataType-4179"><a href="#DataType-4179"><span class="linenos">4179</span></a><span class="sd"> Returns:</span> +</span><span id="DataType-4180"><a href="#DataType-4180"><span class="linenos">4180</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this DataType.</span> +</span><span id="DataType-4181"><a href="#DataType-4181"><span class="linenos">4181</span></a><span class="sd"> """</span> +</span><span id="DataType-4182"><a href="#DataType-4182"><span class="linenos">4182</span></a> <span class="k">for</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="n">dtypes</span><span class="p">:</span> +</span><span id="DataType-4183"><a href="#DataType-4183"><span class="linenos">4183</span></a> <span class="n">other</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">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataType-4184"><a href="#DataType-4184"><span class="linenos">4184</span></a> +</span><span id="DataType-4185"><a href="#DataType-4185"><span class="linenos">4185</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="DataType-4186"><a href="#DataType-4186"><span class="linenos">4186</span></a> <span class="n">other</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataType-4187"><a href="#DataType-4187"><span class="linenos">4187</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> +</span><span id="DataType-4188"><a href="#DataType-4188"><span class="linenos">4188</span></a> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> +</span><span id="DataType-4189"><a href="#DataType-4189"><span class="linenos">4189</span></a> <span class="p">):</span> +</span><span id="DataType-4190"><a href="#DataType-4190"><span class="linenos">4190</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">==</span> <span class="n">other</span> +</span><span id="DataType-4191"><a href="#DataType-4191"><span class="linenos">4191</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType-4192"><a href="#DataType-4192"><span class="linenos">4192</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataType-4193"><a href="#DataType-4193"><span class="linenos">4193</span></a> +</span><span id="DataType-4194"><a href="#DataType-4194"><span class="linenos">4194</span></a> <span class="k">if</span> <span class="n">matches</span><span class="p">:</span> +</span><span id="DataType-4195"><a href="#DataType-4195"><span class="linenos">4195</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="DataType-4196"><a href="#DataType-4196"><span class="linenos">4196</span></a> <span class="k">return</span> <span class="kc">False</span> </span></pre></div> @@ -54193,7 +54219,7 @@ Otherwise, this resets the expressions.</li> <div id="DataType.STRUCT_TYPES" class="classattr"> <div class="attr variable"> <span class="name">STRUCT_TYPES</span> = -<span class="default_value">{<Type.NESTED: 'NESTED'>, <Type.STRUCT: 'STRUCT'>, <Type.OBJECT: 'OBJECT'>}</span> +<span class="default_value">{<Type.STRUCT: 'STRUCT'>, <Type.OBJECT: 'OBJECT'>, <Type.NESTED: 'NESTED'>}</span> </div> @@ -54206,7 +54232,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">NESTED_TYPES</span> = <input id="DataType.NESTED_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.NESTED_TYPES-view-value"></label><span class="default_value">{<Type.MAP: 'MAP'>, <Type.ARRAY: 'ARRAY'>, <Type.NESTED: 'NESTED'>, <Type.STRUCT: 'STRUCT'>, <Type.OBJECT: 'OBJECT'>}</span> + <label class="view-value-button pdoc-button" for="DataType.NESTED_TYPES-view-value"></label><span class="default_value">{<Type.STRUCT: 'STRUCT'>, <Type.ARRAY: 'ARRAY'>, <Type.OBJECT: 'OBJECT'>, <Type.NESTED: 'NESTED'>, <Type.MAP: 'MAP'>}</span> </div> @@ -54219,7 +54245,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">TEXT_TYPES</span> = <input id="DataType.TEXT_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.TEXT_TYPES-view-value"></label><span class="default_value">{<Type.TEXT: 'TEXT'>, <Type.CHAR: 'CHAR'>, <Type.NAME: 'NAME'>, <Type.VARCHAR: 'VARCHAR'>, <Type.NVARCHAR: 'NVARCHAR'>, <Type.NCHAR: 'NCHAR'>}</span> + <label class="view-value-button pdoc-button" for="DataType.TEXT_TYPES-view-value"></label><span class="default_value">{<Type.NAME: 'NAME'>, <Type.NCHAR: 'NCHAR'>, <Type.NVARCHAR: 'NVARCHAR'>, <Type.TEXT: 'TEXT'>, <Type.VARCHAR: 'VARCHAR'>, <Type.CHAR: 'CHAR'>}</span> </div> @@ -54232,7 +54258,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">SIGNED_INTEGER_TYPES</span> = <input id="DataType.SIGNED_INTEGER_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.SIGNED_INTEGER_TYPES-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>, <Type.INT128: 'INT128'>, <Type.SMALLINT: 'SMALLINT'>, <Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TINYINT: 'TINYINT'>, <Type.INT256: 'INT256'>, <Type.INT: 'INT'>}</span> + <label class="view-value-button pdoc-button" for="DataType.SIGNED_INTEGER_TYPES-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>, <Type.INT128: 'INT128'>, <Type.INT: 'INT'>, <Type.INT256: 'INT256'>, <Type.SMALLINT: 'SMALLINT'>, <Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TINYINT: 'TINYINT'>}</span> </div> @@ -54245,7 +54271,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">UNSIGNED_INTEGER_TYPES</span> = <input id="DataType.UNSIGNED_INTEGER_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.UNSIGNED_INTEGER_TYPES-view-value"></label><span class="default_value">{<Type.USMALLINT: 'USMALLINT'>, <Type.UINT256: 'UINT256'>, <Type.UBIGINT: 'UBIGINT'>, <Type.UTINYINT: 'UTINYINT'>, <Type.UINT: 'UINT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.UINT128: 'UINT128'>}</span> + <label class="view-value-button pdoc-button" for="DataType.UNSIGNED_INTEGER_TYPES-view-value"></label><span class="default_value">{<Type.UBIGINT: 'UBIGINT'>, <Type.UINT256: 'UINT256'>, <Type.UINT: 'UINT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.UINT128: 'UINT128'>, <Type.USMALLINT: 'USMALLINT'>, <Type.UTINYINT: 'UTINYINT'>}</span> </div> @@ -54258,7 +54284,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">INTEGER_TYPES</span> = <input id="DataType.INTEGER_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.INTEGER_TYPES-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>, <Type.USMALLINT: 'USMALLINT'>, <Type.UINT256: 'UINT256'>, <Type.UBIGINT: 'UBIGINT'>, <Type.BIT: 'BIT'>, <Type.UTINYINT: 'UTINYINT'>, <Type.SMALLINT: 'SMALLINT'>, <Type.INT128: 'INT128'>, <Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TINYINT: 'TINYINT'>, <Type.UINT: 'UINT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.INT256: 'INT256'>, <Type.UINT128: 'UINT128'>, <Type.INT: 'INT'>}</span> + <label class="view-value-button pdoc-button" for="DataType.INTEGER_TYPES-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>, <Type.UBIGINT: 'UBIGINT'>, <Type.INT128: 'INT128'>, <Type.UINT256: 'UINT256'>, <Type.UINT: 'UINT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.UINT128: 'UINT128'>, <Type.INT: 'INT'>, <Type.USMALLINT: 'USMALLINT'>, <Type.INT256: 'INT256'>, <Type.SMALLINT: 'SMALLINT'>, <Type.UTINYINT: 'UTINYINT'>, <Type.BIT: 'BIT'>, <Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TINYINT: 'TINYINT'>}</span> </div> @@ -54270,7 +54296,7 @@ Otherwise, this resets the expressions.</li> <div id="DataType.FLOAT_TYPES" class="classattr"> <div class="attr variable"> <span class="name">FLOAT_TYPES</span> = -<span class="default_value">{<Type.DOUBLE: 'DOUBLE'>, <Type.FLOAT: 'FLOAT'>}</span> +<span class="default_value">{<Type.FLOAT: 'FLOAT'>, <Type.DOUBLE: 'DOUBLE'>}</span> </div> @@ -54283,7 +54309,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">REAL_TYPES</span> = <input id="DataType.REAL_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.REAL_TYPES-view-value"></label><span class="default_value">{<Type.MONEY: 'MONEY'>, <Type.SMALLMONEY: 'SMALLMONEY'>, <Type.DECIMAL: 'DECIMAL'>, <Type.DOUBLE: 'DOUBLE'>, <Type.UDECIMAL: 'UDECIMAL'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="DataType.REAL_TYPES-view-value"></label><span class="default_value">{<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.UDECIMAL: 'UDECIMAL'>, <Type.DOUBLE: 'DOUBLE'>, <Type.DECIMAL: 'DECIMAL'>, <Type.FLOAT: 'FLOAT'>, <Type.MONEY: 'MONEY'>, <Type.SMALLMONEY: 'SMALLMONEY'>}</span> </div> @@ -54296,7 +54322,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">NUMERIC_TYPES</span> = <input id="DataType.NUMERIC_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.NUMERIC_TYPES-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>, <Type.SMALLMONEY: 'SMALLMONEY'>, <Type.DECIMAL: 'DECIMAL'>, <Type.UINT: 'UINT'>, <Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TINYINT: 'TINYINT'>, <Type.INT256: 'INT256'>, <Type.INT: 'INT'>, <Type.MONEY: 'MONEY'>, <Type.USMALLINT: 'USMALLINT'>, <Type.UINT256: 'UINT256'>, <Type.DOUBLE: 'DOUBLE'>, <Type.UBIGINT: 'UBIGINT'>, <Type.BIT: 'BIT'>, <Type.UTINYINT: 'UTINYINT'>, <Type.UDECIMAL: 'UDECIMAL'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.SMALLINT: 'SMALLINT'>, <Type.INT128: 'INT128'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.UINT128: 'UINT128'>, <Type.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="DataType.NUMERIC_TYPES-view-value"></label><span class="default_value">{<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.UBIGINT: 'UBIGINT'>, <Type.INT128: 'INT128'>, <Type.UINT256: 'UINT256'>, <Type.UINT: 'UINT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.USMALLINT: 'USMALLINT'>, <Type.FLOAT: 'FLOAT'>, <Type.SMALLMONEY: 'SMALLMONEY'>, <Type.TINYINT: 'TINYINT'>, <Type.BIGINT: 'BIGINT'>, <Type.UINT128: 'UINT128'>, <Type.UDECIMAL: 'UDECIMAL'>, <Type.INT: 'INT'>, <Type.DOUBLE: 'DOUBLE'>, <Type.DECIMAL: 'DECIMAL'>, <Type.BIT: 'BIT'>, <Type.INT256: 'INT256'>, <Type.SMALLINT: 'SMALLINT'>, <Type.UTINYINT: 'UTINYINT'>, <Type.MONEY: 'MONEY'>, <Type.MEDIUMINT: 'MEDIUMINT'>}</span> </div> @@ -54309,7 +54335,7 @@ Otherwise, this resets the expressions.</li> <div class="attr variable"> <span class="name">TEMPORAL_TYPES</span> = <input id="DataType.TEMPORAL_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DataType.TEMPORAL_TYPES-view-value"></label><span class="default_value">{<Type.TIME: 'TIME'>, <Type.TIMESTAMP_S: 'TIMESTAMP_S'>, <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <Type.TIMETZ: 'TIMETZ'>, <Type.TIMESTAMP: 'TIMESTAMP'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <Type.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <Type.DATE32: 'DATE32'>, <Type.DATETIME: 'DATETIME'>, <Type.DATE: 'DATE'>, <Type.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <Type.DATETIME64: 'DATETIME64'>}</span> + <label class="view-value-button pdoc-button" for="DataType.TEMPORAL_TYPES-view-value"></label><span class="default_value">{<Type.TIMETZ: 'TIMETZ'>, <Type.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <Type.DATETIME64: 'DATETIME64'>, <Type.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <Type.DATE: 'DATE'>, <Type.DATETIME: 'DATETIME'>, <Type.TIMESTAMP: 'TIMESTAMP'>, <Type.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <Type.TIMESTAMP_S: 'TIMESTAMP_S'>, <Type.DATE32: 'DATE32'>, <Type.TIME: 'TIME'>}</span> </div> @@ -54330,51 +54356,51 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#DataType.build"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.build-4124"><a href="#DataType.build-4124"><span class="linenos">4124</span></a> <span class="nd">@classmethod</span> -</span><span id="DataType.build-4125"><a href="#DataType.build-4125"><span class="linenos">4125</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> -</span><span id="DataType.build-4126"><a href="#DataType.build-4126"><span class="linenos">4126</span></a> <span class="bp">cls</span><span class="p">,</span> -</span><span id="DataType.build-4127"><a href="#DataType.build-4127"><span class="linenos">4127</span></a> <span class="n">dtype</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> -</span><span id="DataType.build-4128"><a href="#DataType.build-4128"><span class="linenos">4128</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="DataType.build-4129"><a href="#DataType.build-4129"><span class="linenos">4129</span></a> <span class="n">udt</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="DataType.build-4130"><a href="#DataType.build-4130"><span class="linenos">4130</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="DataType.build-4131"><a href="#DataType.build-4131"><span class="linenos">4131</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataType.build-4132"><a href="#DataType.build-4132"><span class="linenos">4132</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="DataType.build-4133"><a href="#DataType.build-4133"><span class="linenos">4133</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataType.build-4134"><a href="#DataType.build-4134"><span class="linenos">4134</span></a><span class="sd"> Constructs a DataType object.</span> -</span><span id="DataType.build-4135"><a href="#DataType.build-4135"><span class="linenos">4135</span></a> -</span><span id="DataType.build-4136"><a href="#DataType.build-4136"><span class="linenos">4136</span></a><span class="sd"> Args:</span> -</span><span id="DataType.build-4137"><a href="#DataType.build-4137"><span class="linenos">4137</span></a><span class="sd"> dtype: the data type of interest.</span> -</span><span id="DataType.build-4138"><a href="#DataType.build-4138"><span class="linenos">4138</span></a><span class="sd"> dialect: the dialect to use for parsing `dtype`, in case it's a string.</span> -</span><span id="DataType.build-4139"><a href="#DataType.build-4139"><span class="linenos">4139</span></a><span class="sd"> udt: when set to True, `dtype` will be used as-is if it can't be parsed into a</span> -</span><span id="DataType.build-4140"><a href="#DataType.build-4140"><span class="linenos">4140</span></a><span class="sd"> DataType, thus creating a user-defined type.</span> -</span><span id="DataType.build-4141"><a href="#DataType.build-4141"><span class="linenos">4141</span></a><span class="sd"> copy: whether to copy the data type.</span> -</span><span id="DataType.build-4142"><a href="#DataType.build-4142"><span class="linenos">4142</span></a><span class="sd"> kwargs: additional arguments to pass in the constructor of DataType.</span> -</span><span id="DataType.build-4143"><a href="#DataType.build-4143"><span class="linenos">4143</span></a> -</span><span id="DataType.build-4144"><a href="#DataType.build-4144"><span class="linenos">4144</span></a><span class="sd"> Returns:</span> -</span><span id="DataType.build-4145"><a href="#DataType.build-4145"><span class="linenos">4145</span></a><span class="sd"> The constructed DataType object.</span> -</span><span id="DataType.build-4146"><a href="#DataType.build-4146"><span class="linenos">4146</span></a><span class="sd"> """</span> -</span><span id="DataType.build-4147"><a href="#DataType.build-4147"><span class="linenos">4147</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> -</span><span id="DataType.build-4148"><a href="#DataType.build-4148"><span class="linenos">4148</span></a> -</span><span id="DataType.build-4149"><a href="#DataType.build-4149"><span class="linenos">4149</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataType.build-4150"><a href="#DataType.build-4150"><span class="linenos">4150</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"UNKNOWN"</span><span class="p">:</span> -</span><span id="DataType.build-4151"><a href="#DataType.build-4151"><span class="linenos">4151</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="DataType.build-4152"><a href="#DataType.build-4152"><span class="linenos">4152</span></a> -</span><span id="DataType.build-4153"><a href="#DataType.build-4153"><span class="linenos">4153</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="DataType.build-4154"><a href="#DataType.build-4154"><span class="linenos">4154</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span> -</span><span id="DataType.build-4155"><a href="#DataType.build-4155"><span class="linenos">4155</span></a> <span class="n">dtype</span><span class="p">,</span> <span class="n">read</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">DataType</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span> -</span><span id="DataType.build-4156"><a href="#DataType.build-4156"><span class="linenos">4156</span></a> <span class="p">)</span> -</span><span id="DataType.build-4157"><a href="#DataType.build-4157"><span class="linenos">4157</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="DataType.build-4158"><a href="#DataType.build-4158"><span class="linenos">4158</span></a> <span class="k">if</span> <span class="n">udt</span><span class="p">:</span> -</span><span id="DataType.build-4159"><a href="#DataType.build-4159"><span class="linenos">4159</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="DataType.build-4160"><a href="#DataType.build-4160"><span class="linenos">4160</span></a> <span class="k">raise</span> -</span><span id="DataType.build-4161"><a href="#DataType.build-4161"><span class="linenos">4161</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="DataType.build-4162"><a href="#DataType.build-4162"><span class="linenos">4162</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="DataType.build-4163"><a href="#DataType.build-4163"><span class="linenos">4163</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="DataType.build-4164"><a href="#DataType.build-4164"><span class="linenos">4164</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="DataType.build-4165"><a href="#DataType.build-4165"><span class="linenos">4165</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType.build-4166"><a href="#DataType.build-4166"><span class="linenos">4166</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> -</span><span id="DataType.build-4167"><a href="#DataType.build-4167"><span class="linenos">4167</span></a> -</span><span id="DataType.build-4168"><a href="#DataType.build-4168"><span class="linenos">4168</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.build-4125"><a href="#DataType.build-4125"><span class="linenos">4125</span></a> <span class="nd">@classmethod</span> +</span><span id="DataType.build-4126"><a href="#DataType.build-4126"><span class="linenos">4126</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> +</span><span id="DataType.build-4127"><a href="#DataType.build-4127"><span class="linenos">4127</span></a> <span class="bp">cls</span><span class="p">,</span> +</span><span id="DataType.build-4128"><a href="#DataType.build-4128"><span class="linenos">4128</span></a> <span class="n">dtype</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> +</span><span id="DataType.build-4129"><a href="#DataType.build-4129"><span class="linenos">4129</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="DataType.build-4130"><a href="#DataType.build-4130"><span class="linenos">4130</span></a> <span class="n">udt</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="DataType.build-4131"><a href="#DataType.build-4131"><span class="linenos">4131</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="DataType.build-4132"><a href="#DataType.build-4132"><span class="linenos">4132</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataType.build-4133"><a href="#DataType.build-4133"><span class="linenos">4133</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="DataType.build-4134"><a href="#DataType.build-4134"><span class="linenos">4134</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataType.build-4135"><a href="#DataType.build-4135"><span class="linenos">4135</span></a><span class="sd"> Constructs a DataType object.</span> +</span><span id="DataType.build-4136"><a href="#DataType.build-4136"><span class="linenos">4136</span></a> +</span><span id="DataType.build-4137"><a href="#DataType.build-4137"><span class="linenos">4137</span></a><span class="sd"> Args:</span> +</span><span id="DataType.build-4138"><a href="#DataType.build-4138"><span class="linenos">4138</span></a><span class="sd"> dtype: the data type of interest.</span> +</span><span id="DataType.build-4139"><a href="#DataType.build-4139"><span class="linenos">4139</span></a><span class="sd"> dialect: the dialect to use for parsing `dtype`, in case it's a string.</span> +</span><span id="DataType.build-4140"><a href="#DataType.build-4140"><span class="linenos">4140</span></a><span class="sd"> udt: when set to True, `dtype` will be used as-is if it can't be parsed into a</span> +</span><span id="DataType.build-4141"><a href="#DataType.build-4141"><span class="linenos">4141</span></a><span class="sd"> DataType, thus creating a user-defined type.</span> +</span><span id="DataType.build-4142"><a href="#DataType.build-4142"><span class="linenos">4142</span></a><span class="sd"> copy: whether to copy the data type.</span> +</span><span id="DataType.build-4143"><a href="#DataType.build-4143"><span class="linenos">4143</span></a><span class="sd"> kwargs: additional arguments to pass in the constructor of DataType.</span> +</span><span id="DataType.build-4144"><a href="#DataType.build-4144"><span class="linenos">4144</span></a> +</span><span id="DataType.build-4145"><a href="#DataType.build-4145"><span class="linenos">4145</span></a><span class="sd"> Returns:</span> +</span><span id="DataType.build-4146"><a href="#DataType.build-4146"><span class="linenos">4146</span></a><span class="sd"> The constructed DataType object.</span> +</span><span id="DataType.build-4147"><a href="#DataType.build-4147"><span class="linenos">4147</span></a><span class="sd"> """</span> +</span><span id="DataType.build-4148"><a href="#DataType.build-4148"><span class="linenos">4148</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> +</span><span id="DataType.build-4149"><a href="#DataType.build-4149"><span class="linenos">4149</span></a> +</span><span id="DataType.build-4150"><a href="#DataType.build-4150"><span class="linenos">4150</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataType.build-4151"><a href="#DataType.build-4151"><span class="linenos">4151</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"UNKNOWN"</span><span class="p">:</span> +</span><span id="DataType.build-4152"><a href="#DataType.build-4152"><span class="linenos">4152</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="DataType.build-4153"><a href="#DataType.build-4153"><span class="linenos">4153</span></a> +</span><span id="DataType.build-4154"><a href="#DataType.build-4154"><span class="linenos">4154</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="DataType.build-4155"><a href="#DataType.build-4155"><span class="linenos">4155</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span> +</span><span id="DataType.build-4156"><a href="#DataType.build-4156"><span class="linenos">4156</span></a> <span class="n">dtype</span><span class="p">,</span> <span class="n">read</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">DataType</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span> +</span><span id="DataType.build-4157"><a href="#DataType.build-4157"><span class="linenos">4157</span></a> <span class="p">)</span> +</span><span id="DataType.build-4158"><a href="#DataType.build-4158"><span class="linenos">4158</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="DataType.build-4159"><a href="#DataType.build-4159"><span class="linenos">4159</span></a> <span class="k">if</span> <span class="n">udt</span><span class="p">:</span> +</span><span id="DataType.build-4160"><a href="#DataType.build-4160"><span class="linenos">4160</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="DataType.build-4161"><a href="#DataType.build-4161"><span class="linenos">4161</span></a> <span class="k">raise</span> +</span><span id="DataType.build-4162"><a href="#DataType.build-4162"><span class="linenos">4162</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="DataType.build-4163"><a href="#DataType.build-4163"><span class="linenos">4163</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="DataType.build-4164"><a href="#DataType.build-4164"><span class="linenos">4164</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="DataType.build-4165"><a href="#DataType.build-4165"><span class="linenos">4165</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="DataType.build-4166"><a href="#DataType.build-4166"><span class="linenos">4166</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType.build-4167"><a href="#DataType.build-4167"><span class="linenos">4167</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> +</span><span id="DataType.build-4168"><a href="#DataType.build-4168"><span class="linenos">4168</span></a> +</span><span id="DataType.build-4169"><a href="#DataType.build-4169"><span class="linenos">4169</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> </span></pre></div> @@ -54411,32 +54437,32 @@ DataType, thus creating a user-defined type.</li> </div> <a class="headerlink" href="#DataType.is_type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.is_type-4170"><a href="#DataType.is_type-4170"><span class="linenos">4170</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="DataType.is_type-4171"><a href="#DataType.is_type-4171"><span class="linenos">4171</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataType.is_type-4172"><a href="#DataType.is_type-4172"><span class="linenos">4172</span></a><span class="sd"> Checks whether this DataType matches one of the provided data types. Nested types or precision</span> -</span><span id="DataType.is_type-4173"><a href="#DataType.is_type-4173"><span class="linenos">4173</span></a><span class="sd"> will be compared using "structural equivalence" semantics, so e.g. array<int> != array<float>.</span> -</span><span id="DataType.is_type-4174"><a href="#DataType.is_type-4174"><span class="linenos">4174</span></a> -</span><span id="DataType.is_type-4175"><a href="#DataType.is_type-4175"><span class="linenos">4175</span></a><span class="sd"> Args:</span> -</span><span id="DataType.is_type-4176"><a href="#DataType.is_type-4176"><span class="linenos">4176</span></a><span class="sd"> dtypes: the data types to compare this DataType to.</span> -</span><span id="DataType.is_type-4177"><a href="#DataType.is_type-4177"><span class="linenos">4177</span></a> -</span><span id="DataType.is_type-4178"><a href="#DataType.is_type-4178"><span class="linenos">4178</span></a><span class="sd"> Returns:</span> -</span><span id="DataType.is_type-4179"><a href="#DataType.is_type-4179"><span class="linenos">4179</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this DataType.</span> -</span><span id="DataType.is_type-4180"><a href="#DataType.is_type-4180"><span class="linenos">4180</span></a><span class="sd"> """</span> -</span><span id="DataType.is_type-4181"><a href="#DataType.is_type-4181"><span class="linenos">4181</span></a> <span class="k">for</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="n">dtypes</span><span class="p">:</span> -</span><span id="DataType.is_type-4182"><a href="#DataType.is_type-4182"><span class="linenos">4182</span></a> <span class="n">other</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">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataType.is_type-4183"><a href="#DataType.is_type-4183"><span class="linenos">4183</span></a> -</span><span id="DataType.is_type-4184"><a href="#DataType.is_type-4184"><span class="linenos">4184</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="DataType.is_type-4185"><a href="#DataType.is_type-4185"><span class="linenos">4185</span></a> <span class="n">other</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataType.is_type-4186"><a href="#DataType.is_type-4186"><span class="linenos">4186</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> -</span><span id="DataType.is_type-4187"><a href="#DataType.is_type-4187"><span class="linenos">4187</span></a> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> -</span><span id="DataType.is_type-4188"><a href="#DataType.is_type-4188"><span class="linenos">4188</span></a> <span class="p">):</span> -</span><span id="DataType.is_type-4189"><a href="#DataType.is_type-4189"><span class="linenos">4189</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">==</span> <span class="n">other</span> -</span><span id="DataType.is_type-4190"><a href="#DataType.is_type-4190"><span class="linenos">4190</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType.is_type-4191"><a href="#DataType.is_type-4191"><span class="linenos">4191</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataType.is_type-4192"><a href="#DataType.is_type-4192"><span class="linenos">4192</span></a> -</span><span id="DataType.is_type-4193"><a href="#DataType.is_type-4193"><span class="linenos">4193</span></a> <span class="k">if</span> <span class="n">matches</span><span class="p">:</span> -</span><span id="DataType.is_type-4194"><a href="#DataType.is_type-4194"><span class="linenos">4194</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="DataType.is_type-4195"><a href="#DataType.is_type-4195"><span class="linenos">4195</span></a> <span class="k">return</span> <span class="kc">False</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.is_type-4171"><a href="#DataType.is_type-4171"><span class="linenos">4171</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="DataType.is_type-4172"><a href="#DataType.is_type-4172"><span class="linenos">4172</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataType.is_type-4173"><a href="#DataType.is_type-4173"><span class="linenos">4173</span></a><span class="sd"> Checks whether this DataType matches one of the provided data types. Nested types or precision</span> +</span><span id="DataType.is_type-4174"><a href="#DataType.is_type-4174"><span class="linenos">4174</span></a><span class="sd"> will be compared using "structural equivalence" semantics, so e.g. array<int> != array<float>.</span> +</span><span id="DataType.is_type-4175"><a href="#DataType.is_type-4175"><span class="linenos">4175</span></a> +</span><span id="DataType.is_type-4176"><a href="#DataType.is_type-4176"><span class="linenos">4176</span></a><span class="sd"> Args:</span> +</span><span id="DataType.is_type-4177"><a href="#DataType.is_type-4177"><span class="linenos">4177</span></a><span class="sd"> dtypes: the data types to compare this DataType to.</span> +</span><span id="DataType.is_type-4178"><a href="#DataType.is_type-4178"><span class="linenos">4178</span></a> +</span><span id="DataType.is_type-4179"><a href="#DataType.is_type-4179"><span class="linenos">4179</span></a><span class="sd"> Returns:</span> +</span><span id="DataType.is_type-4180"><a href="#DataType.is_type-4180"><span class="linenos">4180</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this DataType.</span> +</span><span id="DataType.is_type-4181"><a href="#DataType.is_type-4181"><span class="linenos">4181</span></a><span class="sd"> """</span> +</span><span id="DataType.is_type-4182"><a href="#DataType.is_type-4182"><span class="linenos">4182</span></a> <span class="k">for</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="n">dtypes</span><span class="p">:</span> +</span><span id="DataType.is_type-4183"><a href="#DataType.is_type-4183"><span class="linenos">4183</span></a> <span class="n">other</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">dtype</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataType.is_type-4184"><a href="#DataType.is_type-4184"><span class="linenos">4184</span></a> +</span><span id="DataType.is_type-4185"><a href="#DataType.is_type-4185"><span class="linenos">4185</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="DataType.is_type-4186"><a href="#DataType.is_type-4186"><span class="linenos">4186</span></a> <span class="n">other</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataType.is_type-4187"><a href="#DataType.is_type-4187"><span class="linenos">4187</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> +</span><span id="DataType.is_type-4188"><a href="#DataType.is_type-4188"><span class="linenos">4188</span></a> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">USERDEFINED</span> +</span><span id="DataType.is_type-4189"><a href="#DataType.is_type-4189"><span class="linenos">4189</span></a> <span class="p">):</span> +</span><span id="DataType.is_type-4190"><a href="#DataType.is_type-4190"><span class="linenos">4190</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">==</span> <span class="n">other</span> +</span><span id="DataType.is_type-4191"><a href="#DataType.is_type-4191"><span class="linenos">4191</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType.is_type-4192"><a href="#DataType.is_type-4192"><span class="linenos">4192</span></a> <span class="n">matches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataType.is_type-4193"><a href="#DataType.is_type-4193"><span class="linenos">4193</span></a> +</span><span id="DataType.is_type-4194"><a href="#DataType.is_type-4194"><span class="linenos">4194</span></a> <span class="k">if</span> <span class="n">matches</span><span class="p">:</span> +</span><span id="DataType.is_type-4195"><a href="#DataType.is_type-4195"><span class="linenos">4195</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="DataType.is_type-4196"><a href="#DataType.is_type-4196"><span class="linenos">4196</span></a> <span class="k">return</span> <span class="kc">False</span> </span></pre></div> @@ -54603,66 +54629,67 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </span><span id="DataType.Type-3978"><a href="#DataType.Type-3978"><span class="linenos">3978</span></a> <span class="n">IPV6</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="DataType.Type-3979"><a href="#DataType.Type-3979"><span class="linenos">3979</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="DataType.Type-3980"><a href="#DataType.Type-3980"><span class="linenos">3980</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3981"><a href="#DataType.Type-3981"><span class="linenos">3981</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3982"><a href="#DataType.Type-3982"><span class="linenos">3982</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3983"><a href="#DataType.Type-3983"><span class="linenos">3983</span></a> <span class="n">LOWCARDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3984"><a href="#DataType.Type-3984"><span class="linenos">3984</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3985"><a href="#DataType.Type-3985"><span class="linenos">3985</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3986"><a href="#DataType.Type-3986"><span class="linenos">3986</span></a> <span class="n">MEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3987"><a href="#DataType.Type-3987"><span class="linenos">3987</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3988"><a href="#DataType.Type-3988"><span class="linenos">3988</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3989"><a href="#DataType.Type-3989"><span class="linenos">3989</span></a> <span class="n">NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3990"><a href="#DataType.Type-3990"><span class="linenos">3990</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3991"><a href="#DataType.Type-3991"><span class="linenos">3991</span></a> <span class="n">NESTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3992"><a href="#DataType.Type-3992"><span class="linenos">3992</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3993"><a href="#DataType.Type-3993"><span class="linenos">3993</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3994"><a href="#DataType.Type-3994"><span class="linenos">3994</span></a> <span class="n">NUMMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3995"><a href="#DataType.Type-3995"><span class="linenos">3995</span></a> <span class="n">NUMRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3996"><a href="#DataType.Type-3996"><span class="linenos">3996</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3997"><a href="#DataType.Type-3997"><span class="linenos">3997</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3998"><a href="#DataType.Type-3998"><span class="linenos">3998</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-3999"><a href="#DataType.Type-3999"><span class="linenos">3999</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4000"><a href="#DataType.Type-4000"><span class="linenos">4000</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4001"><a href="#DataType.Type-4001"><span class="linenos">4001</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4002"><a href="#DataType.Type-4002"><span class="linenos">4002</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4003"><a href="#DataType.Type-4003"><span class="linenos">4003</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4004"><a href="#DataType.Type-4004"><span class="linenos">4004</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4005"><a href="#DataType.Type-4005"><span class="linenos">4005</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4006"><a href="#DataType.Type-4006"><span class="linenos">4006</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4007"><a href="#DataType.Type-4007"><span class="linenos">4007</span></a> <span class="n">TINYBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4008"><a href="#DataType.Type-4008"><span class="linenos">4008</span></a> <span class="n">TINYTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4009"><a href="#DataType.Type-4009"><span class="linenos">4009</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4010"><a href="#DataType.Type-4010"><span class="linenos">4010</span></a> <span class="n">TIMETZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4011"><a href="#DataType.Type-4011"><span class="linenos">4011</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4012"><a href="#DataType.Type-4012"><span class="linenos">4012</span></a> <span class="n">TIMESTAMPNTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4013"><a href="#DataType.Type-4013"><span class="linenos">4013</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4014"><a href="#DataType.Type-4014"><span class="linenos">4014</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4015"><a href="#DataType.Type-4015"><span class="linenos">4015</span></a> <span class="n">TIMESTAMP_S</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4016"><a href="#DataType.Type-4016"><span class="linenos">4016</span></a> <span class="n">TIMESTAMP_MS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4017"><a href="#DataType.Type-4017"><span class="linenos">4017</span></a> <span class="n">TIMESTAMP_NS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4018"><a href="#DataType.Type-4018"><span class="linenos">4018</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4019"><a href="#DataType.Type-4019"><span class="linenos">4019</span></a> <span class="n">TSMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4020"><a href="#DataType.Type-4020"><span class="linenos">4020</span></a> <span class="n">TSRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4021"><a href="#DataType.Type-4021"><span class="linenos">4021</span></a> <span class="n">TSTZMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4022"><a href="#DataType.Type-4022"><span class="linenos">4022</span></a> <span class="n">TSTZRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4023"><a href="#DataType.Type-4023"><span class="linenos">4023</span></a> <span class="n">UBIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4024"><a href="#DataType.Type-4024"><span class="linenos">4024</span></a> <span class="n">UINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4025"><a href="#DataType.Type-4025"><span class="linenos">4025</span></a> <span class="n">UINT128</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4026"><a href="#DataType.Type-4026"><span class="linenos">4026</span></a> <span class="n">UINT256</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4027"><a href="#DataType.Type-4027"><span class="linenos">4027</span></a> <span class="n">UMEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4028"><a href="#DataType.Type-4028"><span class="linenos">4028</span></a> <span class="n">UDECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4029"><a href="#DataType.Type-4029"><span class="linenos">4029</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4030"><a href="#DataType.Type-4030"><span class="linenos">4030</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> -</span><span id="DataType.Type-4031"><a href="#DataType.Type-4031"><span class="linenos">4031</span></a> <span class="n">USERDEFINED</span> <span class="o">=</span> <span class="s2">"USER-DEFINED"</span> -</span><span id="DataType.Type-4032"><a href="#DataType.Type-4032"><span class="linenos">4032</span></a> <span class="n">USMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4033"><a href="#DataType.Type-4033"><span class="linenos">4033</span></a> <span class="n">UTINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4034"><a href="#DataType.Type-4034"><span class="linenos">4034</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4035"><a href="#DataType.Type-4035"><span class="linenos">4035</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4036"><a href="#DataType.Type-4036"><span class="linenos">4036</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4037"><a href="#DataType.Type-4037"><span class="linenos">4037</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4038"><a href="#DataType.Type-4038"><span class="linenos">4038</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4039"><a href="#DataType.Type-4039"><span class="linenos">4039</span></a> <span class="n">YEAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-4040"><a href="#DataType.Type-4040"><span class="linenos">4040</span></a> <span class="n">TDIGEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3981"><a href="#DataType.Type-3981"><span class="linenos">3981</span></a> <span class="n">LIST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3982"><a href="#DataType.Type-3982"><span class="linenos">3982</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3983"><a href="#DataType.Type-3983"><span class="linenos">3983</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3984"><a href="#DataType.Type-3984"><span class="linenos">3984</span></a> <span class="n">LOWCARDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3985"><a href="#DataType.Type-3985"><span class="linenos">3985</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3986"><a href="#DataType.Type-3986"><span class="linenos">3986</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3987"><a href="#DataType.Type-3987"><span class="linenos">3987</span></a> <span class="n">MEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3988"><a href="#DataType.Type-3988"><span class="linenos">3988</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3989"><a href="#DataType.Type-3989"><span class="linenos">3989</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3990"><a href="#DataType.Type-3990"><span class="linenos">3990</span></a> <span class="n">NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3991"><a href="#DataType.Type-3991"><span class="linenos">3991</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3992"><a href="#DataType.Type-3992"><span class="linenos">3992</span></a> <span class="n">NESTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3993"><a href="#DataType.Type-3993"><span class="linenos">3993</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3994"><a href="#DataType.Type-3994"><span class="linenos">3994</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3995"><a href="#DataType.Type-3995"><span class="linenos">3995</span></a> <span class="n">NUMMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3996"><a href="#DataType.Type-3996"><span class="linenos">3996</span></a> <span class="n">NUMRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3997"><a href="#DataType.Type-3997"><span class="linenos">3997</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3998"><a href="#DataType.Type-3998"><span class="linenos">3998</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-3999"><a href="#DataType.Type-3999"><span class="linenos">3999</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4000"><a href="#DataType.Type-4000"><span class="linenos">4000</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4001"><a href="#DataType.Type-4001"><span class="linenos">4001</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4002"><a href="#DataType.Type-4002"><span class="linenos">4002</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4003"><a href="#DataType.Type-4003"><span class="linenos">4003</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4004"><a href="#DataType.Type-4004"><span class="linenos">4004</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4005"><a href="#DataType.Type-4005"><span class="linenos">4005</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4006"><a href="#DataType.Type-4006"><span class="linenos">4006</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4007"><a href="#DataType.Type-4007"><span class="linenos">4007</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4008"><a href="#DataType.Type-4008"><span class="linenos">4008</span></a> <span class="n">TINYBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4009"><a href="#DataType.Type-4009"><span class="linenos">4009</span></a> <span class="n">TINYTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4010"><a href="#DataType.Type-4010"><span class="linenos">4010</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4011"><a href="#DataType.Type-4011"><span class="linenos">4011</span></a> <span class="n">TIMETZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4012"><a href="#DataType.Type-4012"><span class="linenos">4012</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4013"><a href="#DataType.Type-4013"><span class="linenos">4013</span></a> <span class="n">TIMESTAMPNTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4014"><a href="#DataType.Type-4014"><span class="linenos">4014</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4015"><a href="#DataType.Type-4015"><span class="linenos">4015</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4016"><a href="#DataType.Type-4016"><span class="linenos">4016</span></a> <span class="n">TIMESTAMP_S</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4017"><a href="#DataType.Type-4017"><span class="linenos">4017</span></a> <span class="n">TIMESTAMP_MS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4018"><a href="#DataType.Type-4018"><span class="linenos">4018</span></a> <span class="n">TIMESTAMP_NS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4019"><a href="#DataType.Type-4019"><span class="linenos">4019</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4020"><a href="#DataType.Type-4020"><span class="linenos">4020</span></a> <span class="n">TSMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4021"><a href="#DataType.Type-4021"><span class="linenos">4021</span></a> <span class="n">TSRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4022"><a href="#DataType.Type-4022"><span class="linenos">4022</span></a> <span class="n">TSTZMULTIRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4023"><a href="#DataType.Type-4023"><span class="linenos">4023</span></a> <span class="n">TSTZRANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4024"><a href="#DataType.Type-4024"><span class="linenos">4024</span></a> <span class="n">UBIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4025"><a href="#DataType.Type-4025"><span class="linenos">4025</span></a> <span class="n">UINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4026"><a href="#DataType.Type-4026"><span class="linenos">4026</span></a> <span class="n">UINT128</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4027"><a href="#DataType.Type-4027"><span class="linenos">4027</span></a> <span class="n">UINT256</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4028"><a href="#DataType.Type-4028"><span class="linenos">4028</span></a> <span class="n">UMEDIUMINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4029"><a href="#DataType.Type-4029"><span class="linenos">4029</span></a> <span class="n">UDECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4030"><a href="#DataType.Type-4030"><span class="linenos">4030</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4031"><a href="#DataType.Type-4031"><span class="linenos">4031</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> +</span><span id="DataType.Type-4032"><a href="#DataType.Type-4032"><span class="linenos">4032</span></a> <span class="n">USERDEFINED</span> <span class="o">=</span> <span class="s2">"USER-DEFINED"</span> +</span><span id="DataType.Type-4033"><a href="#DataType.Type-4033"><span class="linenos">4033</span></a> <span class="n">USMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4034"><a href="#DataType.Type-4034"><span class="linenos">4034</span></a> <span class="n">UTINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4035"><a href="#DataType.Type-4035"><span class="linenos">4035</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4036"><a href="#DataType.Type-4036"><span class="linenos">4036</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4037"><a href="#DataType.Type-4037"><span class="linenos">4037</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4038"><a href="#DataType.Type-4038"><span class="linenos">4038</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4039"><a href="#DataType.Type-4039"><span class="linenos">4039</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4040"><a href="#DataType.Type-4040"><span class="linenos">4040</span></a> <span class="n">YEAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-4041"><a href="#DataType.Type-4041"><span class="linenos">4041</span></a> <span class="n">TDIGEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span></pre></div> @@ -55198,6 +55225,18 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> + <div id="DataType.Type.LIST" class="classattr"> + <div class="attr variable"> + <span class="name">LIST</span> = +<span class="default_value"><Type.LIST: 'LIST'></span> + + + </div> + <a class="headerlink" href="#DataType.Type.LIST"></a> + + + + </div> <div id="DataType.Type.LONGBLOB" class="classattr"> <div class="attr variable"> <span class="name">LONGBLOB</span> = @@ -55952,8 +55991,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#PseudoType"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PseudoType-4202"><a href="#PseudoType-4202"><span class="linenos">4202</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> -</span><span id="PseudoType-4203"><a href="#PseudoType-4203"><span class="linenos">4203</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PseudoType-4203"><a href="#PseudoType-4203"><span class="linenos">4203</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> +</span><span id="PseudoType-4204"><a href="#PseudoType-4204"><span class="linenos">4204</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -56087,8 +56126,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#ObjectIdentifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ObjectIdentifier-4207"><a href="#ObjectIdentifier-4207"><span class="linenos">4207</span></a><span class="k">class</span> <span class="nc">ObjectIdentifier</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> -</span><span id="ObjectIdentifier-4208"><a href="#ObjectIdentifier-4208"><span class="linenos">4208</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ObjectIdentifier-4208"><a href="#ObjectIdentifier-4208"><span class="linenos">4208</span></a><span class="k">class</span> <span class="nc">ObjectIdentifier</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> +</span><span id="ObjectIdentifier-4209"><a href="#ObjectIdentifier-4209"><span class="linenos">4209</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -56222,8 +56261,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#SubqueryPredicate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SubqueryPredicate-4212"><a href="#SubqueryPredicate-4212"><span class="linenos">4212</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="SubqueryPredicate-4213"><a href="#SubqueryPredicate-4213"><span class="linenos">4213</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SubqueryPredicate-4213"><a href="#SubqueryPredicate-4213"><span class="linenos">4213</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="SubqueryPredicate-4214"><a href="#SubqueryPredicate-4214"><span class="linenos">4214</span></a> <span class="k">pass</span> </span></pre></div> @@ -56331,8 +56370,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#All"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="All-4216"><a href="#All-4216"><span class="linenos">4216</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="All-4217"><a href="#All-4217"><span class="linenos">4217</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="All-4217"><a href="#All-4217"><span class="linenos">4217</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="All-4218"><a href="#All-4218"><span class="linenos">4218</span></a> <span class="k">pass</span> </span></pre></div> @@ -56440,8 +56479,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Any"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Any-4220"><a href="#Any-4220"><span class="linenos">4220</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="Any-4221"><a href="#Any-4221"><span class="linenos">4221</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Any-4221"><a href="#Any-4221"><span class="linenos">4221</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="Any-4222"><a href="#Any-4222"><span class="linenos">4222</span></a> <span class="k">pass</span> </span></pre></div> @@ -56549,8 +56588,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Exists"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Exists-4224"><a href="#Exists-4224"><span class="linenos">4224</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="Exists-4225"><a href="#Exists-4225"><span class="linenos">4225</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Exists-4225"><a href="#Exists-4225"><span class="linenos">4225</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="Exists-4226"><a href="#Exists-4226"><span class="linenos">4226</span></a> <span class="k">pass</span> </span></pre></div> @@ -56658,8 +56697,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Command"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Command-4230"><a href="#Command-4230"><span class="linenos">4230</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Command-4231"><a href="#Command-4231"><span class="linenos">4231</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Command-4231"><a href="#Command-4231"><span class="linenos">4231</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Command-4232"><a href="#Command-4232"><span class="linenos">4232</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -56778,8 +56817,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Transaction"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Transaction-4234"><a href="#Transaction-4234"><span class="linenos">4234</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Transaction-4235"><a href="#Transaction-4235"><span class="linenos">4235</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"mark"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Transaction-4235"><a href="#Transaction-4235"><span class="linenos">4235</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Transaction-4236"><a href="#Transaction-4236"><span class="linenos">4236</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"mark"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -56898,8 +56937,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Commit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Commit-4238"><a href="#Commit-4238"><span class="linenos">4238</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Commit-4239"><a href="#Commit-4239"><span class="linenos">4239</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"durability"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Commit-4239"><a href="#Commit-4239"><span class="linenos">4239</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Commit-4240"><a href="#Commit-4240"><span class="linenos">4240</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"durability"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -57018,8 +57057,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Rollback"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Rollback-4242"><a href="#Rollback-4242"><span class="linenos">4242</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Rollback-4243"><a href="#Rollback-4243"><span class="linenos">4243</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Rollback-4243"><a href="#Rollback-4243"><span class="linenos">4243</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Rollback-4244"><a href="#Rollback-4244"><span class="linenos">4244</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -57138,15 +57177,15 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#AlterTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AlterTable-4246"><a href="#AlterTable-4246"><span class="linenos">4246</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AlterTable-4247"><a href="#AlterTable-4247"><span class="linenos">4247</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="AlterTable-4248"><a href="#AlterTable-4248"><span class="linenos">4248</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="AlterTable-4249"><a href="#AlterTable-4249"><span class="linenos">4249</span></a> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="AlterTable-4250"><a href="#AlterTable-4250"><span class="linenos">4250</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterTable-4251"><a href="#AlterTable-4251"><span class="linenos">4251</span></a> <span class="s2">"only"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterTable-4252"><a href="#AlterTable-4252"><span class="linenos">4252</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterTable-4253"><a href="#AlterTable-4253"><span class="linenos">4253</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterTable-4254"><a href="#AlterTable-4254"><span class="linenos">4254</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AlterTable-4247"><a href="#AlterTable-4247"><span class="linenos">4247</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AlterTable-4248"><a href="#AlterTable-4248"><span class="linenos">4248</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="AlterTable-4249"><a href="#AlterTable-4249"><span class="linenos">4249</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="AlterTable-4250"><a href="#AlterTable-4250"><span class="linenos">4250</span></a> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="AlterTable-4251"><a href="#AlterTable-4251"><span class="linenos">4251</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterTable-4252"><a href="#AlterTable-4252"><span class="linenos">4252</span></a> <span class="s2">"only"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterTable-4253"><a href="#AlterTable-4253"><span class="linenos">4253</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterTable-4254"><a href="#AlterTable-4254"><span class="linenos">4254</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterTable-4255"><a href="#AlterTable-4255"><span class="linenos">4255</span></a> <span class="p">}</span> </span></pre></div> @@ -57265,8 +57304,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#AddConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AddConstraint-4257"><a href="#AddConstraint-4257"><span class="linenos">4257</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AddConstraint-4258"><a href="#AddConstraint-4258"><span class="linenos">4258</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AddConstraint-4258"><a href="#AddConstraint-4258"><span class="linenos">4258</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AddConstraint-4259"><a href="#AddConstraint-4259"><span class="linenos">4259</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -57385,8 +57424,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#DropPartition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DropPartition-4261"><a href="#DropPartition-4261"><span class="linenos">4261</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="DropPartition-4262"><a href="#DropPartition-4262"><span class="linenos">4262</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DropPartition-4262"><a href="#DropPartition-4262"><span class="linenos">4262</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="DropPartition-4263"><a href="#DropPartition-4263"><span class="linenos">4263</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -57505,8 +57544,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#ReplacePartition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ReplacePartition-4266"><a href="#ReplacePartition-4266"><span class="linenos">4266</span></a><span class="k">class</span> <span class="nc">ReplacePartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="ReplacePartition-4267"><a href="#ReplacePartition-4267"><span class="linenos">4267</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ReplacePartition-4267"><a href="#ReplacePartition-4267"><span class="linenos">4267</span></a><span class="k">class</span> <span class="nc">ReplacePartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="ReplacePartition-4268"><a href="#ReplacePartition-4268"><span class="linenos">4268</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -57625,16 +57664,16 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Binary"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Binary-4271"><a href="#Binary-4271"><span class="linenos">4271</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Binary-4272"><a href="#Binary-4272"><span class="linenos">4272</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Binary-4273"><a href="#Binary-4273"><span class="linenos">4273</span></a> -</span><span id="Binary-4274"><a href="#Binary-4274"><span class="linenos">4274</span></a> <span class="nd">@property</span> -</span><span id="Binary-4275"><a href="#Binary-4275"><span class="linenos">4275</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="Binary-4276"><a href="#Binary-4276"><span class="linenos">4276</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="Binary-4277"><a href="#Binary-4277"><span class="linenos">4277</span></a> -</span><span id="Binary-4278"><a href="#Binary-4278"><span class="linenos">4278</span></a> <span class="nd">@property</span> -</span><span id="Binary-4279"><a href="#Binary-4279"><span class="linenos">4279</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="Binary-4280"><a href="#Binary-4280"><span class="linenos">4280</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Binary-4272"><a href="#Binary-4272"><span class="linenos">4272</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Binary-4273"><a href="#Binary-4273"><span class="linenos">4273</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Binary-4274"><a href="#Binary-4274"><span class="linenos">4274</span></a> +</span><span id="Binary-4275"><a href="#Binary-4275"><span class="linenos">4275</span></a> <span class="nd">@property</span> +</span><span id="Binary-4276"><a href="#Binary-4276"><span class="linenos">4276</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="Binary-4277"><a href="#Binary-4277"><span class="linenos">4277</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="Binary-4278"><a href="#Binary-4278"><span class="linenos">4278</span></a> +</span><span id="Binary-4279"><a href="#Binary-4279"><span class="linenos">4279</span></a> <span class="nd">@property</span> +</span><span id="Binary-4280"><a href="#Binary-4280"><span class="linenos">4280</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="Binary-4281"><a href="#Binary-4281"><span class="linenos">4281</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> </span></pre></div> @@ -57661,9 +57700,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Binary.left"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Binary.left-4274"><a href="#Binary.left-4274"><span class="linenos">4274</span></a> <span class="nd">@property</span> -</span><span id="Binary.left-4275"><a href="#Binary.left-4275"><span class="linenos">4275</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="Binary.left-4276"><a href="#Binary.left-4276"><span class="linenos">4276</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Binary.left-4275"><a href="#Binary.left-4275"><span class="linenos">4275</span></a> <span class="nd">@property</span> +</span><span id="Binary.left-4276"><a href="#Binary.left-4276"><span class="linenos">4276</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="Binary.left-4277"><a href="#Binary.left-4277"><span class="linenos">4277</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> </span></pre></div> @@ -57679,9 +57718,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Binary.right"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Binary.right-4278"><a href="#Binary.right-4278"><span class="linenos">4278</span></a> <span class="nd">@property</span> -</span><span id="Binary.right-4279"><a href="#Binary.right-4279"><span class="linenos">4279</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="Binary.right-4280"><a href="#Binary.right-4280"><span class="linenos">4280</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Binary.right-4279"><a href="#Binary.right-4279"><span class="linenos">4279</span></a> <span class="nd">@property</span> +</span><span id="Binary.right-4280"><a href="#Binary.right-4280"><span class="linenos">4280</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="Binary.right-4281"><a href="#Binary.right-4281"><span class="linenos">4281</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> </span></pre></div> @@ -57789,8 +57828,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Add"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Add-4283"><a href="#Add-4283"><span class="linenos">4283</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Add-4284"><a href="#Add-4284"><span class="linenos">4284</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Add-4284"><a href="#Add-4284"><span class="linenos">4284</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Add-4285"><a href="#Add-4285"><span class="linenos">4285</span></a> <span class="k">pass</span> </span></pre></div> @@ -57903,8 +57942,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Connector"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Connector-4287"><a href="#Connector-4287"><span class="linenos">4287</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Connector-4288"><a href="#Connector-4288"><span class="linenos">4288</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Connector-4288"><a href="#Connector-4288"><span class="linenos">4288</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Connector-4289"><a href="#Connector-4289"><span class="linenos">4289</span></a> <span class="k">pass</span> </span></pre></div> @@ -58017,8 +58056,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#And"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="And-4291"><a href="#And-4291"><span class="linenos">4291</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="And-4292"><a href="#And-4292"><span class="linenos">4292</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="And-4292"><a href="#And-4292"><span class="linenos">4292</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> +</span><span id="And-4293"><a href="#And-4293"><span class="linenos">4293</span></a> <span class="k">pass</span> </span></pre></div> @@ -58131,8 +58170,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Or"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Or-4295"><a href="#Or-4295"><span class="linenos">4295</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="Or-4296"><a href="#Or-4296"><span class="linenos">4296</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Or-4296"><a href="#Or-4296"><span class="linenos">4296</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> +</span><span id="Or-4297"><a href="#Or-4297"><span class="linenos">4297</span></a> <span class="k">pass</span> </span></pre></div> @@ -58245,8 +58284,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#BitwiseAnd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseAnd-4299"><a href="#BitwiseAnd-4299"><span class="linenos">4299</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseAnd-4300"><a href="#BitwiseAnd-4300"><span class="linenos">4300</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseAnd-4300"><a href="#BitwiseAnd-4300"><span class="linenos">4300</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseAnd-4301"><a href="#BitwiseAnd-4301"><span class="linenos">4301</span></a> <span class="k">pass</span> </span></pre></div> @@ -58359,8 +58398,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#BitwiseLeftShift"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseLeftShift-4303"><a href="#BitwiseLeftShift-4303"><span class="linenos">4303</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseLeftShift-4304"><a href="#BitwiseLeftShift-4304"><span class="linenos">4304</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseLeftShift-4304"><a href="#BitwiseLeftShift-4304"><span class="linenos">4304</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseLeftShift-4305"><a href="#BitwiseLeftShift-4305"><span class="linenos">4305</span></a> <span class="k">pass</span> </span></pre></div> @@ -58473,8 +58512,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#BitwiseOr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseOr-4307"><a href="#BitwiseOr-4307"><span class="linenos">4307</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseOr-4308"><a href="#BitwiseOr-4308"><span class="linenos">4308</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseOr-4308"><a href="#BitwiseOr-4308"><span class="linenos">4308</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseOr-4309"><a href="#BitwiseOr-4309"><span class="linenos">4309</span></a> <span class="k">pass</span> </span></pre></div> @@ -58587,8 +58626,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#BitwiseRightShift"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseRightShift-4311"><a href="#BitwiseRightShift-4311"><span class="linenos">4311</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseRightShift-4312"><a href="#BitwiseRightShift-4312"><span class="linenos">4312</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseRightShift-4312"><a href="#BitwiseRightShift-4312"><span class="linenos">4312</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseRightShift-4313"><a href="#BitwiseRightShift-4313"><span class="linenos">4313</span></a> <span class="k">pass</span> </span></pre></div> @@ -58701,8 +58740,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#BitwiseXor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseXor-4315"><a href="#BitwiseXor-4315"><span class="linenos">4315</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseXor-4316"><a href="#BitwiseXor-4316"><span class="linenos">4316</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseXor-4316"><a href="#BitwiseXor-4316"><span class="linenos">4316</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseXor-4317"><a href="#BitwiseXor-4317"><span class="linenos">4317</span></a> <span class="k">pass</span> </span></pre></div> @@ -58815,8 +58854,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Div"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Div-4319"><a href="#Div-4319"><span class="linenos">4319</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Div-4320"><a href="#Div-4320"><span class="linenos">4320</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"typed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Div-4320"><a href="#Div-4320"><span class="linenos">4320</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Div-4321"><a href="#Div-4321"><span class="linenos">4321</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"typed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -58940,8 +58979,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Overlaps"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Overlaps-4323"><a href="#Overlaps-4323"><span class="linenos">4323</span></a><span class="k">class</span> <span class="nc">Overlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Overlaps-4324"><a href="#Overlaps-4324"><span class="linenos">4324</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Overlaps-4324"><a href="#Overlaps-4324"><span class="linenos">4324</span></a><span class="k">class</span> <span class="nc">Overlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Overlaps-4325"><a href="#Overlaps-4325"><span class="linenos">4325</span></a> <span class="k">pass</span> </span></pre></div> @@ -59054,42 +59093,42 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Dot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot-4327"><a href="#Dot-4327"><span class="linenos">4327</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Dot-4328"><a href="#Dot-4328"><span class="linenos">4328</span></a> <span class="nd">@property</span> -</span><span id="Dot-4329"><a href="#Dot-4329"><span class="linenos">4329</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dot-4330"><a href="#Dot-4330"><span class="linenos">4330</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> -</span><span id="Dot-4331"><a href="#Dot-4331"><span class="linenos">4331</span></a> -</span><span id="Dot-4332"><a href="#Dot-4332"><span class="linenos">4332</span></a> <span class="nd">@property</span> -</span><span id="Dot-4333"><a href="#Dot-4333"><span class="linenos">4333</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dot-4334"><a href="#Dot-4334"><span class="linenos">4334</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> -</span><span id="Dot-4335"><a href="#Dot-4335"><span class="linenos">4335</span></a> -</span><span id="Dot-4336"><a href="#Dot-4336"><span class="linenos">4336</span></a> <span class="nd">@property</span> -</span><span id="Dot-4337"><a href="#Dot-4337"><span class="linenos">4337</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dot-4338"><a href="#Dot-4338"><span class="linenos">4338</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="Dot-4339"><a href="#Dot-4339"><span class="linenos">4339</span></a> -</span><span id="Dot-4340"><a href="#Dot-4340"><span class="linenos">4340</span></a> <span class="nd">@classmethod</span> -</span><span id="Dot-4341"><a href="#Dot-4341"><span class="linenos">4341</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</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="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> -</span><span id="Dot-4342"><a href="#Dot-4342"><span class="linenos">4342</span></a><span class="w"> </span><span class="sd">"""Build a Dot object with a sequence of expressions."""</span> -</span><span id="Dot-4343"><a href="#Dot-4343"><span class="linenos">4343</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="Dot-4344"><a href="#Dot-4344"><span class="linenos">4344</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Dot requires >= 2 expressions."</span><span class="p">)</span> -</span><span id="Dot-4345"><a href="#Dot-4345"><span class="linenos">4345</span></a> -</span><span id="Dot-4346"><a href="#Dot-4346"><span class="linenos">4346</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Dot</span><span class="p">,</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">Dot</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expressions</span><span class="p">))</span> -</span><span id="Dot-4347"><a href="#Dot-4347"><span class="linenos">4347</span></a> -</span><span id="Dot-4348"><a href="#Dot-4348"><span class="linenos">4348</span></a> <span class="nd">@property</span> -</span><span id="Dot-4349"><a href="#Dot-4349"><span class="linenos">4349</span></a> <span class="k">def</span> <span class="nf">parts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Dot-4350"><a href="#Dot-4350"><span class="linenos">4350</span></a><span class="w"> </span><span class="sd">"""Return the parts of a table / column in order catalog, db, table."""</span> -</span><span id="Dot-4351"><a href="#Dot-4351"><span class="linenos">4351</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> -</span><span id="Dot-4352"><a href="#Dot-4352"><span class="linenos">4352</span></a> -</span><span id="Dot-4353"><a href="#Dot-4353"><span class="linenos">4353</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> -</span><span id="Dot-4354"><a href="#Dot-4354"><span class="linenos">4354</span></a> -</span><span id="Dot-4355"><a href="#Dot-4355"><span class="linenos">4355</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">COLUMN_PARTS</span><span class="p">:</span> -</span><span id="Dot-4356"><a href="#Dot-4356"><span class="linenos">4356</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="Dot-4357"><a href="#Dot-4357"><span class="linenos">4357</span></a> -</span><span id="Dot-4358"><a href="#Dot-4358"><span class="linenos">4358</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Dot-4359"><a href="#Dot-4359"><span class="linenos">4359</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> -</span><span id="Dot-4360"><a href="#Dot-4360"><span class="linenos">4360</span></a> -</span><span id="Dot-4361"><a href="#Dot-4361"><span class="linenos">4361</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> -</span><span id="Dot-4362"><a href="#Dot-4362"><span class="linenos">4362</span></a> <span class="k">return</span> <span class="n">parts</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot-4328"><a href="#Dot-4328"><span class="linenos">4328</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Dot-4329"><a href="#Dot-4329"><span class="linenos">4329</span></a> <span class="nd">@property</span> +</span><span id="Dot-4330"><a href="#Dot-4330"><span class="linenos">4330</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dot-4331"><a href="#Dot-4331"><span class="linenos">4331</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> +</span><span id="Dot-4332"><a href="#Dot-4332"><span class="linenos">4332</span></a> +</span><span id="Dot-4333"><a href="#Dot-4333"><span class="linenos">4333</span></a> <span class="nd">@property</span> +</span><span id="Dot-4334"><a href="#Dot-4334"><span class="linenos">4334</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dot-4335"><a href="#Dot-4335"><span class="linenos">4335</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="Dot-4336"><a href="#Dot-4336"><span class="linenos">4336</span></a> +</span><span id="Dot-4337"><a href="#Dot-4337"><span class="linenos">4337</span></a> <span class="nd">@property</span> +</span><span id="Dot-4338"><a href="#Dot-4338"><span class="linenos">4338</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dot-4339"><a href="#Dot-4339"><span class="linenos">4339</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="Dot-4340"><a href="#Dot-4340"><span class="linenos">4340</span></a> +</span><span id="Dot-4341"><a href="#Dot-4341"><span class="linenos">4341</span></a> <span class="nd">@classmethod</span> +</span><span id="Dot-4342"><a href="#Dot-4342"><span class="linenos">4342</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</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="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> +</span><span id="Dot-4343"><a href="#Dot-4343"><span class="linenos">4343</span></a><span class="w"> </span><span class="sd">"""Build a Dot object with a sequence of expressions."""</span> +</span><span id="Dot-4344"><a href="#Dot-4344"><span class="linenos">4344</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Dot-4345"><a href="#Dot-4345"><span class="linenos">4345</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Dot requires >= 2 expressions."</span><span class="p">)</span> +</span><span id="Dot-4346"><a href="#Dot-4346"><span class="linenos">4346</span></a> +</span><span id="Dot-4347"><a href="#Dot-4347"><span class="linenos">4347</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Dot</span><span class="p">,</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">Dot</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expressions</span><span class="p">))</span> +</span><span id="Dot-4348"><a href="#Dot-4348"><span class="linenos">4348</span></a> +</span><span id="Dot-4349"><a href="#Dot-4349"><span class="linenos">4349</span></a> <span class="nd">@property</span> +</span><span id="Dot-4350"><a href="#Dot-4350"><span class="linenos">4350</span></a> <span class="k">def</span> <span class="nf">parts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Dot-4351"><a href="#Dot-4351"><span class="linenos">4351</span></a><span class="w"> </span><span class="sd">"""Return the parts of a table / column in order catalog, db, table."""</span> +</span><span id="Dot-4352"><a href="#Dot-4352"><span class="linenos">4352</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> +</span><span id="Dot-4353"><a href="#Dot-4353"><span class="linenos">4353</span></a> +</span><span id="Dot-4354"><a href="#Dot-4354"><span class="linenos">4354</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> +</span><span id="Dot-4355"><a href="#Dot-4355"><span class="linenos">4355</span></a> +</span><span id="Dot-4356"><a href="#Dot-4356"><span class="linenos">4356</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">COLUMN_PARTS</span><span class="p">:</span> +</span><span id="Dot-4357"><a href="#Dot-4357"><span class="linenos">4357</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="Dot-4358"><a href="#Dot-4358"><span class="linenos">4358</span></a> +</span><span id="Dot-4359"><a href="#Dot-4359"><span class="linenos">4359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Dot-4360"><a href="#Dot-4360"><span class="linenos">4360</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> +</span><span id="Dot-4361"><a href="#Dot-4361"><span class="linenos">4361</span></a> +</span><span id="Dot-4362"><a href="#Dot-4362"><span class="linenos">4362</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> +</span><span id="Dot-4363"><a href="#Dot-4363"><span class="linenos">4363</span></a> <span class="k">return</span> <span class="n">parts</span> </span></pre></div> @@ -59104,9 +59143,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Dot.is_star"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.is_star-4328"><a href="#Dot.is_star-4328"><span class="linenos">4328</span></a> <span class="nd">@property</span> -</span><span id="Dot.is_star-4329"><a href="#Dot.is_star-4329"><span class="linenos">4329</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Dot.is_star-4330"><a href="#Dot.is_star-4330"><span class="linenos">4330</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.is_star-4329"><a href="#Dot.is_star-4329"><span class="linenos">4329</span></a> <span class="nd">@property</span> +</span><span id="Dot.is_star-4330"><a href="#Dot.is_star-4330"><span class="linenos">4330</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Dot.is_star-4331"><a href="#Dot.is_star-4331"><span class="linenos">4331</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> </span></pre></div> @@ -59124,9 +59163,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Dot.name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.name-4332"><a href="#Dot.name-4332"><span class="linenos">4332</span></a> <span class="nd">@property</span> -</span><span id="Dot.name-4333"><a href="#Dot.name-4333"><span class="linenos">4333</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dot.name-4334"><a href="#Dot.name-4334"><span class="linenos">4334</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.name-4333"><a href="#Dot.name-4333"><span class="linenos">4333</span></a> <span class="nd">@property</span> +</span><span id="Dot.name-4334"><a href="#Dot.name-4334"><span class="linenos">4334</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dot.name-4335"><a href="#Dot.name-4335"><span class="linenos">4335</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -59142,9 +59181,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Dot.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.output_name-4336"><a href="#Dot.output_name-4336"><span class="linenos">4336</span></a> <span class="nd">@property</span> -</span><span id="Dot.output_name-4337"><a href="#Dot.output_name-4337"><span class="linenos">4337</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dot.output_name-4338"><a href="#Dot.output_name-4338"><span class="linenos">4338</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.output_name-4337"><a href="#Dot.output_name-4337"><span class="linenos">4337</span></a> <span class="nd">@property</span> +</span><span id="Dot.output_name-4338"><a href="#Dot.output_name-4338"><span class="linenos">4338</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dot.output_name-4339"><a href="#Dot.output_name-4339"><span class="linenos">4339</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -59182,13 +59221,13 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Dot.build"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.build-4340"><a href="#Dot.build-4340"><span class="linenos">4340</span></a> <span class="nd">@classmethod</span> -</span><span id="Dot.build-4341"><a href="#Dot.build-4341"><span class="linenos">4341</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</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="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> -</span><span id="Dot.build-4342"><a href="#Dot.build-4342"><span class="linenos">4342</span></a><span class="w"> </span><span class="sd">"""Build a Dot object with a sequence of expressions."""</span> -</span><span id="Dot.build-4343"><a href="#Dot.build-4343"><span class="linenos">4343</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="Dot.build-4344"><a href="#Dot.build-4344"><span class="linenos">4344</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Dot requires >= 2 expressions."</span><span class="p">)</span> -</span><span id="Dot.build-4345"><a href="#Dot.build-4345"><span class="linenos">4345</span></a> -</span><span id="Dot.build-4346"><a href="#Dot.build-4346"><span class="linenos">4346</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Dot</span><span class="p">,</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">Dot</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expressions</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.build-4341"><a href="#Dot.build-4341"><span class="linenos">4341</span></a> <span class="nd">@classmethod</span> +</span><span id="Dot.build-4342"><a href="#Dot.build-4342"><span class="linenos">4342</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</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="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Dot</span><span class="p">:</span> +</span><span id="Dot.build-4343"><a href="#Dot.build-4343"><span class="linenos">4343</span></a><span class="w"> </span><span class="sd">"""Build a Dot object with a sequence of expressions."""</span> +</span><span id="Dot.build-4344"><a href="#Dot.build-4344"><span class="linenos">4344</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Dot.build-4345"><a href="#Dot.build-4345"><span class="linenos">4345</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Dot requires >= 2 expressions."</span><span class="p">)</span> +</span><span id="Dot.build-4346"><a href="#Dot.build-4346"><span class="linenos">4346</span></a> +</span><span id="Dot.build-4347"><a href="#Dot.build-4347"><span class="linenos">4347</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Dot</span><span class="p">,</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">Dot</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expressions</span><span class="p">))</span> </span></pre></div> @@ -59206,21 +59245,21 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Dot.parts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.parts-4348"><a href="#Dot.parts-4348"><span class="linenos">4348</span></a> <span class="nd">@property</span> -</span><span id="Dot.parts-4349"><a href="#Dot.parts-4349"><span class="linenos">4349</span></a> <span class="k">def</span> <span class="nf">parts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Dot.parts-4350"><a href="#Dot.parts-4350"><span class="linenos">4350</span></a><span class="w"> </span><span class="sd">"""Return the parts of a table / column in order catalog, db, table."""</span> -</span><span id="Dot.parts-4351"><a href="#Dot.parts-4351"><span class="linenos">4351</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> -</span><span id="Dot.parts-4352"><a href="#Dot.parts-4352"><span class="linenos">4352</span></a> -</span><span id="Dot.parts-4353"><a href="#Dot.parts-4353"><span class="linenos">4353</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> -</span><span id="Dot.parts-4354"><a href="#Dot.parts-4354"><span class="linenos">4354</span></a> -</span><span id="Dot.parts-4355"><a href="#Dot.parts-4355"><span class="linenos">4355</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">COLUMN_PARTS</span><span class="p">:</span> -</span><span id="Dot.parts-4356"><a href="#Dot.parts-4356"><span class="linenos">4356</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="Dot.parts-4357"><a href="#Dot.parts-4357"><span class="linenos">4357</span></a> -</span><span id="Dot.parts-4358"><a href="#Dot.parts-4358"><span class="linenos">4358</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Dot.parts-4359"><a href="#Dot.parts-4359"><span class="linenos">4359</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> -</span><span id="Dot.parts-4360"><a href="#Dot.parts-4360"><span class="linenos">4360</span></a> -</span><span id="Dot.parts-4361"><a href="#Dot.parts-4361"><span class="linenos">4361</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> -</span><span id="Dot.parts-4362"><a href="#Dot.parts-4362"><span class="linenos">4362</span></a> <span class="k">return</span> <span class="n">parts</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot.parts-4349"><a href="#Dot.parts-4349"><span class="linenos">4349</span></a> <span class="nd">@property</span> +</span><span id="Dot.parts-4350"><a href="#Dot.parts-4350"><span class="linenos">4350</span></a> <span class="k">def</span> <span class="nf">parts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Dot.parts-4351"><a href="#Dot.parts-4351"><span class="linenos">4351</span></a><span class="w"> </span><span class="sd">"""Return the parts of a table / column in order catalog, db, table."""</span> +</span><span id="Dot.parts-4352"><a href="#Dot.parts-4352"><span class="linenos">4352</span></a> <span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="n">parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> +</span><span id="Dot.parts-4353"><a href="#Dot.parts-4353"><span class="linenos">4353</span></a> +</span><span id="Dot.parts-4354"><a href="#Dot.parts-4354"><span class="linenos">4354</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> +</span><span id="Dot.parts-4355"><a href="#Dot.parts-4355"><span class="linenos">4355</span></a> +</span><span id="Dot.parts-4356"><a href="#Dot.parts-4356"><span class="linenos">4356</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">COLUMN_PARTS</span><span class="p">:</span> +</span><span id="Dot.parts-4357"><a href="#Dot.parts-4357"><span class="linenos">4357</span></a> <span class="n">part</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="Dot.parts-4358"><a href="#Dot.parts-4358"><span class="linenos">4358</span></a> +</span><span id="Dot.parts-4359"><a href="#Dot.parts-4359"><span class="linenos">4359</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Dot.parts-4360"><a href="#Dot.parts-4360"><span class="linenos">4360</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> +</span><span id="Dot.parts-4361"><a href="#Dot.parts-4361"><span class="linenos">4361</span></a> +</span><span id="Dot.parts-4362"><a href="#Dot.parts-4362"><span class="linenos">4362</span></a> <span class="n">parts</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> +</span><span id="Dot.parts-4363"><a href="#Dot.parts-4363"><span class="linenos">4363</span></a> <span class="k">return</span> <span class="n">parts</span> </span></pre></div> @@ -59333,8 +59372,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#DPipe"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DPipe-4365"><a href="#DPipe-4365"><span class="linenos">4365</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="DPipe-4366"><a href="#DPipe-4366"><span class="linenos">4366</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DPipe-4366"><a href="#DPipe-4366"><span class="linenos">4366</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="DPipe-4367"><a href="#DPipe-4367"><span class="linenos">4367</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -59458,8 +59497,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#EQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="EQ-4369"><a href="#EQ-4369"><span class="linenos">4369</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="EQ-4370"><a href="#EQ-4370"><span class="linenos">4370</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="EQ-4370"><a href="#EQ-4370"><span class="linenos">4370</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="EQ-4371"><a href="#EQ-4371"><span class="linenos">4371</span></a> <span class="k">pass</span> </span></pre></div> @@ -59572,8 +59611,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#NullSafeEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeEQ-4373"><a href="#NullSafeEQ-4373"><span class="linenos">4373</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="NullSafeEQ-4374"><a href="#NullSafeEQ-4374"><span class="linenos">4374</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeEQ-4374"><a href="#NullSafeEQ-4374"><span class="linenos">4374</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="NullSafeEQ-4375"><a href="#NullSafeEQ-4375"><span class="linenos">4375</span></a> <span class="k">pass</span> </span></pre></div> @@ -59686,8 +59725,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#NullSafeNEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeNEQ-4377"><a href="#NullSafeNEQ-4377"><span class="linenos">4377</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="NullSafeNEQ-4378"><a href="#NullSafeNEQ-4378"><span class="linenos">4378</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeNEQ-4378"><a href="#NullSafeNEQ-4378"><span class="linenos">4378</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="NullSafeNEQ-4379"><a href="#NullSafeNEQ-4379"><span class="linenos">4379</span></a> <span class="k">pass</span> </span></pre></div> @@ -59800,8 +59839,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#PropertyEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PropertyEQ-4382"><a href="#PropertyEQ-4382"><span class="linenos">4382</span></a><span class="k">class</span> <span class="nc">PropertyEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="PropertyEQ-4383"><a href="#PropertyEQ-4383"><span class="linenos">4383</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PropertyEQ-4383"><a href="#PropertyEQ-4383"><span class="linenos">4383</span></a><span class="k">class</span> <span class="nc">PropertyEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="PropertyEQ-4384"><a href="#PropertyEQ-4384"><span class="linenos">4384</span></a> <span class="k">pass</span> </span></pre></div> @@ -59914,8 +59953,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Distance"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Distance-4386"><a href="#Distance-4386"><span class="linenos">4386</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Distance-4387"><a href="#Distance-4387"><span class="linenos">4387</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Distance-4387"><a href="#Distance-4387"><span class="linenos">4387</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Distance-4388"><a href="#Distance-4388"><span class="linenos">4388</span></a> <span class="k">pass</span> </span></pre></div> @@ -60028,8 +60067,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Escape"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Escape-4390"><a href="#Escape-4390"><span class="linenos">4390</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Escape-4391"><a href="#Escape-4391"><span class="linenos">4391</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Escape-4391"><a href="#Escape-4391"><span class="linenos">4391</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Escape-4392"><a href="#Escape-4392"><span class="linenos">4392</span></a> <span class="k">pass</span> </span></pre></div> @@ -60142,8 +60181,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Glob"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Glob-4394"><a href="#Glob-4394"><span class="linenos">4394</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="Glob-4395"><a href="#Glob-4395"><span class="linenos">4395</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Glob-4395"><a href="#Glob-4395"><span class="linenos">4395</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="Glob-4396"><a href="#Glob-4396"><span class="linenos">4396</span></a> <span class="k">pass</span> </span></pre></div> @@ -60256,8 +60295,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#GT"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GT-4398"><a href="#GT-4398"><span class="linenos">4398</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="GT-4399"><a href="#GT-4399"><span class="linenos">4399</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GT-4399"><a href="#GT-4399"><span class="linenos">4399</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="GT-4400"><a href="#GT-4400"><span class="linenos">4400</span></a> <span class="k">pass</span> </span></pre></div> @@ -60370,8 +60409,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#GTE"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GTE-4402"><a href="#GTE-4402"><span class="linenos">4402</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="GTE-4403"><a href="#GTE-4403"><span class="linenos">4403</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GTE-4403"><a href="#GTE-4403"><span class="linenos">4403</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="GTE-4404"><a href="#GTE-4404"><span class="linenos">4404</span></a> <span class="k">pass</span> </span></pre></div> @@ -60484,8 +60523,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#ILike"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ILike-4406"><a href="#ILike-4406"><span class="linenos">4406</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="ILike-4407"><a href="#ILike-4407"><span class="linenos">4407</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ILike-4407"><a href="#ILike-4407"><span class="linenos">4407</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="ILike-4408"><a href="#ILike-4408"><span class="linenos">4408</span></a> <span class="k">pass</span> </span></pre></div> @@ -60598,8 +60637,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#ILikeAny"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ILikeAny-4410"><a href="#ILikeAny-4410"><span class="linenos">4410</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="ILikeAny-4411"><a href="#ILikeAny-4411"><span class="linenos">4411</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ILikeAny-4411"><a href="#ILikeAny-4411"><span class="linenos">4411</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="ILikeAny-4412"><a href="#ILikeAny-4412"><span class="linenos">4412</span></a> <span class="k">pass</span> </span></pre></div> @@ -60712,8 +60751,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#IntDiv"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IntDiv-4414"><a href="#IntDiv-4414"><span class="linenos">4414</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="IntDiv-4415"><a href="#IntDiv-4415"><span class="linenos">4415</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IntDiv-4415"><a href="#IntDiv-4415"><span class="linenos">4415</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="IntDiv-4416"><a href="#IntDiv-4416"><span class="linenos">4416</span></a> <span class="k">pass</span> </span></pre></div> @@ -60826,8 +60865,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Is"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Is-4418"><a href="#Is-4418"><span class="linenos">4418</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="Is-4419"><a href="#Is-4419"><span class="linenos">4419</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Is-4419"><a href="#Is-4419"><span class="linenos">4419</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="Is-4420"><a href="#Is-4420"><span class="linenos">4420</span></a> <span class="k">pass</span> </span></pre></div> @@ -60940,8 +60979,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Kwarg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Kwarg-4422"><a href="#Kwarg-4422"><span class="linenos">4422</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Kwarg-4423"><a href="#Kwarg-4423"><span class="linenos">4423</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Kwarg-4423"><a href="#Kwarg-4423"><span class="linenos">4423</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Kwarg-4424"><a href="#Kwarg-4424"><span class="linenos">4424</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> </span></pre></div> @@ -61056,8 +61095,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Like"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Like-4426"><a href="#Like-4426"><span class="linenos">4426</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="Like-4427"><a href="#Like-4427"><span class="linenos">4427</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Like-4427"><a href="#Like-4427"><span class="linenos">4427</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="Like-4428"><a href="#Like-4428"><span class="linenos">4428</span></a> <span class="k">pass</span> </span></pre></div> @@ -61170,8 +61209,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#LikeAny"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LikeAny-4430"><a href="#LikeAny-4430"><span class="linenos">4430</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="LikeAny-4431"><a href="#LikeAny-4431"><span class="linenos">4431</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LikeAny-4431"><a href="#LikeAny-4431"><span class="linenos">4431</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="LikeAny-4432"><a href="#LikeAny-4432"><span class="linenos">4432</span></a> <span class="k">pass</span> </span></pre></div> @@ -61284,8 +61323,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#LT"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LT-4434"><a href="#LT-4434"><span class="linenos">4434</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="LT-4435"><a href="#LT-4435"><span class="linenos">4435</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LT-4435"><a href="#LT-4435"><span class="linenos">4435</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="LT-4436"><a href="#LT-4436"><span class="linenos">4436</span></a> <span class="k">pass</span> </span></pre></div> @@ -61398,8 +61437,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#LTE"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LTE-4438"><a href="#LTE-4438"><span class="linenos">4438</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="LTE-4439"><a href="#LTE-4439"><span class="linenos">4439</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LTE-4439"><a href="#LTE-4439"><span class="linenos">4439</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="LTE-4440"><a href="#LTE-4440"><span class="linenos">4440</span></a> <span class="k">pass</span> </span></pre></div> @@ -61512,8 +61551,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Mod"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Mod-4442"><a href="#Mod-4442"><span class="linenos">4442</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Mod-4443"><a href="#Mod-4443"><span class="linenos">4443</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Mod-4443"><a href="#Mod-4443"><span class="linenos">4443</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Mod-4444"><a href="#Mod-4444"><span class="linenos">4444</span></a> <span class="k">pass</span> </span></pre></div> @@ -61626,8 +61665,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Mul"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Mul-4446"><a href="#Mul-4446"><span class="linenos">4446</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Mul-4447"><a href="#Mul-4447"><span class="linenos">4447</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Mul-4447"><a href="#Mul-4447"><span class="linenos">4447</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Mul-4448"><a href="#Mul-4448"><span class="linenos">4448</span></a> <span class="k">pass</span> </span></pre></div> @@ -61740,8 +61779,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#NEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NEQ-4450"><a href="#NEQ-4450"><span class="linenos">4450</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="NEQ-4451"><a href="#NEQ-4451"><span class="linenos">4451</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NEQ-4451"><a href="#NEQ-4451"><span class="linenos">4451</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="NEQ-4452"><a href="#NEQ-4452"><span class="linenos">4452</span></a> <span class="k">pass</span> </span></pre></div> @@ -61854,8 +61893,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Operator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Operator-4455"><a href="#Operator-4455"><span class="linenos">4455</span></a><span class="k">class</span> <span class="nc">Operator</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Operator-4456"><a href="#Operator-4456"><span class="linenos">4456</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"operator"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Operator-4456"><a href="#Operator-4456"><span class="linenos">4456</span></a><span class="k">class</span> <span class="nc">Operator</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Operator-4457"><a href="#Operator-4457"><span class="linenos">4457</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"operator"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -61979,8 +62018,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#SimilarTo"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SimilarTo-4459"><a href="#SimilarTo-4459"><span class="linenos">4459</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="SimilarTo-4460"><a href="#SimilarTo-4460"><span class="linenos">4460</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SimilarTo-4460"><a href="#SimilarTo-4460"><span class="linenos">4460</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="SimilarTo-4461"><a href="#SimilarTo-4461"><span class="linenos">4461</span></a> <span class="k">pass</span> </span></pre></div> @@ -62093,8 +62132,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Slice"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Slice-4463"><a href="#Slice-4463"><span class="linenos">4463</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Slice-4464"><a href="#Slice-4464"><span class="linenos">4464</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Slice-4464"><a href="#Slice-4464"><span class="linenos">4464</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Slice-4465"><a href="#Slice-4465"><span class="linenos">4465</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -62218,8 +62257,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Sub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sub-4467"><a href="#Sub-4467"><span class="linenos">4467</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Sub-4468"><a href="#Sub-4468"><span class="linenos">4468</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sub-4468"><a href="#Sub-4468"><span class="linenos">4468</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Sub-4469"><a href="#Sub-4469"><span class="linenos">4469</span></a> <span class="k">pass</span> </span></pre></div> @@ -62332,8 +62371,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Unary"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unary-4473"><a href="#Unary-4473"><span class="linenos">4473</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Unary-4474"><a href="#Unary-4474"><span class="linenos">4474</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unary-4474"><a href="#Unary-4474"><span class="linenos">4474</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Unary-4475"><a href="#Unary-4475"><span class="linenos">4475</span></a> <span class="k">pass</span> </span></pre></div> @@ -62441,8 +62480,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#BitwiseNot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseNot-4477"><a href="#BitwiseNot-4477"><span class="linenos">4477</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="BitwiseNot-4478"><a href="#BitwiseNot-4478"><span class="linenos">4478</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseNot-4478"><a href="#BitwiseNot-4478"><span class="linenos">4478</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="BitwiseNot-4479"><a href="#BitwiseNot-4479"><span class="linenos">4479</span></a> <span class="k">pass</span> </span></pre></div> @@ -62550,8 +62589,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Not"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Not-4481"><a href="#Not-4481"><span class="linenos">4481</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="Not-4482"><a href="#Not-4482"><span class="linenos">4482</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Not-4482"><a href="#Not-4482"><span class="linenos">4482</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="Not-4483"><a href="#Not-4483"><span class="linenos">4483</span></a> <span class="k">pass</span> </span></pre></div> @@ -62659,10 +62698,10 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Paren"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Paren-4485"><a href="#Paren-4485"><span class="linenos">4485</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="Paren-4486"><a href="#Paren-4486"><span class="linenos">4486</span></a> <span class="nd">@property</span> -</span><span id="Paren-4487"><a href="#Paren-4487"><span class="linenos">4487</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Paren-4488"><a href="#Paren-4488"><span class="linenos">4488</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Paren-4486"><a href="#Paren-4486"><span class="linenos">4486</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="Paren-4487"><a href="#Paren-4487"><span class="linenos">4487</span></a> <span class="nd">@property</span> +</span><span id="Paren-4488"><a href="#Paren-4488"><span class="linenos">4488</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Paren-4489"><a href="#Paren-4489"><span class="linenos">4489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -62677,9 +62716,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Paren.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Paren.output_name-4486"><a href="#Paren.output_name-4486"><span class="linenos">4486</span></a> <span class="nd">@property</span> -</span><span id="Paren.output_name-4487"><a href="#Paren.output_name-4487"><span class="linenos">4487</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Paren.output_name-4488"><a href="#Paren.output_name-4488"><span class="linenos">4488</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Paren.output_name-4487"><a href="#Paren.output_name-4487"><span class="linenos">4487</span></a> <span class="nd">@property</span> +</span><span id="Paren.output_name-4488"><a href="#Paren.output_name-4488"><span class="linenos">4488</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Paren.output_name-4489"><a href="#Paren.output_name-4489"><span class="linenos">4489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -62806,8 +62845,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Neg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Neg-4491"><a href="#Neg-4491"><span class="linenos">4491</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="Neg-4492"><a href="#Neg-4492"><span class="linenos">4492</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Neg-4492"><a href="#Neg-4492"><span class="linenos">4492</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="Neg-4493"><a href="#Neg-4493"><span class="linenos">4493</span></a> <span class="k">pass</span> </span></pre></div> @@ -62915,12 +62954,12 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Alias"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Alias-4495"><a href="#Alias-4495"><span class="linenos">4495</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Alias-4496"><a href="#Alias-4496"><span class="linenos">4496</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Alias-4497"><a href="#Alias-4497"><span class="linenos">4497</span></a> -</span><span id="Alias-4498"><a href="#Alias-4498"><span class="linenos">4498</span></a> <span class="nd">@property</span> -</span><span id="Alias-4499"><a href="#Alias-4499"><span class="linenos">4499</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Alias-4500"><a href="#Alias-4500"><span class="linenos">4500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Alias-4496"><a href="#Alias-4496"><span class="linenos">4496</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Alias-4497"><a href="#Alias-4497"><span class="linenos">4497</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Alias-4498"><a href="#Alias-4498"><span class="linenos">4498</span></a> +</span><span id="Alias-4499"><a href="#Alias-4499"><span class="linenos">4499</span></a> <span class="nd">@property</span> +</span><span id="Alias-4500"><a href="#Alias-4500"><span class="linenos">4500</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Alias-4501"><a href="#Alias-4501"><span class="linenos">4501</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> </span></pre></div> @@ -62947,9 +62986,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Alias.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Alias.output_name-4498"><a href="#Alias.output_name-4498"><span class="linenos">4498</span></a> <span class="nd">@property</span> -</span><span id="Alias.output_name-4499"><a href="#Alias.output_name-4499"><span class="linenos">4499</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Alias.output_name-4500"><a href="#Alias.output_name-4500"><span class="linenos">4500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Alias.output_name-4499"><a href="#Alias.output_name-4499"><span class="linenos">4499</span></a> <span class="nd">@property</span> +</span><span id="Alias.output_name-4500"><a href="#Alias.output_name-4500"><span class="linenos">4500</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Alias.output_name-4501"><a href="#Alias.output_name-4501"><span class="linenos">4501</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> </span></pre></div> @@ -63075,8 +63114,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#PivotAlias"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PivotAlias-4505"><a href="#PivotAlias-4505"><span class="linenos">4505</span></a><span class="k">class</span> <span class="nc">PivotAlias</span><span class="p">(</span><span class="n">Alias</span><span class="p">):</span> -</span><span id="PivotAlias-4506"><a href="#PivotAlias-4506"><span class="linenos">4506</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PivotAlias-4506"><a href="#PivotAlias-4506"><span class="linenos">4506</span></a><span class="k">class</span> <span class="nc">PivotAlias</span><span class="p">(</span><span class="n">Alias</span><span class="p">):</span> +</span><span id="PivotAlias-4507"><a href="#PivotAlias-4507"><span class="linenos">4507</span></a> <span class="k">pass</span> </span></pre></div> @@ -63187,12 +63226,12 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Aliases"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Aliases-4509"><a href="#Aliases-4509"><span class="linenos">4509</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Aliases-4510"><a href="#Aliases-4510"><span class="linenos">4510</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Aliases-4511"><a href="#Aliases-4511"><span class="linenos">4511</span></a> -</span><span id="Aliases-4512"><a href="#Aliases-4512"><span class="linenos">4512</span></a> <span class="nd">@property</span> -</span><span id="Aliases-4513"><a href="#Aliases-4513"><span class="linenos">4513</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Aliases-4514"><a href="#Aliases-4514"><span class="linenos">4514</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Aliases-4510"><a href="#Aliases-4510"><span class="linenos">4510</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Aliases-4511"><a href="#Aliases-4511"><span class="linenos">4511</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Aliases-4512"><a href="#Aliases-4512"><span class="linenos">4512</span></a> +</span><span id="Aliases-4513"><a href="#Aliases-4513"><span class="linenos">4513</span></a> <span class="nd">@property</span> +</span><span id="Aliases-4514"><a href="#Aliases-4514"><span class="linenos">4514</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Aliases-4515"><a href="#Aliases-4515"><span class="linenos">4515</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -63219,9 +63258,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Aliases.aliases"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Aliases.aliases-4512"><a href="#Aliases.aliases-4512"><span class="linenos">4512</span></a> <span class="nd">@property</span> -</span><span id="Aliases.aliases-4513"><a href="#Aliases.aliases-4513"><span class="linenos">4513</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Aliases.aliases-4514"><a href="#Aliases.aliases-4514"><span class="linenos">4514</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Aliases.aliases-4513"><a href="#Aliases.aliases-4513"><span class="linenos">4513</span></a> <span class="nd">@property</span> +</span><span id="Aliases.aliases-4514"><a href="#Aliases.aliases-4514"><span class="linenos">4514</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Aliases.aliases-4515"><a href="#Aliases.aliases-4515"><span class="linenos">4515</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -63329,8 +63368,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#AtIndex"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AtIndex-4518"><a href="#AtIndex-4518"><span class="linenos">4518</span></a><span class="k">class</span> <span class="nc">AtIndex</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AtIndex-4519"><a href="#AtIndex-4519"><span class="linenos">4519</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AtIndex-4519"><a href="#AtIndex-4519"><span class="linenos">4519</span></a><span class="k">class</span> <span class="nc">AtIndex</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AtIndex-4520"><a href="#AtIndex-4520"><span class="linenos">4520</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -63449,8 +63488,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#AtTimeZone"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AtTimeZone-4522"><a href="#AtTimeZone-4522"><span class="linenos">4522</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AtTimeZone-4523"><a href="#AtTimeZone-4523"><span class="linenos">4523</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AtTimeZone-4523"><a href="#AtTimeZone-4523"><span class="linenos">4523</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AtTimeZone-4524"><a href="#AtTimeZone-4524"><span class="linenos">4524</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -63569,8 +63608,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#FromTimeZone"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FromTimeZone-4526"><a href="#FromTimeZone-4526"><span class="linenos">4526</span></a><span class="k">class</span> <span class="nc">FromTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="FromTimeZone-4527"><a href="#FromTimeZone-4527"><span class="linenos">4527</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="FromTimeZone-4527"><a href="#FromTimeZone-4527"><span class="linenos">4527</span></a><span class="k">class</span> <span class="nc">FromTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="FromTimeZone-4528"><a href="#FromTimeZone-4528"><span class="linenos">4528</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -63689,8 +63728,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Between"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Between-4530"><a href="#Between-4530"><span class="linenos">4530</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="Between-4531"><a href="#Between-4531"><span class="linenos">4531</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Between-4531"><a href="#Between-4531"><span class="linenos">4531</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="Between-4532"><a href="#Between-4532"><span class="linenos">4532</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -63809,22 +63848,22 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Bracket"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Bracket-4534"><a href="#Bracket-4534"><span class="linenos">4534</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Bracket-4535"><a href="#Bracket-4535"><span class="linenos">4535</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/operators#array_subscript_operator</span> -</span><span id="Bracket-4536"><a href="#Bracket-4536"><span class="linenos">4536</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Bracket-4537"><a href="#Bracket-4537"><span class="linenos">4537</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Bracket-4538"><a href="#Bracket-4538"><span class="linenos">4538</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Bracket-4539"><a href="#Bracket-4539"><span class="linenos">4539</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Bracket-4540"><a href="#Bracket-4540"><span class="linenos">4540</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Bracket-4541"><a href="#Bracket-4541"><span class="linenos">4541</span></a> <span class="s2">"returns_list_for_maps"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Bracket-4542"><a href="#Bracket-4542"><span class="linenos">4542</span></a> <span class="p">}</span> -</span><span id="Bracket-4543"><a href="#Bracket-4543"><span class="linenos">4543</span></a> -</span><span id="Bracket-4544"><a href="#Bracket-4544"><span class="linenos">4544</span></a> <span class="nd">@property</span> -</span><span id="Bracket-4545"><a href="#Bracket-4545"><span class="linenos">4545</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Bracket-4546"><a href="#Bracket-4546"><span class="linenos">4546</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Bracket-4547"><a href="#Bracket-4547"><span class="linenos">4547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">output_name</span> -</span><span id="Bracket-4548"><a href="#Bracket-4548"><span class="linenos">4548</span></a> -</span><span id="Bracket-4549"><a href="#Bracket-4549"><span class="linenos">4549</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">output_name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Bracket-4535"><a href="#Bracket-4535"><span class="linenos">4535</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Bracket-4536"><a href="#Bracket-4536"><span class="linenos">4536</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/operators#array_subscript_operator</span> +</span><span id="Bracket-4537"><a href="#Bracket-4537"><span class="linenos">4537</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Bracket-4538"><a href="#Bracket-4538"><span class="linenos">4538</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Bracket-4539"><a href="#Bracket-4539"><span class="linenos">4539</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Bracket-4540"><a href="#Bracket-4540"><span class="linenos">4540</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Bracket-4541"><a href="#Bracket-4541"><span class="linenos">4541</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Bracket-4542"><a href="#Bracket-4542"><span class="linenos">4542</span></a> <span class="s2">"returns_list_for_maps"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Bracket-4543"><a href="#Bracket-4543"><span class="linenos">4543</span></a> <span class="p">}</span> +</span><span id="Bracket-4544"><a href="#Bracket-4544"><span class="linenos">4544</span></a> +</span><span id="Bracket-4545"><a href="#Bracket-4545"><span class="linenos">4545</span></a> <span class="nd">@property</span> +</span><span id="Bracket-4546"><a href="#Bracket-4546"><span class="linenos">4546</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Bracket-4547"><a href="#Bracket-4547"><span class="linenos">4547</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Bracket-4548"><a href="#Bracket-4548"><span class="linenos">4548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">output_name</span> +</span><span id="Bracket-4549"><a href="#Bracket-4549"><span class="linenos">4549</span></a> +</span><span id="Bracket-4550"><a href="#Bracket-4550"><span class="linenos">4550</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">output_name</span> </span></pre></div> @@ -63851,12 +63890,12 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Bracket.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Bracket.output_name-4544"><a href="#Bracket.output_name-4544"><span class="linenos">4544</span></a> <span class="nd">@property</span> -</span><span id="Bracket.output_name-4545"><a href="#Bracket.output_name-4545"><span class="linenos">4545</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Bracket.output_name-4546"><a href="#Bracket.output_name-4546"><span class="linenos">4546</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Bracket.output_name-4547"><a href="#Bracket.output_name-4547"><span class="linenos">4547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">output_name</span> -</span><span id="Bracket.output_name-4548"><a href="#Bracket.output_name-4548"><span class="linenos">4548</span></a> -</span><span id="Bracket.output_name-4549"><a href="#Bracket.output_name-4549"><span class="linenos">4549</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">output_name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Bracket.output_name-4545"><a href="#Bracket.output_name-4545"><span class="linenos">4545</span></a> <span class="nd">@property</span> +</span><span id="Bracket.output_name-4546"><a href="#Bracket.output_name-4546"><span class="linenos">4546</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Bracket.output_name-4547"><a href="#Bracket.output_name-4547"><span class="linenos">4547</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Bracket.output_name-4548"><a href="#Bracket.output_name-4548"><span class="linenos">4548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">output_name</span> +</span><span id="Bracket.output_name-4549"><a href="#Bracket.output_name-4549"><span class="linenos">4549</span></a> +</span><span id="Bracket.output_name-4550"><a href="#Bracket.output_name-4550"><span class="linenos">4550</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">output_name</span> </span></pre></div> @@ -63982,8 +64021,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Distinct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Distinct-4552"><a href="#Distinct-4552"><span class="linenos">4552</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Distinct-4553"><a href="#Distinct-4553"><span class="linenos">4553</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Distinct-4553"><a href="#Distinct-4553"><span class="linenos">4553</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Distinct-4554"><a href="#Distinct-4554"><span class="linenos">4554</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -64102,15 +64141,15 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#In"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="In-4556"><a href="#In-4556"><span class="linenos">4556</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="In-4557"><a href="#In-4557"><span class="linenos">4557</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="In-4558"><a href="#In-4558"><span class="linenos">4558</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="In-4559"><a href="#In-4559"><span class="linenos">4559</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-4560"><a href="#In-4560"><span class="linenos">4560</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-4561"><a href="#In-4561"><span class="linenos">4561</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-4562"><a href="#In-4562"><span class="linenos">4562</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-4563"><a href="#In-4563"><span class="linenos">4563</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-4564"><a href="#In-4564"><span class="linenos">4564</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="In-4557"><a href="#In-4557"><span class="linenos">4557</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="In-4558"><a href="#In-4558"><span class="linenos">4558</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="In-4559"><a href="#In-4559"><span class="linenos">4559</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="In-4560"><a href="#In-4560"><span class="linenos">4560</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-4561"><a href="#In-4561"><span class="linenos">4561</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-4562"><a href="#In-4562"><span class="linenos">4562</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-4563"><a href="#In-4563"><span class="linenos">4563</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-4564"><a href="#In-4564"><span class="linenos">4564</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-4565"><a href="#In-4565"><span class="linenos">4565</span></a> <span class="p">}</span> </span></pre></div> @@ -64230,8 +64269,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#ForIn"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ForIn-4568"><a href="#ForIn-4568"><span class="linenos">4568</span></a><span class="k">class</span> <span class="nc">ForIn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="ForIn-4569"><a href="#ForIn-4569"><span class="linenos">4569</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ForIn-4569"><a href="#ForIn-4569"><span class="linenos">4569</span></a><span class="k">class</span> <span class="nc">ForIn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="ForIn-4570"><a href="#ForIn-4570"><span class="linenos">4570</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -64350,40 +64389,40 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#TimeUnit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit-4572"><a href="#TimeUnit-4572"><span class="linenos">4572</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="TimeUnit-4573"><a href="#TimeUnit-4573"><span class="linenos">4573</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> -</span><span id="TimeUnit-4574"><a href="#TimeUnit-4574"><span class="linenos">4574</span></a> -</span><span id="TimeUnit-4575"><a href="#TimeUnit-4575"><span class="linenos">4575</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="TimeUnit-4576"><a href="#TimeUnit-4576"><span class="linenos">4576</span></a> -</span><span id="TimeUnit-4577"><a href="#TimeUnit-4577"><span class="linenos">4577</span></a> <span class="n">UNABBREVIATED_UNIT_NAME</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="TimeUnit-4578"><a href="#TimeUnit-4578"><span class="linenos">4578</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"DAY"</span><span class="p">,</span> -</span><span id="TimeUnit-4579"><a href="#TimeUnit-4579"><span class="linenos">4579</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"HOUR"</span><span class="p">,</span> -</span><span id="TimeUnit-4580"><a href="#TimeUnit-4580"><span class="linenos">4580</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"MINUTE"</span><span class="p">,</span> -</span><span id="TimeUnit-4581"><a href="#TimeUnit-4581"><span class="linenos">4581</span></a> <span class="s2">"MS"</span><span class="p">:</span> <span class="s2">"MILLISECOND"</span><span class="p">,</span> -</span><span id="TimeUnit-4582"><a href="#TimeUnit-4582"><span class="linenos">4582</span></a> <span class="s2">"NS"</span><span class="p">:</span> <span class="s2">"NANOSECOND"</span><span class="p">,</span> -</span><span id="TimeUnit-4583"><a href="#TimeUnit-4583"><span class="linenos">4583</span></a> <span class="s2">"Q"</span><span class="p">:</span> <span class="s2">"QUARTER"</span><span class="p">,</span> -</span><span id="TimeUnit-4584"><a href="#TimeUnit-4584"><span class="linenos">4584</span></a> <span class="s2">"S"</span><span class="p">:</span> <span class="s2">"SECOND"</span><span class="p">,</span> -</span><span id="TimeUnit-4585"><a href="#TimeUnit-4585"><span class="linenos">4585</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"MICROSECOND"</span><span class="p">,</span> -</span><span id="TimeUnit-4586"><a href="#TimeUnit-4586"><span class="linenos">4586</span></a> <span class="s2">"W"</span><span class="p">:</span> <span class="s2">"WEEK"</span><span class="p">,</span> -</span><span id="TimeUnit-4587"><a href="#TimeUnit-4587"><span class="linenos">4587</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"YEAR"</span><span class="p">,</span> -</span><span id="TimeUnit-4588"><a href="#TimeUnit-4588"><span class="linenos">4588</span></a> <span class="p">}</span> -</span><span id="TimeUnit-4589"><a href="#TimeUnit-4589"><span class="linenos">4589</span></a> -</span><span id="TimeUnit-4590"><a href="#TimeUnit-4590"><span class="linenos">4590</span></a> <span class="n">VAR_LIKE</span> <span class="o">=</span> <span class="p">(</span><span class="n">Column</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)</span> -</span><span id="TimeUnit-4591"><a href="#TimeUnit-4591"><span class="linenos">4591</span></a> -</span><span id="TimeUnit-4592"><a href="#TimeUnit-4592"><span class="linenos">4592</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="TimeUnit-4593"><a href="#TimeUnit-4593"><span class="linenos">4593</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="TimeUnit-4594"><a href="#TimeUnit-4594"><span class="linenos">4594</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> -</span><span id="TimeUnit-4595"><a href="#TimeUnit-4595"><span class="linenos">4595</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span> -</span><span id="TimeUnit-4596"><a href="#TimeUnit-4596"><span class="linenos">4596</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="TimeUnit-4597"><a href="#TimeUnit-4597"><span class="linenos">4597</span></a> <span class="p">)</span> -</span><span id="TimeUnit-4598"><a href="#TimeUnit-4598"><span class="linenos">4598</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="TimeUnit-4599"><a href="#TimeUnit-4599"><span class="linenos">4599</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="TimeUnit-4600"><a href="#TimeUnit-4600"><span class="linenos">4600</span></a> -</span><span id="TimeUnit-4601"><a href="#TimeUnit-4601"><span class="linenos">4601</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> -</span><span id="TimeUnit-4602"><a href="#TimeUnit-4602"><span class="linenos">4602</span></a> -</span><span id="TimeUnit-4603"><a href="#TimeUnit-4603"><span class="linenos">4603</span></a> <span class="nd">@property</span> -</span><span id="TimeUnit-4604"><a href="#TimeUnit-4604"><span class="linenos">4604</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">Var</span> <span class="o">|</span> <span class="n">IntervalSpan</span><span class="p">]:</span> -</span><span id="TimeUnit-4605"><a href="#TimeUnit-4605"><span class="linenos">4605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit-4573"><a href="#TimeUnit-4573"><span class="linenos">4573</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="TimeUnit-4574"><a href="#TimeUnit-4574"><span class="linenos">4574</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> +</span><span id="TimeUnit-4575"><a href="#TimeUnit-4575"><span class="linenos">4575</span></a> +</span><span id="TimeUnit-4576"><a href="#TimeUnit-4576"><span class="linenos">4576</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="TimeUnit-4577"><a href="#TimeUnit-4577"><span class="linenos">4577</span></a> +</span><span id="TimeUnit-4578"><a href="#TimeUnit-4578"><span class="linenos">4578</span></a> <span class="n">UNABBREVIATED_UNIT_NAME</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="TimeUnit-4579"><a href="#TimeUnit-4579"><span class="linenos">4579</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"DAY"</span><span class="p">,</span> +</span><span id="TimeUnit-4580"><a href="#TimeUnit-4580"><span class="linenos">4580</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"HOUR"</span><span class="p">,</span> +</span><span id="TimeUnit-4581"><a href="#TimeUnit-4581"><span class="linenos">4581</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"MINUTE"</span><span class="p">,</span> +</span><span id="TimeUnit-4582"><a href="#TimeUnit-4582"><span class="linenos">4582</span></a> <span class="s2">"MS"</span><span class="p">:</span> <span class="s2">"MILLISECOND"</span><span class="p">,</span> +</span><span id="TimeUnit-4583"><a href="#TimeUnit-4583"><span class="linenos">4583</span></a> <span class="s2">"NS"</span><span class="p">:</span> <span class="s2">"NANOSECOND"</span><span class="p">,</span> +</span><span id="TimeUnit-4584"><a href="#TimeUnit-4584"><span class="linenos">4584</span></a> <span class="s2">"Q"</span><span class="p">:</span> <span class="s2">"QUARTER"</span><span class="p">,</span> +</span><span id="TimeUnit-4585"><a href="#TimeUnit-4585"><span class="linenos">4585</span></a> <span class="s2">"S"</span><span class="p">:</span> <span class="s2">"SECOND"</span><span class="p">,</span> +</span><span id="TimeUnit-4586"><a href="#TimeUnit-4586"><span class="linenos">4586</span></a> <span class="s2">"US"</span><span class="p">:</span> <span class="s2">"MICROSECOND"</span><span class="p">,</span> +</span><span id="TimeUnit-4587"><a href="#TimeUnit-4587"><span class="linenos">4587</span></a> <span class="s2">"W"</span><span class="p">:</span> <span class="s2">"WEEK"</span><span class="p">,</span> +</span><span id="TimeUnit-4588"><a href="#TimeUnit-4588"><span class="linenos">4588</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"YEAR"</span><span class="p">,</span> +</span><span id="TimeUnit-4589"><a href="#TimeUnit-4589"><span class="linenos">4589</span></a> <span class="p">}</span> +</span><span id="TimeUnit-4590"><a href="#TimeUnit-4590"><span class="linenos">4590</span></a> +</span><span id="TimeUnit-4591"><a href="#TimeUnit-4591"><span class="linenos">4591</span></a> <span class="n">VAR_LIKE</span> <span class="o">=</span> <span class="p">(</span><span class="n">Column</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)</span> +</span><span id="TimeUnit-4592"><a href="#TimeUnit-4592"><span class="linenos">4592</span></a> +</span><span id="TimeUnit-4593"><a href="#TimeUnit-4593"><span class="linenos">4593</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="TimeUnit-4594"><a href="#TimeUnit-4594"><span class="linenos">4594</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="TimeUnit-4595"><a href="#TimeUnit-4595"><span class="linenos">4595</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> +</span><span id="TimeUnit-4596"><a href="#TimeUnit-4596"><span class="linenos">4596</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span> +</span><span id="TimeUnit-4597"><a href="#TimeUnit-4597"><span class="linenos">4597</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="TimeUnit-4598"><a href="#TimeUnit-4598"><span class="linenos">4598</span></a> <span class="p">)</span> +</span><span id="TimeUnit-4599"><a href="#TimeUnit-4599"><span class="linenos">4599</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="TimeUnit-4600"><a href="#TimeUnit-4600"><span class="linenos">4600</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="TimeUnit-4601"><a href="#TimeUnit-4601"><span class="linenos">4601</span></a> +</span><span id="TimeUnit-4602"><a href="#TimeUnit-4602"><span class="linenos">4602</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> +</span><span id="TimeUnit-4603"><a href="#TimeUnit-4603"><span class="linenos">4603</span></a> +</span><span id="TimeUnit-4604"><a href="#TimeUnit-4604"><span class="linenos">4604</span></a> <span class="nd">@property</span> +</span><span id="TimeUnit-4605"><a href="#TimeUnit-4605"><span class="linenos">4605</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">Var</span> <span class="o">|</span> <span class="n">IntervalSpan</span><span class="p">]:</span> +</span><span id="TimeUnit-4606"><a href="#TimeUnit-4606"><span class="linenos">4606</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> </span></pre></div> @@ -64401,16 +64440,16 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#TimeUnit.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit.__init__-4592"><a href="#TimeUnit.__init__-4592"><span class="linenos">4592</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="TimeUnit.__init__-4593"><a href="#TimeUnit.__init__-4593"><span class="linenos">4593</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="TimeUnit.__init__-4594"><a href="#TimeUnit.__init__-4594"><span class="linenos">4594</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> -</span><span id="TimeUnit.__init__-4595"><a href="#TimeUnit.__init__-4595"><span class="linenos">4595</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span> -</span><span id="TimeUnit.__init__-4596"><a href="#TimeUnit.__init__-4596"><span class="linenos">4596</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="TimeUnit.__init__-4597"><a href="#TimeUnit.__init__-4597"><span class="linenos">4597</span></a> <span class="p">)</span> -</span><span id="TimeUnit.__init__-4598"><a href="#TimeUnit.__init__-4598"><span class="linenos">4598</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="TimeUnit.__init__-4599"><a href="#TimeUnit.__init__-4599"><span class="linenos">4599</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="TimeUnit.__init__-4600"><a href="#TimeUnit.__init__-4600"><span class="linenos">4600</span></a> -</span><span id="TimeUnit.__init__-4601"><a href="#TimeUnit.__init__-4601"><span class="linenos">4601</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit.__init__-4593"><a href="#TimeUnit.__init__-4593"><span class="linenos">4593</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="TimeUnit.__init__-4594"><a href="#TimeUnit.__init__-4594"><span class="linenos">4594</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="TimeUnit.__init__-4595"><a href="#TimeUnit.__init__-4595"><span class="linenos">4595</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> +</span><span id="TimeUnit.__init__-4596"><a href="#TimeUnit.__init__-4596"><span class="linenos">4596</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span> +</span><span id="TimeUnit.__init__-4597"><a href="#TimeUnit.__init__-4597"><span class="linenos">4597</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="TimeUnit.__init__-4598"><a href="#TimeUnit.__init__-4598"><span class="linenos">4598</span></a> <span class="p">)</span> +</span><span id="TimeUnit.__init__-4599"><a href="#TimeUnit.__init__-4599"><span class="linenos">4599</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="TimeUnit.__init__-4600"><a href="#TimeUnit.__init__-4600"><span class="linenos">4600</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="TimeUnit.__init__-4601"><a href="#TimeUnit.__init__-4601"><span class="linenos">4601</span></a> +</span><span id="TimeUnit.__init__-4602"><a href="#TimeUnit.__init__-4602"><span class="linenos">4602</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -64464,9 +64503,9 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#TimeUnit.unit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit.unit-4603"><a href="#TimeUnit.unit-4603"><span class="linenos">4603</span></a> <span class="nd">@property</span> -</span><span id="TimeUnit.unit-4604"><a href="#TimeUnit.unit-4604"><span class="linenos">4604</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">Var</span> <span class="o">|</span> <span class="n">IntervalSpan</span><span class="p">]:</span> -</span><span id="TimeUnit.unit-4605"><a href="#TimeUnit.unit-4605"><span class="linenos">4605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit.unit-4604"><a href="#TimeUnit.unit-4604"><span class="linenos">4604</span></a> <span class="nd">@property</span> +</span><span id="TimeUnit.unit-4605"><a href="#TimeUnit.unit-4605"><span class="linenos">4605</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">Var</span> <span class="o">|</span> <span class="n">IntervalSpan</span><span class="p">]:</span> +</span><span id="TimeUnit.unit-4606"><a href="#TimeUnit.unit-4606"><span class="linenos">4606</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> </span></pre></div> @@ -64573,14 +64612,14 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#IntervalOp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IntervalOp-4608"><a href="#IntervalOp-4608"><span class="linenos">4608</span></a><span class="k">class</span> <span class="nc">IntervalOp</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="IntervalOp-4609"><a href="#IntervalOp-4609"><span class="linenos">4609</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="IntervalOp-4610"><a href="#IntervalOp-4610"><span class="linenos">4610</span></a> -</span><span id="IntervalOp-4611"><a href="#IntervalOp-4611"><span class="linenos">4611</span></a> <span class="k">def</span> <span class="nf">interval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="IntervalOp-4612"><a href="#IntervalOp-4612"><span class="linenos">4612</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="IntervalOp-4613"><a href="#IntervalOp-4613"><span class="linenos">4613</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> -</span><span id="IntervalOp-4614"><a href="#IntervalOp-4614"><span class="linenos">4614</span></a> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> -</span><span id="IntervalOp-4615"><a href="#IntervalOp-4615"><span class="linenos">4615</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IntervalOp-4609"><a href="#IntervalOp-4609"><span class="linenos">4609</span></a><span class="k">class</span> <span class="nc">IntervalOp</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="IntervalOp-4610"><a href="#IntervalOp-4610"><span class="linenos">4610</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="IntervalOp-4611"><a href="#IntervalOp-4611"><span class="linenos">4611</span></a> +</span><span id="IntervalOp-4612"><a href="#IntervalOp-4612"><span class="linenos">4612</span></a> <span class="k">def</span> <span class="nf">interval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="IntervalOp-4613"><a href="#IntervalOp-4613"><span class="linenos">4613</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="IntervalOp-4614"><a href="#IntervalOp-4614"><span class="linenos">4614</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> +</span><span id="IntervalOp-4615"><a href="#IntervalOp-4615"><span class="linenos">4615</span></a> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> +</span><span id="IntervalOp-4616"><a href="#IntervalOp-4616"><span class="linenos">4616</span></a> <span class="p">)</span> </span></pre></div> @@ -64609,11 +64648,11 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#IntervalOp.interval"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IntervalOp.interval-4611"><a href="#IntervalOp.interval-4611"><span class="linenos">4611</span></a> <span class="k">def</span> <span class="nf">interval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="IntervalOp.interval-4612"><a href="#IntervalOp.interval-4612"><span class="linenos">4612</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="IntervalOp.interval-4613"><a href="#IntervalOp.interval-4613"><span class="linenos">4613</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> -</span><span id="IntervalOp.interval-4614"><a href="#IntervalOp.interval-4614"><span class="linenos">4614</span></a> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> -</span><span id="IntervalOp.interval-4615"><a href="#IntervalOp.interval-4615"><span class="linenos">4615</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IntervalOp.interval-4612"><a href="#IntervalOp.interval-4612"><span class="linenos">4612</span></a> <span class="k">def</span> <span class="nf">interval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="IntervalOp.interval-4613"><a href="#IntervalOp.interval-4613"><span class="linenos">4613</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="IntervalOp.interval-4614"><a href="#IntervalOp.interval-4614"><span class="linenos">4614</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> +</span><span id="IntervalOp.interval-4615"><a href="#IntervalOp.interval-4615"><span class="linenos">4615</span></a> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> +</span><span id="IntervalOp.interval-4616"><a href="#IntervalOp.interval-4616"><span class="linenos">4616</span></a> <span class="p">)</span> </span></pre></div> @@ -64727,8 +64766,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#IntervalSpan"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IntervalSpan-4621"><a href="#IntervalSpan-4621"><span class="linenos">4621</span></a><span class="k">class</span> <span class="nc">IntervalSpan</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> -</span><span id="IntervalSpan-4622"><a href="#IntervalSpan-4622"><span class="linenos">4622</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IntervalSpan-4622"><a href="#IntervalSpan-4622"><span class="linenos">4622</span></a><span class="k">class</span> <span class="nc">IntervalSpan</span><span class="p">(</span><span class="n">DataType</span><span class="p">):</span> +</span><span id="IntervalSpan-4623"><a href="#IntervalSpan-4623"><span class="linenos">4623</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -64862,8 +64901,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Interval"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Interval-4625"><a href="#Interval-4625"><span class="linenos">4625</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="Interval-4626"><a href="#Interval-4626"><span class="linenos">4626</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Interval-4626"><a href="#Interval-4626"><span class="linenos">4626</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="Interval-4627"><a href="#Interval-4627"><span class="linenos">4627</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -64988,8 +65027,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#IgnoreNulls"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IgnoreNulls-4629"><a href="#IgnoreNulls-4629"><span class="linenos">4629</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="IgnoreNulls-4630"><a href="#IgnoreNulls-4630"><span class="linenos">4630</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IgnoreNulls-4630"><a href="#IgnoreNulls-4630"><span class="linenos">4630</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="IgnoreNulls-4631"><a href="#IgnoreNulls-4631"><span class="linenos">4631</span></a> <span class="k">pass</span> </span></pre></div> @@ -65097,8 +65136,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#RespectNulls"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RespectNulls-4633"><a href="#RespectNulls-4633"><span class="linenos">4633</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="RespectNulls-4634"><a href="#RespectNulls-4634"><span class="linenos">4634</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RespectNulls-4634"><a href="#RespectNulls-4634"><span class="linenos">4634</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="RespectNulls-4635"><a href="#RespectNulls-4635"><span class="linenos">4635</span></a> <span class="k">pass</span> </span></pre></div> @@ -65206,8 +65245,8 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#HavingMax"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="HavingMax-4638"><a href="#HavingMax-4638"><span class="linenos">4638</span></a><span class="k">class</span> <span class="nc">HavingMax</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="HavingMax-4639"><a href="#HavingMax-4639"><span class="linenos">4639</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"max"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="HavingMax-4639"><a href="#HavingMax-4639"><span class="linenos">4639</span></a><span class="k">class</span> <span class="nc">HavingMax</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="HavingMax-4640"><a href="#HavingMax-4640"><span class="linenos">4640</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"max"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -65326,53 +65365,53 @@ will be compared using "structural equivalence" semantics, so e.g. array<int> != </div> <a class="headerlink" href="#Func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func-4643"><a href="#Func-4643"><span class="linenos">4643</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Func-4644"><a href="#Func-4644"><span class="linenos">4644</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Func-4645"><a href="#Func-4645"><span class="linenos">4645</span></a><span class="sd"> The base class for all function expressions.</span> -</span><span id="Func-4646"><a href="#Func-4646"><span class="linenos">4646</span></a> -</span><span id="Func-4647"><a href="#Func-4647"><span class="linenos">4647</span></a><span class="sd"> Attributes:</span> -</span><span id="Func-4648"><a href="#Func-4648"><span class="linenos">4648</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> -</span><span id="Func-4649"><a href="#Func-4649"><span class="linenos">4649</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> -</span><span id="Func-4650"><a href="#Func-4650"><span class="linenos">4650</span></a><span class="sd"> _sql_names (list): the SQL name (1st item in the list) and aliases (subsequent items) for this</span> -</span><span id="Func-4651"><a href="#Func-4651"><span class="linenos">4651</span></a><span class="sd"> function expression. These values are used to map this node to a name during parsing as</span> -</span><span id="Func-4652"><a href="#Func-4652"><span class="linenos">4652</span></a><span class="sd"> well as to provide the function's name during SQL string generation. By default the SQL</span> -</span><span id="Func-4653"><a href="#Func-4653"><span class="linenos">4653</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> -</span><span id="Func-4654"><a href="#Func-4654"><span class="linenos">4654</span></a><span class="sd"> """</span> -</span><span id="Func-4655"><a href="#Func-4655"><span class="linenos">4655</span></a> -</span><span id="Func-4656"><a href="#Func-4656"><span class="linenos">4656</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Func-4657"><a href="#Func-4657"><span class="linenos">4657</span></a> -</span><span id="Func-4658"><a href="#Func-4658"><span class="linenos">4658</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-4659"><a href="#Func-4659"><span class="linenos">4659</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> -</span><span id="Func-4660"><a href="#Func-4660"><span class="linenos">4660</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> -</span><span id="Func-4661"><a href="#Func-4661"><span class="linenos">4661</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="Func-4662"><a href="#Func-4662"><span class="linenos">4662</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> -</span><span id="Func-4663"><a href="#Func-4663"><span class="linenos">4663</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> -</span><span id="Func-4664"><a href="#Func-4664"><span class="linenos">4664</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> -</span><span id="Func-4665"><a href="#Func-4665"><span class="linenos">4665</span></a> -</span><span id="Func-4666"><a href="#Func-4666"><span class="linenos">4666</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> -</span><span id="Func-4667"><a href="#Func-4667"><span class="linenos">4667</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_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">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> -</span><span id="Func-4668"><a href="#Func-4668"><span class="linenos">4668</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Func-4669"><a href="#Func-4669"><span class="linenos">4669</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> -</span><span id="Func-4670"><a href="#Func-4670"><span class="linenos">4670</span></a> -</span><span id="Func-4671"><a href="#Func-4671"><span class="linenos">4671</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> -</span><span id="Func-4672"><a href="#Func-4672"><span class="linenos">4672</span></a> -</span><span id="Func-4673"><a href="#Func-4673"><span class="linenos">4673</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-4674"><a href="#Func-4674"><span class="linenos">4674</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func-4675"><a href="#Func-4675"><span class="linenos">4675</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> -</span><span id="Func-4676"><a href="#Func-4676"><span class="linenos">4676</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> -</span><span id="Func-4677"><a href="#Func-4677"><span class="linenos">4677</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> -</span><span id="Func-4678"><a href="#Func-4678"><span class="linenos">4678</span></a> <span class="p">)</span> -</span><span id="Func-4679"><a href="#Func-4679"><span class="linenos">4679</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> -</span><span id="Func-4680"><a href="#Func-4680"><span class="linenos">4680</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> -</span><span id="Func-4681"><a href="#Func-4681"><span class="linenos">4681</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> -</span><span id="Func-4682"><a href="#Func-4682"><span class="linenos">4682</span></a> -</span><span id="Func-4683"><a href="#Func-4683"><span class="linenos">4683</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-4684"><a href="#Func-4684"><span class="linenos">4684</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func-4685"><a href="#Func-4685"><span class="linenos">4685</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="Func-4686"><a href="#Func-4686"><span class="linenos">4686</span></a> -</span><span id="Func-4687"><a href="#Func-4687"><span class="linenos">4687</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-4688"><a href="#Func-4688"><span class="linenos">4688</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func-4689"><a href="#Func-4689"><span class="linenos">4689</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func-4644"><a href="#Func-4644"><span class="linenos">4644</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Func-4645"><a href="#Func-4645"><span class="linenos">4645</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Func-4646"><a href="#Func-4646"><span class="linenos">4646</span></a><span class="sd"> The base class for all function expressions.</span> +</span><span id="Func-4647"><a href="#Func-4647"><span class="linenos">4647</span></a> +</span><span id="Func-4648"><a href="#Func-4648"><span class="linenos">4648</span></a><span class="sd"> Attributes:</span> +</span><span id="Func-4649"><a href="#Func-4649"><span class="linenos">4649</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> +</span><span id="Func-4650"><a href="#Func-4650"><span class="linenos">4650</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> +</span><span id="Func-4651"><a href="#Func-4651"><span class="linenos">4651</span></a><span class="sd"> _sql_names (list): the SQL name (1st item in the list) and aliases (subsequent items) for this</span> +</span><span id="Func-4652"><a href="#Func-4652"><span class="linenos">4652</span></a><span class="sd"> function expression. These values are used to map this node to a name during parsing as</span> +</span><span id="Func-4653"><a href="#Func-4653"><span class="linenos">4653</span></a><span class="sd"> well as to provide the function's name during SQL string generation. By default the SQL</span> +</span><span id="Func-4654"><a href="#Func-4654"><span class="linenos">4654</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> +</span><span id="Func-4655"><a href="#Func-4655"><span class="linenos">4655</span></a><span class="sd"> """</span> +</span><span id="Func-4656"><a href="#Func-4656"><span class="linenos">4656</span></a> +</span><span id="Func-4657"><a href="#Func-4657"><span class="linenos">4657</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Func-4658"><a href="#Func-4658"><span class="linenos">4658</span></a> +</span><span id="Func-4659"><a href="#Func-4659"><span class="linenos">4659</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-4660"><a href="#Func-4660"><span class="linenos">4660</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> +</span><span id="Func-4661"><a href="#Func-4661"><span class="linenos">4661</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> +</span><span id="Func-4662"><a href="#Func-4662"><span class="linenos">4662</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="Func-4663"><a href="#Func-4663"><span class="linenos">4663</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> +</span><span id="Func-4664"><a href="#Func-4664"><span class="linenos">4664</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> +</span><span id="Func-4665"><a href="#Func-4665"><span class="linenos">4665</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> +</span><span id="Func-4666"><a href="#Func-4666"><span class="linenos">4666</span></a> +</span><span id="Func-4667"><a href="#Func-4667"><span class="linenos">4667</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> +</span><span id="Func-4668"><a href="#Func-4668"><span class="linenos">4668</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_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">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> +</span><span id="Func-4669"><a href="#Func-4669"><span class="linenos">4669</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Func-4670"><a href="#Func-4670"><span class="linenos">4670</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> +</span><span id="Func-4671"><a href="#Func-4671"><span class="linenos">4671</span></a> +</span><span id="Func-4672"><a href="#Func-4672"><span class="linenos">4672</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> +</span><span id="Func-4673"><a href="#Func-4673"><span class="linenos">4673</span></a> +</span><span id="Func-4674"><a href="#Func-4674"><span class="linenos">4674</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-4675"><a href="#Func-4675"><span class="linenos">4675</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func-4676"><a href="#Func-4676"><span class="linenos">4676</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> +</span><span id="Func-4677"><a href="#Func-4677"><span class="linenos">4677</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> +</span><span id="Func-4678"><a href="#Func-4678"><span class="linenos">4678</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> +</span><span id="Func-4679"><a href="#Func-4679"><span class="linenos">4679</span></a> <span class="p">)</span> +</span><span id="Func-4680"><a href="#Func-4680"><span class="linenos">4680</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> +</span><span id="Func-4681"><a href="#Func-4681"><span class="linenos">4681</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> +</span><span id="Func-4682"><a href="#Func-4682"><span class="linenos">4682</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> +</span><span id="Func-4683"><a href="#Func-4683"><span class="linenos">4683</span></a> +</span><span id="Func-4684"><a href="#Func-4684"><span class="linenos">4684</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-4685"><a href="#Func-4685"><span class="linenos">4685</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func-4686"><a href="#Func-4686"><span class="linenos">4686</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="Func-4687"><a href="#Func-4687"><span class="linenos">4687</span></a> +</span><span id="Func-4688"><a href="#Func-4688"><span class="linenos">4688</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-4689"><a href="#Func-4689"><span class="linenos">4689</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func-4690"><a href="#Func-4690"><span class="linenos">4690</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> </span></pre></div> @@ -65415,20 +65454,20 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.from_arg_list"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.from_arg_list-4658"><a href="#Func.from_arg_list-4658"><span class="linenos">4658</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.from_arg_list-4659"><a href="#Func.from_arg_list-4659"><span class="linenos">4659</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> -</span><span id="Func.from_arg_list-4660"><a href="#Func.from_arg_list-4660"><span class="linenos">4660</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> -</span><span id="Func.from_arg_list-4661"><a href="#Func.from_arg_list-4661"><span class="linenos">4661</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="Func.from_arg_list-4662"><a href="#Func.from_arg_list-4662"><span class="linenos">4662</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> -</span><span id="Func.from_arg_list-4663"><a href="#Func.from_arg_list-4663"><span class="linenos">4663</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> -</span><span id="Func.from_arg_list-4664"><a href="#Func.from_arg_list-4664"><span class="linenos">4664</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> -</span><span id="Func.from_arg_list-4665"><a href="#Func.from_arg_list-4665"><span class="linenos">4665</span></a> -</span><span id="Func.from_arg_list-4666"><a href="#Func.from_arg_list-4666"><span class="linenos">4666</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> -</span><span id="Func.from_arg_list-4667"><a href="#Func.from_arg_list-4667"><span class="linenos">4667</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_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">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> -</span><span id="Func.from_arg_list-4668"><a href="#Func.from_arg_list-4668"><span class="linenos">4668</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Func.from_arg_list-4669"><a href="#Func.from_arg_list-4669"><span class="linenos">4669</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> -</span><span id="Func.from_arg_list-4670"><a href="#Func.from_arg_list-4670"><span class="linenos">4670</span></a> -</span><span id="Func.from_arg_list-4671"><a href="#Func.from_arg_list-4671"><span class="linenos">4671</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.from_arg_list-4659"><a href="#Func.from_arg_list-4659"><span class="linenos">4659</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.from_arg_list-4660"><a href="#Func.from_arg_list-4660"><span class="linenos">4660</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> +</span><span id="Func.from_arg_list-4661"><a href="#Func.from_arg_list-4661"><span class="linenos">4661</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> +</span><span id="Func.from_arg_list-4662"><a href="#Func.from_arg_list-4662"><span class="linenos">4662</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="Func.from_arg_list-4663"><a href="#Func.from_arg_list-4663"><span class="linenos">4663</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> +</span><span id="Func.from_arg_list-4664"><a href="#Func.from_arg_list-4664"><span class="linenos">4664</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> +</span><span id="Func.from_arg_list-4665"><a href="#Func.from_arg_list-4665"><span class="linenos">4665</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> +</span><span id="Func.from_arg_list-4666"><a href="#Func.from_arg_list-4666"><span class="linenos">4666</span></a> +</span><span id="Func.from_arg_list-4667"><a href="#Func.from_arg_list-4667"><span class="linenos">4667</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> +</span><span id="Func.from_arg_list-4668"><a href="#Func.from_arg_list-4668"><span class="linenos">4668</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_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">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> +</span><span id="Func.from_arg_list-4669"><a href="#Func.from_arg_list-4669"><span class="linenos">4669</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Func.from_arg_list-4670"><a href="#Func.from_arg_list-4670"><span class="linenos">4670</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> +</span><span id="Func.from_arg_list-4671"><a href="#Func.from_arg_list-4671"><span class="linenos">4671</span></a> +</span><span id="Func.from_arg_list-4672"><a href="#Func.from_arg_list-4672"><span class="linenos">4672</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> </span></pre></div> @@ -65447,15 +65486,15 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.sql_names"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_names-4673"><a href="#Func.sql_names-4673"><span class="linenos">4673</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.sql_names-4674"><a href="#Func.sql_names-4674"><span class="linenos">4674</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func.sql_names-4675"><a href="#Func.sql_names-4675"><span class="linenos">4675</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> -</span><span id="Func.sql_names-4676"><a href="#Func.sql_names-4676"><span class="linenos">4676</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> -</span><span id="Func.sql_names-4677"><a href="#Func.sql_names-4677"><span class="linenos">4677</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> -</span><span id="Func.sql_names-4678"><a href="#Func.sql_names-4678"><span class="linenos">4678</span></a> <span class="p">)</span> -</span><span id="Func.sql_names-4679"><a href="#Func.sql_names-4679"><span class="linenos">4679</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> -</span><span id="Func.sql_names-4680"><a href="#Func.sql_names-4680"><span class="linenos">4680</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> -</span><span id="Func.sql_names-4681"><a href="#Func.sql_names-4681"><span class="linenos">4681</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_names-4674"><a href="#Func.sql_names-4674"><span class="linenos">4674</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.sql_names-4675"><a href="#Func.sql_names-4675"><span class="linenos">4675</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func.sql_names-4676"><a href="#Func.sql_names-4676"><span class="linenos">4676</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> +</span><span id="Func.sql_names-4677"><a href="#Func.sql_names-4677"><span class="linenos">4677</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> +</span><span id="Func.sql_names-4678"><a href="#Func.sql_names-4678"><span class="linenos">4678</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> +</span><span id="Func.sql_names-4679"><a href="#Func.sql_names-4679"><span class="linenos">4679</span></a> <span class="p">)</span> +</span><span id="Func.sql_names-4680"><a href="#Func.sql_names-4680"><span class="linenos">4680</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> +</span><span id="Func.sql_names-4681"><a href="#Func.sql_names-4681"><span class="linenos">4681</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> +</span><span id="Func.sql_names-4682"><a href="#Func.sql_names-4682"><span class="linenos">4682</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> </span></pre></div> @@ -65474,9 +65513,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.sql_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_name-4683"><a href="#Func.sql_name-4683"><span class="linenos">4683</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.sql_name-4684"><a href="#Func.sql_name-4684"><span class="linenos">4684</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func.sql_name-4685"><a href="#Func.sql_name-4685"><span class="linenos">4685</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_name-4684"><a href="#Func.sql_name-4684"><span class="linenos">4684</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.sql_name-4685"><a href="#Func.sql_name-4685"><span class="linenos">4685</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func.sql_name-4686"><a href="#Func.sql_name-4686"><span class="linenos">4686</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> </span></pre></div> @@ -65495,9 +65534,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.default_parser_mappings"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.default_parser_mappings-4687"><a href="#Func.default_parser_mappings-4687"><span class="linenos">4687</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.default_parser_mappings-4688"><a href="#Func.default_parser_mappings-4688"><span class="linenos">4688</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func.default_parser_mappings-4689"><a href="#Func.default_parser_mappings-4689"><span class="linenos">4689</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.default_parser_mappings-4688"><a href="#Func.default_parser_mappings-4688"><span class="linenos">4688</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.default_parser_mappings-4689"><a href="#Func.default_parser_mappings-4689"><span class="linenos">4689</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func.default_parser_mappings-4690"><a href="#Func.default_parser_mappings-4690"><span class="linenos">4690</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> </span></pre></div> @@ -65606,8 +65645,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#AggFunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AggFunc-4692"><a href="#AggFunc-4692"><span class="linenos">4692</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="AggFunc-4693"><a href="#AggFunc-4693"><span class="linenos">4693</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AggFunc-4693"><a href="#AggFunc-4693"><span class="linenos">4693</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="AggFunc-4694"><a href="#AggFunc-4694"><span class="linenos">4694</span></a> <span class="k">pass</span> </span></pre></div> @@ -65723,8 +65762,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ParameterizedAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ParameterizedAgg-4696"><a href="#ParameterizedAgg-4696"><span class="linenos">4696</span></a><span class="k">class</span> <span class="nc">ParameterizedAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ParameterizedAgg-4697"><a href="#ParameterizedAgg-4697"><span class="linenos">4697</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ParameterizedAgg-4697"><a href="#ParameterizedAgg-4697"><span class="linenos">4697</span></a><span class="k">class</span> <span class="nc">ParameterizedAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ParameterizedAgg-4698"><a href="#ParameterizedAgg-4698"><span class="linenos">4698</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -65851,8 +65890,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Abs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Abs-4700"><a href="#Abs-4700"><span class="linenos">4700</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Abs-4701"><a href="#Abs-4701"><span class="linenos">4701</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Abs-4701"><a href="#Abs-4701"><span class="linenos">4701</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Abs-4702"><a href="#Abs-4702"><span class="linenos">4702</span></a> <span class="k">pass</span> </span></pre></div> @@ -65968,9 +66007,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArgMax"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArgMax-4704"><a href="#ArgMax-4704"><span class="linenos">4704</span></a><span class="k">class</span> <span class="nc">ArgMax</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArgMax-4705"><a href="#ArgMax-4705"><span class="linenos">4705</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ArgMax-4706"><a href="#ArgMax-4706"><span class="linenos">4706</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MAX"</span><span class="p">,</span> <span class="s2">"ARGMAX"</span><span class="p">,</span> <span class="s2">"MAX_BY"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArgMax-4705"><a href="#ArgMax-4705"><span class="linenos">4705</span></a><span class="k">class</span> <span class="nc">ArgMax</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArgMax-4706"><a href="#ArgMax-4706"><span class="linenos">4706</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ArgMax-4707"><a href="#ArgMax-4707"><span class="linenos">4707</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MAX"</span><span class="p">,</span> <span class="s2">"ARGMAX"</span><span class="p">,</span> <span class="s2">"MAX_BY"</span><span class="p">]</span> </span></pre></div> @@ -66097,9 +66136,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArgMin"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArgMin-4709"><a href="#ArgMin-4709"><span class="linenos">4709</span></a><span class="k">class</span> <span class="nc">ArgMin</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArgMin-4710"><a href="#ArgMin-4710"><span class="linenos">4710</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ArgMin-4711"><a href="#ArgMin-4711"><span class="linenos">4711</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MIN"</span><span class="p">,</span> <span class="s2">"ARGMIN"</span><span class="p">,</span> <span class="s2">"MIN_BY"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArgMin-4710"><a href="#ArgMin-4710"><span class="linenos">4710</span></a><span class="k">class</span> <span class="nc">ArgMin</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArgMin-4711"><a href="#ArgMin-4711"><span class="linenos">4711</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ArgMin-4712"><a href="#ArgMin-4712"><span class="linenos">4712</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARG_MIN"</span><span class="p">,</span> <span class="s2">"ARGMIN"</span><span class="p">,</span> <span class="s2">"MIN_BY"</span><span class="p">]</span> </span></pre></div> @@ -66226,8 +66265,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ApproxTopK"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxTopK-4714"><a href="#ApproxTopK-4714"><span class="linenos">4714</span></a><span class="k">class</span> <span class="nc">ApproxTopK</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ApproxTopK-4715"><a href="#ApproxTopK-4715"><span class="linenos">4715</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"counters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxTopK-4715"><a href="#ApproxTopK-4715"><span class="linenos">4715</span></a><span class="k">class</span> <span class="nc">ApproxTopK</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ApproxTopK-4716"><a href="#ApproxTopK-4716"><span class="linenos">4716</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"counters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -66354,8 +66393,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Flatten"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Flatten-4718"><a href="#Flatten-4718"><span class="linenos">4718</span></a><span class="k">class</span> <span class="nc">Flatten</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Flatten-4719"><a href="#Flatten-4719"><span class="linenos">4719</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Flatten-4719"><a href="#Flatten-4719"><span class="linenos">4719</span></a><span class="k">class</span> <span class="nc">Flatten</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Flatten-4720"><a href="#Flatten-4720"><span class="linenos">4720</span></a> <span class="k">pass</span> </span></pre></div> @@ -66471,8 +66510,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Transform"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Transform-4723"><a href="#Transform-4723"><span class="linenos">4723</span></a><span class="k">class</span> <span class="nc">Transform</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Transform-4724"><a href="#Transform-4724"><span class="linenos">4724</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Transform-4724"><a href="#Transform-4724"><span class="linenos">4724</span></a><span class="k">class</span> <span class="nc">Transform</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Transform-4725"><a href="#Transform-4725"><span class="linenos">4725</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -66599,13 +66638,13 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Anonymous"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Anonymous-4727"><a href="#Anonymous-4727"><span class="linenos">4727</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Anonymous-4728"><a href="#Anonymous-4728"><span class="linenos">4728</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Anonymous-4729"><a href="#Anonymous-4729"><span class="linenos">4729</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Anonymous-4730"><a href="#Anonymous-4730"><span class="linenos">4730</span></a> -</span><span id="Anonymous-4731"><a href="#Anonymous-4731"><span class="linenos">4731</span></a> <span class="nd">@property</span> -</span><span id="Anonymous-4732"><a href="#Anonymous-4732"><span class="linenos">4732</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Anonymous-4733"><a href="#Anonymous-4733"><span class="linenos">4733</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Anonymous-4728"><a href="#Anonymous-4728"><span class="linenos">4728</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Anonymous-4729"><a href="#Anonymous-4729"><span class="linenos">4729</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Anonymous-4730"><a href="#Anonymous-4730"><span class="linenos">4730</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Anonymous-4731"><a href="#Anonymous-4731"><span class="linenos">4731</span></a> +</span><span id="Anonymous-4732"><a href="#Anonymous-4732"><span class="linenos">4732</span></a> <span class="nd">@property</span> +</span><span id="Anonymous-4733"><a href="#Anonymous-4733"><span class="linenos">4733</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Anonymous-4734"><a href="#Anonymous-4734"><span class="linenos">4734</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -66644,9 +66683,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Anonymous.name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Anonymous.name-4731"><a href="#Anonymous.name-4731"><span class="linenos">4731</span></a> <span class="nd">@property</span> -</span><span id="Anonymous.name-4732"><a href="#Anonymous.name-4732"><span class="linenos">4732</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Anonymous.name-4733"><a href="#Anonymous.name-4733"><span class="linenos">4733</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Anonymous.name-4732"><a href="#Anonymous.name-4732"><span class="linenos">4732</span></a> <span class="nd">@property</span> +</span><span id="Anonymous.name-4733"><a href="#Anonymous.name-4733"><span class="linenos">4733</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Anonymous.name-4734"><a href="#Anonymous.name-4734"><span class="linenos">4734</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -66760,9 +66799,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#AnonymousAggFunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AnonymousAggFunc-4736"><a href="#AnonymousAggFunc-4736"><span class="linenos">4736</span></a><span class="k">class</span> <span class="nc">AnonymousAggFunc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="AnonymousAggFunc-4737"><a href="#AnonymousAggFunc-4737"><span class="linenos">4737</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="AnonymousAggFunc-4738"><a href="#AnonymousAggFunc-4738"><span class="linenos">4738</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AnonymousAggFunc-4737"><a href="#AnonymousAggFunc-4737"><span class="linenos">4737</span></a><span class="k">class</span> <span class="nc">AnonymousAggFunc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="AnonymousAggFunc-4738"><a href="#AnonymousAggFunc-4738"><span class="linenos">4738</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="AnonymousAggFunc-4739"><a href="#AnonymousAggFunc-4739"><span class="linenos">4739</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -66900,8 +66939,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#CombinedAggFunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CombinedAggFunc-4742"><a href="#CombinedAggFunc-4742"><span class="linenos">4742</span></a><span class="k">class</span> <span class="nc">CombinedAggFunc</span><span class="p">(</span><span class="n">AnonymousAggFunc</span><span class="p">):</span> -</span><span id="CombinedAggFunc-4743"><a href="#CombinedAggFunc-4743"><span class="linenos">4743</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CombinedAggFunc-4743"><a href="#CombinedAggFunc-4743"><span class="linenos">4743</span></a><span class="k">class</span> <span class="nc">CombinedAggFunc</span><span class="p">(</span><span class="n">AnonymousAggFunc</span><span class="p">):</span> +</span><span id="CombinedAggFunc-4744"><a href="#CombinedAggFunc-4744"><span class="linenos">4744</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -67031,8 +67070,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#CombinedParameterizedAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CombinedParameterizedAgg-4746"><a href="#CombinedParameterizedAgg-4746"><span class="linenos">4746</span></a><span class="k">class</span> <span class="nc">CombinedParameterizedAgg</span><span class="p">(</span><span class="n">ParameterizedAgg</span><span class="p">):</span> -</span><span id="CombinedParameterizedAgg-4747"><a href="#CombinedParameterizedAgg-4747"><span class="linenos">4747</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CombinedParameterizedAgg-4747"><a href="#CombinedParameterizedAgg-4747"><span class="linenos">4747</span></a><span class="k">class</span> <span class="nc">CombinedParameterizedAgg</span><span class="p">(</span><span class="n">ParameterizedAgg</span><span class="p">):</span> +</span><span id="CombinedParameterizedAgg-4748"><a href="#CombinedParameterizedAgg-4748"><span class="linenos">4748</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"parts"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -67159,9 +67198,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Hll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Hll-4752"><a href="#Hll-4752"><span class="linenos">4752</span></a><span class="k">class</span> <span class="nc">Hll</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Hll-4753"><a href="#Hll-4753"><span class="linenos">4753</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Hll-4754"><a href="#Hll-4754"><span class="linenos">4754</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Hll-4753"><a href="#Hll-4753"><span class="linenos">4753</span></a><span class="k">class</span> <span class="nc">Hll</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Hll-4754"><a href="#Hll-4754"><span class="linenos">4754</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Hll-4755"><a href="#Hll-4755"><span class="linenos">4755</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -67299,9 +67338,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ApproxDistinct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxDistinct-4757"><a href="#ApproxDistinct-4757"><span class="linenos">4757</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ApproxDistinct-4758"><a href="#ApproxDistinct-4758"><span class="linenos">4758</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ApproxDistinct-4759"><a href="#ApproxDistinct-4759"><span class="linenos">4759</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"APPROX_DISTINCT"</span><span class="p">,</span> <span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxDistinct-4758"><a href="#ApproxDistinct-4758"><span class="linenos">4758</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ApproxDistinct-4759"><a href="#ApproxDistinct-4759"><span class="linenos">4759</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ApproxDistinct-4760"><a href="#ApproxDistinct-4760"><span class="linenos">4760</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"APPROX_DISTINCT"</span><span class="p">,</span> <span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">]</span> </span></pre></div> @@ -67428,9 +67467,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Array"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Array-4762"><a href="#Array-4762"><span class="linenos">4762</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Array-4763"><a href="#Array-4763"><span class="linenos">4763</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Array-4764"><a href="#Array-4764"><span class="linenos">4764</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Array-4763"><a href="#Array-4763"><span class="linenos">4763</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Array-4764"><a href="#Array-4764"><span class="linenos">4764</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Array-4765"><a href="#Array-4765"><span class="linenos">4765</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -67568,8 +67607,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ToArray"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ToArray-4768"><a href="#ToArray-4768"><span class="linenos">4768</span></a><span class="k">class</span> <span class="nc">ToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ToArray-4769"><a href="#ToArray-4769"><span class="linenos">4769</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ToArray-4769"><a href="#ToArray-4769"><span class="linenos">4769</span></a><span class="k">class</span> <span class="nc">ToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ToArray-4770"><a href="#ToArray-4770"><span class="linenos">4770</span></a> <span class="k">pass</span> </span></pre></div> @@ -67674,6 +67713,146 @@ name is set to the expression's class name transformed to snake case.</li> </dl> </div> </section> + <section id="List"> + <input id="List-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">List</span><wbr>(<span class="base"><a href="#Func">Func</a></span>): + + <label class="view-source-button" for="List-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#List"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="List-4774"><a href="#List-4774"><span class="linenos">4774</span></a><span class="k">class</span> <span class="nc">List</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="List-4775"><a href="#List-4775"><span class="linenos">4775</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="List-4776"><a href="#List-4776"><span class="linenos">4776</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span></pre></div> + + + + + <div id="List.arg_types" class="classattr"> + <div class="attr variable"> + <span class="name">arg_types</span> = +<span class="default_value">{'expressions': False}</span> + + + </div> + <a class="headerlink" href="#List.arg_types"></a> + + + + </div> + <div id="List.is_var_len_args" class="classattr"> + <div class="attr variable"> + <span class="name">is_var_len_args</span> = +<span class="default_value">True</span> + + + </div> + <a class="headerlink" href="#List.is_var_len_args"></a> + + + + </div> + <div id="List.key" class="classattr"> + <div class="attr variable"> + <span class="name">key</span> = +<span class="default_value">'list'</span> + + + </div> + <a class="headerlink" href="#List.key"></a> + + + + </div> + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="List.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="List.args" class="variable"><a href="#Expression.args">args</a></dd> + <dd id="List.parent" class="variable"><a href="#Expression.parent">parent</a></dd> + <dd id="List.arg_key" class="variable"><a href="#Expression.arg_key">arg_key</a></dd> + <dd id="List.index" class="variable"><a href="#Expression.index">index</a></dd> + <dd id="List.comments" class="variable"><a href="#Expression.comments">comments</a></dd> + <dd id="List.hashable_args" class="variable"><a href="#Expression.hashable_args">hashable_args</a></dd> + <dd id="List.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="List.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="List.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="List.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="List.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="List.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="List.is_negative" class="variable"><a href="#Expression.is_negative">is_negative</a></dd> + <dd id="List.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="List.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="List.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="List.alias_column_names" class="variable"><a href="#Expression.alias_column_names">alias_column_names</a></dd> + <dd id="List.name" class="variable"><a href="#Expression.name">name</a></dd> + <dd id="List.alias_or_name" class="variable"><a href="#Expression.alias_or_name">alias_or_name</a></dd> + <dd id="List.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="List.type" class="variable"><a href="#Expression.type">type</a></dd> + <dd id="List.is_type" class="function"><a href="#Expression.is_type">is_type</a></dd> + <dd id="List.is_leaf" class="function"><a href="#Expression.is_leaf">is_leaf</a></dd> + <dd id="List.meta" class="variable"><a href="#Expression.meta">meta</a></dd> + <dd id="List.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="List.add_comments" class="function"><a href="#Expression.add_comments">add_comments</a></dd> + <dd id="List.pop_comments" class="function"><a href="#Expression.pop_comments">pop_comments</a></dd> + <dd id="List.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="List.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="List.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="List.iter_expressions" class="function"><a href="#Expression.iter_expressions">iter_expressions</a></dd> + <dd id="List.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="List.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="List.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="List.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="List.same_parent" class="variable"><a href="#Expression.same_parent">same_parent</a></dd> + <dd id="List.root" class="function"><a href="#Expression.root">root</a></dd> + <dd id="List.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="List.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="List.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="List.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="List.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="List.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="List.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="List.to_s" class="function"><a href="#Expression.to_s">to_s</a></dd> + <dd id="List.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="List.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="List.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="List.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="List.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="List.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="List.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="List.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="List.and_" class="function"><a href="#Expression.and_">and_</a></dd> + <dd id="List.or_" class="function"><a href="#Expression.or_">or_</a></dd> + <dd id="List.not_" class="function"><a href="#Expression.not_">not_</a></dd> + <dd id="List.as_" class="function"><a href="#Expression.as_">as_</a></dd> + <dd id="List.isin" class="function"><a href="#Expression.isin">isin</a></dd> + <dd id="List.between" class="function"><a href="#Expression.between">between</a></dd> + <dd id="List.is_" class="function"><a href="#Expression.is_">is_</a></dd> + <dd id="List.like" class="function"><a href="#Expression.like">like</a></dd> + <dd id="List.ilike" class="function"><a href="#Expression.ilike">ilike</a></dd> + <dd id="List.eq" class="function"><a href="#Expression.eq">eq</a></dd> + <dd id="List.neq" class="function"><a href="#Expression.neq">neq</a></dd> + <dd id="List.rlike" class="function"><a href="#Expression.rlike">rlike</a></dd> + <dd id="List.div" class="function"><a href="#Expression.div">div</a></dd> + <dd id="List.asc" class="function"><a href="#Expression.asc">asc</a></dd> + <dd id="List.desc" class="function"><a href="#Expression.desc">desc</a></dd> + + </div> + <div><dt><a href="#Func">Func</a></dt> + <dd id="List.from_arg_list" class="function"><a href="#Func.from_arg_list">from_arg_list</a></dd> + <dd id="List.sql_names" class="function"><a href="#Func.sql_names">sql_names</a></dd> + <dd id="List.sql_name" class="function"><a href="#Func.sql_name">sql_name</a></dd> + <dd id="List.default_parser_mappings" class="function"><a href="#Func.default_parser_mappings">default_parser_mappings</a></dd> + + </div> + </dl> + </div> + </section> <section id="ToChar"> <input id="ToChar-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr class"> @@ -67685,8 +67864,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ToChar"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ToChar-4774"><a href="#ToChar-4774"><span class="linenos">4774</span></a><span class="k">class</span> <span class="nc">ToChar</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ToChar-4775"><a href="#ToChar-4775"><span class="linenos">4775</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ToChar-4781"><a href="#ToChar-4781"><span class="linenos">4781</span></a><span class="k">class</span> <span class="nc">ToChar</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ToChar-4782"><a href="#ToChar-4782"><span class="linenos">4782</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -67813,14 +67992,14 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ToNumber"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ToNumber-4780"><a href="#ToNumber-4780"><span class="linenos">4780</span></a><span class="k">class</span> <span class="nc">ToNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ToNumber-4781"><a href="#ToNumber-4781"><span class="linenos">4781</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="ToNumber-4782"><a href="#ToNumber-4782"><span class="linenos">4782</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="ToNumber-4783"><a href="#ToNumber-4783"><span class="linenos">4783</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ToNumber-4784"><a href="#ToNumber-4784"><span class="linenos">4784</span></a> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ToNumber-4785"><a href="#ToNumber-4785"><span class="linenos">4785</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ToNumber-4786"><a href="#ToNumber-4786"><span class="linenos">4786</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ToNumber-4787"><a href="#ToNumber-4787"><span class="linenos">4787</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ToNumber-4787"><a href="#ToNumber-4787"><span class="linenos">4787</span></a><span class="k">class</span> <span class="nc">ToNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ToNumber-4788"><a href="#ToNumber-4788"><span class="linenos">4788</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="ToNumber-4789"><a href="#ToNumber-4789"><span class="linenos">4789</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="ToNumber-4790"><a href="#ToNumber-4790"><span class="linenos">4790</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ToNumber-4791"><a href="#ToNumber-4791"><span class="linenos">4791</span></a> <span class="s2">"nlsparam"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ToNumber-4792"><a href="#ToNumber-4792"><span class="linenos">4792</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ToNumber-4793"><a href="#ToNumber-4793"><span class="linenos">4793</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ToNumber-4794"><a href="#ToNumber-4794"><span class="linenos">4794</span></a> <span class="p">}</span> </span></pre></div> @@ -67947,8 +68126,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Convert"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Convert-4791"><a href="#Convert-4791"><span class="linenos">4791</span></a><span class="k">class</span> <span class="nc">Convert</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Convert-4792"><a href="#Convert-4792"><span class="linenos">4792</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"style"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Convert-4798"><a href="#Convert-4798"><span class="linenos">4798</span></a><span class="k">class</span> <span class="nc">Convert</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Convert-4799"><a href="#Convert-4799"><span class="linenos">4799</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"style"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -68075,8 +68254,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#GenerateSeries"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GenerateSeries-4795"><a href="#GenerateSeries-4795"><span class="linenos">4795</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="GenerateSeries-4796"><a href="#GenerateSeries-4796"><span class="linenos">4796</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"is_end_exclusive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GenerateSeries-4802"><a href="#GenerateSeries-4802"><span class="linenos">4802</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="GenerateSeries-4803"><a href="#GenerateSeries-4803"><span class="linenos">4803</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"is_end_exclusive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -68203,8 +68382,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAgg-4799"><a href="#ArrayAgg-4799"><span class="linenos">4799</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArrayAgg-4800"><a href="#ArrayAgg-4800"><span class="linenos">4800</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAgg-4806"><a href="#ArrayAgg-4806"><span class="linenos">4806</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArrayAgg-4807"><a href="#ArrayAgg-4807"><span class="linenos">4807</span></a> <span class="k">pass</span> </span></pre></div> @@ -68320,8 +68499,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayUniqueAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayUniqueAgg-4803"><a href="#ArrayUniqueAgg-4803"><span class="linenos">4803</span></a><span class="k">class</span> <span class="nc">ArrayUniqueAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArrayUniqueAgg-4804"><a href="#ArrayUniqueAgg-4804"><span class="linenos">4804</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayUniqueAgg-4810"><a href="#ArrayUniqueAgg-4810"><span class="linenos">4810</span></a><span class="k">class</span> <span class="nc">ArrayUniqueAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArrayUniqueAgg-4811"><a href="#ArrayUniqueAgg-4811"><span class="linenos">4811</span></a> <span class="k">pass</span> </span></pre></div> @@ -68437,8 +68616,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayAll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAll-4807"><a href="#ArrayAll-4807"><span class="linenos">4807</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayAll-4808"><a href="#ArrayAll-4808"><span class="linenos">4808</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAll-4814"><a href="#ArrayAll-4814"><span class="linenos">4814</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayAll-4815"><a href="#ArrayAll-4815"><span class="linenos">4815</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -68565,8 +68744,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayAny"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAny-4812"><a href="#ArrayAny-4812"><span class="linenos">4812</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayAny-4813"><a href="#ArrayAny-4813"><span class="linenos">4813</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAny-4819"><a href="#ArrayAny-4819"><span class="linenos">4819</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayAny-4820"><a href="#ArrayAny-4820"><span class="linenos">4820</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -68693,10 +68872,10 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayConcat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayConcat-4816"><a href="#ArrayConcat-4816"><span class="linenos">4816</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayConcat-4817"><a href="#ArrayConcat-4817"><span class="linenos">4817</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONCAT"</span><span class="p">,</span> <span class="s2">"ARRAY_CAT"</span><span class="p">]</span> -</span><span id="ArrayConcat-4818"><a href="#ArrayConcat-4818"><span class="linenos">4818</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ArrayConcat-4819"><a href="#ArrayConcat-4819"><span class="linenos">4819</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayConcat-4823"><a href="#ArrayConcat-4823"><span class="linenos">4823</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayConcat-4824"><a href="#ArrayConcat-4824"><span class="linenos">4824</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONCAT"</span><span class="p">,</span> <span class="s2">"ARRAY_CAT"</span><span class="p">]</span> +</span><span id="ArrayConcat-4825"><a href="#ArrayConcat-4825"><span class="linenos">4825</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ArrayConcat-4826"><a href="#ArrayConcat-4826"><span class="linenos">4826</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -68834,9 +69013,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayConstructCompact"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayConstructCompact-4822"><a href="#ArrayConstructCompact-4822"><span class="linenos">4822</span></a><span class="k">class</span> <span class="nc">ArrayConstructCompact</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayConstructCompact-4823"><a href="#ArrayConstructCompact-4823"><span class="linenos">4823</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="ArrayConstructCompact-4824"><a href="#ArrayConstructCompact-4824"><span class="linenos">4824</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayConstructCompact-4829"><a href="#ArrayConstructCompact-4829"><span class="linenos">4829</span></a><span class="k">class</span> <span class="nc">ArrayConstructCompact</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayConstructCompact-4830"><a href="#ArrayConstructCompact-4830"><span class="linenos">4830</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="ArrayConstructCompact-4831"><a href="#ArrayConstructCompact-4831"><span class="linenos">4831</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -68974,8 +69153,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayContains"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayContains-4827"><a href="#ArrayContains-4827"><span class="linenos">4827</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayContains-4828"><a href="#ArrayContains-4828"><span class="linenos">4828</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayContains-4834"><a href="#ArrayContains-4834"><span class="linenos">4834</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayContains-4835"><a href="#ArrayContains-4835"><span class="linenos">4835</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS"</span><span class="p">]</span> </span></pre></div> @@ -69096,8 +69275,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayContainsAll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayContainsAll-4831"><a href="#ArrayContainsAll-4831"><span class="linenos">4831</span></a><span class="k">class</span> <span class="nc">ArrayContainsAll</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayContainsAll-4832"><a href="#ArrayContainsAll-4832"><span class="linenos">4832</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS_ALL"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS_ALL"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayContainsAll-4838"><a href="#ArrayContainsAll-4838"><span class="linenos">4838</span></a><span class="k">class</span> <span class="nc">ArrayContainsAll</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayContainsAll-4839"><a href="#ArrayContainsAll-4839"><span class="linenos">4839</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_CONTAINS_ALL"</span><span class="p">,</span> <span class="s2">"ARRAY_HAS_ALL"</span><span class="p">]</span> </span></pre></div> @@ -69218,9 +69397,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayFilter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayFilter-4835"><a href="#ArrayFilter-4835"><span class="linenos">4835</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayFilter-4836"><a href="#ArrayFilter-4836"><span class="linenos">4836</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="ArrayFilter-4837"><a href="#ArrayFilter-4837"><span class="linenos">4837</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayFilter-4842"><a href="#ArrayFilter-4842"><span class="linenos">4842</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayFilter-4843"><a href="#ArrayFilter-4843"><span class="linenos">4843</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="ArrayFilter-4844"><a href="#ArrayFilter-4844"><span class="linenos">4844</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> </span></pre></div> @@ -69347,9 +69526,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayToString"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayToString-4840"><a href="#ArrayToString-4840"><span class="linenos">4840</span></a><span class="k">class</span> <span class="nc">ArrayToString</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayToString-4841"><a href="#ArrayToString-4841"><span class="linenos">4841</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ArrayToString-4842"><a href="#ArrayToString-4842"><span class="linenos">4842</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_TO_STRING"</span><span class="p">,</span> <span class="s2">"ARRAY_JOIN"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayToString-4847"><a href="#ArrayToString-4847"><span class="linenos">4847</span></a><span class="k">class</span> <span class="nc">ArrayToString</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayToString-4848"><a href="#ArrayToString-4848"><span class="linenos">4848</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ArrayToString-4849"><a href="#ArrayToString-4849"><span class="linenos">4849</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_TO_STRING"</span><span class="p">,</span> <span class="s2">"ARRAY_JOIN"</span><span class="p">]</span> </span></pre></div> @@ -69476,9 +69655,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#StringToArray"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StringToArray-4845"><a href="#StringToArray-4845"><span class="linenos">4845</span></a><span class="k">class</span> <span class="nc">StringToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StringToArray-4846"><a href="#StringToArray-4846"><span class="linenos">4846</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="StringToArray-4847"><a href="#StringToArray-4847"><span class="linenos">4847</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STRING_TO_ARRAY"</span><span class="p">,</span> <span class="s2">"SPLIT_BY_STRING"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StringToArray-4852"><a href="#StringToArray-4852"><span class="linenos">4852</span></a><span class="k">class</span> <span class="nc">StringToArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StringToArray-4853"><a href="#StringToArray-4853"><span class="linenos">4853</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="StringToArray-4854"><a href="#StringToArray-4854"><span class="linenos">4854</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STRING_TO_ARRAY"</span><span class="p">,</span> <span class="s2">"SPLIT_BY_STRING"</span><span class="p">]</span> </span></pre></div> @@ -69605,8 +69784,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayOverlaps"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayOverlaps-4850"><a href="#ArrayOverlaps-4850"><span class="linenos">4850</span></a><span class="k">class</span> <span class="nc">ArrayOverlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayOverlaps-4851"><a href="#ArrayOverlaps-4851"><span class="linenos">4851</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayOverlaps-4857"><a href="#ArrayOverlaps-4857"><span class="linenos">4857</span></a><span class="k">class</span> <span class="nc">ArrayOverlaps</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayOverlaps-4858"><a href="#ArrayOverlaps-4858"><span class="linenos">4858</span></a> <span class="k">pass</span> </span></pre></div> @@ -69727,9 +69906,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArraySize"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySize-4854"><a href="#ArraySize-4854"><span class="linenos">4854</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArraySize-4855"><a href="#ArraySize-4855"><span class="linenos">4855</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ArraySize-4856"><a href="#ArraySize-4856"><span class="linenos">4856</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_SIZE"</span><span class="p">,</span> <span class="s2">"ARRAY_LENGTH"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySize-4861"><a href="#ArraySize-4861"><span class="linenos">4861</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArraySize-4862"><a href="#ArraySize-4862"><span class="linenos">4862</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ArraySize-4863"><a href="#ArraySize-4863"><span class="linenos">4863</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"ARRAY_SIZE"</span><span class="p">,</span> <span class="s2">"ARRAY_LENGTH"</span><span class="p">]</span> </span></pre></div> @@ -69856,8 +70035,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArraySort"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySort-4859"><a href="#ArraySort-4859"><span class="linenos">4859</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArraySort-4860"><a href="#ArraySort-4860"><span class="linenos">4860</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySort-4866"><a href="#ArraySort-4866"><span class="linenos">4866</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArraySort-4867"><a href="#ArraySort-4867"><span class="linenos">4867</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -69984,8 +70163,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArraySum"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySum-4863"><a href="#ArraySum-4863"><span class="linenos">4863</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArraySum-4864"><a href="#ArraySum-4864"><span class="linenos">4864</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySum-4870"><a href="#ArraySum-4870"><span class="linenos">4870</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArraySum-4871"><a href="#ArraySum-4871"><span class="linenos">4871</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -70112,8 +70291,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayUnionAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayUnionAgg-4867"><a href="#ArrayUnionAgg-4867"><span class="linenos">4867</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArrayUnionAgg-4868"><a href="#ArrayUnionAgg-4868"><span class="linenos">4868</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayUnionAgg-4874"><a href="#ArrayUnionAgg-4874"><span class="linenos">4874</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArrayUnionAgg-4875"><a href="#ArrayUnionAgg-4875"><span class="linenos">4875</span></a> <span class="k">pass</span> </span></pre></div> @@ -70229,8 +70408,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Avg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Avg-4871"><a href="#Avg-4871"><span class="linenos">4871</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Avg-4872"><a href="#Avg-4872"><span class="linenos">4872</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Avg-4878"><a href="#Avg-4878"><span class="linenos">4878</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Avg-4879"><a href="#Avg-4879"><span class="linenos">4879</span></a> <span class="k">pass</span> </span></pre></div> @@ -70346,8 +70525,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#AnyValue"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AnyValue-4875"><a href="#AnyValue-4875"><span class="linenos">4875</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="AnyValue-4876"><a href="#AnyValue-4876"><span class="linenos">4876</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AnyValue-4882"><a href="#AnyValue-4882"><span class="linenos">4882</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="AnyValue-4883"><a href="#AnyValue-4883"><span class="linenos">4883</span></a> <span class="k">pass</span> </span></pre></div> @@ -70463,8 +70642,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Lag"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lag-4879"><a href="#Lag-4879"><span class="linenos">4879</span></a><span class="k">class</span> <span class="nc">Lag</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Lag-4880"><a href="#Lag-4880"><span class="linenos">4880</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lag-4886"><a href="#Lag-4886"><span class="linenos">4886</span></a><span class="k">class</span> <span class="nc">Lag</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Lag-4887"><a href="#Lag-4887"><span class="linenos">4887</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -70591,8 +70770,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Lead"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lead-4883"><a href="#Lead-4883"><span class="linenos">4883</span></a><span class="k">class</span> <span class="nc">Lead</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Lead-4884"><a href="#Lead-4884"><span class="linenos">4884</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lead-4890"><a href="#Lead-4890"><span class="linenos">4890</span></a><span class="k">class</span> <span class="nc">Lead</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Lead-4891"><a href="#Lead-4891"><span class="linenos">4891</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -70719,8 +70898,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#First"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="First-4889"><a href="#First-4889"><span class="linenos">4889</span></a><span class="k">class</span> <span class="nc">First</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="First-4890"><a href="#First-4890"><span class="linenos">4890</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="First-4896"><a href="#First-4896"><span class="linenos">4896</span></a><span class="k">class</span> <span class="nc">First</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="First-4897"><a href="#First-4897"><span class="linenos">4897</span></a> <span class="k">pass</span> </span></pre></div> @@ -70836,8 +71015,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Last"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Last-4893"><a href="#Last-4893"><span class="linenos">4893</span></a><span class="k">class</span> <span class="nc">Last</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Last-4894"><a href="#Last-4894"><span class="linenos">4894</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Last-4900"><a href="#Last-4900"><span class="linenos">4900</span></a><span class="k">class</span> <span class="nc">Last</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Last-4901"><a href="#Last-4901"><span class="linenos">4901</span></a> <span class="k">pass</span> </span></pre></div> @@ -70953,8 +71132,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#FirstValue"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FirstValue-4897"><a href="#FirstValue-4897"><span class="linenos">4897</span></a><span class="k">class</span> <span class="nc">FirstValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="FirstValue-4898"><a href="#FirstValue-4898"><span class="linenos">4898</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="FirstValue-4904"><a href="#FirstValue-4904"><span class="linenos">4904</span></a><span class="k">class</span> <span class="nc">FirstValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="FirstValue-4905"><a href="#FirstValue-4905"><span class="linenos">4905</span></a> <span class="k">pass</span> </span></pre></div> @@ -71070,8 +71249,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#LastValue"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LastValue-4901"><a href="#LastValue-4901"><span class="linenos">4901</span></a><span class="k">class</span> <span class="nc">LastValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="LastValue-4902"><a href="#LastValue-4902"><span class="linenos">4902</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LastValue-4908"><a href="#LastValue-4908"><span class="linenos">4908</span></a><span class="k">class</span> <span class="nc">LastValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="LastValue-4909"><a href="#LastValue-4909"><span class="linenos">4909</span></a> <span class="k">pass</span> </span></pre></div> @@ -71187,8 +71366,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#NthValue"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NthValue-4905"><a href="#NthValue-4905"><span class="linenos">4905</span></a><span class="k">class</span> <span class="nc">NthValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="NthValue-4906"><a href="#NthValue-4906"><span class="linenos">4906</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NthValue-4912"><a href="#NthValue-4912"><span class="linenos">4912</span></a><span class="k">class</span> <span class="nc">NthValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="NthValue-4913"><a href="#NthValue-4913"><span class="linenos">4913</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -71315,24 +71494,24 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Case"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Case-4909"><a href="#Case-4909"><span class="linenos">4909</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Case-4910"><a href="#Case-4910"><span class="linenos">4910</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Case-4911"><a href="#Case-4911"><span class="linenos">4911</span></a> -</span><span id="Case-4912"><a href="#Case-4912"><span class="linenos">4912</span></a> <span class="k">def</span> <span class="nf">when</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">then</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="Case-4913"><a href="#Case-4913"><span class="linenos">4913</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Case-4914"><a href="#Case-4914"><span class="linenos">4914</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Case-4915"><a href="#Case-4915"><span class="linenos">4915</span></a> <span class="s2">"ifs"</span><span class="p">,</span> -</span><span id="Case-4916"><a href="#Case-4916"><span class="linenos">4916</span></a> <span class="n">If</span><span class="p">(</span> -</span><span id="Case-4917"><a href="#Case-4917"><span class="linenos">4917</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="Case-4918"><a href="#Case-4918"><span class="linenos">4918</span></a> <span class="n">true</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">then</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="Case-4919"><a href="#Case-4919"><span class="linenos">4919</span></a> <span class="p">),</span> -</span><span id="Case-4920"><a href="#Case-4920"><span class="linenos">4920</span></a> <span class="p">)</span> -</span><span id="Case-4921"><a href="#Case-4921"><span class="linenos">4921</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="Case-4922"><a href="#Case-4922"><span class="linenos">4922</span></a> -</span><span id="Case-4923"><a href="#Case-4923"><span class="linenos">4923</span></a> <span class="k">def</span> <span class="nf">else_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="Case-4924"><a href="#Case-4924"><span class="linenos">4924</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Case-4925"><a href="#Case-4925"><span class="linenos">4925</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"default"</span><span class="p">,</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="Case-4926"><a href="#Case-4926"><span class="linenos">4926</span></a> <span class="k">return</span> <span class="n">instance</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Case-4916"><a href="#Case-4916"><span class="linenos">4916</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Case-4917"><a href="#Case-4917"><span class="linenos">4917</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Case-4918"><a href="#Case-4918"><span class="linenos">4918</span></a> +</span><span id="Case-4919"><a href="#Case-4919"><span class="linenos">4919</span></a> <span class="k">def</span> <span class="nf">when</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">then</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="Case-4920"><a href="#Case-4920"><span class="linenos">4920</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Case-4921"><a href="#Case-4921"><span class="linenos">4921</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Case-4922"><a href="#Case-4922"><span class="linenos">4922</span></a> <span class="s2">"ifs"</span><span class="p">,</span> +</span><span id="Case-4923"><a href="#Case-4923"><span class="linenos">4923</span></a> <span class="n">If</span><span class="p">(</span> +</span><span id="Case-4924"><a href="#Case-4924"><span class="linenos">4924</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="Case-4925"><a href="#Case-4925"><span class="linenos">4925</span></a> <span class="n">true</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">then</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="Case-4926"><a href="#Case-4926"><span class="linenos">4926</span></a> <span class="p">),</span> +</span><span id="Case-4927"><a href="#Case-4927"><span class="linenos">4927</span></a> <span class="p">)</span> +</span><span id="Case-4928"><a href="#Case-4928"><span class="linenos">4928</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="Case-4929"><a href="#Case-4929"><span class="linenos">4929</span></a> +</span><span id="Case-4930"><a href="#Case-4930"><span class="linenos">4930</span></a> <span class="k">def</span> <span class="nf">else_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="Case-4931"><a href="#Case-4931"><span class="linenos">4931</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Case-4932"><a href="#Case-4932"><span class="linenos">4932</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"default"</span><span class="p">,</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="Case-4933"><a href="#Case-4933"><span class="linenos">4933</span></a> <span class="k">return</span> <span class="n">instance</span> </span></pre></div> @@ -71361,16 +71540,16 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Case.when"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Case.when-4912"><a href="#Case.when-4912"><span class="linenos">4912</span></a> <span class="k">def</span> <span class="nf">when</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">then</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="Case.when-4913"><a href="#Case.when-4913"><span class="linenos">4913</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Case.when-4914"><a href="#Case.when-4914"><span class="linenos">4914</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Case.when-4915"><a href="#Case.when-4915"><span class="linenos">4915</span></a> <span class="s2">"ifs"</span><span class="p">,</span> -</span><span id="Case.when-4916"><a href="#Case.when-4916"><span class="linenos">4916</span></a> <span class="n">If</span><span class="p">(</span> -</span><span id="Case.when-4917"><a href="#Case.when-4917"><span class="linenos">4917</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="Case.when-4918"><a href="#Case.when-4918"><span class="linenos">4918</span></a> <span class="n">true</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">then</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="Case.when-4919"><a href="#Case.when-4919"><span class="linenos">4919</span></a> <span class="p">),</span> -</span><span id="Case.when-4920"><a href="#Case.when-4920"><span class="linenos">4920</span></a> <span class="p">)</span> -</span><span id="Case.when-4921"><a href="#Case.when-4921"><span class="linenos">4921</span></a> <span class="k">return</span> <span class="n">instance</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Case.when-4919"><a href="#Case.when-4919"><span class="linenos">4919</span></a> <span class="k">def</span> <span class="nf">when</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">then</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="Case.when-4920"><a href="#Case.when-4920"><span class="linenos">4920</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Case.when-4921"><a href="#Case.when-4921"><span class="linenos">4921</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Case.when-4922"><a href="#Case.when-4922"><span class="linenos">4922</span></a> <span class="s2">"ifs"</span><span class="p">,</span> +</span><span id="Case.when-4923"><a href="#Case.when-4923"><span class="linenos">4923</span></a> <span class="n">If</span><span class="p">(</span> +</span><span id="Case.when-4924"><a href="#Case.when-4924"><span class="linenos">4924</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="Case.when-4925"><a href="#Case.when-4925"><span class="linenos">4925</span></a> <span class="n">true</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">then</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="Case.when-4926"><a href="#Case.when-4926"><span class="linenos">4926</span></a> <span class="p">),</span> +</span><span id="Case.when-4927"><a href="#Case.when-4927"><span class="linenos">4927</span></a> <span class="p">)</span> +</span><span id="Case.when-4928"><a href="#Case.when-4928"><span class="linenos">4928</span></a> <span class="k">return</span> <span class="n">instance</span> </span></pre></div> @@ -71388,10 +71567,10 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Case.else_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Case.else_-4923"><a href="#Case.else_-4923"><span class="linenos">4923</span></a> <span class="k">def</span> <span class="nf">else_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="Case.else_-4924"><a href="#Case.else_-4924"><span class="linenos">4924</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Case.else_-4925"><a href="#Case.else_-4925"><span class="linenos">4925</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"default"</span><span class="p">,</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="Case.else_-4926"><a href="#Case.else_-4926"><span class="linenos">4926</span></a> <span class="k">return</span> <span class="n">instance</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Case.else_-4930"><a href="#Case.else_-4930"><span class="linenos">4930</span></a> <span class="k">def</span> <span class="nf">else_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="Case.else_-4931"><a href="#Case.else_-4931"><span class="linenos">4931</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Case.else_-4932"><a href="#Case.else_-4932"><span class="linenos">4932</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"default"</span><span class="p">,</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">condition</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="Case.else_-4933"><a href="#Case.else_-4933"><span class="linenos">4933</span></a> <span class="k">return</span> <span class="n">instance</span> </span></pre></div> @@ -71507,40 +71686,40 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast-4929"><a href="#Cast-4929"><span class="linenos">4929</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Cast-4930"><a href="#Cast-4930"><span class="linenos">4930</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Cast-4931"><a href="#Cast-4931"><span class="linenos">4931</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Cast-4932"><a href="#Cast-4932"><span class="linenos">4932</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Cast-4933"><a href="#Cast-4933"><span class="linenos">4933</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cast-4934"><a href="#Cast-4934"><span class="linenos">4934</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cast-4935"><a href="#Cast-4935"><span class="linenos">4935</span></a> <span class="s2">"action"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cast-4936"><a href="#Cast-4936"><span class="linenos">4936</span></a> <span class="p">}</span> -</span><span id="Cast-4937"><a href="#Cast-4937"><span class="linenos">4937</span></a> -</span><span id="Cast-4938"><a href="#Cast-4938"><span class="linenos">4938</span></a> <span class="nd">@property</span> -</span><span id="Cast-4939"><a href="#Cast-4939"><span class="linenos">4939</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Cast-4940"><a href="#Cast-4940"><span class="linenos">4940</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="Cast-4941"><a href="#Cast-4941"><span class="linenos">4941</span></a> -</span><span id="Cast-4942"><a href="#Cast-4942"><span class="linenos">4942</span></a> <span class="nd">@property</span> -</span><span id="Cast-4943"><a href="#Cast-4943"><span class="linenos">4943</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="Cast-4944"><a href="#Cast-4944"><span class="linenos">4944</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> -</span><span id="Cast-4945"><a href="#Cast-4945"><span class="linenos">4945</span></a> -</span><span id="Cast-4946"><a href="#Cast-4946"><span class="linenos">4946</span></a> <span class="nd">@property</span> -</span><span id="Cast-4947"><a href="#Cast-4947"><span class="linenos">4947</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Cast-4948"><a href="#Cast-4948"><span class="linenos">4948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="Cast-4949"><a href="#Cast-4949"><span class="linenos">4949</span></a> -</span><span id="Cast-4950"><a href="#Cast-4950"><span class="linenos">4950</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Cast-4951"><a href="#Cast-4951"><span class="linenos">4951</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Cast-4952"><a href="#Cast-4952"><span class="linenos">4952</span></a><span class="sd"> Checks whether this Cast's DataType matches one of the provided data types. Nested types</span> -</span><span id="Cast-4953"><a href="#Cast-4953"><span class="linenos">4953</span></a><span class="sd"> like arrays or structs will be compared using "structural equivalence" semantics, so e.g.</span> -</span><span id="Cast-4954"><a href="#Cast-4954"><span class="linenos">4954</span></a><span class="sd"> array<int> != array<float>.</span> -</span><span id="Cast-4955"><a href="#Cast-4955"><span class="linenos">4955</span></a> -</span><span id="Cast-4956"><a href="#Cast-4956"><span class="linenos">4956</span></a><span class="sd"> Args:</span> -</span><span id="Cast-4957"><a href="#Cast-4957"><span class="linenos">4957</span></a><span class="sd"> dtypes: the data types to compare this Cast's DataType to.</span> -</span><span id="Cast-4958"><a href="#Cast-4958"><span class="linenos">4958</span></a> -</span><span id="Cast-4959"><a href="#Cast-4959"><span class="linenos">4959</span></a><span class="sd"> Returns:</span> -</span><span id="Cast-4960"><a href="#Cast-4960"><span class="linenos">4960</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this Cast's DataType.</span> -</span><span id="Cast-4961"><a href="#Cast-4961"><span class="linenos">4961</span></a><span class="sd"> """</span> -</span><span id="Cast-4962"><a href="#Cast-4962"><span class="linenos">4962</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">dtypes</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast-4936"><a href="#Cast-4936"><span class="linenos">4936</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Cast-4937"><a href="#Cast-4937"><span class="linenos">4937</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Cast-4938"><a href="#Cast-4938"><span class="linenos">4938</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Cast-4939"><a href="#Cast-4939"><span class="linenos">4939</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Cast-4940"><a href="#Cast-4940"><span class="linenos">4940</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cast-4941"><a href="#Cast-4941"><span class="linenos">4941</span></a> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cast-4942"><a href="#Cast-4942"><span class="linenos">4942</span></a> <span class="s2">"action"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cast-4943"><a href="#Cast-4943"><span class="linenos">4943</span></a> <span class="p">}</span> +</span><span id="Cast-4944"><a href="#Cast-4944"><span class="linenos">4944</span></a> +</span><span id="Cast-4945"><a href="#Cast-4945"><span class="linenos">4945</span></a> <span class="nd">@property</span> +</span><span id="Cast-4946"><a href="#Cast-4946"><span class="linenos">4946</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Cast-4947"><a href="#Cast-4947"><span class="linenos">4947</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="Cast-4948"><a href="#Cast-4948"><span class="linenos">4948</span></a> +</span><span id="Cast-4949"><a href="#Cast-4949"><span class="linenos">4949</span></a> <span class="nd">@property</span> +</span><span id="Cast-4950"><a href="#Cast-4950"><span class="linenos">4950</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="Cast-4951"><a href="#Cast-4951"><span class="linenos">4951</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> +</span><span id="Cast-4952"><a href="#Cast-4952"><span class="linenos">4952</span></a> +</span><span id="Cast-4953"><a href="#Cast-4953"><span class="linenos">4953</span></a> <span class="nd">@property</span> +</span><span id="Cast-4954"><a href="#Cast-4954"><span class="linenos">4954</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Cast-4955"><a href="#Cast-4955"><span class="linenos">4955</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="Cast-4956"><a href="#Cast-4956"><span class="linenos">4956</span></a> +</span><span id="Cast-4957"><a href="#Cast-4957"><span class="linenos">4957</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Cast-4958"><a href="#Cast-4958"><span class="linenos">4958</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Cast-4959"><a href="#Cast-4959"><span class="linenos">4959</span></a><span class="sd"> Checks whether this Cast's DataType matches one of the provided data types. Nested types</span> +</span><span id="Cast-4960"><a href="#Cast-4960"><span class="linenos">4960</span></a><span class="sd"> like arrays or structs will be compared using "structural equivalence" semantics, so e.g.</span> +</span><span id="Cast-4961"><a href="#Cast-4961"><span class="linenos">4961</span></a><span class="sd"> array<int> != array<float>.</span> +</span><span id="Cast-4962"><a href="#Cast-4962"><span class="linenos">4962</span></a> +</span><span id="Cast-4963"><a href="#Cast-4963"><span class="linenos">4963</span></a><span class="sd"> Args:</span> +</span><span id="Cast-4964"><a href="#Cast-4964"><span class="linenos">4964</span></a><span class="sd"> dtypes: the data types to compare this Cast's DataType to.</span> +</span><span id="Cast-4965"><a href="#Cast-4965"><span class="linenos">4965</span></a> +</span><span id="Cast-4966"><a href="#Cast-4966"><span class="linenos">4966</span></a><span class="sd"> Returns:</span> +</span><span id="Cast-4967"><a href="#Cast-4967"><span class="linenos">4967</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this Cast's DataType.</span> +</span><span id="Cast-4968"><a href="#Cast-4968"><span class="linenos">4968</span></a><span class="sd"> """</span> +</span><span id="Cast-4969"><a href="#Cast-4969"><span class="linenos">4969</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">dtypes</span><span class="p">)</span> </span></pre></div> @@ -71567,9 +71746,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast.name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.name-4938"><a href="#Cast.name-4938"><span class="linenos">4938</span></a> <span class="nd">@property</span> -</span><span id="Cast.name-4939"><a href="#Cast.name-4939"><span class="linenos">4939</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Cast.name-4940"><a href="#Cast.name-4940"><span class="linenos">4940</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.name-4945"><a href="#Cast.name-4945"><span class="linenos">4945</span></a> <span class="nd">@property</span> +</span><span id="Cast.name-4946"><a href="#Cast.name-4946"><span class="linenos">4946</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Cast.name-4947"><a href="#Cast.name-4947"><span class="linenos">4947</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -71585,9 +71764,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast.to"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.to-4942"><a href="#Cast.to-4942"><span class="linenos">4942</span></a> <span class="nd">@property</span> -</span><span id="Cast.to-4943"><a href="#Cast.to-4943"><span class="linenos">4943</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="Cast.to-4944"><a href="#Cast.to-4944"><span class="linenos">4944</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.to-4949"><a href="#Cast.to-4949"><span class="linenos">4949</span></a> <span class="nd">@property</span> +</span><span id="Cast.to-4950"><a href="#Cast.to-4950"><span class="linenos">4950</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="Cast.to-4951"><a href="#Cast.to-4951"><span class="linenos">4951</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> </span></pre></div> @@ -71603,9 +71782,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.output_name-4946"><a href="#Cast.output_name-4946"><span class="linenos">4946</span></a> <span class="nd">@property</span> -</span><span id="Cast.output_name-4947"><a href="#Cast.output_name-4947"><span class="linenos">4947</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Cast.output_name-4948"><a href="#Cast.output_name-4948"><span class="linenos">4948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.output_name-4953"><a href="#Cast.output_name-4953"><span class="linenos">4953</span></a> <span class="nd">@property</span> +</span><span id="Cast.output_name-4954"><a href="#Cast.output_name-4954"><span class="linenos">4954</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Cast.output_name-4955"><a href="#Cast.output_name-4955"><span class="linenos">4955</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -71642,19 +71821,19 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast.is_type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.is_type-4950"><a href="#Cast.is_type-4950"><span class="linenos">4950</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Cast.is_type-4951"><a href="#Cast.is_type-4951"><span class="linenos">4951</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Cast.is_type-4952"><a href="#Cast.is_type-4952"><span class="linenos">4952</span></a><span class="sd"> Checks whether this Cast's DataType matches one of the provided data types. Nested types</span> -</span><span id="Cast.is_type-4953"><a href="#Cast.is_type-4953"><span class="linenos">4953</span></a><span class="sd"> like arrays or structs will be compared using "structural equivalence" semantics, so e.g.</span> -</span><span id="Cast.is_type-4954"><a href="#Cast.is_type-4954"><span class="linenos">4954</span></a><span class="sd"> array<int> != array<float>.</span> -</span><span id="Cast.is_type-4955"><a href="#Cast.is_type-4955"><span class="linenos">4955</span></a> -</span><span id="Cast.is_type-4956"><a href="#Cast.is_type-4956"><span class="linenos">4956</span></a><span class="sd"> Args:</span> -</span><span id="Cast.is_type-4957"><a href="#Cast.is_type-4957"><span class="linenos">4957</span></a><span class="sd"> dtypes: the data types to compare this Cast's DataType to.</span> -</span><span id="Cast.is_type-4958"><a href="#Cast.is_type-4958"><span class="linenos">4958</span></a> -</span><span id="Cast.is_type-4959"><a href="#Cast.is_type-4959"><span class="linenos">4959</span></a><span class="sd"> Returns:</span> -</span><span id="Cast.is_type-4960"><a href="#Cast.is_type-4960"><span class="linenos">4960</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this Cast's DataType.</span> -</span><span id="Cast.is_type-4961"><a href="#Cast.is_type-4961"><span class="linenos">4961</span></a><span class="sd"> """</span> -</span><span id="Cast.is_type-4962"><a href="#Cast.is_type-4962"><span class="linenos">4962</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">dtypes</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.is_type-4957"><a href="#Cast.is_type-4957"><span class="linenos">4957</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">dtypes</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Cast.is_type-4958"><a href="#Cast.is_type-4958"><span class="linenos">4958</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Cast.is_type-4959"><a href="#Cast.is_type-4959"><span class="linenos">4959</span></a><span class="sd"> Checks whether this Cast's DataType matches one of the provided data types. Nested types</span> +</span><span id="Cast.is_type-4960"><a href="#Cast.is_type-4960"><span class="linenos">4960</span></a><span class="sd"> like arrays or structs will be compared using "structural equivalence" semantics, so e.g.</span> +</span><span id="Cast.is_type-4961"><a href="#Cast.is_type-4961"><span class="linenos">4961</span></a><span class="sd"> array<int> != array<float>.</span> +</span><span id="Cast.is_type-4962"><a href="#Cast.is_type-4962"><span class="linenos">4962</span></a> +</span><span id="Cast.is_type-4963"><a href="#Cast.is_type-4963"><span class="linenos">4963</span></a><span class="sd"> Args:</span> +</span><span id="Cast.is_type-4964"><a href="#Cast.is_type-4964"><span class="linenos">4964</span></a><span class="sd"> dtypes: the data types to compare this Cast's DataType to.</span> +</span><span id="Cast.is_type-4965"><a href="#Cast.is_type-4965"><span class="linenos">4965</span></a> +</span><span id="Cast.is_type-4966"><a href="#Cast.is_type-4966"><span class="linenos">4966</span></a><span class="sd"> Returns:</span> +</span><span id="Cast.is_type-4967"><a href="#Cast.is_type-4967"><span class="linenos">4967</span></a><span class="sd"> True, if and only if there is a type in `dtypes` which is equal to this Cast's DataType.</span> +</span><span id="Cast.is_type-4968"><a href="#Cast.is_type-4968"><span class="linenos">4968</span></a><span class="sd"> """</span> +</span><span id="Cast.is_type-4969"><a href="#Cast.is_type-4969"><span class="linenos">4969</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">dtypes</span><span class="p">)</span> </span></pre></div> @@ -71783,8 +71962,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TryCast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TryCast-4965"><a href="#TryCast-4965"><span class="linenos">4965</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="TryCast-4966"><a href="#TryCast-4966"><span class="linenos">4966</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TryCast-4972"><a href="#TryCast-4972"><span class="linenos">4972</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="TryCast-4973"><a href="#TryCast-4973"><span class="linenos">4973</span></a> <span class="k">pass</span> </span></pre></div> @@ -71904,8 +72083,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Try"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Try-4969"><a href="#Try-4969"><span class="linenos">4969</span></a><span class="k">class</span> <span class="nc">Try</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Try-4970"><a href="#Try-4970"><span class="linenos">4970</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Try-4976"><a href="#Try-4976"><span class="linenos">4976</span></a><span class="k">class</span> <span class="nc">Try</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Try-4977"><a href="#Try-4977"><span class="linenos">4977</span></a> <span class="k">pass</span> </span></pre></div> @@ -72021,8 +72200,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CastToStrType"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CastToStrType-4973"><a href="#CastToStrType-4973"><span class="linenos">4973</span></a><span class="k">class</span> <span class="nc">CastToStrType</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CastToStrType-4974"><a href="#CastToStrType-4974"><span class="linenos">4974</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CastToStrType-4980"><a href="#CastToStrType-4980"><span class="linenos">4980</span></a><span class="k">class</span> <span class="nc">CastToStrType</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CastToStrType-4981"><a href="#CastToStrType-4981"><span class="linenos">4981</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -72149,8 +72328,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Collate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Collate-4977"><a href="#Collate-4977"><span class="linenos">4977</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="Collate-4978"><a href="#Collate-4978"><span class="linenos">4978</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Collate-4984"><a href="#Collate-4984"><span class="linenos">4984</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="Collate-4985"><a href="#Collate-4985"><span class="linenos">4985</span></a> <span class="k">pass</span> </span></pre></div> @@ -72271,9 +72450,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Ceil"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Ceil-4981"><a href="#Ceil-4981"><span class="linenos">4981</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Ceil-4982"><a href="#Ceil-4982"><span class="linenos">4982</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Ceil-4983"><a href="#Ceil-4983"><span class="linenos">4983</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Ceil-4988"><a href="#Ceil-4988"><span class="linenos">4988</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Ceil-4989"><a href="#Ceil-4989"><span class="linenos">4989</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Ceil-4990"><a href="#Ceil-4990"><span class="linenos">4990</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> </span></pre></div> @@ -72400,10 +72579,10 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Coalesce"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Coalesce-4986"><a href="#Coalesce-4986"><span class="linenos">4986</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Coalesce-4987"><a href="#Coalesce-4987"><span class="linenos">4987</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Coalesce-4988"><a href="#Coalesce-4988"><span class="linenos">4988</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Coalesce-4989"><a href="#Coalesce-4989"><span class="linenos">4989</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COALESCE"</span><span class="p">,</span> <span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Coalesce-4993"><a href="#Coalesce-4993"><span class="linenos">4993</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Coalesce-4994"><a href="#Coalesce-4994"><span class="linenos">4994</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Coalesce-4995"><a href="#Coalesce-4995"><span class="linenos">4995</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Coalesce-4996"><a href="#Coalesce-4996"><span class="linenos">4996</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COALESCE"</span><span class="p">,</span> <span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> </span></pre></div> @@ -72541,10 +72720,10 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Chr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Chr-4992"><a href="#Chr-4992"><span class="linenos">4992</span></a><span class="k">class</span> <span class="nc">Chr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Chr-4993"><a href="#Chr-4993"><span class="linenos">4993</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Chr-4994"><a href="#Chr-4994"><span class="linenos">4994</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Chr-4995"><a href="#Chr-4995"><span class="linenos">4995</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CHR"</span><span class="p">,</span> <span class="s2">"CHAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Chr-4999"><a href="#Chr-4999"><span class="linenos">4999</span></a><span class="k">class</span> <span class="nc">Chr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Chr-5000"><a href="#Chr-5000"><span class="linenos">5000</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Chr-5001"><a href="#Chr-5001"><span class="linenos">5001</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Chr-5002"><a href="#Chr-5002"><span class="linenos">5002</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CHR"</span><span class="p">,</span> <span class="s2">"CHAR"</span><span class="p">]</span> </span></pre></div> @@ -72682,9 +72861,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Concat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Concat-4998"><a href="#Concat-4998"><span class="linenos">4998</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Concat-4999"><a href="#Concat-4999"><span class="linenos">4999</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"coalesce"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Concat-5000"><a href="#Concat-5000"><span class="linenos">5000</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Concat-5005"><a href="#Concat-5005"><span class="linenos">5005</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Concat-5006"><a href="#Concat-5006"><span class="linenos">5006</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"coalesce"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Concat-5007"><a href="#Concat-5007"><span class="linenos">5007</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -72822,8 +73001,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ConcatWs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ConcatWs-5003"><a href="#ConcatWs-5003"><span class="linenos">5003</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> -</span><span id="ConcatWs-5004"><a href="#ConcatWs-5004"><span class="linenos">5004</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ConcatWs-5010"><a href="#ConcatWs-5010"><span class="linenos">5010</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> +</span><span id="ConcatWs-5011"><a href="#ConcatWs-5011"><span class="linenos">5011</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> </span></pre></div> @@ -72942,8 +73121,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ConnectByRoot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ConnectByRoot-5008"><a href="#ConnectByRoot-5008"><span class="linenos">5008</span></a><span class="k">class</span> <span class="nc">ConnectByRoot</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ConnectByRoot-5009"><a href="#ConnectByRoot-5009"><span class="linenos">5009</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ConnectByRoot-5015"><a href="#ConnectByRoot-5015"><span class="linenos">5015</span></a><span class="k">class</span> <span class="nc">ConnectByRoot</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ConnectByRoot-5016"><a href="#ConnectByRoot-5016"><span class="linenos">5016</span></a> <span class="k">pass</span> </span></pre></div> @@ -73059,9 +73238,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Count"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Count-5012"><a href="#Count-5012"><span class="linenos">5012</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Count-5013"><a href="#Count-5013"><span class="linenos">5013</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Count-5014"><a href="#Count-5014"><span class="linenos">5014</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Count-5019"><a href="#Count-5019"><span class="linenos">5019</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Count-5020"><a href="#Count-5020"><span class="linenos">5020</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Count-5021"><a href="#Count-5021"><span class="linenos">5021</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -73199,8 +73378,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CountIf"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CountIf-5017"><a href="#CountIf-5017"><span class="linenos">5017</span></a><span class="k">class</span> <span class="nc">CountIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="CountIf-5018"><a href="#CountIf-5018"><span class="linenos">5018</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COUNT_IF"</span><span class="p">,</span> <span class="s2">"COUNTIF"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CountIf-5024"><a href="#CountIf-5024"><span class="linenos">5024</span></a><span class="k">class</span> <span class="nc">CountIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="CountIf-5025"><a href="#CountIf-5025"><span class="linenos">5025</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"COUNT_IF"</span><span class="p">,</span> <span class="s2">"COUNTIF"</span><span class="p">]</span> </span></pre></div> @@ -73316,8 +73495,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Cbrt"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cbrt-5022"><a href="#Cbrt-5022"><span class="linenos">5022</span></a><span class="k">class</span> <span class="nc">Cbrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Cbrt-5023"><a href="#Cbrt-5023"><span class="linenos">5023</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cbrt-5029"><a href="#Cbrt-5029"><span class="linenos">5029</span></a><span class="k">class</span> <span class="nc">Cbrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Cbrt-5030"><a href="#Cbrt-5030"><span class="linenos">5030</span></a> <span class="k">pass</span> </span></pre></div> @@ -73433,8 +73612,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CurrentDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDate-5026"><a href="#CurrentDate-5026"><span class="linenos">5026</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentDate-5027"><a href="#CurrentDate-5027"><span class="linenos">5027</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDate-5033"><a href="#CurrentDate-5033"><span class="linenos">5033</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentDate-5034"><a href="#CurrentDate-5034"><span class="linenos">5034</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -73561,8 +73740,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CurrentDatetime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDatetime-5030"><a href="#CurrentDatetime-5030"><span class="linenos">5030</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentDatetime-5031"><a href="#CurrentDatetime-5031"><span class="linenos">5031</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDatetime-5037"><a href="#CurrentDatetime-5037"><span class="linenos">5037</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentDatetime-5038"><a href="#CurrentDatetime-5038"><span class="linenos">5038</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -73689,8 +73868,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CurrentTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTime-5034"><a href="#CurrentTime-5034"><span class="linenos">5034</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentTime-5035"><a href="#CurrentTime-5035"><span class="linenos">5035</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTime-5041"><a href="#CurrentTime-5041"><span class="linenos">5041</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentTime-5042"><a href="#CurrentTime-5042"><span class="linenos">5042</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -73817,8 +73996,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CurrentTimestamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTimestamp-5038"><a href="#CurrentTimestamp-5038"><span class="linenos">5038</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentTimestamp-5039"><a href="#CurrentTimestamp-5039"><span class="linenos">5039</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"transaction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTimestamp-5045"><a href="#CurrentTimestamp-5045"><span class="linenos">5045</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentTimestamp-5046"><a href="#CurrentTimestamp-5046"><span class="linenos">5046</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"transaction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -73945,8 +74124,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CurrentUser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentUser-5042"><a href="#CurrentUser-5042"><span class="linenos">5042</span></a><span class="k">class</span> <span class="nc">CurrentUser</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentUser-5043"><a href="#CurrentUser-5043"><span class="linenos">5043</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentUser-5049"><a href="#CurrentUser-5049"><span class="linenos">5049</span></a><span class="k">class</span> <span class="nc">CurrentUser</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentUser-5050"><a href="#CurrentUser-5050"><span class="linenos">5050</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -74073,8 +74252,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateAdd-5046"><a href="#DateAdd-5046"><span class="linenos">5046</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="DateAdd-5047"><a href="#DateAdd-5047"><span class="linenos">5047</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateAdd-5053"><a href="#DateAdd-5053"><span class="linenos">5053</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="DateAdd-5054"><a href="#DateAdd-5054"><span class="linenos">5054</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -74211,8 +74390,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateSub-5050"><a href="#DateSub-5050"><span class="linenos">5050</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="DateSub-5051"><a href="#DateSub-5051"><span class="linenos">5051</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateSub-5057"><a href="#DateSub-5057"><span class="linenos">5057</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="DateSub-5058"><a href="#DateSub-5058"><span class="linenos">5058</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -74349,9 +74528,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateDiff-5054"><a href="#DateDiff-5054"><span class="linenos">5054</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DateDiff-5055"><a href="#DateDiff-5055"><span class="linenos">5055</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEDIFF"</span><span class="p">,</span> <span class="s2">"DATE_DIFF"</span><span class="p">]</span> -</span><span id="DateDiff-5056"><a href="#DateDiff-5056"><span class="linenos">5056</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateDiff-5061"><a href="#DateDiff-5061"><span class="linenos">5061</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DateDiff-5062"><a href="#DateDiff-5062"><span class="linenos">5062</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEDIFF"</span><span class="p">,</span> <span class="s2">"DATE_DIFF"</span><span class="p">]</span> +</span><span id="DateDiff-5063"><a href="#DateDiff-5063"><span class="linenos">5063</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -74484,23 +74663,23 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc-5059"><a href="#DateTrunc-5059"><span class="linenos">5059</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateTrunc-5060"><a href="#DateTrunc-5060"><span class="linenos">5060</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="DateTrunc-5061"><a href="#DateTrunc-5061"><span class="linenos">5061</span></a> -</span><span id="DateTrunc-5062"><a href="#DateTrunc-5062"><span class="linenos">5062</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="DateTrunc-5063"><a href="#DateTrunc-5063"><span class="linenos">5063</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="DateTrunc-5064"><a href="#DateTrunc-5064"><span class="linenos">5064</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> -</span><span id="DateTrunc-5065"><a href="#DateTrunc-5065"><span class="linenos">5065</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="DateTrunc-5066"><a href="#DateTrunc-5066"><span class="linenos">5066</span></a> <span class="p">(</span><span class="n">TimeUnit</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="DateTrunc-5067"><a href="#DateTrunc-5067"><span class="linenos">5067</span></a> <span class="p">)</span> -</span><span id="DateTrunc-5068"><a href="#DateTrunc-5068"><span class="linenos">5068</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="DateTrunc-5069"><a href="#DateTrunc-5069"><span class="linenos">5069</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="DateTrunc-5070"><a href="#DateTrunc-5070"><span class="linenos">5070</span></a> -</span><span id="DateTrunc-5071"><a href="#DateTrunc-5071"><span class="linenos">5071</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> -</span><span id="DateTrunc-5072"><a href="#DateTrunc-5072"><span class="linenos">5072</span></a> -</span><span id="DateTrunc-5073"><a href="#DateTrunc-5073"><span class="linenos">5073</span></a> <span class="nd">@property</span> -</span><span id="DateTrunc-5074"><a href="#DateTrunc-5074"><span class="linenos">5074</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="DateTrunc-5075"><a href="#DateTrunc-5075"><span class="linenos">5075</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc-5066"><a href="#DateTrunc-5066"><span class="linenos">5066</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateTrunc-5067"><a href="#DateTrunc-5067"><span class="linenos">5067</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="DateTrunc-5068"><a href="#DateTrunc-5068"><span class="linenos">5068</span></a> +</span><span id="DateTrunc-5069"><a href="#DateTrunc-5069"><span class="linenos">5069</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="DateTrunc-5070"><a href="#DateTrunc-5070"><span class="linenos">5070</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="DateTrunc-5071"><a href="#DateTrunc-5071"><span class="linenos">5071</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> +</span><span id="DateTrunc-5072"><a href="#DateTrunc-5072"><span class="linenos">5072</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="DateTrunc-5073"><a href="#DateTrunc-5073"><span class="linenos">5073</span></a> <span class="p">(</span><span class="n">TimeUnit</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="DateTrunc-5074"><a href="#DateTrunc-5074"><span class="linenos">5074</span></a> <span class="p">)</span> +</span><span id="DateTrunc-5075"><a href="#DateTrunc-5075"><span class="linenos">5075</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="DateTrunc-5076"><a href="#DateTrunc-5076"><span class="linenos">5076</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="DateTrunc-5077"><a href="#DateTrunc-5077"><span class="linenos">5077</span></a> +</span><span id="DateTrunc-5078"><a href="#DateTrunc-5078"><span class="linenos">5078</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> +</span><span id="DateTrunc-5079"><a href="#DateTrunc-5079"><span class="linenos">5079</span></a> +</span><span id="DateTrunc-5080"><a href="#DateTrunc-5080"><span class="linenos">5080</span></a> <span class="nd">@property</span> +</span><span id="DateTrunc-5081"><a href="#DateTrunc-5081"><span class="linenos">5081</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="DateTrunc-5082"><a href="#DateTrunc-5082"><span class="linenos">5082</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> </span></pre></div> @@ -74516,16 +74695,16 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateTrunc.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc.__init__-5062"><a href="#DateTrunc.__init__-5062"><span class="linenos">5062</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="DateTrunc.__init__-5063"><a href="#DateTrunc.__init__-5063"><span class="linenos">5063</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> -</span><span id="DateTrunc.__init__-5064"><a href="#DateTrunc.__init__-5064"><span class="linenos">5064</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> -</span><span id="DateTrunc.__init__-5065"><a href="#DateTrunc.__init__-5065"><span class="linenos">5065</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="DateTrunc.__init__-5066"><a href="#DateTrunc.__init__-5066"><span class="linenos">5066</span></a> <span class="p">(</span><span class="n">TimeUnit</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="DateTrunc.__init__-5067"><a href="#DateTrunc.__init__-5067"><span class="linenos">5067</span></a> <span class="p">)</span> -</span><span id="DateTrunc.__init__-5068"><a href="#DateTrunc.__init__-5068"><span class="linenos">5068</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="DateTrunc.__init__-5069"><a href="#DateTrunc.__init__-5069"><span class="linenos">5069</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="DateTrunc.__init__-5070"><a href="#DateTrunc.__init__-5070"><span class="linenos">5070</span></a> -</span><span id="DateTrunc.__init__-5071"><a href="#DateTrunc.__init__-5071"><span class="linenos">5071</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc.__init__-5069"><a href="#DateTrunc.__init__-5069"><span class="linenos">5069</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="DateTrunc.__init__-5070"><a href="#DateTrunc.__init__-5070"><span class="linenos">5070</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> +</span><span id="DateTrunc.__init__-5071"><a href="#DateTrunc.__init__-5071"><span class="linenos">5071</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="n">VAR_LIKE</span><span class="p">):</span> +</span><span id="DateTrunc.__init__-5072"><a href="#DateTrunc.__init__-5072"><span class="linenos">5072</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="DateTrunc.__init__-5073"><a href="#DateTrunc.__init__-5073"><span class="linenos">5073</span></a> <span class="p">(</span><span class="n">TimeUnit</span><span class="o">.</span><span class="n">UNABBREVIATED_UNIT_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="DateTrunc.__init__-5074"><a href="#DateTrunc.__init__-5074"><span class="linenos">5074</span></a> <span class="p">)</span> +</span><span id="DateTrunc.__init__-5075"><a href="#DateTrunc.__init__-5075"><span class="linenos">5075</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="DateTrunc.__init__-5076"><a href="#DateTrunc.__init__-5076"><span class="linenos">5076</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="DateTrunc.__init__-5077"><a href="#DateTrunc.__init__-5077"><span class="linenos">5077</span></a> +</span><span id="DateTrunc.__init__-5078"><a href="#DateTrunc.__init__-5078"><span class="linenos">5078</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -74553,9 +74732,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateTrunc.unit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc.unit-5073"><a href="#DateTrunc.unit-5073"><span class="linenos">5073</span></a> <span class="nd">@property</span> -</span><span id="DateTrunc.unit-5074"><a href="#DateTrunc.unit-5074"><span class="linenos">5074</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="DateTrunc.unit-5075"><a href="#DateTrunc.unit-5075"><span class="linenos">5075</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc.unit-5080"><a href="#DateTrunc.unit-5080"><span class="linenos">5080</span></a> <span class="nd">@property</span> +</span><span id="DateTrunc.unit-5081"><a href="#DateTrunc.unit-5081"><span class="linenos">5081</span></a> <span class="k">def</span> <span class="nf">unit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="DateTrunc.unit-5082"><a href="#DateTrunc.unit-5082"><span class="linenos">5082</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> </span></pre></div> @@ -74670,8 +74849,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DatetimeAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeAdd-5078"><a href="#DatetimeAdd-5078"><span class="linenos">5078</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="DatetimeAdd-5079"><a href="#DatetimeAdd-5079"><span class="linenos">5079</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeAdd-5085"><a href="#DatetimeAdd-5085"><span class="linenos">5085</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="DatetimeAdd-5086"><a href="#DatetimeAdd-5086"><span class="linenos">5086</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -74808,8 +74987,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DatetimeSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeSub-5082"><a href="#DatetimeSub-5082"><span class="linenos">5082</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> -</span><span id="DatetimeSub-5083"><a href="#DatetimeSub-5083"><span class="linenos">5083</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeSub-5089"><a href="#DatetimeSub-5089"><span class="linenos">5089</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">IntervalOp</span><span class="p">):</span> +</span><span id="DatetimeSub-5090"><a href="#DatetimeSub-5090"><span class="linenos">5090</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -74946,8 +75125,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DatetimeDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeDiff-5086"><a href="#DatetimeDiff-5086"><span class="linenos">5086</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DatetimeDiff-5087"><a href="#DatetimeDiff-5087"><span class="linenos">5087</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeDiff-5093"><a href="#DatetimeDiff-5093"><span class="linenos">5093</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DatetimeDiff-5094"><a href="#DatetimeDiff-5094"><span class="linenos">5094</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -75080,8 +75259,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DatetimeTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeTrunc-5090"><a href="#DatetimeTrunc-5090"><span class="linenos">5090</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DatetimeTrunc-5091"><a href="#DatetimeTrunc-5091"><span class="linenos">5091</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeTrunc-5097"><a href="#DatetimeTrunc-5097"><span class="linenos">5097</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DatetimeTrunc-5098"><a href="#DatetimeTrunc-5098"><span class="linenos">5098</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -75214,8 +75393,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DayOfWeek"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfWeek-5094"><a href="#DayOfWeek-5094"><span class="linenos">5094</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DayOfWeek-5095"><a href="#DayOfWeek-5095"><span class="linenos">5095</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfWeek-5101"><a href="#DayOfWeek-5101"><span class="linenos">5101</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DayOfWeek-5102"><a href="#DayOfWeek-5102"><span class="linenos">5102</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> </span></pre></div> @@ -75331,8 +75510,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DayOfMonth"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfMonth-5098"><a href="#DayOfMonth-5098"><span class="linenos">5098</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DayOfMonth-5099"><a href="#DayOfMonth-5099"><span class="linenos">5099</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfMonth-5105"><a href="#DayOfMonth-5105"><span class="linenos">5105</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DayOfMonth-5106"><a href="#DayOfMonth-5106"><span class="linenos">5106</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> </span></pre></div> @@ -75448,8 +75627,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DayOfYear"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfYear-5102"><a href="#DayOfYear-5102"><span class="linenos">5102</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DayOfYear-5103"><a href="#DayOfYear-5103"><span class="linenos">5103</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfYear-5109"><a href="#DayOfYear-5109"><span class="linenos">5109</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DayOfYear-5110"><a href="#DayOfYear-5110"><span class="linenos">5110</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> </span></pre></div> @@ -75565,8 +75744,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ToDays"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ToDays-5106"><a href="#ToDays-5106"><span class="linenos">5106</span></a><span class="k">class</span> <span class="nc">ToDays</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ToDays-5107"><a href="#ToDays-5107"><span class="linenos">5107</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ToDays-5113"><a href="#ToDays-5113"><span class="linenos">5113</span></a><span class="k">class</span> <span class="nc">ToDays</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ToDays-5114"><a href="#ToDays-5114"><span class="linenos">5114</span></a> <span class="k">pass</span> </span></pre></div> @@ -75682,8 +75861,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#WeekOfYear"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="WeekOfYear-5110"><a href="#WeekOfYear-5110"><span class="linenos">5110</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="WeekOfYear-5111"><a href="#WeekOfYear-5111"><span class="linenos">5111</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="WeekOfYear-5117"><a href="#WeekOfYear-5117"><span class="linenos">5117</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="WeekOfYear-5118"><a href="#WeekOfYear-5118"><span class="linenos">5118</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> </span></pre></div> @@ -75799,8 +75978,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#MonthsBetween"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MonthsBetween-5114"><a href="#MonthsBetween-5114"><span class="linenos">5114</span></a><span class="k">class</span> <span class="nc">MonthsBetween</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="MonthsBetween-5115"><a href="#MonthsBetween-5115"><span class="linenos">5115</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"roundoff"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MonthsBetween-5121"><a href="#MonthsBetween-5121"><span class="linenos">5121</span></a><span class="k">class</span> <span class="nc">MonthsBetween</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="MonthsBetween-5122"><a href="#MonthsBetween-5122"><span class="linenos">5122</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"roundoff"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -75927,9 +76106,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#LastDay"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LastDay-5118"><a href="#LastDay-5118"><span class="linenos">5118</span></a><span class="k">class</span> <span class="nc">LastDay</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="LastDay-5119"><a href="#LastDay-5119"><span class="linenos">5119</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LAST_DAY"</span><span class="p">,</span> <span class="s2">"LAST_DAY_OF_MONTH"</span><span class="p">]</span> -</span><span id="LastDay-5120"><a href="#LastDay-5120"><span class="linenos">5120</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LastDay-5125"><a href="#LastDay-5125"><span class="linenos">5125</span></a><span class="k">class</span> <span class="nc">LastDay</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="LastDay-5126"><a href="#LastDay-5126"><span class="linenos">5126</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LAST_DAY"</span><span class="p">,</span> <span class="s2">"LAST_DAY_OF_MONTH"</span><span class="p">]</span> +</span><span id="LastDay-5127"><a href="#LastDay-5127"><span class="linenos">5127</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76062,8 +76241,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Extract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Extract-5123"><a href="#Extract-5123"><span class="linenos">5123</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Extract-5124"><a href="#Extract-5124"><span class="linenos">5124</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Extract-5130"><a href="#Extract-5130"><span class="linenos">5130</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Extract-5131"><a href="#Extract-5131"><span class="linenos">5131</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -76190,8 +76369,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Timestamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Timestamp-5127"><a href="#Timestamp-5127"><span class="linenos">5127</span></a><span class="k">class</span> <span class="nc">Timestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Timestamp-5128"><a href="#Timestamp-5128"><span class="linenos">5128</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"with_tz"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Timestamp-5134"><a href="#Timestamp-5134"><span class="linenos">5134</span></a><span class="k">class</span> <span class="nc">Timestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Timestamp-5135"><a href="#Timestamp-5135"><span class="linenos">5135</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"with_tz"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76318,8 +76497,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimestampAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampAdd-5131"><a href="#TimestampAdd-5131"><span class="linenos">5131</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampAdd-5132"><a href="#TimestampAdd-5132"><span class="linenos">5132</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampAdd-5138"><a href="#TimestampAdd-5138"><span class="linenos">5138</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampAdd-5139"><a href="#TimestampAdd-5139"><span class="linenos">5139</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76452,8 +76631,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimestampSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampSub-5135"><a href="#TimestampSub-5135"><span class="linenos">5135</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampSub-5136"><a href="#TimestampSub-5136"><span class="linenos">5136</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampSub-5142"><a href="#TimestampSub-5142"><span class="linenos">5142</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampSub-5143"><a href="#TimestampSub-5143"><span class="linenos">5143</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76586,9 +76765,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimestampDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampDiff-5139"><a href="#TimestampDiff-5139"><span class="linenos">5139</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampDiff-5140"><a href="#TimestampDiff-5140"><span class="linenos">5140</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMPDIFF"</span><span class="p">,</span> <span class="s2">"TIMESTAMP_DIFF"</span><span class="p">]</span> -</span><span id="TimestampDiff-5141"><a href="#TimestampDiff-5141"><span class="linenos">5141</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampDiff-5146"><a href="#TimestampDiff-5146"><span class="linenos">5146</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampDiff-5147"><a href="#TimestampDiff-5147"><span class="linenos">5147</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMPDIFF"</span><span class="p">,</span> <span class="s2">"TIMESTAMP_DIFF"</span><span class="p">]</span> +</span><span id="TimestampDiff-5148"><a href="#TimestampDiff-5148"><span class="linenos">5148</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76721,8 +76900,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimestampTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampTrunc-5144"><a href="#TimestampTrunc-5144"><span class="linenos">5144</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampTrunc-5145"><a href="#TimestampTrunc-5145"><span class="linenos">5145</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampTrunc-5151"><a href="#TimestampTrunc-5151"><span class="linenos">5151</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampTrunc-5152"><a href="#TimestampTrunc-5152"><span class="linenos">5152</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76855,8 +77034,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeAdd-5148"><a href="#TimeAdd-5148"><span class="linenos">5148</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeAdd-5149"><a href="#TimeAdd-5149"><span class="linenos">5149</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeAdd-5155"><a href="#TimeAdd-5155"><span class="linenos">5155</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeAdd-5156"><a href="#TimeAdd-5156"><span class="linenos">5156</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -76989,8 +77168,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeSub-5152"><a href="#TimeSub-5152"><span class="linenos">5152</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeSub-5153"><a href="#TimeSub-5153"><span class="linenos">5153</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeSub-5159"><a href="#TimeSub-5159"><span class="linenos">5159</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeSub-5160"><a href="#TimeSub-5160"><span class="linenos">5160</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -77123,8 +77302,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeDiff-5156"><a href="#TimeDiff-5156"><span class="linenos">5156</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeDiff-5157"><a href="#TimeDiff-5157"><span class="linenos">5157</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeDiff-5163"><a href="#TimeDiff-5163"><span class="linenos">5163</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeDiff-5164"><a href="#TimeDiff-5164"><span class="linenos">5164</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -77257,8 +77436,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeTrunc-5160"><a href="#TimeTrunc-5160"><span class="linenos">5160</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeTrunc-5161"><a href="#TimeTrunc-5161"><span class="linenos">5161</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeTrunc-5167"><a href="#TimeTrunc-5167"><span class="linenos">5167</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeTrunc-5168"><a href="#TimeTrunc-5168"><span class="linenos">5168</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -77391,9 +77570,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateFromParts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateFromParts-5164"><a href="#DateFromParts-5164"><span class="linenos">5164</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateFromParts-5165"><a href="#DateFromParts-5165"><span class="linenos">5165</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATE_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> -</span><span id="DateFromParts-5166"><a href="#DateFromParts-5166"><span class="linenos">5166</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateFromParts-5171"><a href="#DateFromParts-5171"><span class="linenos">5171</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateFromParts-5172"><a href="#DateFromParts-5172"><span class="linenos">5172</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATE_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> +</span><span id="DateFromParts-5173"><a href="#DateFromParts-5173"><span class="linenos">5173</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -77520,16 +77699,16 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeFromParts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeFromParts-5169"><a href="#TimeFromParts-5169"><span class="linenos">5169</span></a><span class="k">class</span> <span class="nc">TimeFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeFromParts-5170"><a href="#TimeFromParts-5170"><span class="linenos">5170</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIME_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMEFROMPARTS"</span><span class="p">]</span> -</span><span id="TimeFromParts-5171"><a href="#TimeFromParts-5171"><span class="linenos">5171</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="TimeFromParts-5172"><a href="#TimeFromParts-5172"><span class="linenos">5172</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimeFromParts-5173"><a href="#TimeFromParts-5173"><span class="linenos">5173</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimeFromParts-5174"><a href="#TimeFromParts-5174"><span class="linenos">5174</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimeFromParts-5175"><a href="#TimeFromParts-5175"><span class="linenos">5175</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TimeFromParts-5176"><a href="#TimeFromParts-5176"><span class="linenos">5176</span></a> <span class="s2">"fractions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TimeFromParts-5177"><a href="#TimeFromParts-5177"><span class="linenos">5177</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TimeFromParts-5178"><a href="#TimeFromParts-5178"><span class="linenos">5178</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeFromParts-5176"><a href="#TimeFromParts-5176"><span class="linenos">5176</span></a><span class="k">class</span> <span class="nc">TimeFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeFromParts-5177"><a href="#TimeFromParts-5177"><span class="linenos">5177</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIME_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMEFROMPARTS"</span><span class="p">]</span> +</span><span id="TimeFromParts-5178"><a href="#TimeFromParts-5178"><span class="linenos">5178</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="TimeFromParts-5179"><a href="#TimeFromParts-5179"><span class="linenos">5179</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimeFromParts-5180"><a href="#TimeFromParts-5180"><span class="linenos">5180</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimeFromParts-5181"><a href="#TimeFromParts-5181"><span class="linenos">5181</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimeFromParts-5182"><a href="#TimeFromParts-5182"><span class="linenos">5182</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TimeFromParts-5183"><a href="#TimeFromParts-5183"><span class="linenos">5183</span></a> <span class="s2">"fractions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TimeFromParts-5184"><a href="#TimeFromParts-5184"><span class="linenos">5184</span></a> <span class="s2">"precision"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TimeFromParts-5185"><a href="#TimeFromParts-5185"><span class="linenos">5185</span></a> <span class="p">}</span> </span></pre></div> @@ -77656,8 +77835,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateStrToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateStrToDate-5181"><a href="#DateStrToDate-5181"><span class="linenos">5181</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateStrToDate-5182"><a href="#DateStrToDate-5182"><span class="linenos">5182</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateStrToDate-5188"><a href="#DateStrToDate-5188"><span class="linenos">5188</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateStrToDate-5189"><a href="#DateStrToDate-5189"><span class="linenos">5189</span></a> <span class="k">pass</span> </span></pre></div> @@ -77773,8 +77952,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateToDateStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDateStr-5185"><a href="#DateToDateStr-5185"><span class="linenos">5185</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateToDateStr-5186"><a href="#DateToDateStr-5186"><span class="linenos">5186</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDateStr-5192"><a href="#DateToDateStr-5192"><span class="linenos">5192</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateToDateStr-5193"><a href="#DateToDateStr-5193"><span class="linenos">5193</span></a> <span class="k">pass</span> </span></pre></div> @@ -77890,8 +78069,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DateToDi"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDi-5189"><a href="#DateToDi-5189"><span class="linenos">5189</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateToDi-5190"><a href="#DateToDi-5190"><span class="linenos">5190</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDi-5196"><a href="#DateToDi-5196"><span class="linenos">5196</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateToDi-5197"><a href="#DateToDi-5197"><span class="linenos">5197</span></a> <span class="k">pass</span> </span></pre></div> @@ -78007,9 +78186,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Date"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Date-5194"><a href="#Date-5194"><span class="linenos">5194</span></a><span class="k">class</span> <span class="nc">Date</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Date-5195"><a href="#Date-5195"><span class="linenos">5195</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Date-5196"><a href="#Date-5196"><span class="linenos">5196</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Date-5201"><a href="#Date-5201"><span class="linenos">5201</span></a><span class="k">class</span> <span class="nc">Date</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Date-5202"><a href="#Date-5202"><span class="linenos">5202</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Date-5203"><a href="#Date-5203"><span class="linenos">5203</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -78147,8 +78326,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Day"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Day-5199"><a href="#Day-5199"><span class="linenos">5199</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Day-5200"><a href="#Day-5200"><span class="linenos">5200</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Day-5206"><a href="#Day-5206"><span class="linenos">5206</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Day-5207"><a href="#Day-5207"><span class="linenos">5207</span></a> <span class="k">pass</span> </span></pre></div> @@ -78264,8 +78443,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Decode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Decode-5203"><a href="#Decode-5203"><span class="linenos">5203</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Decode-5204"><a href="#Decode-5204"><span class="linenos">5204</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Decode-5210"><a href="#Decode-5210"><span class="linenos">5210</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Decode-5211"><a href="#Decode-5211"><span class="linenos">5211</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -78392,8 +78571,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#DiToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DiToDate-5207"><a href="#DiToDate-5207"><span class="linenos">5207</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DiToDate-5208"><a href="#DiToDate-5208"><span class="linenos">5208</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DiToDate-5214"><a href="#DiToDate-5214"><span class="linenos">5214</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DiToDate-5215"><a href="#DiToDate-5215"><span class="linenos">5215</span></a> <span class="k">pass</span> </span></pre></div> @@ -78509,8 +78688,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Encode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Encode-5211"><a href="#Encode-5211"><span class="linenos">5211</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Encode-5212"><a href="#Encode-5212"><span class="linenos">5212</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Encode-5218"><a href="#Encode-5218"><span class="linenos">5218</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Encode-5219"><a href="#Encode-5219"><span class="linenos">5219</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -78637,8 +78816,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Exp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Exp-5215"><a href="#Exp-5215"><span class="linenos">5215</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Exp-5216"><a href="#Exp-5216"><span class="linenos">5216</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Exp-5222"><a href="#Exp-5222"><span class="linenos">5222</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Exp-5223"><a href="#Exp-5223"><span class="linenos">5223</span></a> <span class="k">pass</span> </span></pre></div> @@ -78754,9 +78933,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Explode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Explode-5220"><a href="#Explode-5220"><span class="linenos">5220</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Explode-5221"><a href="#Explode-5221"><span class="linenos">5221</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Explode-5222"><a href="#Explode-5222"><span class="linenos">5222</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Explode-5227"><a href="#Explode-5227"><span class="linenos">5227</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Explode-5228"><a href="#Explode-5228"><span class="linenos">5228</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Explode-5229"><a href="#Explode-5229"><span class="linenos">5229</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -78894,8 +79073,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ExplodeOuter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ExplodeOuter-5225"><a href="#ExplodeOuter-5225"><span class="linenos">5225</span></a><span class="k">class</span> <span class="nc">ExplodeOuter</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> -</span><span id="ExplodeOuter-5226"><a href="#ExplodeOuter-5226"><span class="linenos">5226</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ExplodeOuter-5232"><a href="#ExplodeOuter-5232"><span class="linenos">5232</span></a><span class="k">class</span> <span class="nc">ExplodeOuter</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> +</span><span id="ExplodeOuter-5233"><a href="#ExplodeOuter-5233"><span class="linenos">5233</span></a> <span class="k">pass</span> </span></pre></div> @@ -79014,8 +79193,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Posexplode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Posexplode-5229"><a href="#Posexplode-5229"><span class="linenos">5229</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> -</span><span id="Posexplode-5230"><a href="#Posexplode-5230"><span class="linenos">5230</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Posexplode-5236"><a href="#Posexplode-5236"><span class="linenos">5236</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Explode</span><span class="p">):</span> +</span><span id="Posexplode-5237"><a href="#Posexplode-5237"><span class="linenos">5237</span></a> <span class="k">pass</span> </span></pre></div> @@ -79134,8 +79313,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#PosexplodeOuter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PosexplodeOuter-5233"><a href="#PosexplodeOuter-5233"><span class="linenos">5233</span></a><span class="k">class</span> <span class="nc">PosexplodeOuter</span><span class="p">(</span><span class="n">Posexplode</span><span class="p">,</span> <span class="n">ExplodeOuter</span><span class="p">):</span> -</span><span id="PosexplodeOuter-5234"><a href="#PosexplodeOuter-5234"><span class="linenos">5234</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PosexplodeOuter-5240"><a href="#PosexplodeOuter-5240"><span class="linenos">5240</span></a><span class="k">class</span> <span class="nc">PosexplodeOuter</span><span class="p">(</span><span class="n">Posexplode</span><span class="p">,</span> <span class="n">ExplodeOuter</span><span class="p">):</span> +</span><span id="PosexplodeOuter-5241"><a href="#PosexplodeOuter-5241"><span class="linenos">5241</span></a> <span class="k">pass</span> </span></pre></div> @@ -79254,8 +79433,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Floor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Floor-5237"><a href="#Floor-5237"><span class="linenos">5237</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Floor-5238"><a href="#Floor-5238"><span class="linenos">5238</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Floor-5244"><a href="#Floor-5244"><span class="linenos">5244</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Floor-5245"><a href="#Floor-5245"><span class="linenos">5245</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -79382,8 +79561,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#FromBase64"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FromBase64-5241"><a href="#FromBase64-5241"><span class="linenos">5241</span></a><span class="k">class</span> <span class="nc">FromBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="FromBase64-5242"><a href="#FromBase64-5242"><span class="linenos">5242</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="FromBase64-5248"><a href="#FromBase64-5248"><span class="linenos">5248</span></a><span class="k">class</span> <span class="nc">FromBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="FromBase64-5249"><a href="#FromBase64-5249"><span class="linenos">5249</span></a> <span class="k">pass</span> </span></pre></div> @@ -79499,8 +79678,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ToBase64"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ToBase64-5245"><a href="#ToBase64-5245"><span class="linenos">5245</span></a><span class="k">class</span> <span class="nc">ToBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ToBase64-5246"><a href="#ToBase64-5246"><span class="linenos">5246</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ToBase64-5252"><a href="#ToBase64-5252"><span class="linenos">5252</span></a><span class="k">class</span> <span class="nc">ToBase64</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ToBase64-5253"><a href="#ToBase64-5253"><span class="linenos">5253</span></a> <span class="k">pass</span> </span></pre></div> @@ -79616,16 +79795,16 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#GapFill"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GapFill-5249"><a href="#GapFill-5249"><span class="linenos">5249</span></a><span class="k">class</span> <span class="nc">GapFill</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="GapFill-5250"><a href="#GapFill-5250"><span class="linenos">5250</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="GapFill-5251"><a href="#GapFill-5251"><span class="linenos">5251</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="GapFill-5252"><a href="#GapFill-5252"><span class="linenos">5252</span></a> <span class="s2">"ts_column"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="GapFill-5253"><a href="#GapFill-5253"><span class="linenos">5253</span></a> <span class="s2">"bucket_width"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="GapFill-5254"><a href="#GapFill-5254"><span class="linenos">5254</span></a> <span class="s2">"partitioning_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GapFill-5255"><a href="#GapFill-5255"><span class="linenos">5255</span></a> <span class="s2">"value_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GapFill-5256"><a href="#GapFill-5256"><span class="linenos">5256</span></a> <span class="s2">"origin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GapFill-5257"><a href="#GapFill-5257"><span class="linenos">5257</span></a> <span class="s2">"ignore_nulls"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GapFill-5258"><a href="#GapFill-5258"><span class="linenos">5258</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GapFill-5256"><a href="#GapFill-5256"><span class="linenos">5256</span></a><span class="k">class</span> <span class="nc">GapFill</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="GapFill-5257"><a href="#GapFill-5257"><span class="linenos">5257</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="GapFill-5258"><a href="#GapFill-5258"><span class="linenos">5258</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="GapFill-5259"><a href="#GapFill-5259"><span class="linenos">5259</span></a> <span class="s2">"ts_column"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="GapFill-5260"><a href="#GapFill-5260"><span class="linenos">5260</span></a> <span class="s2">"bucket_width"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="GapFill-5261"><a href="#GapFill-5261"><span class="linenos">5261</span></a> <span class="s2">"partitioning_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GapFill-5262"><a href="#GapFill-5262"><span class="linenos">5262</span></a> <span class="s2">"value_columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GapFill-5263"><a href="#GapFill-5263"><span class="linenos">5263</span></a> <span class="s2">"origin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GapFill-5264"><a href="#GapFill-5264"><span class="linenos">5264</span></a> <span class="s2">"ignore_nulls"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GapFill-5265"><a href="#GapFill-5265"><span class="linenos">5265</span></a> <span class="p">}</span> </span></pre></div> @@ -79753,8 +79932,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#GenerateDateArray"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GenerateDateArray-5261"><a href="#GenerateDateArray-5261"><span class="linenos">5261</span></a><span class="k">class</span> <span class="nc">GenerateDateArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="GenerateDateArray-5262"><a href="#GenerateDateArray-5262"><span class="linenos">5262</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"interval"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GenerateDateArray-5268"><a href="#GenerateDateArray-5268"><span class="linenos">5268</span></a><span class="k">class</span> <span class="nc">GenerateDateArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="GenerateDateArray-5269"><a href="#GenerateDateArray-5269"><span class="linenos">5269</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"interval"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -79881,9 +80060,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Greatest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Greatest-5265"><a href="#Greatest-5265"><span class="linenos">5265</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Greatest-5266"><a href="#Greatest-5266"><span class="linenos">5266</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Greatest-5267"><a href="#Greatest-5267"><span class="linenos">5267</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Greatest-5272"><a href="#Greatest-5272"><span class="linenos">5272</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Greatest-5273"><a href="#Greatest-5273"><span class="linenos">5273</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Greatest-5274"><a href="#Greatest-5274"><span class="linenos">5274</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -80021,8 +80200,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#GroupConcat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GroupConcat-5270"><a href="#GroupConcat-5270"><span class="linenos">5270</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="GroupConcat-5271"><a href="#GroupConcat-5271"><span class="linenos">5271</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GroupConcat-5277"><a href="#GroupConcat-5277"><span class="linenos">5277</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="GroupConcat-5278"><a href="#GroupConcat-5278"><span class="linenos">5278</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -80149,8 +80328,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Hex"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Hex-5274"><a href="#Hex-5274"><span class="linenos">5274</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Hex-5275"><a href="#Hex-5275"><span class="linenos">5275</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Hex-5281"><a href="#Hex-5281"><span class="linenos">5281</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Hex-5282"><a href="#Hex-5282"><span class="linenos">5282</span></a> <span class="k">pass</span> </span></pre></div> @@ -80266,8 +80445,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#LowerHex"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LowerHex-5278"><a href="#LowerHex-5278"><span class="linenos">5278</span></a><span class="k">class</span> <span class="nc">LowerHex</span><span class="p">(</span><span class="n">Hex</span><span class="p">):</span> -</span><span id="LowerHex-5279"><a href="#LowerHex-5279"><span class="linenos">5279</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LowerHex-5285"><a href="#LowerHex-5285"><span class="linenos">5285</span></a><span class="k">class</span> <span class="nc">LowerHex</span><span class="p">(</span><span class="n">Hex</span><span class="p">):</span> +</span><span id="LowerHex-5286"><a href="#LowerHex-5286"><span class="linenos">5286</span></a> <span class="k">pass</span> </span></pre></div> @@ -80383,8 +80562,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Xor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Xor-5282"><a href="#Xor-5282"><span class="linenos">5282</span></a><span class="k">class</span> <span class="nc">Xor</span><span class="p">(</span><span class="n">Connector</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="Xor-5283"><a href="#Xor-5283"><span class="linenos">5283</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Xor-5289"><a href="#Xor-5289"><span class="linenos">5289</span></a><span class="k">class</span> <span class="nc">Xor</span><span class="p">(</span><span class="n">Connector</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="Xor-5290"><a href="#Xor-5290"><span class="linenos">5290</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -80516,9 +80695,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#If"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="If-5286"><a href="#If-5286"><span class="linenos">5286</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="If-5287"><a href="#If-5287"><span class="linenos">5287</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="If-5288"><a href="#If-5288"><span class="linenos">5288</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IF"</span><span class="p">,</span> <span class="s2">"IIF"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="If-5293"><a href="#If-5293"><span class="linenos">5293</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="If-5294"><a href="#If-5294"><span class="linenos">5294</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="If-5295"><a href="#If-5295"><span class="linenos">5295</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IF"</span><span class="p">,</span> <span class="s2">"IIF"</span><span class="p">]</span> </span></pre></div> @@ -80645,8 +80824,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Nullif"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Nullif-5291"><a href="#Nullif-5291"><span class="linenos">5291</span></a><span class="k">class</span> <span class="nc">Nullif</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Nullif-5292"><a href="#Nullif-5292"><span class="linenos">5292</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Nullif-5298"><a href="#Nullif-5298"><span class="linenos">5298</span></a><span class="k">class</span> <span class="nc">Nullif</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Nullif-5299"><a href="#Nullif-5299"><span class="linenos">5299</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -80773,8 +80952,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Initcap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Initcap-5295"><a href="#Initcap-5295"><span class="linenos">5295</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Initcap-5296"><a href="#Initcap-5296"><span class="linenos">5296</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Initcap-5302"><a href="#Initcap-5302"><span class="linenos">5302</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Initcap-5303"><a href="#Initcap-5303"><span class="linenos">5303</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -80901,8 +81080,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#IsNan"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IsNan-5299"><a href="#IsNan-5299"><span class="linenos">5299</span></a><span class="k">class</span> <span class="nc">IsNan</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="IsNan-5300"><a href="#IsNan-5300"><span class="linenos">5300</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_NAN"</span><span class="p">,</span> <span class="s2">"ISNAN"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IsNan-5306"><a href="#IsNan-5306"><span class="linenos">5306</span></a><span class="k">class</span> <span class="nc">IsNan</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="IsNan-5307"><a href="#IsNan-5307"><span class="linenos">5307</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_NAN"</span><span class="p">,</span> <span class="s2">"ISNAN"</span><span class="p">]</span> </span></pre></div> @@ -81018,8 +81197,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#IsInf"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IsInf-5303"><a href="#IsInf-5303"><span class="linenos">5303</span></a><span class="k">class</span> <span class="nc">IsInf</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="IsInf-5304"><a href="#IsInf-5304"><span class="linenos">5304</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_INF"</span><span class="p">,</span> <span class="s2">"ISINF"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IsInf-5310"><a href="#IsInf-5310"><span class="linenos">5310</span></a><span class="k">class</span> <span class="nc">IsInf</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="IsInf-5311"><a href="#IsInf-5311"><span class="linenos">5311</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IS_INF"</span><span class="p">,</span> <span class="s2">"ISINF"</span><span class="p">]</span> </span></pre></div> @@ -81135,13 +81314,13 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPath"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPath-5307"><a href="#JSONPath-5307"><span class="linenos">5307</span></a><span class="k">class</span> <span class="nc">JSONPath</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="JSONPath-5308"><a href="#JSONPath-5308"><span class="linenos">5308</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="JSONPath-5309"><a href="#JSONPath-5309"><span class="linenos">5309</span></a> -</span><span id="JSONPath-5310"><a href="#JSONPath-5310"><span class="linenos">5310</span></a> <span class="nd">@property</span> -</span><span id="JSONPath-5311"><a href="#JSONPath-5311"><span class="linenos">5311</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="JSONPath-5312"><a href="#JSONPath-5312"><span class="linenos">5312</span></a> <span class="n">last_segment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</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">this</span> -</span><span id="JSONPath-5313"><a href="#JSONPath-5313"><span class="linenos">5313</span></a> <span class="k">return</span> <span class="n">last_segment</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">last_segment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPath-5314"><a href="#JSONPath-5314"><span class="linenos">5314</span></a><span class="k">class</span> <span class="nc">JSONPath</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="JSONPath-5315"><a href="#JSONPath-5315"><span class="linenos">5315</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="JSONPath-5316"><a href="#JSONPath-5316"><span class="linenos">5316</span></a> +</span><span id="JSONPath-5317"><a href="#JSONPath-5317"><span class="linenos">5317</span></a> <span class="nd">@property</span> +</span><span id="JSONPath-5318"><a href="#JSONPath-5318"><span class="linenos">5318</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="JSONPath-5319"><a href="#JSONPath-5319"><span class="linenos">5319</span></a> <span class="n">last_segment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</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">this</span> +</span><span id="JSONPath-5320"><a href="#JSONPath-5320"><span class="linenos">5320</span></a> <span class="k">return</span> <span class="n">last_segment</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">last_segment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> </span></pre></div> @@ -81168,10 +81347,10 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPath.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPath.output_name-5310"><a href="#JSONPath.output_name-5310"><span class="linenos">5310</span></a> <span class="nd">@property</span> -</span><span id="JSONPath.output_name-5311"><a href="#JSONPath.output_name-5311"><span class="linenos">5311</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="JSONPath.output_name-5312"><a href="#JSONPath.output_name-5312"><span class="linenos">5312</span></a> <span class="n">last_segment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</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">this</span> -</span><span id="JSONPath.output_name-5313"><a href="#JSONPath.output_name-5313"><span class="linenos">5313</span></a> <span class="k">return</span> <span class="n">last_segment</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">last_segment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPath.output_name-5317"><a href="#JSONPath.output_name-5317"><span class="linenos">5317</span></a> <span class="nd">@property</span> +</span><span id="JSONPath.output_name-5318"><a href="#JSONPath.output_name-5318"><span class="linenos">5318</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="JSONPath.output_name-5319"><a href="#JSONPath.output_name-5319"><span class="linenos">5319</span></a> <span class="n">last_segment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</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">this</span> +</span><span id="JSONPath.output_name-5320"><a href="#JSONPath.output_name-5320"><span class="linenos">5320</span></a> <span class="k">return</span> <span class="n">last_segment</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">last_segment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> </span></pre></div> @@ -81297,8 +81476,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathPart"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathPart-5316"><a href="#JSONPathPart-5316"><span class="linenos">5316</span></a><span class="k">class</span> <span class="nc">JSONPathPart</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="JSONPathPart-5317"><a href="#JSONPathPart-5317"><span class="linenos">5317</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathPart-5323"><a href="#JSONPathPart-5323"><span class="linenos">5323</span></a><span class="k">class</span> <span class="nc">JSONPathPart</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="JSONPathPart-5324"><a href="#JSONPathPart-5324"><span class="linenos">5324</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> </span></pre></div> @@ -81417,8 +81596,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathFilter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathFilter-5320"><a href="#JSONPathFilter-5320"><span class="linenos">5320</span></a><span class="k">class</span> <span class="nc">JSONPathFilter</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathFilter-5321"><a href="#JSONPathFilter-5321"><span class="linenos">5321</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathFilter-5327"><a href="#JSONPathFilter-5327"><span class="linenos">5327</span></a><span class="k">class</span> <span class="nc">JSONPathFilter</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathFilter-5328"><a href="#JSONPathFilter-5328"><span class="linenos">5328</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -81537,8 +81716,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathKey"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathKey-5324"><a href="#JSONPathKey-5324"><span class="linenos">5324</span></a><span class="k">class</span> <span class="nc">JSONPathKey</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathKey-5325"><a href="#JSONPathKey-5325"><span class="linenos">5325</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathKey-5331"><a href="#JSONPathKey-5331"><span class="linenos">5331</span></a><span class="k">class</span> <span class="nc">JSONPathKey</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathKey-5332"><a href="#JSONPathKey-5332"><span class="linenos">5332</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -81657,8 +81836,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathRecursive"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathRecursive-5328"><a href="#JSONPathRecursive-5328"><span class="linenos">5328</span></a><span class="k">class</span> <span class="nc">JSONPathRecursive</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathRecursive-5329"><a href="#JSONPathRecursive-5329"><span class="linenos">5329</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathRecursive-5335"><a href="#JSONPathRecursive-5335"><span class="linenos">5335</span></a><span class="k">class</span> <span class="nc">JSONPathRecursive</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathRecursive-5336"><a href="#JSONPathRecursive-5336"><span class="linenos">5336</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -81777,8 +81956,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathRoot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathRoot-5332"><a href="#JSONPathRoot-5332"><span class="linenos">5332</span></a><span class="k">class</span> <span class="nc">JSONPathRoot</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathRoot-5333"><a href="#JSONPathRoot-5333"><span class="linenos">5333</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathRoot-5339"><a href="#JSONPathRoot-5339"><span class="linenos">5339</span></a><span class="k">class</span> <span class="nc">JSONPathRoot</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathRoot-5340"><a href="#JSONPathRoot-5340"><span class="linenos">5340</span></a> <span class="k">pass</span> </span></pre></div> @@ -81889,8 +82068,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathScript"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathScript-5336"><a href="#JSONPathScript-5336"><span class="linenos">5336</span></a><span class="k">class</span> <span class="nc">JSONPathScript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathScript-5337"><a href="#JSONPathScript-5337"><span class="linenos">5337</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathScript-5343"><a href="#JSONPathScript-5343"><span class="linenos">5343</span></a><span class="k">class</span> <span class="nc">JSONPathScript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathScript-5344"><a href="#JSONPathScript-5344"><span class="linenos">5344</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -82009,8 +82188,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathSlice"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathSlice-5340"><a href="#JSONPathSlice-5340"><span class="linenos">5340</span></a><span class="k">class</span> <span class="nc">JSONPathSlice</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathSlice-5341"><a href="#JSONPathSlice-5341"><span class="linenos">5341</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathSlice-5347"><a href="#JSONPathSlice-5347"><span class="linenos">5347</span></a><span class="k">class</span> <span class="nc">JSONPathSlice</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathSlice-5348"><a href="#JSONPathSlice-5348"><span class="linenos">5348</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -82129,8 +82308,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathSelector"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathSelector-5344"><a href="#JSONPathSelector-5344"><span class="linenos">5344</span></a><span class="k">class</span> <span class="nc">JSONPathSelector</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathSelector-5345"><a href="#JSONPathSelector-5345"><span class="linenos">5345</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathSelector-5351"><a href="#JSONPathSelector-5351"><span class="linenos">5351</span></a><span class="k">class</span> <span class="nc">JSONPathSelector</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathSelector-5352"><a href="#JSONPathSelector-5352"><span class="linenos">5352</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -82249,8 +82428,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathSubscript"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathSubscript-5348"><a href="#JSONPathSubscript-5348"><span class="linenos">5348</span></a><span class="k">class</span> <span class="nc">JSONPathSubscript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathSubscript-5349"><a href="#JSONPathSubscript-5349"><span class="linenos">5349</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathSubscript-5355"><a href="#JSONPathSubscript-5355"><span class="linenos">5355</span></a><span class="k">class</span> <span class="nc">JSONPathSubscript</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathSubscript-5356"><a href="#JSONPathSubscript-5356"><span class="linenos">5356</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -82369,8 +82548,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathUnion"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathUnion-5352"><a href="#JSONPathUnion-5352"><span class="linenos">5352</span></a><span class="k">class</span> <span class="nc">JSONPathUnion</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathUnion-5353"><a href="#JSONPathUnion-5353"><span class="linenos">5353</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathUnion-5359"><a href="#JSONPathUnion-5359"><span class="linenos">5359</span></a><span class="k">class</span> <span class="nc">JSONPathUnion</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathUnion-5360"><a href="#JSONPathUnion-5360"><span class="linenos">5360</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -82489,8 +82668,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONPathWildcard"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathWildcard-5356"><a href="#JSONPathWildcard-5356"><span class="linenos">5356</span></a><span class="k">class</span> <span class="nc">JSONPathWildcard</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> -</span><span id="JSONPathWildcard-5357"><a href="#JSONPathWildcard-5357"><span class="linenos">5357</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathWildcard-5363"><a href="#JSONPathWildcard-5363"><span class="linenos">5363</span></a><span class="k">class</span> <span class="nc">JSONPathWildcard</span><span class="p">(</span><span class="n">JSONPathPart</span><span class="p">):</span> +</span><span id="JSONPathWildcard-5364"><a href="#JSONPathWildcard-5364"><span class="linenos">5364</span></a> <span class="k">pass</span> </span></pre></div> @@ -82601,8 +82780,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#FormatJson"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FormatJson-5360"><a href="#FormatJson-5360"><span class="linenos">5360</span></a><span class="k">class</span> <span class="nc">FormatJson</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="FormatJson-5361"><a href="#FormatJson-5361"><span class="linenos">5361</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="FormatJson-5367"><a href="#FormatJson-5367"><span class="linenos">5367</span></a><span class="k">class</span> <span class="nc">FormatJson</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="FormatJson-5368"><a href="#FormatJson-5368"><span class="linenos">5368</span></a> <span class="k">pass</span> </span></pre></div> @@ -82710,8 +82889,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONKeyValue"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONKeyValue-5364"><a href="#JSONKeyValue-5364"><span class="linenos">5364</span></a><span class="k">class</span> <span class="nc">JSONKeyValue</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="JSONKeyValue-5365"><a href="#JSONKeyValue-5365"><span class="linenos">5365</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONKeyValue-5371"><a href="#JSONKeyValue-5371"><span class="linenos">5371</span></a><span class="k">class</span> <span class="nc">JSONKeyValue</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="JSONKeyValue-5372"><a href="#JSONKeyValue-5372"><span class="linenos">5372</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -82830,14 +83009,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONObject"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONObject-5368"><a href="#JSONObject-5368"><span class="linenos">5368</span></a><span class="k">class</span> <span class="nc">JSONObject</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="JSONObject-5369"><a href="#JSONObject-5369"><span class="linenos">5369</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="JSONObject-5370"><a href="#JSONObject-5370"><span class="linenos">5370</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObject-5371"><a href="#JSONObject-5371"><span class="linenos">5371</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObject-5372"><a href="#JSONObject-5372"><span class="linenos">5372</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObject-5373"><a href="#JSONObject-5373"><span class="linenos">5373</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObject-5374"><a href="#JSONObject-5374"><span class="linenos">5374</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObject-5375"><a href="#JSONObject-5375"><span class="linenos">5375</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONObject-5375"><a href="#JSONObject-5375"><span class="linenos">5375</span></a><span class="k">class</span> <span class="nc">JSONObject</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="JSONObject-5376"><a href="#JSONObject-5376"><span class="linenos">5376</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="JSONObject-5377"><a href="#JSONObject-5377"><span class="linenos">5377</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObject-5378"><a href="#JSONObject-5378"><span class="linenos">5378</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObject-5379"><a href="#JSONObject-5379"><span class="linenos">5379</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObject-5380"><a href="#JSONObject-5380"><span class="linenos">5380</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObject-5381"><a href="#JSONObject-5381"><span class="linenos">5381</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObject-5382"><a href="#JSONObject-5382"><span class="linenos">5382</span></a> <span class="p">}</span> </span></pre></div> @@ -82965,14 +83144,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONObjectAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONObjectAgg-5378"><a href="#JSONObjectAgg-5378"><span class="linenos">5378</span></a><span class="k">class</span> <span class="nc">JSONObjectAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="JSONObjectAgg-5379"><a href="#JSONObjectAgg-5379"><span class="linenos">5379</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="JSONObjectAgg-5380"><a href="#JSONObjectAgg-5380"><span class="linenos">5380</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObjectAgg-5381"><a href="#JSONObjectAgg-5381"><span class="linenos">5381</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObjectAgg-5382"><a href="#JSONObjectAgg-5382"><span class="linenos">5382</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObjectAgg-5383"><a href="#JSONObjectAgg-5383"><span class="linenos">5383</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObjectAgg-5384"><a href="#JSONObjectAgg-5384"><span class="linenos">5384</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONObjectAgg-5385"><a href="#JSONObjectAgg-5385"><span class="linenos">5385</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONObjectAgg-5385"><a href="#JSONObjectAgg-5385"><span class="linenos">5385</span></a><span class="k">class</span> <span class="nc">JSONObjectAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="JSONObjectAgg-5386"><a href="#JSONObjectAgg-5386"><span class="linenos">5386</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="JSONObjectAgg-5387"><a href="#JSONObjectAgg-5387"><span class="linenos">5387</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObjectAgg-5388"><a href="#JSONObjectAgg-5388"><span class="linenos">5388</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObjectAgg-5389"><a href="#JSONObjectAgg-5389"><span class="linenos">5389</span></a> <span class="s2">"unique_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObjectAgg-5390"><a href="#JSONObjectAgg-5390"><span class="linenos">5390</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObjectAgg-5391"><a href="#JSONObjectAgg-5391"><span class="linenos">5391</span></a> <span class="s2">"encoding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONObjectAgg-5392"><a href="#JSONObjectAgg-5392"><span class="linenos">5392</span></a> <span class="p">}</span> </span></pre></div> @@ -83100,13 +83279,13 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONArray"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONArray-5389"><a href="#JSONArray-5389"><span class="linenos">5389</span></a><span class="k">class</span> <span class="nc">JSONArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="JSONArray-5390"><a href="#JSONArray-5390"><span class="linenos">5390</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="JSONArray-5391"><a href="#JSONArray-5391"><span class="linenos">5391</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="JSONArray-5392"><a href="#JSONArray-5392"><span class="linenos">5392</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArray-5393"><a href="#JSONArray-5393"><span class="linenos">5393</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArray-5394"><a href="#JSONArray-5394"><span class="linenos">5394</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArray-5395"><a href="#JSONArray-5395"><span class="linenos">5395</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONArray-5396"><a href="#JSONArray-5396"><span class="linenos">5396</span></a><span class="k">class</span> <span class="nc">JSONArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="JSONArray-5397"><a href="#JSONArray-5397"><span class="linenos">5397</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="JSONArray-5398"><a href="#JSONArray-5398"><span class="linenos">5398</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="JSONArray-5399"><a href="#JSONArray-5399"><span class="linenos">5399</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArray-5400"><a href="#JSONArray-5400"><span class="linenos">5400</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArray-5401"><a href="#JSONArray-5401"><span class="linenos">5401</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArray-5402"><a href="#JSONArray-5402"><span class="linenos">5402</span></a> <span class="p">}</span> </span></pre></div> @@ -83233,14 +83412,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONArrayAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONArrayAgg-5399"><a href="#JSONArrayAgg-5399"><span class="linenos">5399</span></a><span class="k">class</span> <span class="nc">JSONArrayAgg</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="JSONArrayAgg-5400"><a href="#JSONArrayAgg-5400"><span class="linenos">5400</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="JSONArrayAgg-5401"><a href="#JSONArrayAgg-5401"><span class="linenos">5401</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="JSONArrayAgg-5402"><a href="#JSONArrayAgg-5402"><span class="linenos">5402</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArrayAgg-5403"><a href="#JSONArrayAgg-5403"><span class="linenos">5403</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArrayAgg-5404"><a href="#JSONArrayAgg-5404"><span class="linenos">5404</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArrayAgg-5405"><a href="#JSONArrayAgg-5405"><span class="linenos">5405</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONArrayAgg-5406"><a href="#JSONArrayAgg-5406"><span class="linenos">5406</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONArrayAgg-5406"><a href="#JSONArrayAgg-5406"><span class="linenos">5406</span></a><span class="k">class</span> <span class="nc">JSONArrayAgg</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="JSONArrayAgg-5407"><a href="#JSONArrayAgg-5407"><span class="linenos">5407</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="JSONArrayAgg-5408"><a href="#JSONArrayAgg-5408"><span class="linenos">5408</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="JSONArrayAgg-5409"><a href="#JSONArrayAgg-5409"><span class="linenos">5409</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArrayAgg-5410"><a href="#JSONArrayAgg-5410"><span class="linenos">5410</span></a> <span class="s2">"null_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArrayAgg-5411"><a href="#JSONArrayAgg-5411"><span class="linenos">5411</span></a> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArrayAgg-5412"><a href="#JSONArrayAgg-5412"><span class="linenos">5412</span></a> <span class="s2">"strict"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONArrayAgg-5413"><a href="#JSONArrayAgg-5413"><span class="linenos">5413</span></a> <span class="p">}</span> </span></pre></div> @@ -83367,8 +83546,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONColumnDef"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONColumnDef-5411"><a href="#JSONColumnDef-5411"><span class="linenos">5411</span></a><span class="k">class</span> <span class="nc">JSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="JSONColumnDef-5412"><a href="#JSONColumnDef-5412"><span class="linenos">5412</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nested_schema"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONColumnDef-5418"><a href="#JSONColumnDef-5418"><span class="linenos">5418</span></a><span class="k">class</span> <span class="nc">JSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="JSONColumnDef-5419"><a href="#JSONColumnDef-5419"><span class="linenos">5419</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"nested_schema"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -83487,8 +83666,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONSchema"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONSchema-5415"><a href="#JSONSchema-5415"><span class="linenos">5415</span></a><span class="k">class</span> <span class="nc">JSONSchema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="JSONSchema-5416"><a href="#JSONSchema-5416"><span class="linenos">5416</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONSchema-5422"><a href="#JSONSchema-5422"><span class="linenos">5422</span></a><span class="k">class</span> <span class="nc">JSONSchema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="JSONSchema-5423"><a href="#JSONSchema-5423"><span class="linenos">5423</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -83607,14 +83786,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONTable-5420"><a href="#JSONTable-5420"><span class="linenos">5420</span></a><span class="k">class</span> <span class="nc">JSONTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="JSONTable-5421"><a href="#JSONTable-5421"><span class="linenos">5421</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="JSONTable-5422"><a href="#JSONTable-5422"><span class="linenos">5422</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="JSONTable-5423"><a href="#JSONTable-5423"><span class="linenos">5423</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="JSONTable-5424"><a href="#JSONTable-5424"><span class="linenos">5424</span></a> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONTable-5425"><a href="#JSONTable-5425"><span class="linenos">5425</span></a> <span class="s2">"error_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONTable-5426"><a href="#JSONTable-5426"><span class="linenos">5426</span></a> <span class="s2">"empty_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="JSONTable-5427"><a href="#JSONTable-5427"><span class="linenos">5427</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONTable-5427"><a href="#JSONTable-5427"><span class="linenos">5427</span></a><span class="k">class</span> <span class="nc">JSONTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="JSONTable-5428"><a href="#JSONTable-5428"><span class="linenos">5428</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="JSONTable-5429"><a href="#JSONTable-5429"><span class="linenos">5429</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="JSONTable-5430"><a href="#JSONTable-5430"><span class="linenos">5430</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="JSONTable-5431"><a href="#JSONTable-5431"><span class="linenos">5431</span></a> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONTable-5432"><a href="#JSONTable-5432"><span class="linenos">5432</span></a> <span class="s2">"error_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONTable-5433"><a href="#JSONTable-5433"><span class="linenos">5433</span></a> <span class="s2">"empty_handling"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="JSONTable-5434"><a href="#JSONTable-5434"><span class="linenos">5434</span></a> <span class="p">}</span> </span></pre></div> @@ -83741,8 +83920,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#OpenJSONColumnDef"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="OpenJSONColumnDef-5430"><a href="#OpenJSONColumnDef-5430"><span class="linenos">5430</span></a><span class="k">class</span> <span class="nc">OpenJSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="OpenJSONColumnDef-5431"><a href="#OpenJSONColumnDef-5431"><span class="linenos">5431</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"as_json"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="OpenJSONColumnDef-5437"><a href="#OpenJSONColumnDef-5437"><span class="linenos">5437</span></a><span class="k">class</span> <span class="nc">OpenJSONColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="OpenJSONColumnDef-5438"><a href="#OpenJSONColumnDef-5438"><span class="linenos">5438</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"as_json"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -83861,8 +84040,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#OpenJSON"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="OpenJSON-5434"><a href="#OpenJSON-5434"><span class="linenos">5434</span></a><span class="k">class</span> <span class="nc">OpenJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="OpenJSON-5435"><a href="#OpenJSON-5435"><span class="linenos">5435</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="OpenJSON-5441"><a href="#OpenJSON-5441"><span class="linenos">5441</span></a><span class="k">class</span> <span class="nc">OpenJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="OpenJSON-5442"><a href="#OpenJSON-5442"><span class="linenos">5442</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -83989,8 +84168,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONBContains"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBContains-5438"><a href="#JSONBContains-5438"><span class="linenos">5438</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="JSONBContains-5439"><a href="#JSONBContains-5439"><span class="linenos">5439</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBContains-5445"><a href="#JSONBContains-5445"><span class="linenos">5445</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="JSONBContains-5446"><a href="#JSONBContains-5446"><span class="linenos">5446</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> </span></pre></div> @@ -84103,14 +84282,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtract-5442"><a href="#JSONExtract-5442"><span class="linenos">5442</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="JSONExtract-5443"><a href="#JSONExtract-5443"><span class="linenos">5443</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="JSONExtract-5444"><a href="#JSONExtract-5444"><span class="linenos">5444</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> -</span><span id="JSONExtract-5445"><a href="#JSONExtract-5445"><span class="linenos">5445</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="JSONExtract-5446"><a href="#JSONExtract-5446"><span class="linenos">5446</span></a> -</span><span id="JSONExtract-5447"><a href="#JSONExtract-5447"><span class="linenos">5447</span></a> <span class="nd">@property</span> -</span><span id="JSONExtract-5448"><a href="#JSONExtract-5448"><span class="linenos">5448</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="JSONExtract-5449"><a href="#JSONExtract-5449"><span class="linenos">5449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtract-5449"><a href="#JSONExtract-5449"><span class="linenos">5449</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="JSONExtract-5450"><a href="#JSONExtract-5450"><span class="linenos">5450</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="JSONExtract-5451"><a href="#JSONExtract-5451"><span class="linenos">5451</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> +</span><span id="JSONExtract-5452"><a href="#JSONExtract-5452"><span class="linenos">5452</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="JSONExtract-5453"><a href="#JSONExtract-5453"><span class="linenos">5453</span></a> +</span><span id="JSONExtract-5454"><a href="#JSONExtract-5454"><span class="linenos">5454</span></a> <span class="nd">@property</span> +</span><span id="JSONExtract-5455"><a href="#JSONExtract-5455"><span class="linenos">5455</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="JSONExtract-5456"><a href="#JSONExtract-5456"><span class="linenos">5456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> </span></pre></div> @@ -84149,9 +84328,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONExtract.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtract.output_name-5447"><a href="#JSONExtract.output_name-5447"><span class="linenos">5447</span></a> <span class="nd">@property</span> -</span><span id="JSONExtract.output_name-5448"><a href="#JSONExtract.output_name-5448"><span class="linenos">5448</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="JSONExtract.output_name-5449"><a href="#JSONExtract.output_name-5449"><span class="linenos">5449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtract.output_name-5454"><a href="#JSONExtract.output_name-5454"><span class="linenos">5454</span></a> <span class="nd">@property</span> +</span><span id="JSONExtract.output_name-5455"><a href="#JSONExtract.output_name-5455"><span class="linenos">5455</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="JSONExtract.output_name-5456"><a href="#JSONExtract.output_name-5456"><span class="linenos">5456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> </span></pre></div> @@ -84289,14 +84468,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONExtractScalar"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtractScalar-5452"><a href="#JSONExtractScalar-5452"><span class="linenos">5452</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="JSONExtractScalar-5453"><a href="#JSONExtractScalar-5453"><span class="linenos">5453</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="JSONExtractScalar-5454"><a href="#JSONExtractScalar-5454"><span class="linenos">5454</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> -</span><span id="JSONExtractScalar-5455"><a href="#JSONExtractScalar-5455"><span class="linenos">5455</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="JSONExtractScalar-5456"><a href="#JSONExtractScalar-5456"><span class="linenos">5456</span></a> -</span><span id="JSONExtractScalar-5457"><a href="#JSONExtractScalar-5457"><span class="linenos">5457</span></a> <span class="nd">@property</span> -</span><span id="JSONExtractScalar-5458"><a href="#JSONExtractScalar-5458"><span class="linenos">5458</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="JSONExtractScalar-5459"><a href="#JSONExtractScalar-5459"><span class="linenos">5459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtractScalar-5459"><a href="#JSONExtractScalar-5459"><span class="linenos">5459</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="JSONExtractScalar-5460"><a href="#JSONExtractScalar-5460"><span class="linenos">5460</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"only_json_types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="JSONExtractScalar-5461"><a href="#JSONExtractScalar-5461"><span class="linenos">5461</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="JSONExtractScalar-5462"><a href="#JSONExtractScalar-5462"><span class="linenos">5462</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="JSONExtractScalar-5463"><a href="#JSONExtractScalar-5463"><span class="linenos">5463</span></a> +</span><span id="JSONExtractScalar-5464"><a href="#JSONExtractScalar-5464"><span class="linenos">5464</span></a> <span class="nd">@property</span> +</span><span id="JSONExtractScalar-5465"><a href="#JSONExtractScalar-5465"><span class="linenos">5465</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="JSONExtractScalar-5466"><a href="#JSONExtractScalar-5466"><span class="linenos">5466</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> </span></pre></div> @@ -84335,9 +84514,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONExtractScalar.output_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtractScalar.output_name-5457"><a href="#JSONExtractScalar.output_name-5457"><span class="linenos">5457</span></a> <span class="nd">@property</span> -</span><span id="JSONExtractScalar.output_name-5458"><a href="#JSONExtractScalar.output_name-5458"><span class="linenos">5458</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="JSONExtractScalar.output_name-5459"><a href="#JSONExtractScalar.output_name-5459"><span class="linenos">5459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtractScalar.output_name-5464"><a href="#JSONExtractScalar.output_name-5464"><span class="linenos">5464</span></a> <span class="nd">@property</span> +</span><span id="JSONExtractScalar.output_name-5465"><a href="#JSONExtractScalar.output_name-5465"><span class="linenos">5465</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="JSONExtractScalar.output_name-5466"><a href="#JSONExtractScalar.output_name-5466"><span class="linenos">5466</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">output_name</span> </span></pre></div> @@ -84475,8 +84654,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONBExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtract-5462"><a href="#JSONBExtract-5462"><span class="linenos">5462</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="JSONBExtract-5463"><a href="#JSONBExtract-5463"><span class="linenos">5463</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtract-5469"><a href="#JSONBExtract-5469"><span class="linenos">5469</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="JSONBExtract-5470"><a href="#JSONBExtract-5470"><span class="linenos">5470</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> </span></pre></div> @@ -84597,8 +84776,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONBExtractScalar"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtractScalar-5466"><a href="#JSONBExtractScalar-5466"><span class="linenos">5466</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="JSONBExtractScalar-5467"><a href="#JSONBExtractScalar-5467"><span class="linenos">5467</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtractScalar-5473"><a href="#JSONBExtractScalar-5473"><span class="linenos">5473</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="JSONBExtractScalar-5474"><a href="#JSONBExtractScalar-5474"><span class="linenos">5474</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> </span></pre></div> @@ -84719,9 +84898,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONFormat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONFormat-5470"><a href="#JSONFormat-5470"><span class="linenos">5470</span></a><span class="k">class</span> <span class="nc">JSONFormat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="JSONFormat-5471"><a href="#JSONFormat-5471"><span class="linenos">5471</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="JSONFormat-5472"><a href="#JSONFormat-5472"><span class="linenos">5472</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_FORMAT"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONFormat-5477"><a href="#JSONFormat-5477"><span class="linenos">5477</span></a><span class="k">class</span> <span class="nc">JSONFormat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="JSONFormat-5478"><a href="#JSONFormat-5478"><span class="linenos">5478</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="JSONFormat-5479"><a href="#JSONFormat-5479"><span class="linenos">5479</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_FORMAT"</span><span class="p">]</span> </span></pre></div> @@ -84848,8 +85027,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#JSONArrayContains"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONArrayContains-5476"><a href="#JSONArrayContains-5476"><span class="linenos">5476</span></a><span class="k">class</span> <span class="nc">JSONArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="JSONArrayContains-5477"><a href="#JSONArrayContains-5477"><span class="linenos">5477</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_ARRAY_CONTAINS"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONArrayContains-5483"><a href="#JSONArrayContains-5483"><span class="linenos">5483</span></a><span class="k">class</span> <span class="nc">JSONArrayContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="JSONArrayContains-5484"><a href="#JSONArrayContains-5484"><span class="linenos">5484</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_ARRAY_CONTAINS"</span><span class="p">]</span> </span></pre></div> @@ -84970,11 +85149,11 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ParseJSON"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ParseJSON-5480"><a href="#ParseJSON-5480"><span class="linenos">5480</span></a><span class="k">class</span> <span class="nc">ParseJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ParseJSON-5481"><a href="#ParseJSON-5481"><span class="linenos">5481</span></a> <span class="c1"># BigQuery, Snowflake have PARSE_JSON, Presto has JSON_PARSE</span> -</span><span id="ParseJSON-5482"><a href="#ParseJSON-5482"><span class="linenos">5482</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"PARSE_JSON"</span><span class="p">,</span> <span class="s2">"JSON_PARSE"</span><span class="p">]</span> -</span><span id="ParseJSON-5483"><a href="#ParseJSON-5483"><span class="linenos">5483</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ParseJSON-5484"><a href="#ParseJSON-5484"><span class="linenos">5484</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ParseJSON-5487"><a href="#ParseJSON-5487"><span class="linenos">5487</span></a><span class="k">class</span> <span class="nc">ParseJSON</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ParseJSON-5488"><a href="#ParseJSON-5488"><span class="linenos">5488</span></a> <span class="c1"># BigQuery, Snowflake have PARSE_JSON, Presto has JSON_PARSE</span> +</span><span id="ParseJSON-5489"><a href="#ParseJSON-5489"><span class="linenos">5489</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"PARSE_JSON"</span><span class="p">,</span> <span class="s2">"JSON_PARSE"</span><span class="p">]</span> +</span><span id="ParseJSON-5490"><a href="#ParseJSON-5490"><span class="linenos">5490</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ParseJSON-5491"><a href="#ParseJSON-5491"><span class="linenos">5491</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -85112,9 +85291,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Least"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Least-5487"><a href="#Least-5487"><span class="linenos">5487</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Least-5488"><a href="#Least-5488"><span class="linenos">5488</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Least-5489"><a href="#Least-5489"><span class="linenos">5489</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Least-5494"><a href="#Least-5494"><span class="linenos">5494</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Least-5495"><a href="#Least-5495"><span class="linenos">5495</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Least-5496"><a href="#Least-5496"><span class="linenos">5496</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -85252,8 +85431,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Left"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Left-5492"><a href="#Left-5492"><span class="linenos">5492</span></a><span class="k">class</span> <span class="nc">Left</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Left-5493"><a href="#Left-5493"><span class="linenos">5493</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Left-5499"><a href="#Left-5499"><span class="linenos">5499</span></a><span class="k">class</span> <span class="nc">Left</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Left-5500"><a href="#Left-5500"><span class="linenos">5500</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -85380,8 +85559,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Right"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Right-5496"><a href="#Right-5496"><span class="linenos">5496</span></a><span class="k">class</span> <span class="nc">Right</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Right-5497"><a href="#Right-5497"><span class="linenos">5497</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Right-5503"><a href="#Right-5503"><span class="linenos">5503</span></a><span class="k">class</span> <span class="nc">Right</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Right-5504"><a href="#Right-5504"><span class="linenos">5504</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -85508,8 +85687,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Length"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Length-5500"><a href="#Length-5500"><span class="linenos">5500</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Length-5501"><a href="#Length-5501"><span class="linenos">5501</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LENGTH"</span><span class="p">,</span> <span class="s2">"LEN"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Length-5507"><a href="#Length-5507"><span class="linenos">5507</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Length-5508"><a href="#Length-5508"><span class="linenos">5508</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LENGTH"</span><span class="p">,</span> <span class="s2">"LEN"</span><span class="p">]</span> </span></pre></div> @@ -85625,14 +85804,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Levenshtein"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Levenshtein-5504"><a href="#Levenshtein-5504"><span class="linenos">5504</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Levenshtein-5505"><a href="#Levenshtein-5505"><span class="linenos">5505</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Levenshtein-5506"><a href="#Levenshtein-5506"><span class="linenos">5506</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Levenshtein-5507"><a href="#Levenshtein-5507"><span class="linenos">5507</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-5508"><a href="#Levenshtein-5508"><span class="linenos">5508</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-5509"><a href="#Levenshtein-5509"><span class="linenos">5509</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-5510"><a href="#Levenshtein-5510"><span class="linenos">5510</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-5511"><a href="#Levenshtein-5511"><span class="linenos">5511</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Levenshtein-5511"><a href="#Levenshtein-5511"><span class="linenos">5511</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Levenshtein-5512"><a href="#Levenshtein-5512"><span class="linenos">5512</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Levenshtein-5513"><a href="#Levenshtein-5513"><span class="linenos">5513</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Levenshtein-5514"><a href="#Levenshtein-5514"><span class="linenos">5514</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-5515"><a href="#Levenshtein-5515"><span class="linenos">5515</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-5516"><a href="#Levenshtein-5516"><span class="linenos">5516</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-5517"><a href="#Levenshtein-5517"><span class="linenos">5517</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-5518"><a href="#Levenshtein-5518"><span class="linenos">5518</span></a> <span class="p">}</span> </span></pre></div> @@ -85759,8 +85938,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Ln"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Ln-5514"><a href="#Ln-5514"><span class="linenos">5514</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Ln-5515"><a href="#Ln-5515"><span class="linenos">5515</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Ln-5521"><a href="#Ln-5521"><span class="linenos">5521</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Ln-5522"><a href="#Ln-5522"><span class="linenos">5522</span></a> <span class="k">pass</span> </span></pre></div> @@ -85876,8 +86055,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Log"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Log-5518"><a href="#Log-5518"><span class="linenos">5518</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Log-5519"><a href="#Log-5519"><span class="linenos">5519</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Log-5525"><a href="#Log-5525"><span class="linenos">5525</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Log-5526"><a href="#Log-5526"><span class="linenos">5526</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -86004,8 +86183,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#LogicalOr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LogicalOr-5522"><a href="#LogicalOr-5522"><span class="linenos">5522</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="LogicalOr-5523"><a href="#LogicalOr-5523"><span class="linenos">5523</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">,</span> <span class="s2">"BOOLOR_AGG"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LogicalOr-5529"><a href="#LogicalOr-5529"><span class="linenos">5529</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="LogicalOr-5530"><a href="#LogicalOr-5530"><span class="linenos">5530</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">,</span> <span class="s2">"BOOLOR_AGG"</span><span class="p">]</span> </span></pre></div> @@ -86121,8 +86300,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#LogicalAnd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LogicalAnd-5526"><a href="#LogicalAnd-5526"><span class="linenos">5526</span></a><span class="k">class</span> <span class="nc">LogicalAnd</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="LogicalAnd-5527"><a href="#LogicalAnd-5527"><span class="linenos">5527</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_AND"</span><span class="p">,</span> <span class="s2">"BOOL_AND"</span><span class="p">,</span> <span class="s2">"BOOLAND_AGG"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LogicalAnd-5533"><a href="#LogicalAnd-5533"><span class="linenos">5533</span></a><span class="k">class</span> <span class="nc">LogicalAnd</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="LogicalAnd-5534"><a href="#LogicalAnd-5534"><span class="linenos">5534</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_AND"</span><span class="p">,</span> <span class="s2">"BOOL_AND"</span><span class="p">,</span> <span class="s2">"BOOLAND_AGG"</span><span class="p">]</span> </span></pre></div> @@ -86238,8 +86417,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Lower"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lower-5530"><a href="#Lower-5530"><span class="linenos">5530</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Lower-5531"><a href="#Lower-5531"><span class="linenos">5531</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lower-5537"><a href="#Lower-5537"><span class="linenos">5537</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Lower-5538"><a href="#Lower-5538"><span class="linenos">5538</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> </span></pre></div> @@ -86355,18 +86534,18 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Map"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Map-5534"><a href="#Map-5534"><span class="linenos">5534</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Map-5535"><a href="#Map-5535"><span class="linenos">5535</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Map-5536"><a href="#Map-5536"><span class="linenos">5536</span></a> -</span><span id="Map-5537"><a href="#Map-5537"><span class="linenos">5537</span></a> <span class="nd">@property</span> -</span><span id="Map-5538"><a href="#Map-5538"><span class="linenos">5538</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Map-5539"><a href="#Map-5539"><span class="linenos">5539</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span> -</span><span id="Map-5540"><a href="#Map-5540"><span class="linenos">5540</span></a> <span class="k">return</span> <span class="n">keys</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="Map-5541"><a href="#Map-5541"><span class="linenos">5541</span></a> -</span><span id="Map-5542"><a href="#Map-5542"><span class="linenos">5542</span></a> <span class="nd">@property</span> -</span><span id="Map-5543"><a href="#Map-5543"><span class="linenos">5543</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Map-5544"><a href="#Map-5544"><span class="linenos">5544</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> -</span><span id="Map-5545"><a href="#Map-5545"><span class="linenos">5545</span></a> <span class="k">return</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">values</span> <span class="k">else</span> <span class="p">[]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Map-5541"><a href="#Map-5541"><span class="linenos">5541</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Map-5542"><a href="#Map-5542"><span class="linenos">5542</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Map-5543"><a href="#Map-5543"><span class="linenos">5543</span></a> +</span><span id="Map-5544"><a href="#Map-5544"><span class="linenos">5544</span></a> <span class="nd">@property</span> +</span><span id="Map-5545"><a href="#Map-5545"><span class="linenos">5545</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Map-5546"><a href="#Map-5546"><span class="linenos">5546</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span> +</span><span id="Map-5547"><a href="#Map-5547"><span class="linenos">5547</span></a> <span class="k">return</span> <span class="n">keys</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="Map-5548"><a href="#Map-5548"><span class="linenos">5548</span></a> +</span><span id="Map-5549"><a href="#Map-5549"><span class="linenos">5549</span></a> <span class="nd">@property</span> +</span><span id="Map-5550"><a href="#Map-5550"><span class="linenos">5550</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Map-5551"><a href="#Map-5551"><span class="linenos">5551</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> +</span><span id="Map-5552"><a href="#Map-5552"><span class="linenos">5552</span></a> <span class="k">return</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">values</span> <span class="k">else</span> <span class="p">[]</span> </span></pre></div> @@ -86393,10 +86572,10 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Map.keys"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Map.keys-5537"><a href="#Map.keys-5537"><span class="linenos">5537</span></a> <span class="nd">@property</span> -</span><span id="Map.keys-5538"><a href="#Map.keys-5538"><span class="linenos">5538</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Map.keys-5539"><a href="#Map.keys-5539"><span class="linenos">5539</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span> -</span><span id="Map.keys-5540"><a href="#Map.keys-5540"><span class="linenos">5540</span></a> <span class="k">return</span> <span class="n">keys</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="p">[]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Map.keys-5544"><a href="#Map.keys-5544"><span class="linenos">5544</span></a> <span class="nd">@property</span> +</span><span id="Map.keys-5545"><a href="#Map.keys-5545"><span class="linenos">5545</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Map.keys-5546"><a href="#Map.keys-5546"><span class="linenos">5546</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span> +</span><span id="Map.keys-5547"><a href="#Map.keys-5547"><span class="linenos">5547</span></a> <span class="k">return</span> <span class="n">keys</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="p">[]</span> </span></pre></div> @@ -86412,10 +86591,10 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Map.values"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Map.values-5542"><a href="#Map.values-5542"><span class="linenos">5542</span></a> <span class="nd">@property</span> -</span><span id="Map.values-5543"><a href="#Map.values-5543"><span class="linenos">5543</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Map.values-5544"><a href="#Map.values-5544"><span class="linenos">5544</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> -</span><span id="Map.values-5545"><a href="#Map.values-5545"><span class="linenos">5545</span></a> <span class="k">return</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">values</span> <span class="k">else</span> <span class="p">[]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Map.values-5549"><a href="#Map.values-5549"><span class="linenos">5549</span></a> <span class="nd">@property</span> +</span><span id="Map.values-5550"><a href="#Map.values-5550"><span class="linenos">5550</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Map.values-5551"><a href="#Map.values-5551"><span class="linenos">5551</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> +</span><span id="Map.values-5552"><a href="#Map.values-5552"><span class="linenos">5552</span></a> <span class="k">return</span> <span class="n">values</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">values</span> <span class="k">else</span> <span class="p">[]</span> </span></pre></div> @@ -86531,8 +86710,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ToMap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ToMap-5549"><a href="#ToMap-5549"><span class="linenos">5549</span></a><span class="k">class</span> <span class="nc">ToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ToMap-5550"><a href="#ToMap-5550"><span class="linenos">5550</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ToMap-5556"><a href="#ToMap-5556"><span class="linenos">5556</span></a><span class="k">class</span> <span class="nc">ToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ToMap-5557"><a href="#ToMap-5557"><span class="linenos">5557</span></a> <span class="k">pass</span> </span></pre></div> @@ -86648,8 +86827,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#MapFromEntries"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MapFromEntries-5553"><a href="#MapFromEntries-5553"><span class="linenos">5553</span></a><span class="k">class</span> <span class="nc">MapFromEntries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="MapFromEntries-5554"><a href="#MapFromEntries-5554"><span class="linenos">5554</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MapFromEntries-5560"><a href="#MapFromEntries-5560"><span class="linenos">5560</span></a><span class="k">class</span> <span class="nc">MapFromEntries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="MapFromEntries-5561"><a href="#MapFromEntries-5561"><span class="linenos">5561</span></a> <span class="k">pass</span> </span></pre></div> @@ -86765,8 +86944,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StarMap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StarMap-5557"><a href="#StarMap-5557"><span class="linenos">5557</span></a><span class="k">class</span> <span class="nc">StarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StarMap-5558"><a href="#StarMap-5558"><span class="linenos">5558</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StarMap-5564"><a href="#StarMap-5564"><span class="linenos">5564</span></a><span class="k">class</span> <span class="nc">StarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StarMap-5565"><a href="#StarMap-5565"><span class="linenos">5565</span></a> <span class="k">pass</span> </span></pre></div> @@ -86882,17 +87061,17 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#VarMap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap-5561"><a href="#VarMap-5561"><span class="linenos">5561</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="VarMap-5562"><a href="#VarMap-5562"><span class="linenos">5562</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="VarMap-5563"><a href="#VarMap-5563"><span class="linenos">5563</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="VarMap-5564"><a href="#VarMap-5564"><span class="linenos">5564</span></a> -</span><span id="VarMap-5565"><a href="#VarMap-5565"><span class="linenos">5565</span></a> <span class="nd">@property</span> -</span><span id="VarMap-5566"><a href="#VarMap-5566"><span class="linenos">5566</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="VarMap-5567"><a href="#VarMap-5567"><span class="linenos">5567</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="VarMap-5568"><a href="#VarMap-5568"><span class="linenos">5568</span></a> -</span><span id="VarMap-5569"><a href="#VarMap-5569"><span class="linenos">5569</span></a> <span class="nd">@property</span> -</span><span id="VarMap-5570"><a href="#VarMap-5570"><span class="linenos">5570</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="VarMap-5571"><a href="#VarMap-5571"><span class="linenos">5571</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap-5568"><a href="#VarMap-5568"><span class="linenos">5568</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="VarMap-5569"><a href="#VarMap-5569"><span class="linenos">5569</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="VarMap-5570"><a href="#VarMap-5570"><span class="linenos">5570</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="VarMap-5571"><a href="#VarMap-5571"><span class="linenos">5571</span></a> +</span><span id="VarMap-5572"><a href="#VarMap-5572"><span class="linenos">5572</span></a> <span class="nd">@property</span> +</span><span id="VarMap-5573"><a href="#VarMap-5573"><span class="linenos">5573</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="VarMap-5574"><a href="#VarMap-5574"><span class="linenos">5574</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="VarMap-5575"><a href="#VarMap-5575"><span class="linenos">5575</span></a> +</span><span id="VarMap-5576"><a href="#VarMap-5576"><span class="linenos">5576</span></a> <span class="nd">@property</span> +</span><span id="VarMap-5577"><a href="#VarMap-5577"><span class="linenos">5577</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="VarMap-5578"><a href="#VarMap-5578"><span class="linenos">5578</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -86931,9 +87110,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#VarMap.keys"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap.keys-5565"><a href="#VarMap.keys-5565"><span class="linenos">5565</span></a> <span class="nd">@property</span> -</span><span id="VarMap.keys-5566"><a href="#VarMap.keys-5566"><span class="linenos">5566</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="VarMap.keys-5567"><a href="#VarMap.keys-5567"><span class="linenos">5567</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap.keys-5572"><a href="#VarMap.keys-5572"><span class="linenos">5572</span></a> <span class="nd">@property</span> +</span><span id="VarMap.keys-5573"><a href="#VarMap.keys-5573"><span class="linenos">5573</span></a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="VarMap.keys-5574"><a href="#VarMap.keys-5574"><span class="linenos">5574</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -86949,9 +87128,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#VarMap.values"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap.values-5569"><a href="#VarMap.values-5569"><span class="linenos">5569</span></a> <span class="nd">@property</span> -</span><span id="VarMap.values-5570"><a href="#VarMap.values-5570"><span class="linenos">5570</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="VarMap.values-5571"><a href="#VarMap.values-5571"><span class="linenos">5571</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap.values-5576"><a href="#VarMap.values-5576"><span class="linenos">5576</span></a> <span class="nd">@property</span> +</span><span id="VarMap.values-5577"><a href="#VarMap.values-5577"><span class="linenos">5577</span></a> <span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="VarMap.values-5578"><a href="#VarMap.values-5578"><span class="linenos">5578</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -87066,8 +87245,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#MatchAgainst"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MatchAgainst-5575"><a href="#MatchAgainst-5575"><span class="linenos">5575</span></a><span class="k">class</span> <span class="nc">MatchAgainst</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="MatchAgainst-5576"><a href="#MatchAgainst-5576"><span class="linenos">5576</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"modifier"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MatchAgainst-5582"><a href="#MatchAgainst-5582"><span class="linenos">5582</span></a><span class="k">class</span> <span class="nc">MatchAgainst</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="MatchAgainst-5583"><a href="#MatchAgainst-5583"><span class="linenos">5583</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"modifier"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -87194,9 +87373,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Max"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Max-5579"><a href="#Max-5579"><span class="linenos">5579</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Max-5580"><a href="#Max-5580"><span class="linenos">5580</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Max-5581"><a href="#Max-5581"><span class="linenos">5581</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Max-5586"><a href="#Max-5586"><span class="linenos">5586</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Max-5587"><a href="#Max-5587"><span class="linenos">5587</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Max-5588"><a href="#Max-5588"><span class="linenos">5588</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -87334,8 +87513,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#MD5"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MD5-5584"><a href="#MD5-5584"><span class="linenos">5584</span></a><span class="k">class</span> <span class="nc">MD5</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="MD5-5585"><a href="#MD5-5585"><span class="linenos">5585</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MD5-5591"><a href="#MD5-5591"><span class="linenos">5591</span></a><span class="k">class</span> <span class="nc">MD5</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="MD5-5592"><a href="#MD5-5592"><span class="linenos">5592</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5"</span><span class="p">]</span> </span></pre></div> @@ -87451,8 +87630,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#MD5Digest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MD5Digest-5589"><a href="#MD5Digest-5589"><span class="linenos">5589</span></a><span class="k">class</span> <span class="nc">MD5Digest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="MD5Digest-5590"><a href="#MD5Digest-5590"><span class="linenos">5590</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5_DIGEST"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MD5Digest-5596"><a href="#MD5Digest-5596"><span class="linenos">5596</span></a><span class="k">class</span> <span class="nc">MD5Digest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="MD5Digest-5597"><a href="#MD5Digest-5597"><span class="linenos">5597</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"MD5_DIGEST"</span><span class="p">]</span> </span></pre></div> @@ -87568,9 +87747,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Min"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Min-5593"><a href="#Min-5593"><span class="linenos">5593</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Min-5594"><a href="#Min-5594"><span class="linenos">5594</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Min-5595"><a href="#Min-5595"><span class="linenos">5595</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Min-5600"><a href="#Min-5600"><span class="linenos">5600</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Min-5601"><a href="#Min-5601"><span class="linenos">5601</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Min-5602"><a href="#Min-5602"><span class="linenos">5602</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -87708,8 +87887,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Month"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Month-5598"><a href="#Month-5598"><span class="linenos">5598</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Month-5599"><a href="#Month-5599"><span class="linenos">5599</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Month-5605"><a href="#Month-5605"><span class="linenos">5605</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Month-5606"><a href="#Month-5606"><span class="linenos">5606</span></a> <span class="k">pass</span> </span></pre></div> @@ -87825,8 +88004,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#AddMonths"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AddMonths-5602"><a href="#AddMonths-5602"><span class="linenos">5602</span></a><span class="k">class</span> <span class="nc">AddMonths</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="AddMonths-5603"><a href="#AddMonths-5603"><span class="linenos">5603</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AddMonths-5609"><a href="#AddMonths-5609"><span class="linenos">5609</span></a><span class="k">class</span> <span class="nc">AddMonths</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="AddMonths-5610"><a href="#AddMonths-5610"><span class="linenos">5610</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -87953,8 +88132,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Nvl2"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Nvl2-5606"><a href="#Nvl2-5606"><span class="linenos">5606</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Nvl2-5607"><a href="#Nvl2-5607"><span class="linenos">5607</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Nvl2-5613"><a href="#Nvl2-5613"><span class="linenos">5613</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Nvl2-5614"><a href="#Nvl2-5614"><span class="linenos">5614</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -88081,8 +88260,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Predict"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Predict-5611"><a href="#Predict-5611"><span class="linenos">5611</span></a><span class="k">class</span> <span class="nc">Predict</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Predict-5612"><a href="#Predict-5612"><span class="linenos">5612</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params_struct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Predict-5618"><a href="#Predict-5618"><span class="linenos">5618</span></a><span class="k">class</span> <span class="nc">Predict</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Predict-5619"><a href="#Predict-5619"><span class="linenos">5619</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"params_struct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -88209,8 +88388,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Pow"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Pow-5615"><a href="#Pow-5615"><span class="linenos">5615</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="Pow-5616"><a href="#Pow-5616"><span class="linenos">5616</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Pow-5622"><a href="#Pow-5622"><span class="linenos">5622</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="Pow-5623"><a href="#Pow-5623"><span class="linenos">5623</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> </span></pre></div> @@ -88331,8 +88510,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#PercentileCont"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileCont-5619"><a href="#PercentileCont-5619"><span class="linenos">5619</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="PercentileCont-5620"><a href="#PercentileCont-5620"><span class="linenos">5620</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileCont-5626"><a href="#PercentileCont-5626"><span class="linenos">5626</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="PercentileCont-5627"><a href="#PercentileCont-5627"><span class="linenos">5627</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -88459,8 +88638,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#PercentileDisc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileDisc-5623"><a href="#PercentileDisc-5623"><span class="linenos">5623</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="PercentileDisc-5624"><a href="#PercentileDisc-5624"><span class="linenos">5624</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileDisc-5630"><a href="#PercentileDisc-5630"><span class="linenos">5630</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="PercentileDisc-5631"><a href="#PercentileDisc-5631"><span class="linenos">5631</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -88587,8 +88766,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Quantile"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Quantile-5627"><a href="#Quantile-5627"><span class="linenos">5627</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Quantile-5628"><a href="#Quantile-5628"><span class="linenos">5628</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Quantile-5634"><a href="#Quantile-5634"><span class="linenos">5634</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Quantile-5635"><a href="#Quantile-5635"><span class="linenos">5635</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -88715,8 +88894,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ApproxQuantile"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxQuantile-5631"><a href="#ApproxQuantile-5631"><span class="linenos">5631</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> -</span><span id="ApproxQuantile-5632"><a href="#ApproxQuantile-5632"><span class="linenos">5632</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxQuantile-5638"><a href="#ApproxQuantile-5638"><span class="linenos">5638</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> +</span><span id="ApproxQuantile-5639"><a href="#ApproxQuantile-5639"><span class="linenos">5639</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -88843,8 +89022,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Quarter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Quarter-5635"><a href="#Quarter-5635"><span class="linenos">5635</span></a><span class="k">class</span> <span class="nc">Quarter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Quarter-5636"><a href="#Quarter-5636"><span class="linenos">5636</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Quarter-5642"><a href="#Quarter-5642"><span class="linenos">5642</span></a><span class="k">class</span> <span class="nc">Quarter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Quarter-5643"><a href="#Quarter-5643"><span class="linenos">5643</span></a> <span class="k">pass</span> </span></pre></div> @@ -88960,9 +89139,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Rand"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Rand-5639"><a href="#Rand-5639"><span class="linenos">5639</span></a><span class="k">class</span> <span class="nc">Rand</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Rand-5640"><a href="#Rand-5640"><span class="linenos">5640</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"RAND"</span><span class="p">,</span> <span class="s2">"RANDOM"</span><span class="p">]</span> -</span><span id="Rand-5641"><a href="#Rand-5641"><span class="linenos">5641</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Rand-5646"><a href="#Rand-5646"><span class="linenos">5646</span></a><span class="k">class</span> <span class="nc">Rand</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Rand-5647"><a href="#Rand-5647"><span class="linenos">5647</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"RAND"</span><span class="p">,</span> <span class="s2">"RANDOM"</span><span class="p">]</span> +</span><span id="Rand-5648"><a href="#Rand-5648"><span class="linenos">5648</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -89089,8 +89268,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Randn"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Randn-5644"><a href="#Randn-5644"><span class="linenos">5644</span></a><span class="k">class</span> <span class="nc">Randn</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Randn-5645"><a href="#Randn-5645"><span class="linenos">5645</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Randn-5651"><a href="#Randn-5651"><span class="linenos">5651</span></a><span class="k">class</span> <span class="nc">Randn</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Randn-5652"><a href="#Randn-5652"><span class="linenos">5652</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -89217,8 +89396,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RangeN"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RangeN-5648"><a href="#RangeN-5648"><span class="linenos">5648</span></a><span class="k">class</span> <span class="nc">RangeN</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RangeN-5649"><a href="#RangeN-5649"><span class="linenos">5649</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"each"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RangeN-5655"><a href="#RangeN-5655"><span class="linenos">5655</span></a><span class="k">class</span> <span class="nc">RangeN</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RangeN-5656"><a href="#RangeN-5656"><span class="linenos">5656</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"each"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -89345,10 +89524,10 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#ReadCSV"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ReadCSV-5652"><a href="#ReadCSV-5652"><span class="linenos">5652</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ReadCSV-5653"><a href="#ReadCSV-5653"><span class="linenos">5653</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> -</span><span id="ReadCSV-5654"><a href="#ReadCSV-5654"><span class="linenos">5654</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="ReadCSV-5655"><a href="#ReadCSV-5655"><span class="linenos">5655</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ReadCSV-5659"><a href="#ReadCSV-5659"><span class="linenos">5659</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ReadCSV-5660"><a href="#ReadCSV-5660"><span class="linenos">5660</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> +</span><span id="ReadCSV-5661"><a href="#ReadCSV-5661"><span class="linenos">5661</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="ReadCSV-5662"><a href="#ReadCSV-5662"><span class="linenos">5662</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -89486,8 +89665,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Reduce"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Reduce-5658"><a href="#Reduce-5658"><span class="linenos">5658</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Reduce-5659"><a href="#Reduce-5659"><span class="linenos">5659</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Reduce-5665"><a href="#Reduce-5665"><span class="linenos">5665</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Reduce-5666"><a href="#Reduce-5666"><span class="linenos">5666</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -89614,15 +89793,15 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RegexpExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpExtract-5662"><a href="#RegexpExtract-5662"><span class="linenos">5662</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpExtract-5663"><a href="#RegexpExtract-5663"><span class="linenos">5663</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="RegexpExtract-5664"><a href="#RegexpExtract-5664"><span class="linenos">5664</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="RegexpExtract-5665"><a href="#RegexpExtract-5665"><span class="linenos">5665</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="RegexpExtract-5666"><a href="#RegexpExtract-5666"><span class="linenos">5666</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-5667"><a href="#RegexpExtract-5667"><span class="linenos">5667</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-5668"><a href="#RegexpExtract-5668"><span class="linenos">5668</span></a> <span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-5669"><a href="#RegexpExtract-5669"><span class="linenos">5669</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-5670"><a href="#RegexpExtract-5670"><span class="linenos">5670</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpExtract-5669"><a href="#RegexpExtract-5669"><span class="linenos">5669</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpExtract-5670"><a href="#RegexpExtract-5670"><span class="linenos">5670</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="RegexpExtract-5671"><a href="#RegexpExtract-5671"><span class="linenos">5671</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="RegexpExtract-5672"><a href="#RegexpExtract-5672"><span class="linenos">5672</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="RegexpExtract-5673"><a href="#RegexpExtract-5673"><span class="linenos">5673</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-5674"><a href="#RegexpExtract-5674"><span class="linenos">5674</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-5675"><a href="#RegexpExtract-5675"><span class="linenos">5675</span></a> <span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-5676"><a href="#RegexpExtract-5676"><span class="linenos">5676</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-5677"><a href="#RegexpExtract-5677"><span class="linenos">5677</span></a> <span class="p">}</span> </span></pre></div> @@ -89750,15 +89929,15 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RegexpReplace"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpReplace-5673"><a href="#RegexpReplace-5673"><span class="linenos">5673</span></a><span class="k">class</span> <span class="nc">RegexpReplace</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpReplace-5674"><a href="#RegexpReplace-5674"><span class="linenos">5674</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="RegexpReplace-5675"><a href="#RegexpReplace-5675"><span class="linenos">5675</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="RegexpReplace-5676"><a href="#RegexpReplace-5676"><span class="linenos">5676</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="RegexpReplace-5677"><a href="#RegexpReplace-5677"><span class="linenos">5677</span></a> <span class="s2">"replacement"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpReplace-5678"><a href="#RegexpReplace-5678"><span class="linenos">5678</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpReplace-5679"><a href="#RegexpReplace-5679"><span class="linenos">5679</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpReplace-5680"><a href="#RegexpReplace-5680"><span class="linenos">5680</span></a> <span class="s2">"modifiers"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpReplace-5681"><a href="#RegexpReplace-5681"><span class="linenos">5681</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpReplace-5680"><a href="#RegexpReplace-5680"><span class="linenos">5680</span></a><span class="k">class</span> <span class="nc">RegexpReplace</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpReplace-5681"><a href="#RegexpReplace-5681"><span class="linenos">5681</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="RegexpReplace-5682"><a href="#RegexpReplace-5682"><span class="linenos">5682</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="RegexpReplace-5683"><a href="#RegexpReplace-5683"><span class="linenos">5683</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="RegexpReplace-5684"><a href="#RegexpReplace-5684"><span class="linenos">5684</span></a> <span class="s2">"replacement"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpReplace-5685"><a href="#RegexpReplace-5685"><span class="linenos">5685</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpReplace-5686"><a href="#RegexpReplace-5686"><span class="linenos">5686</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpReplace-5687"><a href="#RegexpReplace-5687"><span class="linenos">5687</span></a> <span class="s2">"modifiers"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpReplace-5688"><a href="#RegexpReplace-5688"><span class="linenos">5688</span></a> <span class="p">}</span> </span></pre></div> @@ -89886,8 +90065,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RegexpLike"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpLike-5684"><a href="#RegexpLike-5684"><span class="linenos">5684</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpLike-5685"><a href="#RegexpLike-5685"><span class="linenos">5685</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpLike-5691"><a href="#RegexpLike-5691"><span class="linenos">5691</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpLike-5692"><a href="#RegexpLike-5692"><span class="linenos">5692</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -90019,8 +90198,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RegexpILike"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpILike-5688"><a href="#RegexpILike-5688"><span class="linenos">5688</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpILike-5689"><a href="#RegexpILike-5689"><span class="linenos">5689</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpILike-5695"><a href="#RegexpILike-5695"><span class="linenos">5695</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpILike-5696"><a href="#RegexpILike-5696"><span class="linenos">5696</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -90152,8 +90331,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RegexpSplit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpSplit-5694"><a href="#RegexpSplit-5694"><span class="linenos">5694</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpSplit-5695"><a href="#RegexpSplit-5695"><span class="linenos">5695</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpSplit-5701"><a href="#RegexpSplit-5701"><span class="linenos">5701</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpSplit-5702"><a href="#RegexpSplit-5702"><span class="linenos">5702</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -90280,8 +90459,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Repeat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Repeat-5698"><a href="#Repeat-5698"><span class="linenos">5698</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Repeat-5699"><a href="#Repeat-5699"><span class="linenos">5699</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Repeat-5705"><a href="#Repeat-5705"><span class="linenos">5705</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Repeat-5706"><a href="#Repeat-5706"><span class="linenos">5706</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -90408,8 +90587,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Round"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Round-5704"><a href="#Round-5704"><span class="linenos">5704</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Round-5705"><a href="#Round-5705"><span class="linenos">5705</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"truncate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Round-5711"><a href="#Round-5711"><span class="linenos">5711</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Round-5712"><a href="#Round-5712"><span class="linenos">5712</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"truncate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -90536,8 +90715,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#RowNumber"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RowNumber-5708"><a href="#RowNumber-5708"><span class="linenos">5708</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RowNumber-5709"><a href="#RowNumber-5709"><span class="linenos">5709</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RowNumber-5715"><a href="#RowNumber-5715"><span class="linenos">5715</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RowNumber-5716"><a href="#RowNumber-5716"><span class="linenos">5716</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span></pre></div> @@ -90664,8 +90843,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#SafeDivide"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SafeDivide-5712"><a href="#SafeDivide-5712"><span class="linenos">5712</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="SafeDivide-5713"><a href="#SafeDivide-5713"><span class="linenos">5713</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SafeDivide-5719"><a href="#SafeDivide-5719"><span class="linenos">5719</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="SafeDivide-5720"><a href="#SafeDivide-5720"><span class="linenos">5720</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -90792,8 +90971,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#SHA"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SHA-5716"><a href="#SHA-5716"><span class="linenos">5716</span></a><span class="k">class</span> <span class="nc">SHA</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="SHA-5717"><a href="#SHA-5717"><span class="linenos">5717</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA"</span><span class="p">,</span> <span class="s2">"SHA1"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SHA-5723"><a href="#SHA-5723"><span class="linenos">5723</span></a><span class="k">class</span> <span class="nc">SHA</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="SHA-5724"><a href="#SHA-5724"><span class="linenos">5724</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA"</span><span class="p">,</span> <span class="s2">"SHA1"</span><span class="p">]</span> </span></pre></div> @@ -90909,9 +91088,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#SHA2"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SHA2-5720"><a href="#SHA2-5720"><span class="linenos">5720</span></a><span class="k">class</span> <span class="nc">SHA2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="SHA2-5721"><a href="#SHA2-5721"><span class="linenos">5721</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA2"</span><span class="p">]</span> -</span><span id="SHA2-5722"><a href="#SHA2-5722"><span class="linenos">5722</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SHA2-5727"><a href="#SHA2-5727"><span class="linenos">5727</span></a><span class="k">class</span> <span class="nc">SHA2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="SHA2-5728"><a href="#SHA2-5728"><span class="linenos">5728</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SHA2"</span><span class="p">]</span> +</span><span id="SHA2-5729"><a href="#SHA2-5729"><span class="linenos">5729</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -91038,8 +91217,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Sign"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sign-5725"><a href="#Sign-5725"><span class="linenos">5725</span></a><span class="k">class</span> <span class="nc">Sign</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Sign-5726"><a href="#Sign-5726"><span class="linenos">5726</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SIGN"</span><span class="p">,</span> <span class="s2">"SIGNUM"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sign-5732"><a href="#Sign-5732"><span class="linenos">5732</span></a><span class="k">class</span> <span class="nc">Sign</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Sign-5733"><a href="#Sign-5733"><span class="linenos">5733</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"SIGN"</span><span class="p">,</span> <span class="s2">"SIGNUM"</span><span class="p">]</span> </span></pre></div> @@ -91155,8 +91334,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#SortArray"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SortArray-5729"><a href="#SortArray-5729"><span class="linenos">5729</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="SortArray-5730"><a href="#SortArray-5730"><span class="linenos">5730</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SortArray-5736"><a href="#SortArray-5736"><span class="linenos">5736</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="SortArray-5737"><a href="#SortArray-5737"><span class="linenos">5737</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -91283,8 +91462,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Split"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Split-5733"><a href="#Split-5733"><span class="linenos">5733</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Split-5734"><a href="#Split-5734"><span class="linenos">5734</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Split-5740"><a href="#Split-5740"><span class="linenos">5740</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Split-5741"><a href="#Split-5741"><span class="linenos">5741</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -91411,8 +91590,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Substring"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Substring-5739"><a href="#Substring-5739"><span class="linenos">5739</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Substring-5740"><a href="#Substring-5740"><span class="linenos">5740</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Substring-5746"><a href="#Substring-5746"><span class="linenos">5746</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Substring-5747"><a href="#Substring-5747"><span class="linenos">5747</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -91539,8 +91718,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StandardHash"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StandardHash-5743"><a href="#StandardHash-5743"><span class="linenos">5743</span></a><span class="k">class</span> <span class="nc">StandardHash</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StandardHash-5744"><a href="#StandardHash-5744"><span class="linenos">5744</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StandardHash-5750"><a href="#StandardHash-5750"><span class="linenos">5750</span></a><span class="k">class</span> <span class="nc">StandardHash</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StandardHash-5751"><a href="#StandardHash-5751"><span class="linenos">5751</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -91667,9 +91846,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StartsWith"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StartsWith-5747"><a href="#StartsWith-5747"><span class="linenos">5747</span></a><span class="k">class</span> <span class="nc">StartsWith</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StartsWith-5748"><a href="#StartsWith-5748"><span class="linenos">5748</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STARTS_WITH"</span><span class="p">,</span> <span class="s2">"STARTSWITH"</span><span class="p">]</span> -</span><span id="StartsWith-5749"><a href="#StartsWith-5749"><span class="linenos">5749</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StartsWith-5754"><a href="#StartsWith-5754"><span class="linenos">5754</span></a><span class="k">class</span> <span class="nc">StartsWith</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StartsWith-5755"><a href="#StartsWith-5755"><span class="linenos">5755</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STARTS_WITH"</span><span class="p">,</span> <span class="s2">"STARTSWITH"</span><span class="p">]</span> +</span><span id="StartsWith-5756"><a href="#StartsWith-5756"><span class="linenos">5756</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -91796,13 +91975,13 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StrPosition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrPosition-5752"><a href="#StrPosition-5752"><span class="linenos">5752</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrPosition-5753"><a href="#StrPosition-5753"><span class="linenos">5753</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="StrPosition-5754"><a href="#StrPosition-5754"><span class="linenos">5754</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="StrPosition-5755"><a href="#StrPosition-5755"><span class="linenos">5755</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="StrPosition-5756"><a href="#StrPosition-5756"><span class="linenos">5756</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrPosition-5757"><a href="#StrPosition-5757"><span class="linenos">5757</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrPosition-5758"><a href="#StrPosition-5758"><span class="linenos">5758</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrPosition-5759"><a href="#StrPosition-5759"><span class="linenos">5759</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrPosition-5760"><a href="#StrPosition-5760"><span class="linenos">5760</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="StrPosition-5761"><a href="#StrPosition-5761"><span class="linenos">5761</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="StrPosition-5762"><a href="#StrPosition-5762"><span class="linenos">5762</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="StrPosition-5763"><a href="#StrPosition-5763"><span class="linenos">5763</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrPosition-5764"><a href="#StrPosition-5764"><span class="linenos">5764</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrPosition-5765"><a href="#StrPosition-5765"><span class="linenos">5765</span></a> <span class="p">}</span> </span></pre></div> @@ -91929,8 +92108,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StrToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToDate-5761"><a href="#StrToDate-5761"><span class="linenos">5761</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToDate-5762"><a href="#StrToDate-5762"><span class="linenos">5762</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToDate-5768"><a href="#StrToDate-5768"><span class="linenos">5768</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToDate-5769"><a href="#StrToDate-5769"><span class="linenos">5769</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -92057,8 +92236,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StrToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToTime-5765"><a href="#StrToTime-5765"><span class="linenos">5765</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToTime-5766"><a href="#StrToTime-5766"><span class="linenos">5766</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToTime-5772"><a href="#StrToTime-5772"><span class="linenos">5772</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToTime-5773"><a href="#StrToTime-5773"><span class="linenos">5773</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -92185,8 +92364,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StrToUnix"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToUnix-5771"><a href="#StrToUnix-5771"><span class="linenos">5771</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToUnix-5772"><a href="#StrToUnix-5772"><span class="linenos">5772</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToUnix-5778"><a href="#StrToUnix-5778"><span class="linenos">5778</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToUnix-5779"><a href="#StrToUnix-5779"><span class="linenos">5779</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -92313,13 +92492,13 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StrToMap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToMap-5777"><a href="#StrToMap-5777"><span class="linenos">5777</span></a><span class="k">class</span> <span class="nc">StrToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToMap-5778"><a href="#StrToMap-5778"><span class="linenos">5778</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="StrToMap-5779"><a href="#StrToMap-5779"><span class="linenos">5779</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="StrToMap-5780"><a href="#StrToMap-5780"><span class="linenos">5780</span></a> <span class="s2">"pair_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrToMap-5781"><a href="#StrToMap-5781"><span class="linenos">5781</span></a> <span class="s2">"key_value_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrToMap-5782"><a href="#StrToMap-5782"><span class="linenos">5782</span></a> <span class="s2">"duplicate_resolution_callback"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrToMap-5783"><a href="#StrToMap-5783"><span class="linenos">5783</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToMap-5784"><a href="#StrToMap-5784"><span class="linenos">5784</span></a><span class="k">class</span> <span class="nc">StrToMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToMap-5785"><a href="#StrToMap-5785"><span class="linenos">5785</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="StrToMap-5786"><a href="#StrToMap-5786"><span class="linenos">5786</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="StrToMap-5787"><a href="#StrToMap-5787"><span class="linenos">5787</span></a> <span class="s2">"pair_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrToMap-5788"><a href="#StrToMap-5788"><span class="linenos">5788</span></a> <span class="s2">"key_value_delim"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrToMap-5789"><a href="#StrToMap-5789"><span class="linenos">5789</span></a> <span class="s2">"duplicate_resolution_callback"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrToMap-5790"><a href="#StrToMap-5790"><span class="linenos">5790</span></a> <span class="p">}</span> </span></pre></div> @@ -92447,8 +92626,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#NumberToStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NumberToStr-5786"><a href="#NumberToStr-5786"><span class="linenos">5786</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="NumberToStr-5787"><a href="#NumberToStr-5787"><span class="linenos">5787</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NumberToStr-5793"><a href="#NumberToStr-5793"><span class="linenos">5793</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="NumberToStr-5794"><a href="#NumberToStr-5794"><span class="linenos">5794</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -92575,8 +92754,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#FromBase"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FromBase-5790"><a href="#FromBase-5790"><span class="linenos">5790</span></a><span class="k">class</span> <span class="nc">FromBase</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="FromBase-5791"><a href="#FromBase-5791"><span class="linenos">5791</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="FromBase-5797"><a href="#FromBase-5797"><span class="linenos">5797</span></a><span class="k">class</span> <span class="nc">FromBase</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="FromBase-5798"><a href="#FromBase-5798"><span class="linenos">5798</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -92703,9 +92882,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Struct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Struct-5794"><a href="#Struct-5794"><span class="linenos">5794</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Struct-5795"><a href="#Struct-5795"><span class="linenos">5795</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Struct-5796"><a href="#Struct-5796"><span class="linenos">5796</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Struct-5801"><a href="#Struct-5801"><span class="linenos">5801</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Struct-5802"><a href="#Struct-5802"><span class="linenos">5802</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Struct-5803"><a href="#Struct-5803"><span class="linenos">5803</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -92843,8 +93022,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StructExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StructExtract-5799"><a href="#StructExtract-5799"><span class="linenos">5799</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StructExtract-5800"><a href="#StructExtract-5800"><span class="linenos">5800</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StructExtract-5806"><a href="#StructExtract-5806"><span class="linenos">5806</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StructExtract-5807"><a href="#StructExtract-5807"><span class="linenos">5807</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -92971,9 +93150,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Stuff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Stuff-5805"><a href="#Stuff-5805"><span class="linenos">5805</span></a><span class="k">class</span> <span class="nc">Stuff</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Stuff-5806"><a href="#Stuff-5806"><span class="linenos">5806</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STUFF"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">]</span> -</span><span id="Stuff-5807"><a href="#Stuff-5807"><span class="linenos">5807</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Stuff-5812"><a href="#Stuff-5812"><span class="linenos">5812</span></a><span class="k">class</span> <span class="nc">Stuff</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Stuff-5813"><a href="#Stuff-5813"><span class="linenos">5813</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"STUFF"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">]</span> +</span><span id="Stuff-5814"><a href="#Stuff-5814"><span class="linenos">5814</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -93100,8 +93279,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Sum"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sum-5810"><a href="#Sum-5810"><span class="linenos">5810</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Sum-5811"><a href="#Sum-5811"><span class="linenos">5811</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sum-5817"><a href="#Sum-5817"><span class="linenos">5817</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Sum-5818"><a href="#Sum-5818"><span class="linenos">5818</span></a> <span class="k">pass</span> </span></pre></div> @@ -93217,8 +93396,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Sqrt"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sqrt-5814"><a href="#Sqrt-5814"><span class="linenos">5814</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Sqrt-5815"><a href="#Sqrt-5815"><span class="linenos">5815</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sqrt-5821"><a href="#Sqrt-5821"><span class="linenos">5821</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Sqrt-5822"><a href="#Sqrt-5822"><span class="linenos">5822</span></a> <span class="k">pass</span> </span></pre></div> @@ -93334,8 +93513,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Stddev"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Stddev-5818"><a href="#Stddev-5818"><span class="linenos">5818</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Stddev-5819"><a href="#Stddev-5819"><span class="linenos">5819</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Stddev-5825"><a href="#Stddev-5825"><span class="linenos">5825</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Stddev-5826"><a href="#Stddev-5826"><span class="linenos">5826</span></a> <span class="k">pass</span> </span></pre></div> @@ -93451,8 +93630,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StddevPop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StddevPop-5822"><a href="#StddevPop-5822"><span class="linenos">5822</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="StddevPop-5823"><a href="#StddevPop-5823"><span class="linenos">5823</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StddevPop-5829"><a href="#StddevPop-5829"><span class="linenos">5829</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="StddevPop-5830"><a href="#StddevPop-5830"><span class="linenos">5830</span></a> <span class="k">pass</span> </span></pre></div> @@ -93568,8 +93747,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#StddevSamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StddevSamp-5826"><a href="#StddevSamp-5826"><span class="linenos">5826</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="StddevSamp-5827"><a href="#StddevSamp-5827"><span class="linenos">5827</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StddevSamp-5833"><a href="#StddevSamp-5833"><span class="linenos">5833</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="StddevSamp-5834"><a href="#StddevSamp-5834"><span class="linenos">5834</span></a> <span class="k">pass</span> </span></pre></div> @@ -93685,8 +93864,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeToStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToStr-5830"><a href="#TimeToStr-5830"><span class="linenos">5830</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeToStr-5831"><a href="#TimeToStr-5831"><span class="linenos">5831</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"timezone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToStr-5837"><a href="#TimeToStr-5837"><span class="linenos">5837</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeToStr-5838"><a href="#TimeToStr-5838"><span class="linenos">5838</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"culture"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"timezone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -93813,8 +93992,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeToTimeStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToTimeStr-5834"><a href="#TimeToTimeStr-5834"><span class="linenos">5834</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeToTimeStr-5835"><a href="#TimeToTimeStr-5835"><span class="linenos">5835</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToTimeStr-5841"><a href="#TimeToTimeStr-5841"><span class="linenos">5841</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeToTimeStr-5842"><a href="#TimeToTimeStr-5842"><span class="linenos">5842</span></a> <span class="k">pass</span> </span></pre></div> @@ -93930,8 +94109,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeToUnix"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToUnix-5838"><a href="#TimeToUnix-5838"><span class="linenos">5838</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeToUnix-5839"><a href="#TimeToUnix-5839"><span class="linenos">5839</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToUnix-5845"><a href="#TimeToUnix-5845"><span class="linenos">5845</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeToUnix-5846"><a href="#TimeToUnix-5846"><span class="linenos">5846</span></a> <span class="k">pass</span> </span></pre></div> @@ -94047,8 +94226,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeStrToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToDate-5842"><a href="#TimeStrToDate-5842"><span class="linenos">5842</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeStrToDate-5843"><a href="#TimeStrToDate-5843"><span class="linenos">5843</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToDate-5849"><a href="#TimeStrToDate-5849"><span class="linenos">5849</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeStrToDate-5850"><a href="#TimeStrToDate-5850"><span class="linenos">5850</span></a> <span class="k">pass</span> </span></pre></div> @@ -94164,8 +94343,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeStrToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToTime-5846"><a href="#TimeStrToTime-5846"><span class="linenos">5846</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeStrToTime-5847"><a href="#TimeStrToTime-5847"><span class="linenos">5847</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToTime-5853"><a href="#TimeStrToTime-5853"><span class="linenos">5853</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeStrToTime-5854"><a href="#TimeStrToTime-5854"><span class="linenos">5854</span></a> <span class="k">pass</span> </span></pre></div> @@ -94281,8 +94460,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimeStrToUnix"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToUnix-5850"><a href="#TimeStrToUnix-5850"><span class="linenos">5850</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeStrToUnix-5851"><a href="#TimeStrToUnix-5851"><span class="linenos">5851</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToUnix-5857"><a href="#TimeStrToUnix-5857"><span class="linenos">5857</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeStrToUnix-5858"><a href="#TimeStrToUnix-5858"><span class="linenos">5858</span></a> <span class="k">pass</span> </span></pre></div> @@ -94398,13 +94577,13 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Trim"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Trim-5854"><a href="#Trim-5854"><span class="linenos">5854</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Trim-5855"><a href="#Trim-5855"><span class="linenos">5855</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Trim-5856"><a href="#Trim-5856"><span class="linenos">5856</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Trim-5857"><a href="#Trim-5857"><span class="linenos">5857</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Trim-5858"><a href="#Trim-5858"><span class="linenos">5858</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Trim-5859"><a href="#Trim-5859"><span class="linenos">5859</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Trim-5860"><a href="#Trim-5860"><span class="linenos">5860</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Trim-5861"><a href="#Trim-5861"><span class="linenos">5861</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Trim-5862"><a href="#Trim-5862"><span class="linenos">5862</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Trim-5863"><a href="#Trim-5863"><span class="linenos">5863</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Trim-5864"><a href="#Trim-5864"><span class="linenos">5864</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Trim-5865"><a href="#Trim-5865"><span class="linenos">5865</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Trim-5866"><a href="#Trim-5866"><span class="linenos">5866</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Trim-5867"><a href="#Trim-5867"><span class="linenos">5867</span></a> <span class="p">}</span> </span></pre></div> @@ -94531,13 +94710,13 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsAdd-5863"><a href="#TsOrDsAdd-5863"><span class="linenos">5863</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TsOrDsAdd-5864"><a href="#TsOrDsAdd-5864"><span class="linenos">5864</span></a> <span class="c1"># return_type is used to correctly cast the arguments of this expression when transpiling it</span> -</span><span id="TsOrDsAdd-5865"><a href="#TsOrDsAdd-5865"><span class="linenos">5865</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="TsOrDsAdd-5866"><a href="#TsOrDsAdd-5866"><span class="linenos">5866</span></a> -</span><span id="TsOrDsAdd-5867"><a href="#TsOrDsAdd-5867"><span class="linenos">5867</span></a> <span class="nd">@property</span> -</span><span id="TsOrDsAdd-5868"><a href="#TsOrDsAdd-5868"><span class="linenos">5868</span></a> <span class="k">def</span> <span class="nf">return_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="TsOrDsAdd-5869"><a href="#TsOrDsAdd-5869"><span class="linenos">5869</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"return_type"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsAdd-5870"><a href="#TsOrDsAdd-5870"><span class="linenos">5870</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TsOrDsAdd-5871"><a href="#TsOrDsAdd-5871"><span class="linenos">5871</span></a> <span class="c1"># return_type is used to correctly cast the arguments of this expression when transpiling it</span> +</span><span id="TsOrDsAdd-5872"><a href="#TsOrDsAdd-5872"><span class="linenos">5872</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"return_type"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="TsOrDsAdd-5873"><a href="#TsOrDsAdd-5873"><span class="linenos">5873</span></a> +</span><span id="TsOrDsAdd-5874"><a href="#TsOrDsAdd-5874"><span class="linenos">5874</span></a> <span class="nd">@property</span> +</span><span id="TsOrDsAdd-5875"><a href="#TsOrDsAdd-5875"><span class="linenos">5875</span></a> <span class="k">def</span> <span class="nf">return_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="TsOrDsAdd-5876"><a href="#TsOrDsAdd-5876"><span class="linenos">5876</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"return_type"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span> </span></pre></div> @@ -94564,9 +94743,9 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsAdd.return_type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsAdd.return_type-5867"><a href="#TsOrDsAdd.return_type-5867"><span class="linenos">5867</span></a> <span class="nd">@property</span> -</span><span id="TsOrDsAdd.return_type-5868"><a href="#TsOrDsAdd.return_type-5868"><span class="linenos">5868</span></a> <span class="k">def</span> <span class="nf">return_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="TsOrDsAdd.return_type-5869"><a href="#TsOrDsAdd.return_type-5869"><span class="linenos">5869</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"return_type"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsAdd.return_type-5874"><a href="#TsOrDsAdd.return_type-5874"><span class="linenos">5874</span></a> <span class="nd">@property</span> +</span><span id="TsOrDsAdd.return_type-5875"><a href="#TsOrDsAdd.return_type-5875"><span class="linenos">5875</span></a> <span class="k">def</span> <span class="nf">return_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="TsOrDsAdd.return_type-5876"><a href="#TsOrDsAdd.return_type-5876"><span class="linenos">5876</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"return_type"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span> </span></pre></div> @@ -94688,8 +94867,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsDiff-5872"><a href="#TsOrDsDiff-5872"><span class="linenos">5872</span></a><span class="k">class</span> <span class="nc">TsOrDsDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TsOrDsDiff-5873"><a href="#TsOrDsDiff-5873"><span class="linenos">5873</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsDiff-5879"><a href="#TsOrDsDiff-5879"><span class="linenos">5879</span></a><span class="k">class</span> <span class="nc">TsOrDsDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TsOrDsDiff-5880"><a href="#TsOrDsDiff-5880"><span class="linenos">5880</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -94822,8 +95001,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsToDateStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDateStr-5876"><a href="#TsOrDsToDateStr-5876"><span class="linenos">5876</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDsToDateStr-5877"><a href="#TsOrDsToDateStr-5877"><span class="linenos">5877</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDateStr-5883"><a href="#TsOrDsToDateStr-5883"><span class="linenos">5883</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDsToDateStr-5884"><a href="#TsOrDsToDateStr-5884"><span class="linenos">5884</span></a> <span class="k">pass</span> </span></pre></div> @@ -94939,8 +95118,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDate-5880"><a href="#TsOrDsToDate-5880"><span class="linenos">5880</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDsToDate-5881"><a href="#TsOrDsToDate-5881"><span class="linenos">5881</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDate-5887"><a href="#TsOrDsToDate-5887"><span class="linenos">5887</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDsToDate-5888"><a href="#TsOrDsToDate-5888"><span class="linenos">5888</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"safe"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -95067,8 +95246,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToTime-5884"><a href="#TsOrDsToTime-5884"><span class="linenos">5884</span></a><span class="k">class</span> <span class="nc">TsOrDsToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDsToTime-5885"><a href="#TsOrDsToTime-5885"><span class="linenos">5885</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToTime-5891"><a href="#TsOrDsToTime-5891"><span class="linenos">5891</span></a><span class="k">class</span> <span class="nc">TsOrDsToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDsToTime-5892"><a href="#TsOrDsToTime-5892"><span class="linenos">5892</span></a> <span class="k">pass</span> </span></pre></div> @@ -95184,8 +95363,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDsToTimestamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToTimestamp-5888"><a href="#TsOrDsToTimestamp-5888"><span class="linenos">5888</span></a><span class="k">class</span> <span class="nc">TsOrDsToTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDsToTimestamp-5889"><a href="#TsOrDsToTimestamp-5889"><span class="linenos">5889</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToTimestamp-5895"><a href="#TsOrDsToTimestamp-5895"><span class="linenos">5895</span></a><span class="k">class</span> <span class="nc">TsOrDsToTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDsToTimestamp-5896"><a href="#TsOrDsToTimestamp-5896"><span class="linenos">5896</span></a> <span class="k">pass</span> </span></pre></div> @@ -95301,8 +95480,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TsOrDiToDi"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDiToDi-5892"><a href="#TsOrDiToDi-5892"><span class="linenos">5892</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDiToDi-5893"><a href="#TsOrDiToDi-5893"><span class="linenos">5893</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDiToDi-5899"><a href="#TsOrDiToDi-5899"><span class="linenos">5899</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDiToDi-5900"><a href="#TsOrDiToDi-5900"><span class="linenos">5900</span></a> <span class="k">pass</span> </span></pre></div> @@ -95418,8 +95597,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Unhex"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unhex-5896"><a href="#Unhex-5896"><span class="linenos">5896</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Unhex-5897"><a href="#Unhex-5897"><span class="linenos">5897</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unhex-5903"><a href="#Unhex-5903"><span class="linenos">5903</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Unhex-5904"><a href="#Unhex-5904"><span class="linenos">5904</span></a> <span class="k">pass</span> </span></pre></div> @@ -95535,8 +95714,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#UnixDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixDate-5901"><a href="#UnixDate-5901"><span class="linenos">5901</span></a><span class="k">class</span> <span class="nc">UnixDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixDate-5902"><a href="#UnixDate-5902"><span class="linenos">5902</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixDate-5908"><a href="#UnixDate-5908"><span class="linenos">5908</span></a><span class="k">class</span> <span class="nc">UnixDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixDate-5909"><a href="#UnixDate-5909"><span class="linenos">5909</span></a> <span class="k">pass</span> </span></pre></div> @@ -95652,8 +95831,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#UnixToStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToStr-5905"><a href="#UnixToStr-5905"><span class="linenos">5905</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixToStr-5906"><a href="#UnixToStr-5906"><span class="linenos">5906</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToStr-5912"><a href="#UnixToStr-5912"><span class="linenos">5912</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixToStr-5913"><a href="#UnixToStr-5913"><span class="linenos">5913</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -95780,26 +95959,26 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#UnixToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTime-5911"><a href="#UnixToTime-5911"><span class="linenos">5911</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixToTime-5912"><a href="#UnixToTime-5912"><span class="linenos">5912</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="UnixToTime-5913"><a href="#UnixToTime-5913"><span class="linenos">5913</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="UnixToTime-5914"><a href="#UnixToTime-5914"><span class="linenos">5914</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="UnixToTime-5915"><a href="#UnixToTime-5915"><span class="linenos">5915</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="UnixToTime-5916"><a href="#UnixToTime-5916"><span class="linenos">5916</span></a> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="UnixToTime-5917"><a href="#UnixToTime-5917"><span class="linenos">5917</span></a> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="UnixToTime-5918"><a href="#UnixToTime-5918"><span class="linenos">5918</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="UnixToTime-5919"><a href="#UnixToTime-5919"><span class="linenos">5919</span></a> <span class="p">}</span> -</span><span id="UnixToTime-5920"><a href="#UnixToTime-5920"><span class="linenos">5920</span></a> -</span><span id="UnixToTime-5921"><a href="#UnixToTime-5921"><span class="linenos">5921</span></a> <span class="n">SECONDS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> -</span><span id="UnixToTime-5922"><a href="#UnixToTime-5922"><span class="linenos">5922</span></a> <span class="n">DECIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> -</span><span id="UnixToTime-5923"><a href="#UnixToTime-5923"><span class="linenos">5923</span></a> <span class="n">CENTIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="UnixToTime-5924"><a href="#UnixToTime-5924"><span class="linenos">5924</span></a> <span class="n">MILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> -</span><span id="UnixToTime-5925"><a href="#UnixToTime-5925"><span class="linenos">5925</span></a> <span class="n">DECIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> -</span><span id="UnixToTime-5926"><a href="#UnixToTime-5926"><span class="linenos">5926</span></a> <span class="n">CENTIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> -</span><span id="UnixToTime-5927"><a href="#UnixToTime-5927"><span class="linenos">5927</span></a> <span class="n">MICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> -</span><span id="UnixToTime-5928"><a href="#UnixToTime-5928"><span class="linenos">5928</span></a> <span class="n">DECIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> -</span><span id="UnixToTime-5929"><a href="#UnixToTime-5929"><span class="linenos">5929</span></a> <span class="n">CENTIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> -</span><span id="UnixToTime-5930"><a href="#UnixToTime-5930"><span class="linenos">5930</span></a> <span class="n">NANOS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTime-5918"><a href="#UnixToTime-5918"><span class="linenos">5918</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixToTime-5919"><a href="#UnixToTime-5919"><span class="linenos">5919</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="UnixToTime-5920"><a href="#UnixToTime-5920"><span class="linenos">5920</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="UnixToTime-5921"><a href="#UnixToTime-5921"><span class="linenos">5921</span></a> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="UnixToTime-5922"><a href="#UnixToTime-5922"><span class="linenos">5922</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="UnixToTime-5923"><a href="#UnixToTime-5923"><span class="linenos">5923</span></a> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="UnixToTime-5924"><a href="#UnixToTime-5924"><span class="linenos">5924</span></a> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="UnixToTime-5925"><a href="#UnixToTime-5925"><span class="linenos">5925</span></a> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="UnixToTime-5926"><a href="#UnixToTime-5926"><span class="linenos">5926</span></a> <span class="p">}</span> +</span><span id="UnixToTime-5927"><a href="#UnixToTime-5927"><span class="linenos">5927</span></a> +</span><span id="UnixToTime-5928"><a href="#UnixToTime-5928"><span class="linenos">5928</span></a> <span class="n">SECONDS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> +</span><span id="UnixToTime-5929"><a href="#UnixToTime-5929"><span class="linenos">5929</span></a> <span class="n">DECIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> +</span><span id="UnixToTime-5930"><a href="#UnixToTime-5930"><span class="linenos">5930</span></a> <span class="n">CENTIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="UnixToTime-5931"><a href="#UnixToTime-5931"><span class="linenos">5931</span></a> <span class="n">MILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> +</span><span id="UnixToTime-5932"><a href="#UnixToTime-5932"><span class="linenos">5932</span></a> <span class="n">DECIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> +</span><span id="UnixToTime-5933"><a href="#UnixToTime-5933"><span class="linenos">5933</span></a> <span class="n">CENTIMILLIS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> +</span><span id="UnixToTime-5934"><a href="#UnixToTime-5934"><span class="linenos">5934</span></a> <span class="n">MICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> +</span><span id="UnixToTime-5935"><a href="#UnixToTime-5935"><span class="linenos">5935</span></a> <span class="n">DECIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> +</span><span id="UnixToTime-5936"><a href="#UnixToTime-5936"><span class="linenos">5936</span></a> <span class="n">CENTIMICROS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> +</span><span id="UnixToTime-5937"><a href="#UnixToTime-5937"><span class="linenos">5937</span></a> <span class="n">NANOS</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span> </span></pre></div> @@ -96046,8 +96225,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#UnixToTimeStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTimeStr-5933"><a href="#UnixToTimeStr-5933"><span class="linenos">5933</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixToTimeStr-5934"><a href="#UnixToTimeStr-5934"><span class="linenos">5934</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTimeStr-5940"><a href="#UnixToTimeStr-5940"><span class="linenos">5940</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixToTimeStr-5941"><a href="#UnixToTimeStr-5941"><span class="linenos">5941</span></a> <span class="k">pass</span> </span></pre></div> @@ -96163,19 +96342,19 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#TimestampFromParts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampFromParts-5937"><a href="#TimestampFromParts-5937"><span class="linenos">5937</span></a><span class="k">class</span> <span class="nc">TimestampFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimestampFromParts-5938"><a href="#TimestampFromParts-5938"><span class="linenos">5938</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMP_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMESTAMPFROMPARTS"</span><span class="p">]</span> -</span><span id="TimestampFromParts-5939"><a href="#TimestampFromParts-5939"><span class="linenos">5939</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="TimestampFromParts-5940"><a href="#TimestampFromParts-5940"><span class="linenos">5940</span></a> <span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimestampFromParts-5941"><a href="#TimestampFromParts-5941"><span class="linenos">5941</span></a> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimestampFromParts-5942"><a href="#TimestampFromParts-5942"><span class="linenos">5942</span></a> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimestampFromParts-5943"><a href="#TimestampFromParts-5943"><span class="linenos">5943</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimestampFromParts-5944"><a href="#TimestampFromParts-5944"><span class="linenos">5944</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimestampFromParts-5945"><a href="#TimestampFromParts-5945"><span class="linenos">5945</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="TimestampFromParts-5946"><a href="#TimestampFromParts-5946"><span class="linenos">5946</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TimestampFromParts-5947"><a href="#TimestampFromParts-5947"><span class="linenos">5947</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TimestampFromParts-5948"><a href="#TimestampFromParts-5948"><span class="linenos">5948</span></a> <span class="s2">"milli"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TimestampFromParts-5949"><a href="#TimestampFromParts-5949"><span class="linenos">5949</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampFromParts-5944"><a href="#TimestampFromParts-5944"><span class="linenos">5944</span></a><span class="k">class</span> <span class="nc">TimestampFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimestampFromParts-5945"><a href="#TimestampFromParts-5945"><span class="linenos">5945</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"TIMESTAMP_FROM_PARTS"</span><span class="p">,</span> <span class="s2">"TIMESTAMPFROMPARTS"</span><span class="p">]</span> +</span><span id="TimestampFromParts-5946"><a href="#TimestampFromParts-5946"><span class="linenos">5946</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="TimestampFromParts-5947"><a href="#TimestampFromParts-5947"><span class="linenos">5947</span></a> <span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimestampFromParts-5948"><a href="#TimestampFromParts-5948"><span class="linenos">5948</span></a> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimestampFromParts-5949"><a href="#TimestampFromParts-5949"><span class="linenos">5949</span></a> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimestampFromParts-5950"><a href="#TimestampFromParts-5950"><span class="linenos">5950</span></a> <span class="s2">"hour"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimestampFromParts-5951"><a href="#TimestampFromParts-5951"><span class="linenos">5951</span></a> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimestampFromParts-5952"><a href="#TimestampFromParts-5952"><span class="linenos">5952</span></a> <span class="s2">"sec"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="TimestampFromParts-5953"><a href="#TimestampFromParts-5953"><span class="linenos">5953</span></a> <span class="s2">"nano"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TimestampFromParts-5954"><a href="#TimestampFromParts-5954"><span class="linenos">5954</span></a> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TimestampFromParts-5955"><a href="#TimestampFromParts-5955"><span class="linenos">5955</span></a> <span class="s2">"milli"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TimestampFromParts-5956"><a href="#TimestampFromParts-5956"><span class="linenos">5956</span></a> <span class="p">}</span> </span></pre></div> @@ -96303,8 +96482,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Upper"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Upper-5952"><a href="#Upper-5952"><span class="linenos">5952</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Upper-5953"><a href="#Upper-5953"><span class="linenos">5953</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Upper-5959"><a href="#Upper-5959"><span class="linenos">5959</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Upper-5960"><a href="#Upper-5960"><span class="linenos">5960</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> </span></pre></div> @@ -96420,8 +96599,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Corr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Corr-5956"><a href="#Corr-5956"><span class="linenos">5956</span></a><span class="k">class</span> <span class="nc">Corr</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Corr-5957"><a href="#Corr-5957"><span class="linenos">5957</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Corr-5963"><a href="#Corr-5963"><span class="linenos">5963</span></a><span class="k">class</span> <span class="nc">Corr</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Corr-5964"><a href="#Corr-5964"><span class="linenos">5964</span></a> <span class="k">pass</span> </span></pre></div> @@ -96542,8 +96721,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Variance"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Variance-5960"><a href="#Variance-5960"><span class="linenos">5960</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Variance-5961"><a href="#Variance-5961"><span class="linenos">5961</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Variance-5967"><a href="#Variance-5967"><span class="linenos">5967</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Variance-5968"><a href="#Variance-5968"><span class="linenos">5968</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> </span></pre></div> @@ -96659,8 +96838,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#VariancePop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VariancePop-5964"><a href="#VariancePop-5964"><span class="linenos">5964</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="VariancePop-5965"><a href="#VariancePop-5965"><span class="linenos">5965</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="VariancePop-5971"><a href="#VariancePop-5971"><span class="linenos">5971</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="VariancePop-5972"><a href="#VariancePop-5972"><span class="linenos">5972</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> </span></pre></div> @@ -96776,8 +96955,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CovarSamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CovarSamp-5968"><a href="#CovarSamp-5968"><span class="linenos">5968</span></a><span class="k">class</span> <span class="nc">CovarSamp</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> -</span><span id="CovarSamp-5969"><a href="#CovarSamp-5969"><span class="linenos">5969</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CovarSamp-5975"><a href="#CovarSamp-5975"><span class="linenos">5975</span></a><span class="k">class</span> <span class="nc">CovarSamp</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> +</span><span id="CovarSamp-5976"><a href="#CovarSamp-5976"><span class="linenos">5976</span></a> <span class="k">pass</span> </span></pre></div> @@ -96898,8 +97077,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#CovarPop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CovarPop-5972"><a href="#CovarPop-5972"><span class="linenos">5972</span></a><span class="k">class</span> <span class="nc">CovarPop</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> -</span><span id="CovarPop-5973"><a href="#CovarPop-5973"><span class="linenos">5973</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CovarPop-5979"><a href="#CovarPop-5979"><span class="linenos">5979</span></a><span class="k">class</span> <span class="nc">CovarPop</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">AggFunc</span><span class="p">):</span> +</span><span id="CovarPop-5980"><a href="#CovarPop-5980"><span class="linenos">5980</span></a> <span class="k">pass</span> </span></pre></div> @@ -97020,8 +97199,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Week"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Week-5976"><a href="#Week-5976"><span class="linenos">5976</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Week-5977"><a href="#Week-5977"><span class="linenos">5977</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Week-5983"><a href="#Week-5983"><span class="linenos">5983</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Week-5984"><a href="#Week-5984"><span class="linenos">5984</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -97148,8 +97327,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#XMLTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="XMLTable-5980"><a href="#XMLTable-5980"><span class="linenos">5980</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="XMLTable-5981"><a href="#XMLTable-5981"><span class="linenos">5981</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="XMLTable-5987"><a href="#XMLTable-5987"><span class="linenos">5987</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="XMLTable-5988"><a href="#XMLTable-5988"><span class="linenos">5988</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -97276,8 +97455,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Year"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Year-5984"><a href="#Year-5984"><span class="linenos">5984</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Year-5985"><a href="#Year-5985"><span class="linenos">5985</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Year-5991"><a href="#Year-5991"><span class="linenos">5991</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Year-5992"><a href="#Year-5992"><span class="linenos">5992</span></a> <span class="k">pass</span> </span></pre></div> @@ -97393,8 +97572,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Use"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Use-5988"><a href="#Use-5988"><span class="linenos">5988</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Use-5989"><a href="#Use-5989"><span class="linenos">5989</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Use-5995"><a href="#Use-5995"><span class="linenos">5995</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Use-5996"><a href="#Use-5996"><span class="linenos">5996</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -97513,14 +97692,14 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Merge"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Merge-5992"><a href="#Merge-5992"><span class="linenos">5992</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Merge-5993"><a href="#Merge-5993"><span class="linenos">5993</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Merge-5994"><a href="#Merge-5994"><span class="linenos">5994</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Merge-5995"><a href="#Merge-5995"><span class="linenos">5995</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Merge-5996"><a href="#Merge-5996"><span class="linenos">5996</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Merge-5997"><a href="#Merge-5997"><span class="linenos">5997</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Merge-5998"><a href="#Merge-5998"><span class="linenos">5998</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Merge-5999"><a href="#Merge-5999"><span class="linenos">5999</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Merge-5999"><a href="#Merge-5999"><span class="linenos">5999</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Merge-6000"><a href="#Merge-6000"><span class="linenos">6000</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Merge-6001"><a href="#Merge-6001"><span class="linenos">6001</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Merge-6002"><a href="#Merge-6002"><span class="linenos">6002</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Merge-6003"><a href="#Merge-6003"><span class="linenos">6003</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Merge-6004"><a href="#Merge-6004"><span class="linenos">6004</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Merge-6005"><a href="#Merge-6005"><span class="linenos">6005</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Merge-6006"><a href="#Merge-6006"><span class="linenos">6006</span></a> <span class="p">}</span> </span></pre></div> @@ -97639,8 +97818,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#When"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="When-6002"><a href="#When-6002"><span class="linenos">6002</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="When-6003"><a href="#When-6003"><span class="linenos">6003</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"matched"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"condition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="When-6009"><a href="#When-6009"><span class="linenos">6009</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="When-6010"><a href="#When-6010"><span class="linenos">6010</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"matched"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"source"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"condition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -97767,8 +97946,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#NextValueFor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NextValueFor-6008"><a href="#NextValueFor-6008"><span class="linenos">6008</span></a><span class="k">class</span> <span class="nc">NextValueFor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="NextValueFor-6009"><a href="#NextValueFor-6009"><span class="linenos">6009</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NextValueFor-6015"><a href="#NextValueFor-6015"><span class="linenos">6015</span></a><span class="k">class</span> <span class="nc">NextValueFor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="NextValueFor-6016"><a href="#NextValueFor-6016"><span class="linenos">6016</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -97895,8 +98074,8 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#Semicolon"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Semicolon-6014"><a href="#Semicolon-6014"><span class="linenos">6014</span></a><span class="k">class</span> <span class="nc">Semicolon</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Semicolon-6015"><a href="#Semicolon-6015"><span class="linenos">6015</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Semicolon-6021"><a href="#Semicolon-6021"><span class="linenos">6021</span></a><span class="k">class</span> <span class="nc">Semicolon</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Semicolon-6022"><a href="#Semicolon-6022"><span class="linenos">6022</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{}</span> </span></pre></div> @@ -98008,7 +98187,7 @@ array<int> != array<float>.</p> <div class="attr variable"> <span class="name">ALL_FUNCTIONS</span> = <input id="ALL_FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ALL_FUNCTIONS-view-value"></label><span class="default_value">[<class '<a href="#Abs">Abs</a>'>, <class '<a href="#AddMonths">AddMonths</a>'>, <class '<a href="#AnonymousAggFunc">AnonymousAggFunc</a>'>, <class '<a href="#AnyValue">AnyValue</a>'>, <class '<a href="#ApproxDistinct">ApproxDistinct</a>'>, <class '<a href="#ApproxQuantile">ApproxQuantile</a>'>, <class '<a href="#ApproxTopK">ApproxTopK</a>'>, <class '<a href="#ArgMax">ArgMax</a>'>, <class '<a href="#ArgMin">ArgMin</a>'>, <class '<a href="#Array">Array</a>'>, <class '<a href="#ArrayAgg">ArrayAgg</a>'>, <class '<a href="#ArrayAll">ArrayAll</a>'>, <class '<a href="#ArrayAny">ArrayAny</a>'>, <class '<a href="#ArrayConcat">ArrayConcat</a>'>, <class '<a href="#ArrayConstructCompact">ArrayConstructCompact</a>'>, <class '<a href="#ArrayContains">ArrayContains</a>'>, <class '<a href="#ArrayContainsAll">ArrayContainsAll</a>'>, <class '<a href="#ArrayFilter">ArrayFilter</a>'>, <class '<a href="#ArrayOverlaps">ArrayOverlaps</a>'>, <class '<a href="#ArraySize">ArraySize</a>'>, <class '<a href="#ArraySort">ArraySort</a>'>, <class '<a href="#ArraySum">ArraySum</a>'>, <class '<a href="#ArrayToString">ArrayToString</a>'>, <class '<a href="#ArrayUnionAgg">ArrayUnionAgg</a>'>, <class '<a href="#ArrayUniqueAgg">ArrayUniqueAgg</a>'>, <class '<a href="#Avg">Avg</a>'>, <class '<a href="#Case">Case</a>'>, <class '<a href="#Cast">Cast</a>'>, <class '<a href="#CastToStrType">CastToStrType</a>'>, <class '<a href="#Cbrt">Cbrt</a>'>, <class '<a href="#Ceil">Ceil</a>'>, <class '<a href="#Chr">Chr</a>'>, <class '<a href="#Coalesce">Coalesce</a>'>, <class '<a href="#Collate">Collate</a>'>, <class '<a href="#CombinedAggFunc">CombinedAggFunc</a>'>, <class '<a href="#CombinedParameterizedAgg">CombinedParameterizedAgg</a>'>, <class '<a href="#Concat">Concat</a>'>, <class '<a href="#ConcatWs">ConcatWs</a>'>, <class '<a href="#ConnectByRoot">ConnectByRoot</a>'>, <class '<a href="#Convert">Convert</a>'>, <class '<a href="#Corr">Corr</a>'>, <class '<a href="#Count">Count</a>'>, <class '<a href="#CountIf">CountIf</a>'>, <class '<a href="#CovarPop">CovarPop</a>'>, <class '<a href="#CovarSamp">CovarSamp</a>'>, <class '<a href="#CurrentDate">CurrentDate</a>'>, <class '<a href="#CurrentDatetime">CurrentDatetime</a>'>, <class '<a href="#CurrentTime">CurrentTime</a>'>, <class '<a href="#CurrentTimestamp">CurrentTimestamp</a>'>, <class '<a href="#CurrentUser">CurrentUser</a>'>, <class '<a href="#Date">Date</a>'>, <class '<a href="#DateAdd">DateAdd</a>'>, <class '<a href="#DateDiff">DateDiff</a>'>, <class '<a href="#DateFromParts">DateFromParts</a>'>, <class '<a href="#DateStrToDate">DateStrToDate</a>'>, <class '<a href="#DateSub">DateSub</a>'>, <class '<a href="#DateToDateStr">DateToDateStr</a>'>, <class '<a href="#DateToDi">DateToDi</a>'>, <class '<a href="#DateTrunc">DateTrunc</a>'>, <class '<a href="#DatetimeAdd">DatetimeAdd</a>'>, <class '<a href="#DatetimeDiff">DatetimeDiff</a>'>, <class '<a href="#DatetimeSub">DatetimeSub</a>'>, <class '<a href="#DatetimeTrunc">DatetimeTrunc</a>'>, <class '<a href="#Day">Day</a>'>, <class '<a href="#DayOfMonth">DayOfMonth</a>'>, <class '<a href="#DayOfWeek">DayOfWeek</a>'>, <class '<a href="#DayOfYear">DayOfYear</a>'>, <class '<a href="#Decode">Decode</a>'>, <class '<a href="#DiToDate">DiToDate</a>'>, <class '<a href="#Encode">Encode</a>'>, <class '<a href="#Exp">Exp</a>'>, <class '<a href="#Explode">Explode</a>'>, <class '<a href="#ExplodeOuter">ExplodeOuter</a>'>, <class '<a href="#Extract">Extract</a>'>, <class '<a href="#First">First</a>'>, <class '<a href="#FirstValue">FirstValue</a>'>, <class '<a href="#Flatten">Flatten</a>'>, <class '<a href="#Floor">Floor</a>'>, <class '<a href="#FromBase">FromBase</a>'>, <class '<a href="#FromBase64">FromBase64</a>'>, <class '<a href="#GapFill">GapFill</a>'>, <class '<a href="#GenerateDateArray">GenerateDateArray</a>'>, <class '<a href="#GenerateSeries">GenerateSeries</a>'>, <class '<a href="#Greatest">Greatest</a>'>, <class '<a href="#GroupConcat">GroupConcat</a>'>, <class '<a href="#Hex">Hex</a>'>, <class '<a href="#Hll">Hll</a>'>, <class '<a href="#If">If</a>'>, <class '<a href="#Initcap">Initcap</a>'>, <class '<a href="#IsInf">IsInf</a>'>, <class '<a href="#IsNan">IsNan</a>'>, <class '<a href="#JSONArray">JSONArray</a>'>, <class '<a href="#JSONArrayAgg">JSONArrayAgg</a>'>, <class '<a href="#JSONArrayContains">JSONArrayContains</a>'>, <class '<a href="#JSONBExtract">JSONBExtract</a>'>, <class '<a href="#JSONBExtractScalar">JSONBExtractScalar</a>'>, <class '<a href="#JSONExtract">JSONExtract</a>'>, <class '<a href="#JSONExtractScalar">JSONExtractScalar</a>'>, <class '<a href="#JSONFormat">JSONFormat</a>'>, <class '<a href="#JSONObject">JSONObject</a>'>, <class '<a href="#JSONObjectAgg">JSONObjectAgg</a>'>, <class '<a href="#JSONTable">JSONTable</a>'>, <class '<a href="#Lag">Lag</a>'>, <class '<a href="#Last">Last</a>'>, <class '<a href="#LastDay">LastDay</a>'>, <class '<a href="#LastValue">LastValue</a>'>, <class '<a href="#Lead">Lead</a>'>, <class '<a href="#Least">Least</a>'>, <class '<a href="#Left">Left</a>'>, <class '<a href="#Length">Length</a>'>, <class '<a href="#Levenshtein">Levenshtein</a>'>, <class '<a href="#Ln">Ln</a>'>, <class '<a href="#Log">Log</a>'>, <class '<a href="#LogicalAnd">LogicalAnd</a>'>, <class '<a href="#LogicalOr">LogicalOr</a>'>, <class '<a href="#Lower">Lower</a>'>, <class '<a href="#LowerHex">LowerHex</a>'>, <class '<a href="#MD5">MD5</a>'>, <class '<a href="#MD5Digest">MD5Digest</a>'>, <class '<a href="#Map">Map</a>'>, <class '<a href="#MapFromEntries">MapFromEntries</a>'>, <class '<a href="#MatchAgainst">MatchAgainst</a>'>, <class '<a href="#Max">Max</a>'>, <class '<a href="#Min">Min</a>'>, <class '<a href="#Month">Month</a>'>, <class '<a href="#MonthsBetween">MonthsBetween</a>'>, <class '<a href="#NextValueFor">NextValueFor</a>'>, <class '<a href="#NthValue">NthValue</a>'>, <class '<a href="#Nullif">Nullif</a>'>, <class '<a href="#NumberToStr">NumberToStr</a>'>, <class '<a href="#Nvl2">Nvl2</a>'>, <class '<a href="#OpenJSON">OpenJSON</a>'>, <class '<a href="#ParameterizedAgg">ParameterizedAgg</a>'>, <class '<a href="#ParseJSON">ParseJSON</a>'>, <class '<a href="#PercentileCont">PercentileCont</a>'>, <class '<a href="#PercentileDisc">PercentileDisc</a>'>, <class '<a href="#Posexplode">Posexplode</a>'>, <class '<a href="#PosexplodeOuter">PosexplodeOuter</a>'>, <class '<a href="#Pow">Pow</a>'>, <class '<a href="#Predict">Predict</a>'>, <class '<a href="#Quantile">Quantile</a>'>, <class '<a href="#Quarter">Quarter</a>'>, <class '<a href="#Rand">Rand</a>'>, <class '<a href="#Randn">Randn</a>'>, <class '<a href="#RangeN">RangeN</a>'>, <class '<a href="#ReadCSV">ReadCSV</a>'>, <class '<a href="#Reduce">Reduce</a>'>, <class '<a href="#RegexpExtract">RegexpExtract</a>'>, <class '<a href="#RegexpILike">RegexpILike</a>'>, <class '<a href="#RegexpLike">RegexpLike</a>'>, <class '<a href="#RegexpReplace">RegexpReplace</a>'>, <class '<a href="#RegexpSplit">RegexpSplit</a>'>, <class '<a href="#Repeat">Repeat</a>'>, <class '<a href="#Right">Right</a>'>, <class '<a href="#Round">Round</a>'>, <class '<a href="#RowNumber">RowNumber</a>'>, <class '<a href="#SHA">SHA</a>'>, <class '<a href="#SHA2">SHA2</a>'>, <class '<a href="#SafeDivide">SafeDivide</a>'>, <class '<a href="#Sign">Sign</a>'>, <class '<a href="#SortArray">SortArray</a>'>, <class '<a href="#Split">Split</a>'>, <class '<a href="#Sqrt">Sqrt</a>'>, <class '<a href="#StandardHash">StandardHash</a>'>, <class '<a href="#StarMap">StarMap</a>'>, <class '<a href="#StartsWith">StartsWith</a>'>, <class '<a href="#Stddev">Stddev</a>'>, <class '<a href="#StddevPop">StddevPop</a>'>, <class '<a href="#StddevSamp">StddevSamp</a>'>, <class '<a href="#StrPosition">StrPosition</a>'>, <class '<a href="#StrToDate">StrToDate</a>'>, <class '<a href="#StrToMap">StrToMap</a>'>, <class '<a href="#StrToTime">StrToTime</a>'>, <class '<a href="#StrToUnix">StrToUnix</a>'>, <class '<a href="#StringToArray">StringToArray</a>'>, <class '<a href="#Struct">Struct</a>'>, <class '<a href="#StructExtract">StructExtract</a>'>, <class '<a href="#Stuff">Stuff</a>'>, <class '<a href="#Substring">Substring</a>'>, <class '<a href="#Sum">Sum</a>'>, <class '<a href="#TimeAdd">TimeAdd</a>'>, <class '<a href="#TimeDiff">TimeDiff</a>'>, <class '<a href="#TimeFromParts">TimeFromParts</a>'>, <class '<a href="#TimeStrToDate">TimeStrToDate</a>'>, <class '<a href="#TimeStrToTime">TimeStrToTime</a>'>, <class '<a href="#TimeStrToUnix">TimeStrToUnix</a>'>, <class '<a href="#TimeSub">TimeSub</a>'>, <class '<a href="#TimeToStr">TimeToStr</a>'>, <class '<a href="#TimeToTimeStr">TimeToTimeStr</a>'>, <class '<a href="#TimeToUnix">TimeToUnix</a>'>, <class '<a href="#TimeTrunc">TimeTrunc</a>'>, <class '<a href="#Timestamp">Timestamp</a>'>, <class '<a href="#TimestampAdd">TimestampAdd</a>'>, <class '<a href="#TimestampDiff">TimestampDiff</a>'>, <class '<a href="#TimestampFromParts">TimestampFromParts</a>'>, <class '<a href="#TimestampSub">TimestampSub</a>'>, <class '<a href="#TimestampTrunc">TimestampTrunc</a>'>, <class '<a href="#ToArray">ToArray</a>'>, <class '<a href="#ToBase64">ToBase64</a>'>, <class '<a href="#ToChar">ToChar</a>'>, <class '<a href="#ToDays">ToDays</a>'>, <class '<a href="#ToMap">ToMap</a>'>, <class '<a href="#ToNumber">ToNumber</a>'>, <class '<a href="#Transform">Transform</a>'>, <class '<a href="#Trim">Trim</a>'>, <class '<a href="#Try">Try</a>'>, <class '<a href="#TryCast">TryCast</a>'>, <class '<a href="#TsOrDiToDi">TsOrDiToDi</a>'>, <class '<a href="#TsOrDsAdd">TsOrDsAdd</a>'>, <class '<a href="#TsOrDsDiff">TsOrDsDiff</a>'>, <class '<a href="#TsOrDsToDate">TsOrDsToDate</a>'>, <class '<a href="#TsOrDsToDateStr">TsOrDsToDateStr</a>'>, <class '<a href="#TsOrDsToTime">TsOrDsToTime</a>'>, <class '<a href="#TsOrDsToTimestamp">TsOrDsToTimestamp</a>'>, <class '<a href="#Unhex">Unhex</a>'>, <class '<a href="#UnixDate">UnixDate</a>'>, <class '<a href="#UnixToStr">UnixToStr</a>'>, <class '<a href="#UnixToTime">UnixToTime</a>'>, <class '<a href="#UnixToTimeStr">UnixToTimeStr</a>'>, <class '<a href="#Upper">Upper</a>'>, <class '<a href="#VarMap">VarMap</a>'>, <class '<a href="#Variance">Variance</a>'>, <class '<a href="#VariancePop">VariancePop</a>'>, <class '<a href="#Week">Week</a>'>, <class '<a href="#WeekOfYear">WeekOfYear</a>'>, <class '<a href="#When">When</a>'>, <class '<a href="#XMLTable">XMLTable</a>'>, <class '<a href="#Xor">Xor</a>'>, <class '<a href="#Year">Year</a>'>]</span> + <label class="view-value-button pdoc-button" for="ALL_FUNCTIONS-view-value"></label><span class="default_value">[<class '<a href="#Abs">Abs</a>'>, <class '<a href="#AddMonths">AddMonths</a>'>, <class '<a href="#AnonymousAggFunc">AnonymousAggFunc</a>'>, <class '<a href="#AnyValue">AnyValue</a>'>, <class '<a href="#ApproxDistinct">ApproxDistinct</a>'>, <class '<a href="#ApproxQuantile">ApproxQuantile</a>'>, <class '<a href="#ApproxTopK">ApproxTopK</a>'>, <class '<a href="#ArgMax">ArgMax</a>'>, <class '<a href="#ArgMin">ArgMin</a>'>, <class '<a href="#Array">Array</a>'>, <class '<a href="#ArrayAgg">ArrayAgg</a>'>, <class '<a href="#ArrayAll">ArrayAll</a>'>, <class '<a href="#ArrayAny">ArrayAny</a>'>, <class '<a href="#ArrayConcat">ArrayConcat</a>'>, <class '<a href="#ArrayConstructCompact">ArrayConstructCompact</a>'>, <class '<a href="#ArrayContains">ArrayContains</a>'>, <class '<a href="#ArrayContainsAll">ArrayContainsAll</a>'>, <class '<a href="#ArrayFilter">ArrayFilter</a>'>, <class '<a href="#ArrayOverlaps">ArrayOverlaps</a>'>, <class '<a href="#ArraySize">ArraySize</a>'>, <class '<a href="#ArraySort">ArraySort</a>'>, <class '<a href="#ArraySum">ArraySum</a>'>, <class '<a href="#ArrayToString">ArrayToString</a>'>, <class '<a href="#ArrayUnionAgg">ArrayUnionAgg</a>'>, <class '<a href="#ArrayUniqueAgg">ArrayUniqueAgg</a>'>, <class '<a href="#Avg">Avg</a>'>, <class '<a href="#Case">Case</a>'>, <class '<a href="#Cast">Cast</a>'>, <class '<a href="#CastToStrType">CastToStrType</a>'>, <class '<a href="#Cbrt">Cbrt</a>'>, <class '<a href="#Ceil">Ceil</a>'>, <class '<a href="#Chr">Chr</a>'>, <class '<a href="#Coalesce">Coalesce</a>'>, <class '<a href="#Collate">Collate</a>'>, <class '<a href="#CombinedAggFunc">CombinedAggFunc</a>'>, <class '<a href="#CombinedParameterizedAgg">CombinedParameterizedAgg</a>'>, <class '<a href="#Concat">Concat</a>'>, <class '<a href="#ConcatWs">ConcatWs</a>'>, <class '<a href="#ConnectByRoot">ConnectByRoot</a>'>, <class '<a href="#Convert">Convert</a>'>, <class '<a href="#Corr">Corr</a>'>, <class '<a href="#Count">Count</a>'>, <class '<a href="#CountIf">CountIf</a>'>, <class '<a href="#CovarPop">CovarPop</a>'>, <class '<a href="#CovarSamp">CovarSamp</a>'>, <class '<a href="#CurrentDate">CurrentDate</a>'>, <class '<a href="#CurrentDatetime">CurrentDatetime</a>'>, <class '<a href="#CurrentTime">CurrentTime</a>'>, <class '<a href="#CurrentTimestamp">CurrentTimestamp</a>'>, <class '<a href="#CurrentUser">CurrentUser</a>'>, <class '<a href="#Date">Date</a>'>, <class '<a href="#DateAdd">DateAdd</a>'>, <class '<a href="#DateDiff">DateDiff</a>'>, <class '<a href="#DateFromParts">DateFromParts</a>'>, <class '<a href="#DateStrToDate">DateStrToDate</a>'>, <class '<a href="#DateSub">DateSub</a>'>, <class '<a href="#DateToDateStr">DateToDateStr</a>'>, <class '<a href="#DateToDi">DateToDi</a>'>, <class '<a href="#DateTrunc">DateTrunc</a>'>, <class '<a href="#DatetimeAdd">DatetimeAdd</a>'>, <class '<a href="#DatetimeDiff">DatetimeDiff</a>'>, <class '<a href="#DatetimeSub">DatetimeSub</a>'>, <class '<a href="#DatetimeTrunc">DatetimeTrunc</a>'>, <class '<a href="#Day">Day</a>'>, <class '<a href="#DayOfMonth">DayOfMonth</a>'>, <class '<a href="#DayOfWeek">DayOfWeek</a>'>, <class '<a href="#DayOfYear">DayOfYear</a>'>, <class '<a href="#Decode">Decode</a>'>, <class '<a href="#DiToDate">DiToDate</a>'>, <class '<a href="#Encode">Encode</a>'>, <class '<a href="#Exp">Exp</a>'>, <class '<a href="#Explode">Explode</a>'>, <class '<a href="#ExplodeOuter">ExplodeOuter</a>'>, <class '<a href="#Extract">Extract</a>'>, <class '<a href="#First">First</a>'>, <class '<a href="#FirstValue">FirstValue</a>'>, <class '<a href="#Flatten">Flatten</a>'>, <class '<a href="#Floor">Floor</a>'>, <class '<a href="#FromBase">FromBase</a>'>, <class '<a href="#FromBase64">FromBase64</a>'>, <class '<a href="#GapFill">GapFill</a>'>, <class '<a href="#GenerateDateArray">GenerateDateArray</a>'>, <class '<a href="#GenerateSeries">GenerateSeries</a>'>, <class '<a href="#Greatest">Greatest</a>'>, <class '<a href="#GroupConcat">GroupConcat</a>'>, <class '<a href="#Hex">Hex</a>'>, <class '<a href="#Hll">Hll</a>'>, <class '<a href="#If">If</a>'>, <class '<a href="#Initcap">Initcap</a>'>, <class '<a href="#IsInf">IsInf</a>'>, <class '<a href="#IsNan">IsNan</a>'>, <class '<a href="#JSONArray">JSONArray</a>'>, <class '<a href="#JSONArrayAgg">JSONArrayAgg</a>'>, <class '<a href="#JSONArrayContains">JSONArrayContains</a>'>, <class '<a href="#JSONBExtract">JSONBExtract</a>'>, <class '<a href="#JSONBExtractScalar">JSONBExtractScalar</a>'>, <class '<a href="#JSONExtract">JSONExtract</a>'>, <class '<a href="#JSONExtractScalar">JSONExtractScalar</a>'>, <class '<a href="#JSONFormat">JSONFormat</a>'>, <class '<a href="#JSONObject">JSONObject</a>'>, <class '<a href="#JSONObjectAgg">JSONObjectAgg</a>'>, <class '<a href="#JSONTable">JSONTable</a>'>, <class '<a href="#Lag">Lag</a>'>, <class '<a href="#Last">Last</a>'>, <class '<a href="#LastDay">LastDay</a>'>, <class '<a href="#LastValue">LastValue</a>'>, <class '<a href="#Lead">Lead</a>'>, <class '<a href="#Least">Least</a>'>, <class '<a href="#Left">Left</a>'>, <class '<a href="#Length">Length</a>'>, <class '<a href="#Levenshtein">Levenshtein</a>'>, <class '<a href="#List">List</a>'>, <class '<a href="#Ln">Ln</a>'>, <class '<a href="#Log">Log</a>'>, <class '<a href="#LogicalAnd">LogicalAnd</a>'>, <class '<a href="#LogicalOr">LogicalOr</a>'>, <class '<a href="#Lower">Lower</a>'>, <class '<a href="#LowerHex">LowerHex</a>'>, <class '<a href="#MD5">MD5</a>'>, <class '<a href="#MD5Digest">MD5Digest</a>'>, <class '<a href="#Map">Map</a>'>, <class '<a href="#MapFromEntries">MapFromEntries</a>'>, <class '<a href="#MatchAgainst">MatchAgainst</a>'>, <class '<a href="#Max">Max</a>'>, <class '<a href="#Min">Min</a>'>, <class '<a href="#Month">Month</a>'>, <class '<a href="#MonthsBetween">MonthsBetween</a>'>, <class '<a href="#NextValueFor">NextValueFor</a>'>, <class '<a href="#NthValue">NthValue</a>'>, <class '<a href="#Nullif">Nullif</a>'>, <class '<a href="#NumberToStr">NumberToStr</a>'>, <class '<a href="#Nvl2">Nvl2</a>'>, <class '<a href="#OpenJSON">OpenJSON</a>'>, <class '<a href="#ParameterizedAgg">ParameterizedAgg</a>'>, <class '<a href="#ParseJSON">ParseJSON</a>'>, <class '<a href="#PercentileCont">PercentileCont</a>'>, <class '<a href="#PercentileDisc">PercentileDisc</a>'>, <class '<a href="#Posexplode">Posexplode</a>'>, <class '<a href="#PosexplodeOuter">PosexplodeOuter</a>'>, <class '<a href="#Pow">Pow</a>'>, <class '<a href="#Predict">Predict</a>'>, <class '<a href="#Quantile">Quantile</a>'>, <class '<a href="#Quarter">Quarter</a>'>, <class '<a href="#Rand">Rand</a>'>, <class '<a href="#Randn">Randn</a>'>, <class '<a href="#RangeN">RangeN</a>'>, <class '<a href="#ReadCSV">ReadCSV</a>'>, <class '<a href="#Reduce">Reduce</a>'>, <class '<a href="#RegexpExtract">RegexpExtract</a>'>, <class '<a href="#RegexpILike">RegexpILike</a>'>, <class '<a href="#RegexpLike">RegexpLike</a>'>, <class '<a href="#RegexpReplace">RegexpReplace</a>'>, <class '<a href="#RegexpSplit">RegexpSplit</a>'>, <class '<a href="#Repeat">Repeat</a>'>, <class '<a href="#Right">Right</a>'>, <class '<a href="#Round">Round</a>'>, <class '<a href="#RowNumber">RowNumber</a>'>, <class '<a href="#SHA">SHA</a>'>, <class '<a href="#SHA2">SHA2</a>'>, <class '<a href="#SafeDivide">SafeDivide</a>'>, <class '<a href="#Sign">Sign</a>'>, <class '<a href="#SortArray">SortArray</a>'>, <class '<a href="#Split">Split</a>'>, <class '<a href="#Sqrt">Sqrt</a>'>, <class '<a href="#StandardHash">StandardHash</a>'>, <class '<a href="#StarMap">StarMap</a>'>, <class '<a href="#StartsWith">StartsWith</a>'>, <class '<a href="#Stddev">Stddev</a>'>, <class '<a href="#StddevPop">StddevPop</a>'>, <class '<a href="#StddevSamp">StddevSamp</a>'>, <class '<a href="#StrPosition">StrPosition</a>'>, <class '<a href="#StrToDate">StrToDate</a>'>, <class '<a href="#StrToMap">StrToMap</a>'>, <class '<a href="#StrToTime">StrToTime</a>'>, <class '<a href="#StrToUnix">StrToUnix</a>'>, <class '<a href="#StringToArray">StringToArray</a>'>, <class '<a href="#Struct">Struct</a>'>, <class '<a href="#StructExtract">StructExtract</a>'>, <class '<a href="#Stuff">Stuff</a>'>, <class '<a href="#Substring">Substring</a>'>, <class '<a href="#Sum">Sum</a>'>, <class '<a href="#TimeAdd">TimeAdd</a>'>, <class '<a href="#TimeDiff">TimeDiff</a>'>, <class '<a href="#TimeFromParts">TimeFromParts</a>'>, <class '<a href="#TimeStrToDate">TimeStrToDate</a>'>, <class '<a href="#TimeStrToTime">TimeStrToTime</a>'>, <class '<a href="#TimeStrToUnix">TimeStrToUnix</a>'>, <class '<a href="#TimeSub">TimeSub</a>'>, <class '<a href="#TimeToStr">TimeToStr</a>'>, <class '<a href="#TimeToTimeStr">TimeToTimeStr</a>'>, <class '<a href="#TimeToUnix">TimeToUnix</a>'>, <class '<a href="#TimeTrunc">TimeTrunc</a>'>, <class '<a href="#Timestamp">Timestamp</a>'>, <class '<a href="#TimestampAdd">TimestampAdd</a>'>, <class '<a href="#TimestampDiff">TimestampDiff</a>'>, <class '<a href="#TimestampFromParts">TimestampFromParts</a>'>, <class '<a href="#TimestampSub">TimestampSub</a>'>, <class '<a href="#TimestampTrunc">TimestampTrunc</a>'>, <class '<a href="#ToArray">ToArray</a>'>, <class '<a href="#ToBase64">ToBase64</a>'>, <class '<a href="#ToChar">ToChar</a>'>, <class '<a href="#ToDays">ToDays</a>'>, <class '<a href="#ToMap">ToMap</a>'>, <class '<a href="#ToNumber">ToNumber</a>'>, <class '<a href="#Transform">Transform</a>'>, <class '<a href="#Trim">Trim</a>'>, <class '<a href="#Try">Try</a>'>, <class '<a href="#TryCast">TryCast</a>'>, <class '<a href="#TsOrDiToDi">TsOrDiToDi</a>'>, <class '<a href="#TsOrDsAdd">TsOrDsAdd</a>'>, <class '<a href="#TsOrDsDiff">TsOrDsDiff</a>'>, <class '<a href="#TsOrDsToDate">TsOrDsToDate</a>'>, <class '<a href="#TsOrDsToDateStr">TsOrDsToDateStr</a>'>, <class '<a href="#TsOrDsToTime">TsOrDsToTime</a>'>, <class '<a href="#TsOrDsToTimestamp">TsOrDsToTimestamp</a>'>, <class '<a href="#Unhex">Unhex</a>'>, <class '<a href="#UnixDate">UnixDate</a>'>, <class '<a href="#UnixToStr">UnixToStr</a>'>, <class '<a href="#UnixToTime">UnixToTime</a>'>, <class '<a href="#UnixToTimeStr">UnixToTimeStr</a>'>, <class '<a href="#Upper">Upper</a>'>, <class '<a href="#VarMap">VarMap</a>'>, <class '<a href="#Variance">Variance</a>'>, <class '<a href="#VariancePop">VariancePop</a>'>, <class '<a href="#Week">Week</a>'>, <class '<a href="#WeekOfYear">WeekOfYear</a>'>, <class '<a href="#When">When</a>'>, <class '<a href="#XMLTable">XMLTable</a>'>, <class '<a href="#Xor">Xor</a>'>, <class '<a href="#Year">Year</a>'>]</span> </div> @@ -98021,7 +98200,7 @@ array<int> != array<float>.</p> <div class="attr variable"> <span class="name">FUNCTION_BY_NAME</span> = <input id="FUNCTION_BY_NAME-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="FUNCTION_BY_NAME-view-value"></label><span class="default_value">{'ABS': <class '<a href="#Abs">Abs</a>'>, 'ADD_MONTHS': <class '<a href="#AddMonths">AddMonths</a>'>, 'ANONYMOUS_AGG_FUNC': <class '<a href="#AnonymousAggFunc">AnonymousAggFunc</a>'>, 'ANY_VALUE': <class '<a href="#AnyValue">AnyValue</a>'>, 'APPROX_DISTINCT': <class '<a href="#ApproxDistinct">ApproxDistinct</a>'>, 'APPROX_COUNT_DISTINCT': <class '<a href="#ApproxDistinct">ApproxDistinct</a>'>, 'APPROX_QUANTILE': <class '<a href="#ApproxQuantile">ApproxQuantile</a>'>, 'APPROX_TOP_K': <class '<a href="#ApproxTopK">ApproxTopK</a>'>, 'ARG_MAX': <class '<a href="#ArgMax">ArgMax</a>'>, 'ARGMAX': <class '<a href="#ArgMax">ArgMax</a>'>, 'MAX_BY': <class '<a href="#ArgMax">ArgMax</a>'>, 'ARG_MIN': <class '<a href="#ArgMin">ArgMin</a>'>, 'ARGMIN': <class '<a href="#ArgMin">ArgMin</a>'>, 'MIN_BY': <class '<a href="#ArgMin">ArgMin</a>'>, 'ARRAY': <class '<a href="#Array">Array</a>'>, 'ARRAY_AGG': <class '<a href="#ArrayAgg">ArrayAgg</a>'>, 'ARRAY_ALL': <class '<a href="#ArrayAll">ArrayAll</a>'>, 'ARRAY_ANY': <class '<a href="#ArrayAny">ArrayAny</a>'>, 'ARRAY_CONCAT': <class '<a href="#ArrayConcat">ArrayConcat</a>'>, 'ARRAY_CAT': <class '<a href="#ArrayConcat">ArrayConcat</a>'>, 'ARRAY_CONSTRUCT_COMPACT': <class '<a href="#ArrayConstructCompact">ArrayConstructCompact</a>'>, 'ARRAY_CONTAINS': <class '<a href="#ArrayContains">ArrayContains</a>'>, 'ARRAY_HAS': <class '<a href="#ArrayContains">ArrayContains</a>'>, 'ARRAY_CONTAINS_ALL': <class '<a href="#ArrayContainsAll">ArrayContainsAll</a>'>, 'ARRAY_HAS_ALL': <class '<a href="#ArrayContainsAll">ArrayContainsAll</a>'>, 'FILTER': <class '<a href="#ArrayFilter">ArrayFilter</a>'>, 'ARRAY_FILTER': <class '<a href="#ArrayFilter">ArrayFilter</a>'>, 'ARRAY_OVERLAPS': <class '<a href="#ArrayOverlaps">ArrayOverlaps</a>'>, 'ARRAY_SIZE': <class '<a href="#ArraySize">ArraySize</a>'>, 'ARRAY_LENGTH': <class '<a href="#ArraySize">ArraySize</a>'>, 'ARRAY_SORT': <class '<a href="#ArraySort">ArraySort</a>'>, 'ARRAY_SUM': <class '<a href="#ArraySum">ArraySum</a>'>, 'ARRAY_TO_STRING': <class '<a href="#ArrayToString">ArrayToString</a>'>, 'ARRAY_JOIN': <class '<a href="#ArrayToString">ArrayToString</a>'>, 'ARRAY_UNION_AGG': <class '<a href="#ArrayUnionAgg">ArrayUnionAgg</a>'>, 'ARRAY_UNIQUE_AGG': <class '<a href="#ArrayUniqueAgg">ArrayUniqueAgg</a>'>, 'AVG': <class '<a href="#Avg">Avg</a>'>, 'CASE': <class '<a href="#Case">Case</a>'>, 'CAST': <class '<a href="#Cast">Cast</a>'>, 'CAST_TO_STR_TYPE': <class '<a href="#CastToStrType">CastToStrType</a>'>, 'CBRT': <class '<a href="#Cbrt">Cbrt</a>'>, 'CEIL': <class '<a href="#Ceil">Ceil</a>'>, 'CEILING': <class '<a href="#Ceil">Ceil</a>'>, 'CHR': <class '<a href="#Chr">Chr</a>'>, 'CHAR': <class '<a href="#Chr">Chr</a>'>, 'COALESCE': <class '<a href="#Coalesce">Coalesce</a>'>, 'IFNULL': <class '<a href="#Coalesce">Coalesce</a>'>, 'NVL': <class '<a href="#Coalesce">Coalesce</a>'>, 'COLLATE': <class '<a href="#Collate">Collate</a>'>, 'COMBINED_AGG_FUNC': <class '<a href="#CombinedAggFunc">CombinedAggFunc</a>'>, 'COMBINED_PARAMETERIZED_AGG': <class '<a href="#CombinedParameterizedAgg">CombinedParameterizedAgg</a>'>, 'CONCAT': <class '<a href="#Concat">Concat</a>'>, 'CONCAT_WS': <class '<a href="#ConcatWs">ConcatWs</a>'>, 'CONNECT_BY_ROOT': <class '<a href="#ConnectByRoot">ConnectByRoot</a>'>, 'CONVERT': <class '<a href="#Convert">Convert</a>'>, 'CORR': <class '<a href="#Corr">Corr</a>'>, 'COUNT': <class '<a href="#Count">Count</a>'>, 'COUNT_IF': <class '<a href="#CountIf">CountIf</a>'>, 'COUNTIF': <class '<a href="#CountIf">CountIf</a>'>, 'COVAR_POP': <class '<a href="#CovarPop">CovarPop</a>'>, 'COVAR_SAMP': <class '<a href="#CovarSamp">CovarSamp</a>'>, 'CURRENT_DATE': <class '<a href="#CurrentDate">CurrentDate</a>'>, 'CURRENT_DATETIME': <class '<a href="#CurrentDatetime">CurrentDatetime</a>'>, 'CURRENT_TIME': <class '<a href="#CurrentTime">CurrentTime</a>'>, 'CURRENT_TIMESTAMP': <class '<a href="#CurrentTimestamp">CurrentTimestamp</a>'>, 'CURRENT_USER': <class '<a href="#CurrentUser">CurrentUser</a>'>, 'DATE': <class '<a href="#Date">Date</a>'>, 'DATE_ADD': <class '<a href="#DateAdd">DateAdd</a>'>, 'DATEDIFF': <class '<a href="#DateDiff">DateDiff</a>'>, 'DATE_DIFF': <class '<a href="#DateDiff">DateDiff</a>'>, 'DATE_FROM_PARTS': <class '<a href="#DateFromParts">DateFromParts</a>'>, 'DATEFROMPARTS': <class '<a href="#DateFromParts">DateFromParts</a>'>, 'DATE_STR_TO_DATE': <class '<a href="#DateStrToDate">DateStrToDate</a>'>, 'DATE_SUB': <class '<a href="#DateSub">DateSub</a>'>, 'DATE_TO_DATE_STR': <class '<a href="#DateToDateStr">DateToDateStr</a>'>, 'DATE_TO_DI': <class '<a href="#DateToDi">DateToDi</a>'>, 'DATE_TRUNC': <class '<a href="#DateTrunc">DateTrunc</a>'>, 'DATETIME_ADD': <class '<a href="#DatetimeAdd">DatetimeAdd</a>'>, 'DATETIME_DIFF': <class '<a href="#DatetimeDiff">DatetimeDiff</a>'>, 'DATETIME_SUB': <class '<a href="#DatetimeSub">DatetimeSub</a>'>, 'DATETIME_TRUNC': <class '<a href="#DatetimeTrunc">DatetimeTrunc</a>'>, 'DAY': <class '<a href="#Day">Day</a>'>, 'DAY_OF_MONTH': <class '<a href="#DayOfMonth">DayOfMonth</a>'>, 'DAYOFMONTH': <class '<a href="#DayOfMonth">DayOfMonth</a>'>, 'DAY_OF_WEEK': <class '<a href="#DayOfWeek">DayOfWeek</a>'>, 'DAYOFWEEK': <class '<a href="#DayOfWeek">DayOfWeek</a>'>, 'DAY_OF_YEAR': <class '<a href="#DayOfYear">DayOfYear</a>'>, 'DAYOFYEAR': <class '<a href="#DayOfYear">DayOfYear</a>'>, 'DECODE': <class '<a href="#Decode">Decode</a>'>, 'DI_TO_DATE': <class '<a href="#DiToDate">DiToDate</a>'>, 'ENCODE': <class '<a href="#Encode">Encode</a>'>, 'EXP': <class '<a href="#Exp">Exp</a>'>, 'EXPLODE': <class '<a href="#Explode">Explode</a>'>, 'EXPLODE_OUTER': <class '<a href="#ExplodeOuter">ExplodeOuter</a>'>, 'EXTRACT': <class '<a href="#Extract">Extract</a>'>, 'FIRST': <class '<a href="#First">First</a>'>, 'FIRST_VALUE': <class '<a href="#FirstValue">FirstValue</a>'>, 'FLATTEN': <class '<a href="#Flatten">Flatten</a>'>, 'FLOOR': <class '<a href="#Floor">Floor</a>'>, 'FROM_BASE': <class '<a href="#FromBase">FromBase</a>'>, 'FROM_BASE64': <class '<a href="#FromBase64">FromBase64</a>'>, 'GAP_FILL': <class '<a href="#GapFill">GapFill</a>'>, 'GENERATE_DATE_ARRAY': <class '<a href="#GenerateDateArray">GenerateDateArray</a>'>, 'GENERATE_SERIES': <class '<a href="#GenerateSeries">GenerateSeries</a>'>, 'GREATEST': <class '<a href="#Greatest">Greatest</a>'>, 'GROUP_CONCAT': <class '<a href="#GroupConcat">GroupConcat</a>'>, 'HEX': <class '<a href="#Hex">Hex</a>'>, 'HLL': <class '<a href="#Hll">Hll</a>'>, 'IF': <class '<a href="#If">If</a>'>, 'IIF': <class '<a href="#If">If</a>'>, 'INITCAP': <class '<a href="#Initcap">Initcap</a>'>, 'IS_INF': <class '<a href="#IsInf">IsInf</a>'>, 'ISINF': <class '<a href="#IsInf">IsInf</a>'>, 'IS_NAN': <class '<a href="#IsNan">IsNan</a>'>, 'ISNAN': <class '<a href="#IsNan">IsNan</a>'>, 'J_S_O_N_ARRAY': <class '<a href="#JSONArray">JSONArray</a>'>, 'J_S_O_N_ARRAY_AGG': <class '<a href="#JSONArrayAgg">JSONArrayAgg</a>'>, 'JSON_ARRAY_CONTAINS': <class '<a href="#JSONArrayContains">JSONArrayContains</a>'>, 'JSONB_EXTRACT': <class '<a href="#JSONBExtract">JSONBExtract</a>'>, 'JSONB_EXTRACT_SCALAR': <class '<a href="#JSONBExtractScalar">JSONBExtractScalar</a>'>, 'JSON_EXTRACT': <class '<a href="#JSONExtract">JSONExtract</a>'>, 'JSON_EXTRACT_SCALAR': <class '<a href="#JSONExtractScalar">JSONExtractScalar</a>'>, 'JSON_FORMAT': <class '<a href="#JSONFormat">JSONFormat</a>'>, 'J_S_O_N_OBJECT': <class '<a href="#JSONObject">JSONObject</a>'>, 'J_S_O_N_OBJECT_AGG': <class '<a href="#JSONObjectAgg">JSONObjectAgg</a>'>, 'J_S_O_N_TABLE': <class '<a href="#JSONTable">JSONTable</a>'>, 'LAG': <class '<a href="#Lag">Lag</a>'>, 'LAST': <class '<a href="#Last">Last</a>'>, 'LAST_DAY': <class '<a href="#LastDay">LastDay</a>'>, 'LAST_DAY_OF_MONTH': <class '<a href="#LastDay">LastDay</a>'>, 'LAST_VALUE': <class '<a href="#LastValue">LastValue</a>'>, 'LEAD': <class '<a href="#Lead">Lead</a>'>, 'LEAST': <class '<a href="#Least">Least</a>'>, 'LEFT': <class '<a href="#Left">Left</a>'>, 'LENGTH': <class '<a href="#Length">Length</a>'>, 'LEN': <class '<a href="#Length">Length</a>'>, 'LEVENSHTEIN': <class '<a href="#Levenshtein">Levenshtein</a>'>, 'LN': <class '<a href="#Ln">Ln</a>'>, 'LOG': <class '<a href="#Log">Log</a>'>, 'LOGICAL_AND': <class '<a href="#LogicalAnd">LogicalAnd</a>'>, 'BOOL_AND': <class '<a href="#LogicalAnd">LogicalAnd</a>'>, 'BOOLAND_AGG': <class '<a href="#LogicalAnd">LogicalAnd</a>'>, 'LOGICAL_OR': <class '<a href="#LogicalOr">LogicalOr</a>'>, 'BOOL_OR': <class '<a href="#LogicalOr">LogicalOr</a>'>, 'BOOLOR_AGG': <class '<a href="#LogicalOr">LogicalOr</a>'>, 'LOWER': <class '<a href="#Lower">Lower</a>'>, 'LCASE': <class '<a href="#Lower">Lower</a>'>, 'LOWER_HEX': <class '<a href="#LowerHex">LowerHex</a>'>, 'MD5': <class '<a href="#MD5">MD5</a>'>, 'MD5_DIGEST': <class '<a href="#MD5Digest">MD5Digest</a>'>, 'MAP': <class '<a href="#Map">Map</a>'>, 'MAP_FROM_ENTRIES': <class '<a href="#MapFromEntries">MapFromEntries</a>'>, 'MATCH_AGAINST': <class '<a href="#MatchAgainst">MatchAgainst</a>'>, 'MAX': <class '<a href="#Max">Max</a>'>, 'MIN': <class '<a href="#Min">Min</a>'>, 'MONTH': <class '<a href="#Month">Month</a>'>, 'MONTHS_BETWEEN': <class '<a href="#MonthsBetween">MonthsBetween</a>'>, 'NEXT_VALUE_FOR': <class '<a href="#NextValueFor">NextValueFor</a>'>, 'NTH_VALUE': <class '<a href="#NthValue">NthValue</a>'>, 'NULLIF': <class '<a href="#Nullif">Nullif</a>'>, 'NUMBER_TO_STR': <class '<a href="#NumberToStr">NumberToStr</a>'>, 'NVL2': <class '<a href="#Nvl2">Nvl2</a>'>, 'OPEN_J_S_O_N': <class '<a href="#OpenJSON">OpenJSON</a>'>, 'PARAMETERIZED_AGG': <class '<a href="#ParameterizedAgg">ParameterizedAgg</a>'>, 'PARSE_JSON': <class '<a href="#ParseJSON">ParseJSON</a>'>, 'JSON_PARSE': <class '<a href="#ParseJSON">ParseJSON</a>'>, 'PERCENTILE_CONT': <class '<a href="#PercentileCont">PercentileCont</a>'>, 'PERCENTILE_DISC': <class '<a href="#PercentileDisc">PercentileDisc</a>'>, 'POSEXPLODE': <class '<a href="#Posexplode">Posexplode</a>'>, 'POSEXPLODE_OUTER': <class '<a href="#PosexplodeOuter">PosexplodeOuter</a>'>, 'POWER': <class '<a href="#Pow">Pow</a>'>, 'POW': <class '<a href="#Pow">Pow</a>'>, 'PREDICT': <class '<a href="#Predict">Predict</a>'>, 'QUANTILE': <class '<a href="#Quantile">Quantile</a>'>, 'QUARTER': <class '<a href="#Quarter">Quarter</a>'>, 'RAND': <class '<a href="#Rand">Rand</a>'>, 'RANDOM': <class '<a href="#Rand">Rand</a>'>, 'RANDN': <class '<a href="#Randn">Randn</a>'>, 'RANGE_N': <class '<a href="#RangeN">RangeN</a>'>, 'READ_CSV': <class '<a href="#ReadCSV">ReadCSV</a>'>, 'REDUCE': <class '<a href="#Reduce">Reduce</a>'>, 'REGEXP_EXTRACT': <class '<a href="#RegexpExtract">RegexpExtract</a>'>, 'REGEXP_I_LIKE': <class '<a href="#RegexpILike">RegexpILike</a>'>, 'REGEXP_LIKE': <class '<a href="#RegexpLike">RegexpLike</a>'>, 'REGEXP_REPLACE': <class '<a href="#RegexpReplace">RegexpReplace</a>'>, 'REGEXP_SPLIT': <class '<a href="#RegexpSplit">RegexpSplit</a>'>, 'REPEAT': <class '<a href="#Repeat">Repeat</a>'>, 'RIGHT': <class '<a href="#Right">Right</a>'>, 'ROUND': <class '<a href="#Round">Round</a>'>, 'ROW_NUMBER': <class '<a href="#RowNumber">RowNumber</a>'>, 'SHA': <class '<a href="#SHA">SHA</a>'>, 'SHA1': <class '<a href="#SHA">SHA</a>'>, 'SHA2': <class '<a href="#SHA2">SHA2</a>'>, 'SAFE_DIVIDE': <class '<a href="#SafeDivide">SafeDivide</a>'>, 'SIGN': <class '<a href="#Sign">Sign</a>'>, 'SIGNUM': <class '<a href="#Sign">Sign</a>'>, 'SORT_ARRAY': <class '<a href="#SortArray">SortArray</a>'>, 'SPLIT': <class '<a href="#Split">Split</a>'>, 'SQRT': <class '<a href="#Sqrt">Sqrt</a>'>, 'STANDARD_HASH': <class '<a href="#StandardHash">StandardHash</a>'>, 'STAR_MAP': <class '<a href="#StarMap">StarMap</a>'>, 'STARTS_WITH': <class '<a href="#StartsWith">StartsWith</a>'>, 'STARTSWITH': <class '<a href="#StartsWith">StartsWith</a>'>, 'STDDEV': <class '<a href="#Stddev">Stddev</a>'>, 'STDDEV_POP': <class '<a href="#StddevPop">StddevPop</a>'>, 'STDDEV_SAMP': <class '<a href="#StddevSamp">StddevSamp</a>'>, 'STR_POSITION': <class '<a href="#StrPosition">StrPosition</a>'>, 'STR_TO_DATE': <class '<a href="#StrToDate">StrToDate</a>'>, 'STR_TO_MAP': <class '<a href="#StrToMap">StrToMap</a>'>, 'STR_TO_TIME': <class '<a href="#StrToTime">StrToTime</a>'>, 'STR_TO_UNIX': <class '<a href="#StrToUnix">StrToUnix</a>'>, 'STRING_TO_ARRAY': <class '<a href="#StringToArray">StringToArray</a>'>, 'SPLIT_BY_STRING': <class '<a href="#StringToArray">StringToArray</a>'>, 'STRUCT': <class '<a href="#Struct">Struct</a>'>, 'STRUCT_EXTRACT': <class '<a href="#StructExtract">StructExtract</a>'>, 'STUFF': <class '<a href="#Stuff">Stuff</a>'>, 'INSERT': <class '<a href="#Stuff">Stuff</a>'>, 'SUBSTRING': <class '<a href="#Substring">Substring</a>'>, 'SUM': <class '<a href="#Sum">Sum</a>'>, 'TIME_ADD': <class '<a href="#TimeAdd">TimeAdd</a>'>, 'TIME_DIFF': <class '<a href="#TimeDiff">TimeDiff</a>'>, 'TIME_FROM_PARTS': <class '<a href="#TimeFromParts">TimeFromParts</a>'>, 'TIMEFROMPARTS': <class '<a href="#TimeFromParts">TimeFromParts</a>'>, 'TIME_STR_TO_DATE': <class '<a href="#TimeStrToDate">TimeStrToDate</a>'>, 'TIME_STR_TO_TIME': <class '<a href="#TimeStrToTime">TimeStrToTime</a>'>, 'TIME_STR_TO_UNIX': <class '<a href="#TimeStrToUnix">TimeStrToUnix</a>'>, 'TIME_SUB': <class '<a href="#TimeSub">TimeSub</a>'>, 'TIME_TO_STR': <class '<a href="#TimeToStr">TimeToStr</a>'>, 'TIME_TO_TIME_STR': <class '<a href="#TimeToTimeStr">TimeToTimeStr</a>'>, 'TIME_TO_UNIX': <class '<a href="#TimeToUnix">TimeToUnix</a>'>, 'TIME_TRUNC': <class '<a href="#TimeTrunc">TimeTrunc</a>'>, 'TIMESTAMP': <class '<a href="#Timestamp">Timestamp</a>'>, 'TIMESTAMP_ADD': <class '<a href="#TimestampAdd">TimestampAdd</a>'>, 'TIMESTAMPDIFF': <class '<a href="#TimestampDiff">TimestampDiff</a>'>, 'TIMESTAMP_DIFF': <class '<a href="#TimestampDiff">TimestampDiff</a>'>, 'TIMESTAMP_FROM_PARTS': <class '<a href="#TimestampFromParts">TimestampFromParts</a>'>, 'TIMESTAMPFROMPARTS': <class '<a href="#TimestampFromParts">TimestampFromParts</a>'>, 'TIMESTAMP_SUB': <class '<a href="#TimestampSub">TimestampSub</a>'>, 'TIMESTAMP_TRUNC': <class '<a href="#TimestampTrunc">TimestampTrunc</a>'>, 'TO_ARRAY': <class '<a href="#ToArray">ToArray</a>'>, 'TO_BASE64': <class '<a href="#ToBase64">ToBase64</a>'>, 'TO_CHAR': <class '<a href="#ToChar">ToChar</a>'>, 'TO_DAYS': <class '<a href="#ToDays">ToDays</a>'>, 'TO_MAP': <class '<a href="#ToMap">ToMap</a>'>, 'TO_NUMBER': <class '<a href="#ToNumber">ToNumber</a>'>, 'TRANSFORM': <class '<a href="#Transform">Transform</a>'>, 'TRIM': <class '<a href="#Trim">Trim</a>'>, 'TRY': <class '<a href="#Try">Try</a>'>, 'TRY_CAST': <class '<a href="#TryCast">TryCast</a>'>, 'TS_OR_DI_TO_DI': <class '<a href="#TsOrDiToDi">TsOrDiToDi</a>'>, 'TS_OR_DS_ADD': <class '<a href="#TsOrDsAdd">TsOrDsAdd</a>'>, 'TS_OR_DS_DIFF': <class '<a href="#TsOrDsDiff">TsOrDsDiff</a>'>, 'TS_OR_DS_TO_DATE': <class '<a href="#TsOrDsToDate">TsOrDsToDate</a>'>, 'TS_OR_DS_TO_DATE_STR': <class '<a href="#TsOrDsToDateStr">TsOrDsToDateStr</a>'>, 'TS_OR_DS_TO_TIME': <class '<a href="#TsOrDsToTime">TsOrDsToTime</a>'>, 'TS_OR_DS_TO_TIMESTAMP': <class '<a href="#TsOrDsToTimestamp">TsOrDsToTimestamp</a>'>, 'UNHEX': <class '<a href="#Unhex">Unhex</a>'>, 'UNIX_DATE': <class '<a href="#UnixDate">UnixDate</a>'>, 'UNIX_TO_STR': <class '<a href="#UnixToStr">UnixToStr</a>'>, 'UNIX_TO_TIME': <class '<a href="#UnixToTime">UnixToTime</a>'>, 'UNIX_TO_TIME_STR': <class '<a href="#UnixToTimeStr">UnixToTimeStr</a>'>, 'UPPER': <class '<a href="#Upper">Upper</a>'>, 'UCASE': <class '<a href="#Upper">Upper</a>'>, 'VAR_MAP': <class '<a href="#VarMap">VarMap</a>'>, 'VARIANCE': <class '<a href="#Variance">Variance</a>'>, 'VARIANCE_SAMP': <class '<a href="#Variance">Variance</a>'>, 'VAR_SAMP': <class '<a href="#Variance">Variance</a>'>, 'VARIANCE_POP': <class '<a href="#VariancePop">VariancePop</a>'>, 'VAR_POP': <class '<a href="#VariancePop">VariancePop</a>'>, 'WEEK': <class '<a href="#Week">Week</a>'>, 'WEEK_OF_YEAR': <class '<a href="#WeekOfYear">WeekOfYear</a>'>, 'WEEKOFYEAR': <class '<a href="#WeekOfYear">WeekOfYear</a>'>, 'WHEN': <class '<a href="#When">When</a>'>, 'X_M_L_TABLE': <class '<a href="#XMLTable">XMLTable</a>'>, 'XOR': <class '<a href="#Xor">Xor</a>'>, 'YEAR': <class '<a href="#Year">Year</a>'>}</span> + <label class="view-value-button pdoc-button" for="FUNCTION_BY_NAME-view-value"></label><span class="default_value">{'ABS': <class '<a href="#Abs">Abs</a>'>, 'ADD_MONTHS': <class '<a href="#AddMonths">AddMonths</a>'>, 'ANONYMOUS_AGG_FUNC': <class '<a href="#AnonymousAggFunc">AnonymousAggFunc</a>'>, 'ANY_VALUE': <class '<a href="#AnyValue">AnyValue</a>'>, 'APPROX_DISTINCT': <class '<a href="#ApproxDistinct">ApproxDistinct</a>'>, 'APPROX_COUNT_DISTINCT': <class '<a href="#ApproxDistinct">ApproxDistinct</a>'>, 'APPROX_QUANTILE': <class '<a href="#ApproxQuantile">ApproxQuantile</a>'>, 'APPROX_TOP_K': <class '<a href="#ApproxTopK">ApproxTopK</a>'>, 'ARG_MAX': <class '<a href="#ArgMax">ArgMax</a>'>, 'ARGMAX': <class '<a href="#ArgMax">ArgMax</a>'>, 'MAX_BY': <class '<a href="#ArgMax">ArgMax</a>'>, 'ARG_MIN': <class '<a href="#ArgMin">ArgMin</a>'>, 'ARGMIN': <class '<a href="#ArgMin">ArgMin</a>'>, 'MIN_BY': <class '<a href="#ArgMin">ArgMin</a>'>, 'ARRAY': <class '<a href="#Array">Array</a>'>, 'ARRAY_AGG': <class '<a href="#ArrayAgg">ArrayAgg</a>'>, 'ARRAY_ALL': <class '<a href="#ArrayAll">ArrayAll</a>'>, 'ARRAY_ANY': <class '<a href="#ArrayAny">ArrayAny</a>'>, 'ARRAY_CONCAT': <class '<a href="#ArrayConcat">ArrayConcat</a>'>, 'ARRAY_CAT': <class '<a href="#ArrayConcat">ArrayConcat</a>'>, 'ARRAY_CONSTRUCT_COMPACT': <class '<a href="#ArrayConstructCompact">ArrayConstructCompact</a>'>, 'ARRAY_CONTAINS': <class '<a href="#ArrayContains">ArrayContains</a>'>, 'ARRAY_HAS': <class '<a href="#ArrayContains">ArrayContains</a>'>, 'ARRAY_CONTAINS_ALL': <class '<a href="#ArrayContainsAll">ArrayContainsAll</a>'>, 'ARRAY_HAS_ALL': <class '<a href="#ArrayContainsAll">ArrayContainsAll</a>'>, 'FILTER': <class '<a href="#ArrayFilter">ArrayFilter</a>'>, 'ARRAY_FILTER': <class '<a href="#ArrayFilter">ArrayFilter</a>'>, 'ARRAY_OVERLAPS': <class '<a href="#ArrayOverlaps">ArrayOverlaps</a>'>, 'ARRAY_SIZE': <class '<a href="#ArraySize">ArraySize</a>'>, 'ARRAY_LENGTH': <class '<a href="#ArraySize">ArraySize</a>'>, 'ARRAY_SORT': <class '<a href="#ArraySort">ArraySort</a>'>, 'ARRAY_SUM': <class '<a href="#ArraySum">ArraySum</a>'>, 'ARRAY_TO_STRING': <class '<a href="#ArrayToString">ArrayToString</a>'>, 'ARRAY_JOIN': <class '<a href="#ArrayToString">ArrayToString</a>'>, 'ARRAY_UNION_AGG': <class '<a href="#ArrayUnionAgg">ArrayUnionAgg</a>'>, 'ARRAY_UNIQUE_AGG': <class '<a href="#ArrayUniqueAgg">ArrayUniqueAgg</a>'>, 'AVG': <class '<a href="#Avg">Avg</a>'>, 'CASE': <class '<a href="#Case">Case</a>'>, 'CAST': <class '<a href="#Cast">Cast</a>'>, 'CAST_TO_STR_TYPE': <class '<a href="#CastToStrType">CastToStrType</a>'>, 'CBRT': <class '<a href="#Cbrt">Cbrt</a>'>, 'CEIL': <class '<a href="#Ceil">Ceil</a>'>, 'CEILING': <class '<a href="#Ceil">Ceil</a>'>, 'CHR': <class '<a href="#Chr">Chr</a>'>, 'CHAR': <class '<a href="#Chr">Chr</a>'>, 'COALESCE': <class '<a href="#Coalesce">Coalesce</a>'>, 'IFNULL': <class '<a href="#Coalesce">Coalesce</a>'>, 'NVL': <class '<a href="#Coalesce">Coalesce</a>'>, 'COLLATE': <class '<a href="#Collate">Collate</a>'>, 'COMBINED_AGG_FUNC': <class '<a href="#CombinedAggFunc">CombinedAggFunc</a>'>, 'COMBINED_PARAMETERIZED_AGG': <class '<a href="#CombinedParameterizedAgg">CombinedParameterizedAgg</a>'>, 'CONCAT': <class '<a href="#Concat">Concat</a>'>, 'CONCAT_WS': <class '<a href="#ConcatWs">ConcatWs</a>'>, 'CONNECT_BY_ROOT': <class '<a href="#ConnectByRoot">ConnectByRoot</a>'>, 'CONVERT': <class '<a href="#Convert">Convert</a>'>, 'CORR': <class '<a href="#Corr">Corr</a>'>, 'COUNT': <class '<a href="#Count">Count</a>'>, 'COUNT_IF': <class '<a href="#CountIf">CountIf</a>'>, 'COUNTIF': <class '<a href="#CountIf">CountIf</a>'>, 'COVAR_POP': <class '<a href="#CovarPop">CovarPop</a>'>, 'COVAR_SAMP': <class '<a href="#CovarSamp">CovarSamp</a>'>, 'CURRENT_DATE': <class '<a href="#CurrentDate">CurrentDate</a>'>, 'CURRENT_DATETIME': <class '<a href="#CurrentDatetime">CurrentDatetime</a>'>, 'CURRENT_TIME': <class '<a href="#CurrentTime">CurrentTime</a>'>, 'CURRENT_TIMESTAMP': <class '<a href="#CurrentTimestamp">CurrentTimestamp</a>'>, 'CURRENT_USER': <class '<a href="#CurrentUser">CurrentUser</a>'>, 'DATE': <class '<a href="#Date">Date</a>'>, 'DATE_ADD': <class '<a href="#DateAdd">DateAdd</a>'>, 'DATEDIFF': <class '<a href="#DateDiff">DateDiff</a>'>, 'DATE_DIFF': <class '<a href="#DateDiff">DateDiff</a>'>, 'DATE_FROM_PARTS': <class '<a href="#DateFromParts">DateFromParts</a>'>, 'DATEFROMPARTS': <class '<a href="#DateFromParts">DateFromParts</a>'>, 'DATE_STR_TO_DATE': <class '<a href="#DateStrToDate">DateStrToDate</a>'>, 'DATE_SUB': <class '<a href="#DateSub">DateSub</a>'>, 'DATE_TO_DATE_STR': <class '<a href="#DateToDateStr">DateToDateStr</a>'>, 'DATE_TO_DI': <class '<a href="#DateToDi">DateToDi</a>'>, 'DATE_TRUNC': <class '<a href="#DateTrunc">DateTrunc</a>'>, 'DATETIME_ADD': <class '<a href="#DatetimeAdd">DatetimeAdd</a>'>, 'DATETIME_DIFF': <class '<a href="#DatetimeDiff">DatetimeDiff</a>'>, 'DATETIME_SUB': <class '<a href="#DatetimeSub">DatetimeSub</a>'>, 'DATETIME_TRUNC': <class '<a href="#DatetimeTrunc">DatetimeTrunc</a>'>, 'DAY': <class '<a href="#Day">Day</a>'>, 'DAY_OF_MONTH': <class '<a href="#DayOfMonth">DayOfMonth</a>'>, 'DAYOFMONTH': <class '<a href="#DayOfMonth">DayOfMonth</a>'>, 'DAY_OF_WEEK': <class '<a href="#DayOfWeek">DayOfWeek</a>'>, 'DAYOFWEEK': <class '<a href="#DayOfWeek">DayOfWeek</a>'>, 'DAY_OF_YEAR': <class '<a href="#DayOfYear">DayOfYear</a>'>, 'DAYOFYEAR': <class '<a href="#DayOfYear">DayOfYear</a>'>, 'DECODE': <class '<a href="#Decode">Decode</a>'>, 'DI_TO_DATE': <class '<a href="#DiToDate">DiToDate</a>'>, 'ENCODE': <class '<a href="#Encode">Encode</a>'>, 'EXP': <class '<a href="#Exp">Exp</a>'>, 'EXPLODE': <class '<a href="#Explode">Explode</a>'>, 'EXPLODE_OUTER': <class '<a href="#ExplodeOuter">ExplodeOuter</a>'>, 'EXTRACT': <class '<a href="#Extract">Extract</a>'>, 'FIRST': <class '<a href="#First">First</a>'>, 'FIRST_VALUE': <class '<a href="#FirstValue">FirstValue</a>'>, 'FLATTEN': <class '<a href="#Flatten">Flatten</a>'>, 'FLOOR': <class '<a href="#Floor">Floor</a>'>, 'FROM_BASE': <class '<a href="#FromBase">FromBase</a>'>, 'FROM_BASE64': <class '<a href="#FromBase64">FromBase64</a>'>, 'GAP_FILL': <class '<a href="#GapFill">GapFill</a>'>, 'GENERATE_DATE_ARRAY': <class '<a href="#GenerateDateArray">GenerateDateArray</a>'>, 'GENERATE_SERIES': <class '<a href="#GenerateSeries">GenerateSeries</a>'>, 'GREATEST': <class '<a href="#Greatest">Greatest</a>'>, 'GROUP_CONCAT': <class '<a href="#GroupConcat">GroupConcat</a>'>, 'HEX': <class '<a href="#Hex">Hex</a>'>, 'HLL': <class '<a href="#Hll">Hll</a>'>, 'IF': <class '<a href="#If">If</a>'>, 'IIF': <class '<a href="#If">If</a>'>, 'INITCAP': <class '<a href="#Initcap">Initcap</a>'>, 'IS_INF': <class '<a href="#IsInf">IsInf</a>'>, 'ISINF': <class '<a href="#IsInf">IsInf</a>'>, 'IS_NAN': <class '<a href="#IsNan">IsNan</a>'>, 'ISNAN': <class '<a href="#IsNan">IsNan</a>'>, 'J_S_O_N_ARRAY': <class '<a href="#JSONArray">JSONArray</a>'>, 'J_S_O_N_ARRAY_AGG': <class '<a href="#JSONArrayAgg">JSONArrayAgg</a>'>, 'JSON_ARRAY_CONTAINS': <class '<a href="#JSONArrayContains">JSONArrayContains</a>'>, 'JSONB_EXTRACT': <class '<a href="#JSONBExtract">JSONBExtract</a>'>, 'JSONB_EXTRACT_SCALAR': <class '<a href="#JSONBExtractScalar">JSONBExtractScalar</a>'>, 'JSON_EXTRACT': <class '<a href="#JSONExtract">JSONExtract</a>'>, 'JSON_EXTRACT_SCALAR': <class '<a href="#JSONExtractScalar">JSONExtractScalar</a>'>, 'JSON_FORMAT': <class '<a href="#JSONFormat">JSONFormat</a>'>, 'J_S_O_N_OBJECT': <class '<a href="#JSONObject">JSONObject</a>'>, 'J_S_O_N_OBJECT_AGG': <class '<a href="#JSONObjectAgg">JSONObjectAgg</a>'>, 'J_S_O_N_TABLE': <class '<a href="#JSONTable">JSONTable</a>'>, 'LAG': <class '<a href="#Lag">Lag</a>'>, 'LAST': <class '<a href="#Last">Last</a>'>, 'LAST_DAY': <class '<a href="#LastDay">LastDay</a>'>, 'LAST_DAY_OF_MONTH': <class '<a href="#LastDay">LastDay</a>'>, 'LAST_VALUE': <class '<a href="#LastValue">LastValue</a>'>, 'LEAD': <class '<a href="#Lead">Lead</a>'>, 'LEAST': <class '<a href="#Least">Least</a>'>, 'LEFT': <class '<a href="#Left">Left</a>'>, 'LENGTH': <class '<a href="#Length">Length</a>'>, 'LEN': <class '<a href="#Length">Length</a>'>, 'LEVENSHTEIN': <class '<a href="#Levenshtein">Levenshtein</a>'>, 'LIST': <class '<a href="#List">List</a>'>, 'LN': <class '<a href="#Ln">Ln</a>'>, 'LOG': <class '<a href="#Log">Log</a>'>, 'LOGICAL_AND': <class '<a href="#LogicalAnd">LogicalAnd</a>'>, 'BOOL_AND': <class '<a href="#LogicalAnd">LogicalAnd</a>'>, 'BOOLAND_AGG': <class '<a href="#LogicalAnd">LogicalAnd</a>'>, 'LOGICAL_OR': <class '<a href="#LogicalOr">LogicalOr</a>'>, 'BOOL_OR': <class '<a href="#LogicalOr">LogicalOr</a>'>, 'BOOLOR_AGG': <class '<a href="#LogicalOr">LogicalOr</a>'>, 'LOWER': <class '<a href="#Lower">Lower</a>'>, 'LCASE': <class '<a href="#Lower">Lower</a>'>, 'LOWER_HEX': <class '<a href="#LowerHex">LowerHex</a>'>, 'MD5': <class '<a href="#MD5">MD5</a>'>, 'MD5_DIGEST': <class '<a href="#MD5Digest">MD5Digest</a>'>, 'MAP': <class '<a href="#Map">Map</a>'>, 'MAP_FROM_ENTRIES': <class '<a href="#MapFromEntries">MapFromEntries</a>'>, 'MATCH_AGAINST': <class '<a href="#MatchAgainst">MatchAgainst</a>'>, 'MAX': <class '<a href="#Max">Max</a>'>, 'MIN': <class '<a href="#Min">Min</a>'>, 'MONTH': <class '<a href="#Month">Month</a>'>, 'MONTHS_BETWEEN': <class '<a href="#MonthsBetween">MonthsBetween</a>'>, 'NEXT_VALUE_FOR': <class '<a href="#NextValueFor">NextValueFor</a>'>, 'NTH_VALUE': <class '<a href="#NthValue">NthValue</a>'>, 'NULLIF': <class '<a href="#Nullif">Nullif</a>'>, 'NUMBER_TO_STR': <class '<a href="#NumberToStr">NumberToStr</a>'>, 'NVL2': <class '<a href="#Nvl2">Nvl2</a>'>, 'OPEN_J_S_O_N': <class '<a href="#OpenJSON">OpenJSON</a>'>, 'PARAMETERIZED_AGG': <class '<a href="#ParameterizedAgg">ParameterizedAgg</a>'>, 'PARSE_JSON': <class '<a href="#ParseJSON">ParseJSON</a>'>, 'JSON_PARSE': <class '<a href="#ParseJSON">ParseJSON</a>'>, 'PERCENTILE_CONT': <class '<a href="#PercentileCont">PercentileCont</a>'>, 'PERCENTILE_DISC': <class '<a href="#PercentileDisc">PercentileDisc</a>'>, 'POSEXPLODE': <class '<a href="#Posexplode">Posexplode</a>'>, 'POSEXPLODE_OUTER': <class '<a href="#PosexplodeOuter">PosexplodeOuter</a>'>, 'POWER': <class '<a href="#Pow">Pow</a>'>, 'POW': <class '<a href="#Pow">Pow</a>'>, 'PREDICT': <class '<a href="#Predict">Predict</a>'>, 'QUANTILE': <class '<a href="#Quantile">Quantile</a>'>, 'QUARTER': <class '<a href="#Quarter">Quarter</a>'>, 'RAND': <class '<a href="#Rand">Rand</a>'>, 'RANDOM': <class '<a href="#Rand">Rand</a>'>, 'RANDN': <class '<a href="#Randn">Randn</a>'>, 'RANGE_N': <class '<a href="#RangeN">RangeN</a>'>, 'READ_CSV': <class '<a href="#ReadCSV">ReadCSV</a>'>, 'REDUCE': <class '<a href="#Reduce">Reduce</a>'>, 'REGEXP_EXTRACT': <class '<a href="#RegexpExtract">RegexpExtract</a>'>, 'REGEXP_I_LIKE': <class '<a href="#RegexpILike">RegexpILike</a>'>, 'REGEXP_LIKE': <class '<a href="#RegexpLike">RegexpLike</a>'>, 'REGEXP_REPLACE': <class '<a href="#RegexpReplace">RegexpReplace</a>'>, 'REGEXP_SPLIT': <class '<a href="#RegexpSplit">RegexpSplit</a>'>, 'REPEAT': <class '<a href="#Repeat">Repeat</a>'>, 'RIGHT': <class '<a href="#Right">Right</a>'>, 'ROUND': <class '<a href="#Round">Round</a>'>, 'ROW_NUMBER': <class '<a href="#RowNumber">RowNumber</a>'>, 'SHA': <class '<a href="#SHA">SHA</a>'>, 'SHA1': <class '<a href="#SHA">SHA</a>'>, 'SHA2': <class '<a href="#SHA2">SHA2</a>'>, 'SAFE_DIVIDE': <class '<a href="#SafeDivide">SafeDivide</a>'>, 'SIGN': <class '<a href="#Sign">Sign</a>'>, 'SIGNUM': <class '<a href="#Sign">Sign</a>'>, 'SORT_ARRAY': <class '<a href="#SortArray">SortArray</a>'>, 'SPLIT': <class '<a href="#Split">Split</a>'>, 'SQRT': <class '<a href="#Sqrt">Sqrt</a>'>, 'STANDARD_HASH': <class '<a href="#StandardHash">StandardHash</a>'>, 'STAR_MAP': <class '<a href="#StarMap">StarMap</a>'>, 'STARTS_WITH': <class '<a href="#StartsWith">StartsWith</a>'>, 'STARTSWITH': <class '<a href="#StartsWith">StartsWith</a>'>, 'STDDEV': <class '<a href="#Stddev">Stddev</a>'>, 'STDDEV_POP': <class '<a href="#StddevPop">StddevPop</a>'>, 'STDDEV_SAMP': <class '<a href="#StddevSamp">StddevSamp</a>'>, 'STR_POSITION': <class '<a href="#StrPosition">StrPosition</a>'>, 'STR_TO_DATE': <class '<a href="#StrToDate">StrToDate</a>'>, 'STR_TO_MAP': <class '<a href="#StrToMap">StrToMap</a>'>, 'STR_TO_TIME': <class '<a href="#StrToTime">StrToTime</a>'>, 'STR_TO_UNIX': <class '<a href="#StrToUnix">StrToUnix</a>'>, 'STRING_TO_ARRAY': <class '<a href="#StringToArray">StringToArray</a>'>, 'SPLIT_BY_STRING': <class '<a href="#StringToArray">StringToArray</a>'>, 'STRUCT': <class '<a href="#Struct">Struct</a>'>, 'STRUCT_EXTRACT': <class '<a href="#StructExtract">StructExtract</a>'>, 'STUFF': <class '<a href="#Stuff">Stuff</a>'>, 'INSERT': <class '<a href="#Stuff">Stuff</a>'>, 'SUBSTRING': <class '<a href="#Substring">Substring</a>'>, 'SUM': <class '<a href="#Sum">Sum</a>'>, 'TIME_ADD': <class '<a href="#TimeAdd">TimeAdd</a>'>, 'TIME_DIFF': <class '<a href="#TimeDiff">TimeDiff</a>'>, 'TIME_FROM_PARTS': <class '<a href="#TimeFromParts">TimeFromParts</a>'>, 'TIMEFROMPARTS': <class '<a href="#TimeFromParts">TimeFromParts</a>'>, 'TIME_STR_TO_DATE': <class '<a href="#TimeStrToDate">TimeStrToDate</a>'>, 'TIME_STR_TO_TIME': <class '<a href="#TimeStrToTime">TimeStrToTime</a>'>, 'TIME_STR_TO_UNIX': <class '<a href="#TimeStrToUnix">TimeStrToUnix</a>'>, 'TIME_SUB': <class '<a href="#TimeSub">TimeSub</a>'>, 'TIME_TO_STR': <class '<a href="#TimeToStr">TimeToStr</a>'>, 'TIME_TO_TIME_STR': <class '<a href="#TimeToTimeStr">TimeToTimeStr</a>'>, 'TIME_TO_UNIX': <class '<a href="#TimeToUnix">TimeToUnix</a>'>, 'TIME_TRUNC': <class '<a href="#TimeTrunc">TimeTrunc</a>'>, 'TIMESTAMP': <class '<a href="#Timestamp">Timestamp</a>'>, 'TIMESTAMP_ADD': <class '<a href="#TimestampAdd">TimestampAdd</a>'>, 'TIMESTAMPDIFF': <class '<a href="#TimestampDiff">TimestampDiff</a>'>, 'TIMESTAMP_DIFF': <class '<a href="#TimestampDiff">TimestampDiff</a>'>, 'TIMESTAMP_FROM_PARTS': <class '<a href="#TimestampFromParts">TimestampFromParts</a>'>, 'TIMESTAMPFROMPARTS': <class '<a href="#TimestampFromParts">TimestampFromParts</a>'>, 'TIMESTAMP_SUB': <class '<a href="#TimestampSub">TimestampSub</a>'>, 'TIMESTAMP_TRUNC': <class '<a href="#TimestampTrunc">TimestampTrunc</a>'>, 'TO_ARRAY': <class '<a href="#ToArray">ToArray</a>'>, 'TO_BASE64': <class '<a href="#ToBase64">ToBase64</a>'>, 'TO_CHAR': <class '<a href="#ToChar">ToChar</a>'>, 'TO_DAYS': <class '<a href="#ToDays">ToDays</a>'>, 'TO_MAP': <class '<a href="#ToMap">ToMap</a>'>, 'TO_NUMBER': <class '<a href="#ToNumber">ToNumber</a>'>, 'TRANSFORM': <class '<a href="#Transform">Transform</a>'>, 'TRIM': <class '<a href="#Trim">Trim</a>'>, 'TRY': <class '<a href="#Try">Try</a>'>, 'TRY_CAST': <class '<a href="#TryCast">TryCast</a>'>, 'TS_OR_DI_TO_DI': <class '<a href="#TsOrDiToDi">TsOrDiToDi</a>'>, 'TS_OR_DS_ADD': <class '<a href="#TsOrDsAdd">TsOrDsAdd</a>'>, 'TS_OR_DS_DIFF': <class '<a href="#TsOrDsDiff">TsOrDsDiff</a>'>, 'TS_OR_DS_TO_DATE': <class '<a href="#TsOrDsToDate">TsOrDsToDate</a>'>, 'TS_OR_DS_TO_DATE_STR': <class '<a href="#TsOrDsToDateStr">TsOrDsToDateStr</a>'>, 'TS_OR_DS_TO_TIME': <class '<a href="#TsOrDsToTime">TsOrDsToTime</a>'>, 'TS_OR_DS_TO_TIMESTAMP': <class '<a href="#TsOrDsToTimestamp">TsOrDsToTimestamp</a>'>, 'UNHEX': <class '<a href="#Unhex">Unhex</a>'>, 'UNIX_DATE': <class '<a href="#UnixDate">UnixDate</a>'>, 'UNIX_TO_STR': <class '<a href="#UnixToStr">UnixToStr</a>'>, 'UNIX_TO_TIME': <class '<a href="#UnixToTime">UnixToTime</a>'>, 'UNIX_TO_TIME_STR': <class '<a href="#UnixToTimeStr">UnixToTimeStr</a>'>, 'UPPER': <class '<a href="#Upper">Upper</a>'>, 'UCASE': <class '<a href="#Upper">Upper</a>'>, 'VAR_MAP': <class '<a href="#VarMap">VarMap</a>'>, 'VARIANCE': <class '<a href="#Variance">Variance</a>'>, 'VARIANCE_SAMP': <class '<a href="#Variance">Variance</a>'>, 'VAR_SAMP': <class '<a href="#Variance">Variance</a>'>, 'VARIANCE_POP': <class '<a href="#VariancePop">VariancePop</a>'>, 'VAR_POP': <class '<a href="#VariancePop">VariancePop</a>'>, 'WEEK': <class '<a href="#Week">Week</a>'>, 'WEEK_OF_YEAR': <class '<a href="#WeekOfYear">WeekOfYear</a>'>, 'WEEKOFYEAR': <class '<a href="#WeekOfYear">WeekOfYear</a>'>, 'WHEN': <class '<a href="#When">When</a>'>, 'X_M_L_TABLE': <class '<a href="#XMLTable">XMLTable</a>'>, 'XOR': <class '<a href="#Xor">Xor</a>'>, 'YEAR': <class '<a href="#Year">Year</a>'>}</span> </div> @@ -98066,52 +98245,52 @@ array<int> != array<float>.</p> </div> <a class="headerlink" href="#maybe_parse"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="maybe_parse-6055"><a href="#maybe_parse-6055"><span class="linenos">6055</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> -</span><span id="maybe_parse-6056"><a href="#maybe_parse-6056"><span class="linenos">6056</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="maybe_parse-6057"><a href="#maybe_parse-6057"><span class="linenos">6057</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="maybe_parse-6058"><a href="#maybe_parse-6058"><span class="linenos">6058</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="maybe_parse-6059"><a href="#maybe_parse-6059"><span class="linenos">6059</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="maybe_parse-6060"><a href="#maybe_parse-6060"><span class="linenos">6060</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="maybe_parse-6061"><a href="#maybe_parse-6061"><span class="linenos">6061</span></a> <span class="n">copy</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="maybe_parse-6062"><a href="#maybe_parse-6062"><span class="linenos">6062</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="maybe_parse-6063"><a href="#maybe_parse-6063"><span class="linenos">6063</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="maybe_parse-6064"><a href="#maybe_parse-6064"><span class="linenos">6064</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> -</span><span id="maybe_parse-6065"><a href="#maybe_parse-6065"><span class="linenos">6065</span></a> -</span><span id="maybe_parse-6066"><a href="#maybe_parse-6066"><span class="linenos">6066</span></a><span class="sd"> Example:</span> -</span><span id="maybe_parse-6067"><a href="#maybe_parse-6067"><span class="linenos">6067</span></a><span class="sd"> >>> maybe_parse("1")</span> -</span><span id="maybe_parse-6068"><a href="#maybe_parse-6068"><span class="linenos">6068</span></a><span class="sd"> Literal(this=1, is_string=False)</span> -</span><span id="maybe_parse-6069"><a href="#maybe_parse-6069"><span class="linenos">6069</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> -</span><span id="maybe_parse-6070"><a href="#maybe_parse-6070"><span class="linenos">6070</span></a><span class="sd"> Identifier(this=x, quoted=False)</span> -</span><span id="maybe_parse-6071"><a href="#maybe_parse-6071"><span class="linenos">6071</span></a> -</span><span id="maybe_parse-6072"><a href="#maybe_parse-6072"><span class="linenos">6072</span></a><span class="sd"> Args:</span> -</span><span id="maybe_parse-6073"><a href="#maybe_parse-6073"><span class="linenos">6073</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> -</span><span id="maybe_parse-6074"><a href="#maybe_parse-6074"><span class="linenos">6074</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> -</span><span id="maybe_parse-6075"><a href="#maybe_parse-6075"><span class="linenos">6075</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="maybe_parse-6076"><a href="#maybe_parse-6076"><span class="linenos">6076</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="maybe_parse-6077"><a href="#maybe_parse-6077"><span class="linenos">6077</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> -</span><span id="maybe_parse-6078"><a href="#maybe_parse-6078"><span class="linenos">6078</span></a><span class="sd"> (automatically includes a space)</span> -</span><span id="maybe_parse-6079"><a href="#maybe_parse-6079"><span class="linenos">6079</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="maybe_parse-6080"><a href="#maybe_parse-6080"><span class="linenos">6080</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="maybe_parse-6081"><a href="#maybe_parse-6081"><span class="linenos">6081</span></a><span class="sd"> that an input expression is a SQL string).</span> -</span><span id="maybe_parse-6082"><a href="#maybe_parse-6082"><span class="linenos">6082</span></a> -</span><span id="maybe_parse-6083"><a href="#maybe_parse-6083"><span class="linenos">6083</span></a><span class="sd"> Returns:</span> -</span><span id="maybe_parse-6084"><a href="#maybe_parse-6084"><span class="linenos">6084</span></a><span class="sd"> Expression: the parsed or given expression.</span> -</span><span id="maybe_parse-6085"><a href="#maybe_parse-6085"><span class="linenos">6085</span></a><span class="sd"> """</span> -</span><span id="maybe_parse-6086"><a href="#maybe_parse-6086"><span class="linenos">6086</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="maybe_parse-6087"><a href="#maybe_parse-6087"><span class="linenos">6087</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> -</span><span id="maybe_parse-6088"><a href="#maybe_parse-6088"><span class="linenos">6088</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="maybe_parse-6089"><a href="#maybe_parse-6089"><span class="linenos">6089</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> -</span><span id="maybe_parse-6090"><a href="#maybe_parse-6090"><span class="linenos">6090</span></a> -</span><span id="maybe_parse-6091"><a href="#maybe_parse-6091"><span class="linenos">6091</span></a> <span class="k">if</span> <span class="n">sql_or_expression</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="maybe_parse-6092"><a href="#maybe_parse-6092"><span class="linenos">6092</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="s2">"SQL cannot be None"</span><span class="p">)</span> -</span><span id="maybe_parse-6093"><a href="#maybe_parse-6093"><span class="linenos">6093</span></a> -</span><span id="maybe_parse-6094"><a href="#maybe_parse-6094"><span class="linenos">6094</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="maybe_parse-6095"><a href="#maybe_parse-6095"><span class="linenos">6095</span></a> -</span><span id="maybe_parse-6096"><a href="#maybe_parse-6096"><span class="linenos">6096</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> -</span><span id="maybe_parse-6097"><a href="#maybe_parse-6097"><span class="linenos">6097</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> -</span><span id="maybe_parse-6098"><a href="#maybe_parse-6098"><span class="linenos">6098</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="maybe_parse-6099"><a href="#maybe_parse-6099"><span class="linenos">6099</span></a> -</span><span id="maybe_parse-6100"><a href="#maybe_parse-6100"><span class="linenos">6100</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</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">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="maybe_parse-6062"><a href="#maybe_parse-6062"><span class="linenos">6062</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> +</span><span id="maybe_parse-6063"><a href="#maybe_parse-6063"><span class="linenos">6063</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="maybe_parse-6064"><a href="#maybe_parse-6064"><span class="linenos">6064</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="maybe_parse-6065"><a href="#maybe_parse-6065"><span class="linenos">6065</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="maybe_parse-6066"><a href="#maybe_parse-6066"><span class="linenos">6066</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="maybe_parse-6067"><a href="#maybe_parse-6067"><span class="linenos">6067</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="maybe_parse-6068"><a href="#maybe_parse-6068"><span class="linenos">6068</span></a> <span class="n">copy</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="maybe_parse-6069"><a href="#maybe_parse-6069"><span class="linenos">6069</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="maybe_parse-6070"><a href="#maybe_parse-6070"><span class="linenos">6070</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="maybe_parse-6071"><a href="#maybe_parse-6071"><span class="linenos">6071</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> +</span><span id="maybe_parse-6072"><a href="#maybe_parse-6072"><span class="linenos">6072</span></a> +</span><span id="maybe_parse-6073"><a href="#maybe_parse-6073"><span class="linenos">6073</span></a><span class="sd"> Example:</span> +</span><span id="maybe_parse-6074"><a href="#maybe_parse-6074"><span class="linenos">6074</span></a><span class="sd"> >>> maybe_parse("1")</span> +</span><span id="maybe_parse-6075"><a href="#maybe_parse-6075"><span class="linenos">6075</span></a><span class="sd"> Literal(this=1, is_string=False)</span> +</span><span id="maybe_parse-6076"><a href="#maybe_parse-6076"><span class="linenos">6076</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> +</span><span id="maybe_parse-6077"><a href="#maybe_parse-6077"><span class="linenos">6077</span></a><span class="sd"> Identifier(this=x, quoted=False)</span> +</span><span id="maybe_parse-6078"><a href="#maybe_parse-6078"><span class="linenos">6078</span></a> +</span><span id="maybe_parse-6079"><a href="#maybe_parse-6079"><span class="linenos">6079</span></a><span class="sd"> Args:</span> +</span><span id="maybe_parse-6080"><a href="#maybe_parse-6080"><span class="linenos">6080</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> +</span><span id="maybe_parse-6081"><a href="#maybe_parse-6081"><span class="linenos">6081</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> +</span><span id="maybe_parse-6082"><a href="#maybe_parse-6082"><span class="linenos">6082</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="maybe_parse-6083"><a href="#maybe_parse-6083"><span class="linenos">6083</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="maybe_parse-6084"><a href="#maybe_parse-6084"><span class="linenos">6084</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> +</span><span id="maybe_parse-6085"><a href="#maybe_parse-6085"><span class="linenos">6085</span></a><span class="sd"> (automatically includes a space)</span> +</span><span id="maybe_parse-6086"><a href="#maybe_parse-6086"><span class="linenos">6086</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="maybe_parse-6087"><a href="#maybe_parse-6087"><span class="linenos">6087</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="maybe_parse-6088"><a href="#maybe_parse-6088"><span class="linenos">6088</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="maybe_parse-6089"><a href="#maybe_parse-6089"><span class="linenos">6089</span></a> +</span><span id="maybe_parse-6090"><a href="#maybe_parse-6090"><span class="linenos">6090</span></a><span class="sd"> Returns:</span> +</span><span id="maybe_parse-6091"><a href="#maybe_parse-6091"><span class="linenos">6091</span></a><span class="sd"> Expression: the parsed or given expression.</span> +</span><span id="maybe_parse-6092"><a href="#maybe_parse-6092"><span class="linenos">6092</span></a><span class="sd"> """</span> +</span><span id="maybe_parse-6093"><a href="#maybe_parse-6093"><span class="linenos">6093</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="maybe_parse-6094"><a href="#maybe_parse-6094"><span class="linenos">6094</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> +</span><span id="maybe_parse-6095"><a href="#maybe_parse-6095"><span class="linenos">6095</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="maybe_parse-6096"><a href="#maybe_parse-6096"><span class="linenos">6096</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> +</span><span id="maybe_parse-6097"><a href="#maybe_parse-6097"><span class="linenos">6097</span></a> +</span><span id="maybe_parse-6098"><a href="#maybe_parse-6098"><span class="linenos">6098</span></a> <span class="k">if</span> <span class="n">sql_or_expression</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="maybe_parse-6099"><a href="#maybe_parse-6099"><span class="linenos">6099</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="s2">"SQL cannot be None"</span><span class="p">)</span> +</span><span id="maybe_parse-6100"><a href="#maybe_parse-6100"><span class="linenos">6100</span></a> +</span><span id="maybe_parse-6101"><a href="#maybe_parse-6101"><span class="linenos">6101</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> +</span><span id="maybe_parse-6102"><a href="#maybe_parse-6102"><span class="linenos">6102</span></a> +</span><span id="maybe_parse-6103"><a href="#maybe_parse-6103"><span class="linenos">6103</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> +</span><span id="maybe_parse-6104"><a href="#maybe_parse-6104"><span class="linenos">6104</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> +</span><span id="maybe_parse-6105"><a href="#maybe_parse-6105"><span class="linenos">6105</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="maybe_parse-6106"><a href="#maybe_parse-6106"><span class="linenos">6106</span></a> +</span><span id="maybe_parse-6107"><a href="#maybe_parse-6107"><span class="linenos">6107</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</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">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -98163,8 +98342,8 @@ that an input expression is a SQL string).</li> </div> <a class="headerlink" href="#maybe_copy"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="maybe_copy-6111"><a href="#maybe_copy-6111"><span class="linenos">6111</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="maybe_copy-6112"><a href="#maybe_copy-6112"><span class="linenos">6112</span></a> <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="ow">and</span> <span class="n">instance</span> <span class="k">else</span> <span class="n">instance</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="maybe_copy-6118"><a href="#maybe_copy-6118"><span class="linenos">6118</span></a><span class="k">def</span> <span class="nf">maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="maybe_copy-6119"><a href="#maybe_copy-6119"><span class="linenos">6119</span></a> <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="ow">and</span> <span class="n">instance</span> <span class="k">else</span> <span class="n">instance</span> </span></pre></div> @@ -98182,38 +98361,38 @@ that an input expression is a SQL string).</li> </div> <a class="headerlink" href="#union"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="union-6332"><a href="#union-6332"><span class="linenos">6332</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span> -</span><span id="union-6333"><a href="#union-6333"><span class="linenos">6333</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="union-6334"><a href="#union-6334"><span class="linenos">6334</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="union-6335"><a href="#union-6335"><span class="linenos">6335</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="union-6336"><a href="#union-6336"><span class="linenos">6336</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="union-6337"><a href="#union-6337"><span class="linenos">6337</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="union-6338"><a href="#union-6338"><span class="linenos">6338</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="union-6339"><a href="#union-6339"><span class="linenos">6339</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> -</span><span id="union-6340"><a href="#union-6340"><span class="linenos">6340</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="union-6341"><a href="#union-6341"><span class="linenos">6341</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> -</span><span id="union-6342"><a href="#union-6342"><span class="linenos">6342</span></a> -</span><span id="union-6343"><a href="#union-6343"><span class="linenos">6343</span></a><span class="sd"> Example:</span> -</span><span id="union-6344"><a href="#union-6344"><span class="linenos">6344</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="union-6345"><a href="#union-6345"><span class="linenos">6345</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> -</span><span id="union-6346"><a href="#union-6346"><span class="linenos">6346</span></a> -</span><span id="union-6347"><a href="#union-6347"><span class="linenos">6347</span></a><span class="sd"> Args:</span> -</span><span id="union-6348"><a href="#union-6348"><span class="linenos">6348</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> -</span><span id="union-6349"><a href="#union-6349"><span class="linenos">6349</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="union-6350"><a href="#union-6350"><span class="linenos">6350</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> -</span><span id="union-6351"><a href="#union-6351"><span class="linenos">6351</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="union-6352"><a href="#union-6352"><span class="linenos">6352</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> -</span><span id="union-6353"><a href="#union-6353"><span class="linenos">6353</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="union-6354"><a href="#union-6354"><span class="linenos">6354</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="union-6355"><a href="#union-6355"><span class="linenos">6355</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="union-6356"><a href="#union-6356"><span class="linenos">6356</span></a> -</span><span id="union-6357"><a href="#union-6357"><span class="linenos">6357</span></a><span class="sd"> Returns:</span> -</span><span id="union-6358"><a href="#union-6358"><span class="linenos">6358</span></a><span class="sd"> The new Union instance.</span> -</span><span id="union-6359"><a href="#union-6359"><span class="linenos">6359</span></a><span class="sd"> """</span> -</span><span id="union-6360"><a href="#union-6360"><span class="linenos">6360</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="union-6361"><a href="#union-6361"><span class="linenos">6361</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="union-6362"><a href="#union-6362"><span class="linenos">6362</span></a> -</span><span id="union-6363"><a href="#union-6363"><span class="linenos">6363</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="union-6339"><a href="#union-6339"><span class="linenos">6339</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span> +</span><span id="union-6340"><a href="#union-6340"><span class="linenos">6340</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="union-6341"><a href="#union-6341"><span class="linenos">6341</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="union-6342"><a href="#union-6342"><span class="linenos">6342</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="union-6343"><a href="#union-6343"><span class="linenos">6343</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="union-6344"><a href="#union-6344"><span class="linenos">6344</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="union-6345"><a href="#union-6345"><span class="linenos">6345</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="union-6346"><a href="#union-6346"><span class="linenos">6346</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> +</span><span id="union-6347"><a href="#union-6347"><span class="linenos">6347</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="union-6348"><a href="#union-6348"><span class="linenos">6348</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> +</span><span id="union-6349"><a href="#union-6349"><span class="linenos">6349</span></a> +</span><span id="union-6350"><a href="#union-6350"><span class="linenos">6350</span></a><span class="sd"> Example:</span> +</span><span id="union-6351"><a href="#union-6351"><span class="linenos">6351</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="union-6352"><a href="#union-6352"><span class="linenos">6352</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="union-6353"><a href="#union-6353"><span class="linenos">6353</span></a> +</span><span id="union-6354"><a href="#union-6354"><span class="linenos">6354</span></a><span class="sd"> Args:</span> +</span><span id="union-6355"><a href="#union-6355"><span class="linenos">6355</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> +</span><span id="union-6356"><a href="#union-6356"><span class="linenos">6356</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="union-6357"><a href="#union-6357"><span class="linenos">6357</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> +</span><span id="union-6358"><a href="#union-6358"><span class="linenos">6358</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="union-6359"><a href="#union-6359"><span class="linenos">6359</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> +</span><span id="union-6360"><a href="#union-6360"><span class="linenos">6360</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="union-6361"><a href="#union-6361"><span class="linenos">6361</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="union-6362"><a href="#union-6362"><span class="linenos">6362</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="union-6363"><a href="#union-6363"><span class="linenos">6363</span></a> +</span><span id="union-6364"><a href="#union-6364"><span class="linenos">6364</span></a><span class="sd"> Returns:</span> +</span><span id="union-6365"><a href="#union-6365"><span class="linenos">6365</span></a><span class="sd"> The new Union instance.</span> +</span><span id="union-6366"><a href="#union-6366"><span class="linenos">6366</span></a><span class="sd"> """</span> +</span><span id="union-6367"><a href="#union-6367"><span class="linenos">6367</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="union-6368"><a href="#union-6368"><span class="linenos">6368</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="union-6369"><a href="#union-6369"><span class="linenos">6369</span></a> +</span><span id="union-6370"><a href="#union-6370"><span class="linenos">6370</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> </span></pre></div> @@ -98262,38 +98441,38 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#intersect"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="intersect-6366"><a href="#intersect-6366"><span class="linenos">6366</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span> -</span><span id="intersect-6367"><a href="#intersect-6367"><span class="linenos">6367</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="intersect-6368"><a href="#intersect-6368"><span class="linenos">6368</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="intersect-6369"><a href="#intersect-6369"><span class="linenos">6369</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="intersect-6370"><a href="#intersect-6370"><span class="linenos">6370</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="intersect-6371"><a href="#intersect-6371"><span class="linenos">6371</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="intersect-6372"><a href="#intersect-6372"><span class="linenos">6372</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="intersect-6373"><a href="#intersect-6373"><span class="linenos">6373</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Intersect</span><span class="p">:</span> -</span><span id="intersect-6374"><a href="#intersect-6374"><span class="linenos">6374</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="intersect-6375"><a href="#intersect-6375"><span class="linenos">6375</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> -</span><span id="intersect-6376"><a href="#intersect-6376"><span class="linenos">6376</span></a> -</span><span id="intersect-6377"><a href="#intersect-6377"><span class="linenos">6377</span></a><span class="sd"> Example:</span> -</span><span id="intersect-6378"><a href="#intersect-6378"><span class="linenos">6378</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="intersect-6379"><a href="#intersect-6379"><span class="linenos">6379</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="intersect-6380"><a href="#intersect-6380"><span class="linenos">6380</span></a> -</span><span id="intersect-6381"><a href="#intersect-6381"><span class="linenos">6381</span></a><span class="sd"> Args:</span> -</span><span id="intersect-6382"><a href="#intersect-6382"><span class="linenos">6382</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> -</span><span id="intersect-6383"><a href="#intersect-6383"><span class="linenos">6383</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="intersect-6384"><a href="#intersect-6384"><span class="linenos">6384</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> -</span><span id="intersect-6385"><a href="#intersect-6385"><span class="linenos">6385</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="intersect-6386"><a href="#intersect-6386"><span class="linenos">6386</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> -</span><span id="intersect-6387"><a href="#intersect-6387"><span class="linenos">6387</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="intersect-6388"><a href="#intersect-6388"><span class="linenos">6388</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="intersect-6389"><a href="#intersect-6389"><span class="linenos">6389</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="intersect-6390"><a href="#intersect-6390"><span class="linenos">6390</span></a> -</span><span id="intersect-6391"><a href="#intersect-6391"><span class="linenos">6391</span></a><span class="sd"> Returns:</span> -</span><span id="intersect-6392"><a href="#intersect-6392"><span class="linenos">6392</span></a><span class="sd"> The new Intersect instance.</span> -</span><span id="intersect-6393"><a href="#intersect-6393"><span class="linenos">6393</span></a><span class="sd"> """</span> -</span><span id="intersect-6394"><a href="#intersect-6394"><span class="linenos">6394</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="intersect-6395"><a href="#intersect-6395"><span class="linenos">6395</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="intersect-6396"><a href="#intersect-6396"><span class="linenos">6396</span></a> -</span><span id="intersect-6397"><a href="#intersect-6397"><span class="linenos">6397</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="intersect-6373"><a href="#intersect-6373"><span class="linenos">6373</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span> +</span><span id="intersect-6374"><a href="#intersect-6374"><span class="linenos">6374</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="intersect-6375"><a href="#intersect-6375"><span class="linenos">6375</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="intersect-6376"><a href="#intersect-6376"><span class="linenos">6376</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="intersect-6377"><a href="#intersect-6377"><span class="linenos">6377</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="intersect-6378"><a href="#intersect-6378"><span class="linenos">6378</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="intersect-6379"><a href="#intersect-6379"><span class="linenos">6379</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="intersect-6380"><a href="#intersect-6380"><span class="linenos">6380</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Intersect</span><span class="p">:</span> +</span><span id="intersect-6381"><a href="#intersect-6381"><span class="linenos">6381</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="intersect-6382"><a href="#intersect-6382"><span class="linenos">6382</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> +</span><span id="intersect-6383"><a href="#intersect-6383"><span class="linenos">6383</span></a> +</span><span id="intersect-6384"><a href="#intersect-6384"><span class="linenos">6384</span></a><span class="sd"> Example:</span> +</span><span id="intersect-6385"><a href="#intersect-6385"><span class="linenos">6385</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="intersect-6386"><a href="#intersect-6386"><span class="linenos">6386</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> +</span><span id="intersect-6387"><a href="#intersect-6387"><span class="linenos">6387</span></a> +</span><span id="intersect-6388"><a href="#intersect-6388"><span class="linenos">6388</span></a><span class="sd"> Args:</span> +</span><span id="intersect-6389"><a href="#intersect-6389"><span class="linenos">6389</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> +</span><span id="intersect-6390"><a href="#intersect-6390"><span class="linenos">6390</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="intersect-6391"><a href="#intersect-6391"><span class="linenos">6391</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> +</span><span id="intersect-6392"><a href="#intersect-6392"><span class="linenos">6392</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="intersect-6393"><a href="#intersect-6393"><span class="linenos">6393</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> +</span><span id="intersect-6394"><a href="#intersect-6394"><span class="linenos">6394</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="intersect-6395"><a href="#intersect-6395"><span class="linenos">6395</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="intersect-6396"><a href="#intersect-6396"><span class="linenos">6396</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="intersect-6397"><a href="#intersect-6397"><span class="linenos">6397</span></a> +</span><span id="intersect-6398"><a href="#intersect-6398"><span class="linenos">6398</span></a><span class="sd"> Returns:</span> +</span><span id="intersect-6399"><a href="#intersect-6399"><span class="linenos">6399</span></a><span class="sd"> The new Intersect instance.</span> +</span><span id="intersect-6400"><a href="#intersect-6400"><span class="linenos">6400</span></a><span class="sd"> """</span> +</span><span id="intersect-6401"><a href="#intersect-6401"><span class="linenos">6401</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="intersect-6402"><a href="#intersect-6402"><span class="linenos">6402</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="intersect-6403"><a href="#intersect-6403"><span class="linenos">6403</span></a> +</span><span id="intersect-6404"><a href="#intersect-6404"><span class="linenos">6404</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> </span></pre></div> @@ -98342,38 +98521,38 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#except_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="except_-6400"><a href="#except_-6400"><span class="linenos">6400</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span> -</span><span id="except_-6401"><a href="#except_-6401"><span class="linenos">6401</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="except_-6402"><a href="#except_-6402"><span class="linenos">6402</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="except_-6403"><a href="#except_-6403"><span class="linenos">6403</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="except_-6404"><a href="#except_-6404"><span class="linenos">6404</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="except_-6405"><a href="#except_-6405"><span class="linenos">6405</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="except_-6406"><a href="#except_-6406"><span class="linenos">6406</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="except_-6407"><a href="#except_-6407"><span class="linenos">6407</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Except</span><span class="p">:</span> -</span><span id="except_-6408"><a href="#except_-6408"><span class="linenos">6408</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="except_-6409"><a href="#except_-6409"><span class="linenos">6409</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> -</span><span id="except_-6410"><a href="#except_-6410"><span class="linenos">6410</span></a> -</span><span id="except_-6411"><a href="#except_-6411"><span class="linenos">6411</span></a><span class="sd"> Example:</span> -</span><span id="except_-6412"><a href="#except_-6412"><span class="linenos">6412</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="except_-6413"><a href="#except_-6413"><span class="linenos">6413</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> -</span><span id="except_-6414"><a href="#except_-6414"><span class="linenos">6414</span></a> -</span><span id="except_-6415"><a href="#except_-6415"><span class="linenos">6415</span></a><span class="sd"> Args:</span> -</span><span id="except_-6416"><a href="#except_-6416"><span class="linenos">6416</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> -</span><span id="except_-6417"><a href="#except_-6417"><span class="linenos">6417</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="except_-6418"><a href="#except_-6418"><span class="linenos">6418</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> -</span><span id="except_-6419"><a href="#except_-6419"><span class="linenos">6419</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="except_-6420"><a href="#except_-6420"><span class="linenos">6420</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> -</span><span id="except_-6421"><a href="#except_-6421"><span class="linenos">6421</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="except_-6422"><a href="#except_-6422"><span class="linenos">6422</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="except_-6423"><a href="#except_-6423"><span class="linenos">6423</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="except_-6424"><a href="#except_-6424"><span class="linenos">6424</span></a> -</span><span id="except_-6425"><a href="#except_-6425"><span class="linenos">6425</span></a><span class="sd"> Returns:</span> -</span><span id="except_-6426"><a href="#except_-6426"><span class="linenos">6426</span></a><span class="sd"> The new Except instance.</span> -</span><span id="except_-6427"><a href="#except_-6427"><span class="linenos">6427</span></a><span class="sd"> """</span> -</span><span id="except_-6428"><a href="#except_-6428"><span class="linenos">6428</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="except_-6429"><a href="#except_-6429"><span class="linenos">6429</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="except_-6430"><a href="#except_-6430"><span class="linenos">6430</span></a> -</span><span id="except_-6431"><a href="#except_-6431"><span class="linenos">6431</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="except_-6407"><a href="#except_-6407"><span class="linenos">6407</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span> +</span><span id="except_-6408"><a href="#except_-6408"><span class="linenos">6408</span></a> <span class="n">left</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="except_-6409"><a href="#except_-6409"><span class="linenos">6409</span></a> <span class="n">right</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="except_-6410"><a href="#except_-6410"><span class="linenos">6410</span></a> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="except_-6411"><a href="#except_-6411"><span class="linenos">6411</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="except_-6412"><a href="#except_-6412"><span class="linenos">6412</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="except_-6413"><a href="#except_-6413"><span class="linenos">6413</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="except_-6414"><a href="#except_-6414"><span class="linenos">6414</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Except</span><span class="p">:</span> +</span><span id="except_-6415"><a href="#except_-6415"><span class="linenos">6415</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="except_-6416"><a href="#except_-6416"><span class="linenos">6416</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> +</span><span id="except_-6417"><a href="#except_-6417"><span class="linenos">6417</span></a> +</span><span id="except_-6418"><a href="#except_-6418"><span class="linenos">6418</span></a><span class="sd"> Example:</span> +</span><span id="except_-6419"><a href="#except_-6419"><span class="linenos">6419</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="except_-6420"><a href="#except_-6420"><span class="linenos">6420</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="except_-6421"><a href="#except_-6421"><span class="linenos">6421</span></a> +</span><span id="except_-6422"><a href="#except_-6422"><span class="linenos">6422</span></a><span class="sd"> Args:</span> +</span><span id="except_-6423"><a href="#except_-6423"><span class="linenos">6423</span></a><span class="sd"> left: the SQL code string corresponding to the left-hand side.</span> +</span><span id="except_-6424"><a href="#except_-6424"><span class="linenos">6424</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="except_-6425"><a href="#except_-6425"><span class="linenos">6425</span></a><span class="sd"> right: the SQL code string corresponding to the right-hand side.</span> +</span><span id="except_-6426"><a href="#except_-6426"><span class="linenos">6426</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="except_-6427"><a href="#except_-6427"><span class="linenos">6427</span></a><span class="sd"> distinct: set the DISTINCT flag if and only if this is true.</span> +</span><span id="except_-6428"><a href="#except_-6428"><span class="linenos">6428</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="except_-6429"><a href="#except_-6429"><span class="linenos">6429</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="except_-6430"><a href="#except_-6430"><span class="linenos">6430</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="except_-6431"><a href="#except_-6431"><span class="linenos">6431</span></a> +</span><span id="except_-6432"><a href="#except_-6432"><span class="linenos">6432</span></a><span class="sd"> Returns:</span> +</span><span id="except_-6433"><a href="#except_-6433"><span class="linenos">6433</span></a><span class="sd"> The new Except instance.</span> +</span><span id="except_-6434"><a href="#except_-6434"><span class="linenos">6434</span></a><span class="sd"> """</span> +</span><span id="except_-6435"><a href="#except_-6435"><span class="linenos">6435</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="except_-6436"><a href="#except_-6436"><span class="linenos">6436</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="except_-6437"><a href="#except_-6437"><span class="linenos">6437</span></a> +</span><span id="except_-6438"><a href="#except_-6438"><span class="linenos">6438</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> </span></pre></div> @@ -98422,26 +98601,26 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#select"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="select-6434"><a href="#select-6434"><span class="linenos">6434</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="select-6435"><a href="#select-6435"><span class="linenos">6435</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="select-6436"><a href="#select-6436"><span class="linenos">6436</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> -</span><span id="select-6437"><a href="#select-6437"><span class="linenos">6437</span></a> -</span><span id="select-6438"><a href="#select-6438"><span class="linenos">6438</span></a><span class="sd"> Example:</span> -</span><span id="select-6439"><a href="#select-6439"><span class="linenos">6439</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> -</span><span id="select-6440"><a href="#select-6440"><span class="linenos">6440</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> -</span><span id="select-6441"><a href="#select-6441"><span class="linenos">6441</span></a> -</span><span id="select-6442"><a href="#select-6442"><span class="linenos">6442</span></a><span class="sd"> Args:</span> -</span><span id="select-6443"><a href="#select-6443"><span class="linenos">6443</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> -</span><span id="select-6444"><a href="#select-6444"><span class="linenos">6444</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="select-6445"><a href="#select-6445"><span class="linenos">6445</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="select-6446"><a href="#select-6446"><span class="linenos">6446</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="select-6447"><a href="#select-6447"><span class="linenos">6447</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="select-6448"><a href="#select-6448"><span class="linenos">6448</span></a><span class="sd"> that an input expression is a SQL string).</span> -</span><span id="select-6449"><a href="#select-6449"><span class="linenos">6449</span></a> -</span><span id="select-6450"><a href="#select-6450"><span class="linenos">6450</span></a><span class="sd"> Returns:</span> -</span><span id="select-6451"><a href="#select-6451"><span class="linenos">6451</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="select-6452"><a href="#select-6452"><span class="linenos">6452</span></a><span class="sd"> """</span> -</span><span id="select-6453"><a href="#select-6453"><span class="linenos">6453</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="select-6441"><a href="#select-6441"><span class="linenos">6441</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="select-6442"><a href="#select-6442"><span class="linenos">6442</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="select-6443"><a href="#select-6443"><span class="linenos">6443</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> +</span><span id="select-6444"><a href="#select-6444"><span class="linenos">6444</span></a> +</span><span id="select-6445"><a href="#select-6445"><span class="linenos">6445</span></a><span class="sd"> Example:</span> +</span><span id="select-6446"><a href="#select-6446"><span class="linenos">6446</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> +</span><span id="select-6447"><a href="#select-6447"><span class="linenos">6447</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="select-6448"><a href="#select-6448"><span class="linenos">6448</span></a> +</span><span id="select-6449"><a href="#select-6449"><span class="linenos">6449</span></a><span class="sd"> Args:</span> +</span><span id="select-6450"><a href="#select-6450"><span class="linenos">6450</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> +</span><span id="select-6451"><a href="#select-6451"><span class="linenos">6451</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="select-6452"><a href="#select-6452"><span class="linenos">6452</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="select-6453"><a href="#select-6453"><span class="linenos">6453</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="select-6454"><a href="#select-6454"><span class="linenos">6454</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="select-6455"><a href="#select-6455"><span class="linenos">6455</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="select-6456"><a href="#select-6456"><span class="linenos">6456</span></a> +</span><span id="select-6457"><a href="#select-6457"><span class="linenos">6457</span></a><span class="sd"> Returns:</span> +</span><span id="select-6458"><a href="#select-6458"><span class="linenos">6458</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="select-6459"><a href="#select-6459"><span class="linenos">6459</span></a><span class="sd"> """</span> +</span><span id="select-6460"><a href="#select-6460"><span class="linenos">6460</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -98488,26 +98667,26 @@ that an input expression is a SQL string).</li> </div> <a class="headerlink" href="#from_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="from_-6456"><a href="#from_-6456"><span class="linenos">6456</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="from_-6457"><a href="#from_-6457"><span class="linenos">6457</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="from_-6458"><a href="#from_-6458"><span class="linenos">6458</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> -</span><span id="from_-6459"><a href="#from_-6459"><span class="linenos">6459</span></a> -</span><span id="from_-6460"><a href="#from_-6460"><span class="linenos">6460</span></a><span class="sd"> Example:</span> -</span><span id="from_-6461"><a href="#from_-6461"><span class="linenos">6461</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> -</span><span id="from_-6462"><a href="#from_-6462"><span class="linenos">6462</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> -</span><span id="from_-6463"><a href="#from_-6463"><span class="linenos">6463</span></a> -</span><span id="from_-6464"><a href="#from_-6464"><span class="linenos">6464</span></a><span class="sd"> Args:</span> -</span><span id="from_-6465"><a href="#from_-6465"><span class="linenos">6465</span></a><span class="sd"> *expression: the SQL code string to parse as the FROM expressions of a</span> -</span><span id="from_-6466"><a href="#from_-6466"><span class="linenos">6466</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="from_-6467"><a href="#from_-6467"><span class="linenos">6467</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> -</span><span id="from_-6468"><a href="#from_-6468"><span class="linenos">6468</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="from_-6469"><a href="#from_-6469"><span class="linenos">6469</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="from_-6470"><a href="#from_-6470"><span class="linenos">6470</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="from_-6471"><a href="#from_-6471"><span class="linenos">6471</span></a> -</span><span id="from_-6472"><a href="#from_-6472"><span class="linenos">6472</span></a><span class="sd"> Returns:</span> -</span><span id="from_-6473"><a href="#from_-6473"><span class="linenos">6473</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="from_-6474"><a href="#from_-6474"><span class="linenos">6474</span></a><span class="sd"> """</span> -</span><span id="from_-6475"><a href="#from_-6475"><span class="linenos">6475</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="from_-6463"><a href="#from_-6463"><span class="linenos">6463</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="from_-6464"><a href="#from_-6464"><span class="linenos">6464</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="from_-6465"><a href="#from_-6465"><span class="linenos">6465</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> +</span><span id="from_-6466"><a href="#from_-6466"><span class="linenos">6466</span></a> +</span><span id="from_-6467"><a href="#from_-6467"><span class="linenos">6467</span></a><span class="sd"> Example:</span> +</span><span id="from_-6468"><a href="#from_-6468"><span class="linenos">6468</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> +</span><span id="from_-6469"><a href="#from_-6469"><span class="linenos">6469</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="from_-6470"><a href="#from_-6470"><span class="linenos">6470</span></a> +</span><span id="from_-6471"><a href="#from_-6471"><span class="linenos">6471</span></a><span class="sd"> Args:</span> +</span><span id="from_-6472"><a href="#from_-6472"><span class="linenos">6472</span></a><span class="sd"> *expression: the SQL code string to parse as the FROM expressions of a</span> +</span><span id="from_-6473"><a href="#from_-6473"><span class="linenos">6473</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="from_-6474"><a href="#from_-6474"><span class="linenos">6474</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> +</span><span id="from_-6475"><a href="#from_-6475"><span class="linenos">6475</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="from_-6476"><a href="#from_-6476"><span class="linenos">6476</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="from_-6477"><a href="#from_-6477"><span class="linenos">6477</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="from_-6478"><a href="#from_-6478"><span class="linenos">6478</span></a> +</span><span id="from_-6479"><a href="#from_-6479"><span class="linenos">6479</span></a><span class="sd"> Returns:</span> +</span><span id="from_-6480"><a href="#from_-6480"><span class="linenos">6480</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="from_-6481"><a href="#from_-6481"><span class="linenos">6481</span></a><span class="sd"> """</span> +</span><span id="from_-6482"><a href="#from_-6482"><span class="linenos">6482</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -98554,53 +98733,53 @@ that the input expression is a SQL string).</li> </div> <a class="headerlink" href="#update"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="update-6478"><a href="#update-6478"><span class="linenos">6478</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span> -</span><span id="update-6479"><a href="#update-6479"><span class="linenos">6479</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="update-6480"><a href="#update-6480"><span class="linenos">6480</span></a> <span class="n">properties</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> -</span><span id="update-6481"><a href="#update-6481"><span class="linenos">6481</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="update-6482"><a href="#update-6482"><span class="linenos">6482</span></a> <span class="n">from_</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="update-6483"><a href="#update-6483"><span class="linenos">6483</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="update-6484"><a href="#update-6484"><span class="linenos">6484</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="update-6485"><a href="#update-6485"><span class="linenos">6485</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> -</span><span id="update-6486"><a href="#update-6486"><span class="linenos">6486</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="update-6487"><a href="#update-6487"><span class="linenos">6487</span></a><span class="sd"> Creates an update statement.</span> -</span><span id="update-6488"><a href="#update-6488"><span class="linenos">6488</span></a> -</span><span id="update-6489"><a href="#update-6489"><span class="linenos">6489</span></a><span class="sd"> Example:</span> -</span><span id="update-6490"><a href="#update-6490"><span class="linenos">6490</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> -</span><span id="update-6491"><a href="#update-6491"><span class="linenos">6491</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> -</span><span id="update-6492"><a href="#update-6492"><span class="linenos">6492</span></a> -</span><span id="update-6493"><a href="#update-6493"><span class="linenos">6493</span></a><span class="sd"> Args:</span> -</span><span id="update-6494"><a href="#update-6494"><span class="linenos">6494</span></a><span class="sd"> *properties: dictionary of properties to set which are</span> -</span><span id="update-6495"><a href="#update-6495"><span class="linenos">6495</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> -</span><span id="update-6496"><a href="#update-6496"><span class="linenos">6496</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> -</span><span id="update-6497"><a href="#update-6497"><span class="linenos">6497</span></a><span class="sd"> from_: sql statement parsed into a FROM statement</span> -</span><span id="update-6498"><a href="#update-6498"><span class="linenos">6498</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="update-6499"><a href="#update-6499"><span class="linenos">6499</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="update-6500"><a href="#update-6500"><span class="linenos">6500</span></a> -</span><span id="update-6501"><a href="#update-6501"><span class="linenos">6501</span></a><span class="sd"> Returns:</span> -</span><span id="update-6502"><a href="#update-6502"><span class="linenos">6502</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> -</span><span id="update-6503"><a href="#update-6503"><span class="linenos">6503</span></a><span class="sd"> """</span> -</span><span id="update-6504"><a href="#update-6504"><span class="linenos">6504</span></a> <span class="n">update_expr</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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="update-6505"><a href="#update-6505"><span class="linenos">6505</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="update-6506"><a href="#update-6506"><span class="linenos">6506</span></a> <span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="update-6507"><a href="#update-6507"><span class="linenos">6507</span></a> <span class="p">[</span> -</span><span id="update-6508"><a href="#update-6508"><span class="linenos">6508</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> -</span><span id="update-6509"><a href="#update-6509"><span class="linenos">6509</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">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="update-6510"><a href="#update-6510"><span class="linenos">6510</span></a> <span class="p">],</span> -</span><span id="update-6511"><a href="#update-6511"><span class="linenos">6511</span></a> <span class="p">)</span> -</span><span id="update-6512"><a href="#update-6512"><span class="linenos">6512</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="update-6513"><a href="#update-6513"><span class="linenos">6513</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="update-6514"><a href="#update-6514"><span class="linenos">6514</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="update-6515"><a href="#update-6515"><span class="linenos">6515</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</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">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="update-6516"><a href="#update-6516"><span class="linenos">6516</span></a> <span class="p">)</span> -</span><span id="update-6517"><a href="#update-6517"><span class="linenos">6517</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="update-6518"><a href="#update-6518"><span class="linenos">6518</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="update-6519"><a href="#update-6519"><span class="linenos">6519</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="update-6485"><a href="#update-6485"><span class="linenos">6485</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span> +</span><span id="update-6486"><a href="#update-6486"><span class="linenos">6486</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="update-6487"><a href="#update-6487"><span class="linenos">6487</span></a> <span class="n">properties</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> +</span><span id="update-6488"><a href="#update-6488"><span class="linenos">6488</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="update-6489"><a href="#update-6489"><span class="linenos">6489</span></a> <span class="n">from_</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="update-6490"><a href="#update-6490"><span class="linenos">6490</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="update-6491"><a href="#update-6491"><span class="linenos">6491</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="update-6492"><a href="#update-6492"><span class="linenos">6492</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> +</span><span id="update-6493"><a href="#update-6493"><span class="linenos">6493</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="update-6494"><a href="#update-6494"><span class="linenos">6494</span></a><span class="sd"> Creates an update statement.</span> +</span><span id="update-6495"><a href="#update-6495"><span class="linenos">6495</span></a> +</span><span id="update-6496"><a href="#update-6496"><span class="linenos">6496</span></a><span class="sd"> Example:</span> +</span><span id="update-6497"><a href="#update-6497"><span class="linenos">6497</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> +</span><span id="update-6498"><a href="#update-6498"><span class="linenos">6498</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> +</span><span id="update-6499"><a href="#update-6499"><span class="linenos">6499</span></a> +</span><span id="update-6500"><a href="#update-6500"><span class="linenos">6500</span></a><span class="sd"> Args:</span> +</span><span id="update-6501"><a href="#update-6501"><span class="linenos">6501</span></a><span class="sd"> *properties: dictionary of properties to set which are</span> +</span><span id="update-6502"><a href="#update-6502"><span class="linenos">6502</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> +</span><span id="update-6503"><a href="#update-6503"><span class="linenos">6503</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> +</span><span id="update-6504"><a href="#update-6504"><span class="linenos">6504</span></a><span class="sd"> from_: sql statement parsed into a FROM statement</span> +</span><span id="update-6505"><a href="#update-6505"><span class="linenos">6505</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="update-6506"><a href="#update-6506"><span class="linenos">6506</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="update-6507"><a href="#update-6507"><span class="linenos">6507</span></a> +</span><span id="update-6508"><a href="#update-6508"><span class="linenos">6508</span></a><span class="sd"> Returns:</span> +</span><span id="update-6509"><a href="#update-6509"><span class="linenos">6509</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> +</span><span id="update-6510"><a href="#update-6510"><span class="linenos">6510</span></a><span class="sd"> """</span> +</span><span id="update-6511"><a href="#update-6511"><span class="linenos">6511</span></a> <span class="n">update_expr</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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="update-6512"><a href="#update-6512"><span class="linenos">6512</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="update-6513"><a href="#update-6513"><span class="linenos">6513</span></a> <span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="update-6514"><a href="#update-6514"><span class="linenos">6514</span></a> <span class="p">[</span> +</span><span id="update-6515"><a href="#update-6515"><span class="linenos">6515</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> +</span><span id="update-6516"><a href="#update-6516"><span class="linenos">6516</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">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="update-6517"><a href="#update-6517"><span class="linenos">6517</span></a> <span class="p">],</span> +</span><span id="update-6518"><a href="#update-6518"><span class="linenos">6518</span></a> <span class="p">)</span> +</span><span id="update-6519"><a href="#update-6519"><span class="linenos">6519</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> </span><span id="update-6520"><a href="#update-6520"><span class="linenos">6520</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="update-6521"><a href="#update-6521"><span class="linenos">6521</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="update-6522"><a href="#update-6522"><span class="linenos">6522</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</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">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="update-6521"><a href="#update-6521"><span class="linenos">6521</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="update-6522"><a href="#update-6522"><span class="linenos">6522</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</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">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> </span><span id="update-6523"><a href="#update-6523"><span class="linenos">6523</span></a> <span class="p">)</span> -</span><span id="update-6524"><a href="#update-6524"><span class="linenos">6524</span></a> <span class="k">return</span> <span class="n">update_expr</span> +</span><span id="update-6524"><a href="#update-6524"><span class="linenos">6524</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="update-6525"><a href="#update-6525"><span class="linenos">6525</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="update-6526"><a href="#update-6526"><span class="linenos">6526</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="update-6527"><a href="#update-6527"><span class="linenos">6527</span></a> <span class="n">update_expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="update-6528"><a href="#update-6528"><span class="linenos">6528</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="update-6529"><a href="#update-6529"><span class="linenos">6529</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</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">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="update-6530"><a href="#update-6530"><span class="linenos">6530</span></a> <span class="p">)</span> +</span><span id="update-6531"><a href="#update-6531"><span class="linenos">6531</span></a> <span class="k">return</span> <span class="n">update_expr</span> </span></pre></div> @@ -98647,37 +98826,37 @@ auto converted to sql objects eg None -> NULL</li> </div> <a class="headerlink" href="#delete"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="delete-6527"><a href="#delete-6527"><span class="linenos">6527</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span> -</span><span id="delete-6528"><a href="#delete-6528"><span class="linenos">6528</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="delete-6529"><a href="#delete-6529"><span class="linenos">6529</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="delete-6530"><a href="#delete-6530"><span class="linenos">6530</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="delete-6531"><a href="#delete-6531"><span class="linenos">6531</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="delete-6532"><a href="#delete-6532"><span class="linenos">6532</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="delete-6533"><a href="#delete-6533"><span class="linenos">6533</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> -</span><span id="delete-6534"><a href="#delete-6534"><span class="linenos">6534</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="delete-6535"><a href="#delete-6535"><span class="linenos">6535</span></a><span class="sd"> Builds a delete statement.</span> -</span><span id="delete-6536"><a href="#delete-6536"><span class="linenos">6536</span></a> -</span><span id="delete-6537"><a href="#delete-6537"><span class="linenos">6537</span></a><span class="sd"> Example:</span> -</span><span id="delete-6538"><a href="#delete-6538"><span class="linenos">6538</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> -</span><span id="delete-6539"><a href="#delete-6539"><span class="linenos">6539</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> -</span><span id="delete-6540"><a href="#delete-6540"><span class="linenos">6540</span></a> -</span><span id="delete-6541"><a href="#delete-6541"><span class="linenos">6541</span></a><span class="sd"> Args:</span> -</span><span id="delete-6542"><a href="#delete-6542"><span class="linenos">6542</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> -</span><span id="delete-6543"><a href="#delete-6543"><span class="linenos">6543</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> -</span><span id="delete-6544"><a href="#delete-6544"><span class="linenos">6544</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="delete-6545"><a href="#delete-6545"><span class="linenos">6545</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="delete-6546"><a href="#delete-6546"><span class="linenos">6546</span></a> -</span><span id="delete-6547"><a href="#delete-6547"><span class="linenos">6547</span></a><span class="sd"> Returns:</span> -</span><span id="delete-6548"><a href="#delete-6548"><span class="linenos">6548</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> -</span><span id="delete-6549"><a href="#delete-6549"><span class="linenos">6549</span></a><span class="sd"> """</span> -</span><span id="delete-6550"><a href="#delete-6550"><span class="linenos">6550</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">Delete</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="delete-6551"><a href="#delete-6551"><span class="linenos">6551</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> -</span><span id="delete-6552"><a href="#delete-6552"><span class="linenos">6552</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="delete-6553"><a href="#delete-6553"><span class="linenos">6553</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> -</span><span id="delete-6554"><a href="#delete-6554"><span class="linenos">6554</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> -</span><span id="delete-6555"><a href="#delete-6555"><span class="linenos">6555</span></a> <span class="n">Delete</span><span class="p">,</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="delete-6556"><a href="#delete-6556"><span class="linenos">6556</span></a> <span class="p">)</span> -</span><span id="delete-6557"><a href="#delete-6557"><span class="linenos">6557</span></a> <span class="k">return</span> <span class="n">delete_expr</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="delete-6534"><a href="#delete-6534"><span class="linenos">6534</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span> +</span><span id="delete-6535"><a href="#delete-6535"><span class="linenos">6535</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="delete-6536"><a href="#delete-6536"><span class="linenos">6536</span></a> <span class="n">where</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="delete-6537"><a href="#delete-6537"><span class="linenos">6537</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="delete-6538"><a href="#delete-6538"><span class="linenos">6538</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="delete-6539"><a href="#delete-6539"><span class="linenos">6539</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="delete-6540"><a href="#delete-6540"><span class="linenos">6540</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> +</span><span id="delete-6541"><a href="#delete-6541"><span class="linenos">6541</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="delete-6542"><a href="#delete-6542"><span class="linenos">6542</span></a><span class="sd"> Builds a delete statement.</span> +</span><span id="delete-6543"><a href="#delete-6543"><span class="linenos">6543</span></a> +</span><span id="delete-6544"><a href="#delete-6544"><span class="linenos">6544</span></a><span class="sd"> Example:</span> +</span><span id="delete-6545"><a href="#delete-6545"><span class="linenos">6545</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> +</span><span id="delete-6546"><a href="#delete-6546"><span class="linenos">6546</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> +</span><span id="delete-6547"><a href="#delete-6547"><span class="linenos">6547</span></a> +</span><span id="delete-6548"><a href="#delete-6548"><span class="linenos">6548</span></a><span class="sd"> Args:</span> +</span><span id="delete-6549"><a href="#delete-6549"><span class="linenos">6549</span></a><span class="sd"> where: sql conditional parsed into a WHERE statement</span> +</span><span id="delete-6550"><a href="#delete-6550"><span class="linenos">6550</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> +</span><span id="delete-6551"><a href="#delete-6551"><span class="linenos">6551</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="delete-6552"><a href="#delete-6552"><span class="linenos">6552</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="delete-6553"><a href="#delete-6553"><span class="linenos">6553</span></a> +</span><span id="delete-6554"><a href="#delete-6554"><span class="linenos">6554</span></a><span class="sd"> Returns:</span> +</span><span id="delete-6555"><a href="#delete-6555"><span class="linenos">6555</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> +</span><span id="delete-6556"><a href="#delete-6556"><span class="linenos">6556</span></a><span class="sd"> """</span> +</span><span id="delete-6557"><a href="#delete-6557"><span class="linenos">6557</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">Delete</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="delete-6558"><a href="#delete-6558"><span class="linenos">6558</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="delete-6559"><a href="#delete-6559"><span class="linenos">6559</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="delete-6560"><a href="#delete-6560"><span class="linenos">6560</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> +</span><span id="delete-6561"><a href="#delete-6561"><span class="linenos">6561</span></a> <span class="n">delete_expr</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> +</span><span id="delete-6562"><a href="#delete-6562"><span class="linenos">6562</span></a> <span class="n">Delete</span><span class="p">,</span> <span class="n">delete_expr</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="delete-6563"><a href="#delete-6563"><span class="linenos">6563</span></a> <span class="p">)</span> +</span><span id="delete-6564"><a href="#delete-6564"><span class="linenos">6564</span></a> <span class="k">return</span> <span class="n">delete_expr</span> </span></pre></div> @@ -98722,48 +98901,48 @@ auto converted to sql objects eg None -> NULL</li> </div> <a class="headerlink" href="#insert"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="insert-6560"><a href="#insert-6560"><span class="linenos">6560</span></a><span class="k">def</span> <span class="nf">insert</span><span class="p">(</span> -</span><span id="insert-6561"><a href="#insert-6561"><span class="linenos">6561</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="insert-6562"><a href="#insert-6562"><span class="linenos">6562</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="insert-6563"><a href="#insert-6563"><span class="linenos">6563</span></a> <span class="n">columns</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">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="insert-6564"><a href="#insert-6564"><span class="linenos">6564</span></a> <span class="n">overwrite</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">None</span><span class="p">,</span> -</span><span id="insert-6565"><a href="#insert-6565"><span class="linenos">6565</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="insert-6566"><a href="#insert-6566"><span class="linenos">6566</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="insert-6567"><a href="#insert-6567"><span class="linenos">6567</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="insert-6568"><a href="#insert-6568"><span class="linenos">6568</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="insert-6569"><a href="#insert-6569"><span class="linenos">6569</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Insert</span><span class="p">:</span> -</span><span id="insert-6570"><a href="#insert-6570"><span class="linenos">6570</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="insert-6571"><a href="#insert-6571"><span class="linenos">6571</span></a><span class="sd"> Builds an INSERT statement.</span> -</span><span id="insert-6572"><a href="#insert-6572"><span class="linenos">6572</span></a> -</span><span id="insert-6573"><a href="#insert-6573"><span class="linenos">6573</span></a><span class="sd"> Example:</span> -</span><span id="insert-6574"><a href="#insert-6574"><span class="linenos">6574</span></a><span class="sd"> >>> insert("VALUES (1, 2, 3)", "tbl").sql()</span> -</span><span id="insert-6575"><a href="#insert-6575"><span class="linenos">6575</span></a><span class="sd"> 'INSERT INTO tbl VALUES (1, 2, 3)'</span> -</span><span id="insert-6576"><a href="#insert-6576"><span class="linenos">6576</span></a> -</span><span id="insert-6577"><a href="#insert-6577"><span class="linenos">6577</span></a><span class="sd"> Args:</span> -</span><span id="insert-6578"><a href="#insert-6578"><span class="linenos">6578</span></a><span class="sd"> expression: the sql string or expression of the INSERT statement</span> -</span><span id="insert-6579"><a href="#insert-6579"><span class="linenos">6579</span></a><span class="sd"> into: the tbl to insert data to.</span> -</span><span id="insert-6580"><a href="#insert-6580"><span class="linenos">6580</span></a><span class="sd"> columns: optionally the table's column names.</span> -</span><span id="insert-6581"><a href="#insert-6581"><span class="linenos">6581</span></a><span class="sd"> overwrite: whether to INSERT OVERWRITE or not.</span> -</span><span id="insert-6582"><a href="#insert-6582"><span class="linenos">6582</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> -</span><span id="insert-6583"><a href="#insert-6583"><span class="linenos">6583</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="insert-6584"><a href="#insert-6584"><span class="linenos">6584</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="insert-6585"><a href="#insert-6585"><span class="linenos">6585</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="insert-6586"><a href="#insert-6586"><span class="linenos">6586</span></a> -</span><span id="insert-6587"><a href="#insert-6587"><span class="linenos">6587</span></a><span class="sd"> Returns:</span> -</span><span id="insert-6588"><a href="#insert-6588"><span class="linenos">6588</span></a><span class="sd"> Insert: the syntax tree for the INSERT statement.</span> -</span><span id="insert-6589"><a href="#insert-6589"><span class="linenos">6589</span></a><span class="sd"> """</span> -</span><span id="insert-6590"><a href="#insert-6590"><span class="linenos">6590</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="insert-6591"><a href="#insert-6591"><span class="linenos">6591</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="n">Schema</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="insert-6592"><a href="#insert-6592"><span class="linenos">6592</span></a> -</span><span id="insert-6593"><a href="#insert-6593"><span class="linenos">6593</span></a> <span class="k">if</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="insert-6594"><a href="#insert-6594"><span class="linenos">6594</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> -</span><span id="insert-6595"><a href="#insert-6595"><span class="linenos">6595</span></a> -</span><span id="insert-6596"><a href="#insert-6596"><span class="linenos">6596</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">Insert</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">)</span> -</span><span id="insert-6597"><a href="#insert-6597"><span class="linenos">6597</span></a> -</span><span id="insert-6598"><a href="#insert-6598"><span class="linenos">6598</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> -</span><span id="insert-6599"><a href="#insert-6599"><span class="linenos">6599</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Insert</span><span class="p">,</span> <span class="n">insert</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="insert-6600"><a href="#insert-6600"><span class="linenos">6600</span></a> -</span><span id="insert-6601"><a href="#insert-6601"><span class="linenos">6601</span></a> <span class="k">return</span> <span class="n">insert</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="insert-6567"><a href="#insert-6567"><span class="linenos">6567</span></a><span class="k">def</span> <span class="nf">insert</span><span class="p">(</span> +</span><span id="insert-6568"><a href="#insert-6568"><span class="linenos">6568</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="insert-6569"><a href="#insert-6569"><span class="linenos">6569</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="insert-6570"><a href="#insert-6570"><span class="linenos">6570</span></a> <span class="n">columns</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">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="insert-6571"><a href="#insert-6571"><span class="linenos">6571</span></a> <span class="n">overwrite</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">None</span><span class="p">,</span> +</span><span id="insert-6572"><a href="#insert-6572"><span class="linenos">6572</span></a> <span class="n">returning</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="insert-6573"><a href="#insert-6573"><span class="linenos">6573</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="insert-6574"><a href="#insert-6574"><span class="linenos">6574</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="insert-6575"><a href="#insert-6575"><span class="linenos">6575</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="insert-6576"><a href="#insert-6576"><span class="linenos">6576</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Insert</span><span class="p">:</span> +</span><span id="insert-6577"><a href="#insert-6577"><span class="linenos">6577</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="insert-6578"><a href="#insert-6578"><span class="linenos">6578</span></a><span class="sd"> Builds an INSERT statement.</span> +</span><span id="insert-6579"><a href="#insert-6579"><span class="linenos">6579</span></a> +</span><span id="insert-6580"><a href="#insert-6580"><span class="linenos">6580</span></a><span class="sd"> Example:</span> +</span><span id="insert-6581"><a href="#insert-6581"><span class="linenos">6581</span></a><span class="sd"> >>> insert("VALUES (1, 2, 3)", "tbl").sql()</span> +</span><span id="insert-6582"><a href="#insert-6582"><span class="linenos">6582</span></a><span class="sd"> 'INSERT INTO tbl VALUES (1, 2, 3)'</span> +</span><span id="insert-6583"><a href="#insert-6583"><span class="linenos">6583</span></a> +</span><span id="insert-6584"><a href="#insert-6584"><span class="linenos">6584</span></a><span class="sd"> Args:</span> +</span><span id="insert-6585"><a href="#insert-6585"><span class="linenos">6585</span></a><span class="sd"> expression: the sql string or expression of the INSERT statement</span> +</span><span id="insert-6586"><a href="#insert-6586"><span class="linenos">6586</span></a><span class="sd"> into: the tbl to insert data to.</span> +</span><span id="insert-6587"><a href="#insert-6587"><span class="linenos">6587</span></a><span class="sd"> columns: optionally the table's column names.</span> +</span><span id="insert-6588"><a href="#insert-6588"><span class="linenos">6588</span></a><span class="sd"> overwrite: whether to INSERT OVERWRITE or not.</span> +</span><span id="insert-6589"><a href="#insert-6589"><span class="linenos">6589</span></a><span class="sd"> returning: sql conditional parsed into a RETURNING statement</span> +</span><span id="insert-6590"><a href="#insert-6590"><span class="linenos">6590</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="insert-6591"><a href="#insert-6591"><span class="linenos">6591</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="insert-6592"><a href="#insert-6592"><span class="linenos">6592</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="insert-6593"><a href="#insert-6593"><span class="linenos">6593</span></a> +</span><span id="insert-6594"><a href="#insert-6594"><span class="linenos">6594</span></a><span class="sd"> Returns:</span> +</span><span id="insert-6595"><a href="#insert-6595"><span class="linenos">6595</span></a><span class="sd"> Insert: the syntax tree for the INSERT statement.</span> +</span><span id="insert-6596"><a href="#insert-6596"><span class="linenos">6596</span></a><span class="sd"> """</span> +</span><span id="insert-6597"><a href="#insert-6597"><span class="linenos">6597</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="insert-6598"><a href="#insert-6598"><span class="linenos">6598</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="n">Schema</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="insert-6599"><a href="#insert-6599"><span class="linenos">6599</span></a> +</span><span id="insert-6600"><a href="#insert-6600"><span class="linenos">6600</span></a> <span class="k">if</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="insert-6601"><a href="#insert-6601"><span class="linenos">6601</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> +</span><span id="insert-6602"><a href="#insert-6602"><span class="linenos">6602</span></a> +</span><span id="insert-6603"><a href="#insert-6603"><span class="linenos">6603</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">Insert</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">)</span> +</span><span id="insert-6604"><a href="#insert-6604"><span class="linenos">6604</span></a> +</span><span id="insert-6605"><a href="#insert-6605"><span class="linenos">6605</span></a> <span class="k">if</span> <span class="n">returning</span><span class="p">:</span> +</span><span id="insert-6606"><a href="#insert-6606"><span class="linenos">6606</span></a> <span class="n">insert</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Insert</span><span class="p">,</span> <span class="n">insert</span><span class="o">.</span><span class="n">returning</span><span class="p">(</span><span class="n">returning</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="insert-6607"><a href="#insert-6607"><span class="linenos">6607</span></a> +</span><span id="insert-6608"><a href="#insert-6608"><span class="linenos">6608</span></a> <span class="k">return</span> <span class="n">insert</span> </span></pre></div> @@ -98812,41 +98991,41 @@ auto converted to sql objects eg None -> NULL</li> </div> <a class="headerlink" href="#condition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="condition-6604"><a href="#condition-6604"><span class="linenos">6604</span></a><span class="k">def</span> <span class="nf">condition</span><span class="p">(</span> -</span><span id="condition-6605"><a href="#condition-6605"><span class="linenos">6605</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="condition-6606"><a href="#condition-6606"><span class="linenos">6606</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="condition-6607"><a href="#condition-6607"><span class="linenos">6607</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="condition-6608"><a href="#condition-6608"><span class="linenos">6608</span></a><span class="sd"> Initialize a logical condition expression.</span> -</span><span id="condition-6609"><a href="#condition-6609"><span class="linenos">6609</span></a> -</span><span id="condition-6610"><a href="#condition-6610"><span class="linenos">6610</span></a><span class="sd"> Example:</span> -</span><span id="condition-6611"><a href="#condition-6611"><span class="linenos">6611</span></a><span class="sd"> >>> condition("x=1").sql()</span> -</span><span id="condition-6612"><a href="#condition-6612"><span class="linenos">6612</span></a><span class="sd"> 'x = 1'</span> -</span><span id="condition-6613"><a href="#condition-6613"><span class="linenos">6613</span></a> -</span><span id="condition-6614"><a href="#condition-6614"><span class="linenos">6614</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> -</span><span id="condition-6615"><a href="#condition-6615"><span class="linenos">6615</span></a><span class="sd"> >>> where = condition("x=1")</span> -</span><span id="condition-6616"><a href="#condition-6616"><span class="linenos">6616</span></a><span class="sd"> >>> where = where.and_("y=1")</span> -</span><span id="condition-6617"><a href="#condition-6617"><span class="linenos">6617</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> -</span><span id="condition-6618"><a href="#condition-6618"><span class="linenos">6618</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> -</span><span id="condition-6619"><a href="#condition-6619"><span class="linenos">6619</span></a> -</span><span id="condition-6620"><a href="#condition-6620"><span class="linenos">6620</span></a><span class="sd"> Args:</span> -</span><span id="condition-6621"><a href="#condition-6621"><span class="linenos">6621</span></a><span class="sd"> *expression: the SQL code string to parse.</span> -</span><span id="condition-6622"><a href="#condition-6622"><span class="linenos">6622</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="condition-6623"><a href="#condition-6623"><span class="linenos">6623</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> -</span><span id="condition-6624"><a href="#condition-6624"><span class="linenos">6624</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="condition-6625"><a href="#condition-6625"><span class="linenos">6625</span></a><span class="sd"> copy: Whether to copy `expression` (only applies to expressions).</span> -</span><span id="condition-6626"><a href="#condition-6626"><span class="linenos">6626</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="condition-6627"><a href="#condition-6627"><span class="linenos">6627</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="condition-6628"><a href="#condition-6628"><span class="linenos">6628</span></a> -</span><span id="condition-6629"><a href="#condition-6629"><span class="linenos">6629</span></a><span class="sd"> Returns:</span> -</span><span id="condition-6630"><a href="#condition-6630"><span class="linenos">6630</span></a><span class="sd"> The new Condition instance</span> -</span><span id="condition-6631"><a href="#condition-6631"><span class="linenos">6631</span></a><span class="sd"> """</span> -</span><span id="condition-6632"><a href="#condition-6632"><span class="linenos">6632</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="condition-6633"><a href="#condition-6633"><span class="linenos">6633</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="condition-6634"><a href="#condition-6634"><span class="linenos">6634</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> -</span><span id="condition-6635"><a href="#condition-6635"><span class="linenos">6635</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="condition-6636"><a href="#condition-6636"><span class="linenos">6636</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="condition-6637"><a href="#condition-6637"><span class="linenos">6637</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="condition-6638"><a href="#condition-6638"><span class="linenos">6638</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="condition-6611"><a href="#condition-6611"><span class="linenos">6611</span></a><span class="k">def</span> <span class="nf">condition</span><span class="p">(</span> +</span><span id="condition-6612"><a href="#condition-6612"><span class="linenos">6612</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="condition-6613"><a href="#condition-6613"><span class="linenos">6613</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="condition-6614"><a href="#condition-6614"><span class="linenos">6614</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="condition-6615"><a href="#condition-6615"><span class="linenos">6615</span></a><span class="sd"> Initialize a logical condition expression.</span> +</span><span id="condition-6616"><a href="#condition-6616"><span class="linenos">6616</span></a> +</span><span id="condition-6617"><a href="#condition-6617"><span class="linenos">6617</span></a><span class="sd"> Example:</span> +</span><span id="condition-6618"><a href="#condition-6618"><span class="linenos">6618</span></a><span class="sd"> >>> condition("x=1").sql()</span> +</span><span id="condition-6619"><a href="#condition-6619"><span class="linenos">6619</span></a><span class="sd"> 'x = 1'</span> +</span><span id="condition-6620"><a href="#condition-6620"><span class="linenos">6620</span></a> +</span><span id="condition-6621"><a href="#condition-6621"><span class="linenos">6621</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> +</span><span id="condition-6622"><a href="#condition-6622"><span class="linenos">6622</span></a><span class="sd"> >>> where = condition("x=1")</span> +</span><span id="condition-6623"><a href="#condition-6623"><span class="linenos">6623</span></a><span class="sd"> >>> where = where.and_("y=1")</span> +</span><span id="condition-6624"><a href="#condition-6624"><span class="linenos">6624</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> +</span><span id="condition-6625"><a href="#condition-6625"><span class="linenos">6625</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> +</span><span id="condition-6626"><a href="#condition-6626"><span class="linenos">6626</span></a> +</span><span id="condition-6627"><a href="#condition-6627"><span class="linenos">6627</span></a><span class="sd"> Args:</span> +</span><span id="condition-6628"><a href="#condition-6628"><span class="linenos">6628</span></a><span class="sd"> *expression: the SQL code string to parse.</span> +</span><span id="condition-6629"><a href="#condition-6629"><span class="linenos">6629</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="condition-6630"><a href="#condition-6630"><span class="linenos">6630</span></a><span class="sd"> dialect: the dialect used to parse the input expression (in the case that the</span> +</span><span id="condition-6631"><a href="#condition-6631"><span class="linenos">6631</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="condition-6632"><a href="#condition-6632"><span class="linenos">6632</span></a><span class="sd"> copy: Whether to copy `expression` (only applies to expressions).</span> +</span><span id="condition-6633"><a href="#condition-6633"><span class="linenos">6633</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="condition-6634"><a href="#condition-6634"><span class="linenos">6634</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="condition-6635"><a href="#condition-6635"><span class="linenos">6635</span></a> +</span><span id="condition-6636"><a href="#condition-6636"><span class="linenos">6636</span></a><span class="sd"> Returns:</span> +</span><span id="condition-6637"><a href="#condition-6637"><span class="linenos">6637</span></a><span class="sd"> The new Condition instance</span> +</span><span id="condition-6638"><a href="#condition-6638"><span class="linenos">6638</span></a><span class="sd"> """</span> +</span><span id="condition-6639"><a href="#condition-6639"><span class="linenos">6639</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="condition-6640"><a href="#condition-6640"><span class="linenos">6640</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="condition-6641"><a href="#condition-6641"><span class="linenos">6641</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> +</span><span id="condition-6642"><a href="#condition-6642"><span class="linenos">6642</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="condition-6643"><a href="#condition-6643"><span class="linenos">6643</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="condition-6644"><a href="#condition-6644"><span class="linenos">6644</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="condition-6645"><a href="#condition-6645"><span class="linenos">6645</span></a> <span class="p">)</span> </span></pre></div> @@ -98904,27 +99083,27 @@ that the input expression is a SQL string).</li> </div> <a class="headerlink" href="#and_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="and_-6641"><a href="#and_-6641"><span class="linenos">6641</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span> -</span><span id="and_-6642"><a href="#and_-6642"><span class="linenos">6642</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="and_-6643"><a href="#and_-6643"><span class="linenos">6643</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="and_-6644"><a href="#and_-6644"><span class="linenos">6644</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="and_-6645"><a href="#and_-6645"><span class="linenos">6645</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> -</span><span id="and_-6646"><a href="#and_-6646"><span class="linenos">6646</span></a> -</span><span id="and_-6647"><a href="#and_-6647"><span class="linenos">6647</span></a><span class="sd"> Example:</span> -</span><span id="and_-6648"><a href="#and_-6648"><span class="linenos">6648</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> -</span><span id="and_-6649"><a href="#and_-6649"><span class="linenos">6649</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> -</span><span id="and_-6650"><a href="#and_-6650"><span class="linenos">6650</span></a> -</span><span id="and_-6651"><a href="#and_-6651"><span class="linenos">6651</span></a><span class="sd"> Args:</span> -</span><span id="and_-6652"><a href="#and_-6652"><span class="linenos">6652</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="and_-6653"><a href="#and_-6653"><span class="linenos">6653</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="and_-6654"><a href="#and_-6654"><span class="linenos">6654</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="and_-6655"><a href="#and_-6655"><span class="linenos">6655</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> -</span><span id="and_-6656"><a href="#and_-6656"><span class="linenos">6656</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="and_-6648"><a href="#and_-6648"><span class="linenos">6648</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span> +</span><span id="and_-6649"><a href="#and_-6649"><span class="linenos">6649</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="and_-6650"><a href="#and_-6650"><span class="linenos">6650</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="and_-6651"><a href="#and_-6651"><span class="linenos">6651</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="and_-6652"><a href="#and_-6652"><span class="linenos">6652</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> +</span><span id="and_-6653"><a href="#and_-6653"><span class="linenos">6653</span></a> +</span><span id="and_-6654"><a href="#and_-6654"><span class="linenos">6654</span></a><span class="sd"> Example:</span> +</span><span id="and_-6655"><a href="#and_-6655"><span class="linenos">6655</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> +</span><span id="and_-6656"><a href="#and_-6656"><span class="linenos">6656</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> </span><span id="and_-6657"><a href="#and_-6657"><span class="linenos">6657</span></a> -</span><span id="and_-6658"><a href="#and_-6658"><span class="linenos">6658</span></a><span class="sd"> Returns:</span> -</span><span id="and_-6659"><a href="#and_-6659"><span class="linenos">6659</span></a><span class="sd"> The new condition</span> -</span><span id="and_-6660"><a href="#and_-6660"><span class="linenos">6660</span></a><span class="sd"> """</span> -</span><span id="and_-6661"><a href="#and_-6661"><span class="linenos">6661</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="and_-6658"><a href="#and_-6658"><span class="linenos">6658</span></a><span class="sd"> Args:</span> +</span><span id="and_-6659"><a href="#and_-6659"><span class="linenos">6659</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="and_-6660"><a href="#and_-6660"><span class="linenos">6660</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="and_-6661"><a href="#and_-6661"><span class="linenos">6661</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="and_-6662"><a href="#and_-6662"><span class="linenos">6662</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> +</span><span id="and_-6663"><a href="#and_-6663"><span class="linenos">6663</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="and_-6664"><a href="#and_-6664"><span class="linenos">6664</span></a> +</span><span id="and_-6665"><a href="#and_-6665"><span class="linenos">6665</span></a><span class="sd"> Returns:</span> +</span><span id="and_-6666"><a href="#and_-6666"><span class="linenos">6666</span></a><span class="sd"> The new condition</span> +</span><span id="and_-6667"><a href="#and_-6667"><span class="linenos">6667</span></a><span class="sd"> """</span> +</span><span id="and_-6668"><a href="#and_-6668"><span class="linenos">6668</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> </span></pre></div> @@ -98970,27 +99149,27 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#or_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="or_-6664"><a href="#or_-6664"><span class="linenos">6664</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span> -</span><span id="or_-6665"><a href="#or_-6665"><span class="linenos">6665</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="or_-6666"><a href="#or_-6666"><span class="linenos">6666</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="or_-6667"><a href="#or_-6667"><span class="linenos">6667</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="or_-6668"><a href="#or_-6668"><span class="linenos">6668</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> -</span><span id="or_-6669"><a href="#or_-6669"><span class="linenos">6669</span></a> -</span><span id="or_-6670"><a href="#or_-6670"><span class="linenos">6670</span></a><span class="sd"> Example:</span> -</span><span id="or_-6671"><a href="#or_-6671"><span class="linenos">6671</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> -</span><span id="or_-6672"><a href="#or_-6672"><span class="linenos">6672</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> -</span><span id="or_-6673"><a href="#or_-6673"><span class="linenos">6673</span></a> -</span><span id="or_-6674"><a href="#or_-6674"><span class="linenos">6674</span></a><span class="sd"> Args:</span> -</span><span id="or_-6675"><a href="#or_-6675"><span class="linenos">6675</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="or_-6676"><a href="#or_-6676"><span class="linenos">6676</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="or_-6677"><a href="#or_-6677"><span class="linenos">6677</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="or_-6678"><a href="#or_-6678"><span class="linenos">6678</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> -</span><span id="or_-6679"><a href="#or_-6679"><span class="linenos">6679</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="or_-6671"><a href="#or_-6671"><span class="linenos">6671</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span> +</span><span id="or_-6672"><a href="#or_-6672"><span class="linenos">6672</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="or_-6673"><a href="#or_-6673"><span class="linenos">6673</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="or_-6674"><a href="#or_-6674"><span class="linenos">6674</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="or_-6675"><a href="#or_-6675"><span class="linenos">6675</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> +</span><span id="or_-6676"><a href="#or_-6676"><span class="linenos">6676</span></a> +</span><span id="or_-6677"><a href="#or_-6677"><span class="linenos">6677</span></a><span class="sd"> Example:</span> +</span><span id="or_-6678"><a href="#or_-6678"><span class="linenos">6678</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> +</span><span id="or_-6679"><a href="#or_-6679"><span class="linenos">6679</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> </span><span id="or_-6680"><a href="#or_-6680"><span class="linenos">6680</span></a> -</span><span id="or_-6681"><a href="#or_-6681"><span class="linenos">6681</span></a><span class="sd"> Returns:</span> -</span><span id="or_-6682"><a href="#or_-6682"><span class="linenos">6682</span></a><span class="sd"> The new condition</span> -</span><span id="or_-6683"><a href="#or_-6683"><span class="linenos">6683</span></a><span class="sd"> """</span> -</span><span id="or_-6684"><a href="#or_-6684"><span class="linenos">6684</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="or_-6681"><a href="#or_-6681"><span class="linenos">6681</span></a><span class="sd"> Args:</span> +</span><span id="or_-6682"><a href="#or_-6682"><span class="linenos">6682</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="or_-6683"><a href="#or_-6683"><span class="linenos">6683</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="or_-6684"><a href="#or_-6684"><span class="linenos">6684</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="or_-6685"><a href="#or_-6685"><span class="linenos">6685</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> +</span><span id="or_-6686"><a href="#or_-6686"><span class="linenos">6686</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="or_-6687"><a href="#or_-6687"><span class="linenos">6687</span></a> +</span><span id="or_-6688"><a href="#or_-6688"><span class="linenos">6688</span></a><span class="sd"> Returns:</span> +</span><span id="or_-6689"><a href="#or_-6689"><span class="linenos">6689</span></a><span class="sd"> The new condition</span> +</span><span id="or_-6690"><a href="#or_-6690"><span class="linenos">6690</span></a><span class="sd"> """</span> +</span><span id="or_-6691"><a href="#or_-6691"><span class="linenos">6691</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> </span></pre></div> @@ -99036,27 +99215,27 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#xor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="xor-6687"><a href="#xor-6687"><span class="linenos">6687</span></a><span class="k">def</span> <span class="nf">xor</span><span class="p">(</span> -</span><span id="xor-6688"><a href="#xor-6688"><span class="linenos">6688</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="xor-6689"><a href="#xor-6689"><span class="linenos">6689</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="xor-6690"><a href="#xor-6690"><span class="linenos">6690</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="xor-6691"><a href="#xor-6691"><span class="linenos">6691</span></a><span class="sd"> Combine multiple conditions with an XOR logical operator.</span> -</span><span id="xor-6692"><a href="#xor-6692"><span class="linenos">6692</span></a> -</span><span id="xor-6693"><a href="#xor-6693"><span class="linenos">6693</span></a><span class="sd"> Example:</span> -</span><span id="xor-6694"><a href="#xor-6694"><span class="linenos">6694</span></a><span class="sd"> >>> xor("x=1", xor("y=1", "z=1")).sql()</span> -</span><span id="xor-6695"><a href="#xor-6695"><span class="linenos">6695</span></a><span class="sd"> 'x = 1 XOR (y = 1 XOR z = 1)'</span> -</span><span id="xor-6696"><a href="#xor-6696"><span class="linenos">6696</span></a> -</span><span id="xor-6697"><a href="#xor-6697"><span class="linenos">6697</span></a><span class="sd"> Args:</span> -</span><span id="xor-6698"><a href="#xor-6698"><span class="linenos">6698</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="xor-6699"><a href="#xor-6699"><span class="linenos">6699</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="xor-6700"><a href="#xor-6700"><span class="linenos">6700</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="xor-6701"><a href="#xor-6701"><span class="linenos">6701</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> -</span><span id="xor-6702"><a href="#xor-6702"><span class="linenos">6702</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="xor-6694"><a href="#xor-6694"><span class="linenos">6694</span></a><span class="k">def</span> <span class="nf">xor</span><span class="p">(</span> +</span><span id="xor-6695"><a href="#xor-6695"><span class="linenos">6695</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">],</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="xor-6696"><a href="#xor-6696"><span class="linenos">6696</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="xor-6697"><a href="#xor-6697"><span class="linenos">6697</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="xor-6698"><a href="#xor-6698"><span class="linenos">6698</span></a><span class="sd"> Combine multiple conditions with an XOR logical operator.</span> +</span><span id="xor-6699"><a href="#xor-6699"><span class="linenos">6699</span></a> +</span><span id="xor-6700"><a href="#xor-6700"><span class="linenos">6700</span></a><span class="sd"> Example:</span> +</span><span id="xor-6701"><a href="#xor-6701"><span class="linenos">6701</span></a><span class="sd"> >>> xor("x=1", xor("y=1", "z=1")).sql()</span> +</span><span id="xor-6702"><a href="#xor-6702"><span class="linenos">6702</span></a><span class="sd"> 'x = 1 XOR (y = 1 XOR z = 1)'</span> </span><span id="xor-6703"><a href="#xor-6703"><span class="linenos">6703</span></a> -</span><span id="xor-6704"><a href="#xor-6704"><span class="linenos">6704</span></a><span class="sd"> Returns:</span> -</span><span id="xor-6705"><a href="#xor-6705"><span class="linenos">6705</span></a><span class="sd"> The new condition</span> -</span><span id="xor-6706"><a href="#xor-6706"><span class="linenos">6706</span></a><span class="sd"> """</span> -</span><span id="xor-6707"><a href="#xor-6707"><span class="linenos">6707</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Xor</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="xor-6704"><a href="#xor-6704"><span class="linenos">6704</span></a><span class="sd"> Args:</span> +</span><span id="xor-6705"><a href="#xor-6705"><span class="linenos">6705</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="xor-6706"><a href="#xor-6706"><span class="linenos">6706</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="xor-6707"><a href="#xor-6707"><span class="linenos">6707</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="xor-6708"><a href="#xor-6708"><span class="linenos">6708</span></a><span class="sd"> copy: whether to copy `expressions` (only applies to Expressions).</span> +</span><span id="xor-6709"><a href="#xor-6709"><span class="linenos">6709</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="xor-6710"><a href="#xor-6710"><span class="linenos">6710</span></a> +</span><span id="xor-6711"><a href="#xor-6711"><span class="linenos">6711</span></a><span class="sd"> Returns:</span> +</span><span id="xor-6712"><a href="#xor-6712"><span class="linenos">6712</span></a><span class="sd"> The new condition</span> +</span><span id="xor-6713"><a href="#xor-6713"><span class="linenos">6713</span></a><span class="sd"> """</span> +</span><span id="xor-6714"><a href="#xor-6714"><span class="linenos">6714</span></a> <span class="k">return</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Condition</span><span class="p">,</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Xor</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> </span></pre></div> @@ -99102,31 +99281,31 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#not_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="not_-6710"><a href="#not_-6710"><span class="linenos">6710</span></a><span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> -</span><span id="not_-6711"><a href="#not_-6711"><span class="linenos">6711</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="not_-6712"><a href="#not_-6712"><span class="linenos">6712</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> -</span><span id="not_-6713"><a href="#not_-6713"><span class="linenos">6713</span></a> -</span><span id="not_-6714"><a href="#not_-6714"><span class="linenos">6714</span></a><span class="sd"> Example:</span> -</span><span id="not_-6715"><a href="#not_-6715"><span class="linenos">6715</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> -</span><span id="not_-6716"><a href="#not_-6716"><span class="linenos">6716</span></a><span class="sd"> "NOT this_suit = 'black'"</span> -</span><span id="not_-6717"><a href="#not_-6717"><span class="linenos">6717</span></a> -</span><span id="not_-6718"><a href="#not_-6718"><span class="linenos">6718</span></a><span class="sd"> Args:</span> -</span><span id="not_-6719"><a href="#not_-6719"><span class="linenos">6719</span></a><span class="sd"> expression: the SQL code string to parse.</span> -</span><span id="not_-6720"><a href="#not_-6720"><span class="linenos">6720</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="not_-6721"><a href="#not_-6721"><span class="linenos">6721</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="not_-6722"><a href="#not_-6722"><span class="linenos">6722</span></a><span class="sd"> copy: whether to copy the expression or not.</span> -</span><span id="not_-6723"><a href="#not_-6723"><span class="linenos">6723</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="not_-6717"><a href="#not_-6717"><span class="linenos">6717</span></a><span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> +</span><span id="not_-6718"><a href="#not_-6718"><span class="linenos">6718</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="not_-6719"><a href="#not_-6719"><span class="linenos">6719</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> +</span><span id="not_-6720"><a href="#not_-6720"><span class="linenos">6720</span></a> +</span><span id="not_-6721"><a href="#not_-6721"><span class="linenos">6721</span></a><span class="sd"> Example:</span> +</span><span id="not_-6722"><a href="#not_-6722"><span class="linenos">6722</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> +</span><span id="not_-6723"><a href="#not_-6723"><span class="linenos">6723</span></a><span class="sd"> "NOT this_suit = 'black'"</span> </span><span id="not_-6724"><a href="#not_-6724"><span class="linenos">6724</span></a> -</span><span id="not_-6725"><a href="#not_-6725"><span class="linenos">6725</span></a><span class="sd"> Returns:</span> -</span><span id="not_-6726"><a href="#not_-6726"><span class="linenos">6726</span></a><span class="sd"> The new condition.</span> -</span><span id="not_-6727"><a href="#not_-6727"><span class="linenos">6727</span></a><span class="sd"> """</span> -</span><span id="not_-6728"><a href="#not_-6728"><span class="linenos">6728</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> -</span><span id="not_-6729"><a href="#not_-6729"><span class="linenos">6729</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="not_-6730"><a href="#not_-6730"><span class="linenos">6730</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="not_-6731"><a href="#not_-6731"><span class="linenos">6731</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="not_-6732"><a href="#not_-6732"><span class="linenos">6732</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="not_-6733"><a href="#not_-6733"><span class="linenos">6733</span></a> <span class="p">)</span> -</span><span id="not_-6734"><a href="#not_-6734"><span class="linenos">6734</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Connector</span><span class="p">))</span> +</span><span id="not_-6725"><a href="#not_-6725"><span class="linenos">6725</span></a><span class="sd"> Args:</span> +</span><span id="not_-6726"><a href="#not_-6726"><span class="linenos">6726</span></a><span class="sd"> expression: the SQL code string to parse.</span> +</span><span id="not_-6727"><a href="#not_-6727"><span class="linenos">6727</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="not_-6728"><a href="#not_-6728"><span class="linenos">6728</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="not_-6729"><a href="#not_-6729"><span class="linenos">6729</span></a><span class="sd"> copy: whether to copy the expression or not.</span> +</span><span id="not_-6730"><a href="#not_-6730"><span class="linenos">6730</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="not_-6731"><a href="#not_-6731"><span class="linenos">6731</span></a> +</span><span id="not_-6732"><a href="#not_-6732"><span class="linenos">6732</span></a><span class="sd"> Returns:</span> +</span><span id="not_-6733"><a href="#not_-6733"><span class="linenos">6733</span></a><span class="sd"> The new condition.</span> +</span><span id="not_-6734"><a href="#not_-6734"><span class="linenos">6734</span></a><span class="sd"> """</span> +</span><span id="not_-6735"><a href="#not_-6735"><span class="linenos">6735</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> +</span><span id="not_-6736"><a href="#not_-6736"><span class="linenos">6736</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="not_-6737"><a href="#not_-6737"><span class="linenos">6737</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="not_-6738"><a href="#not_-6738"><span class="linenos">6738</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="not_-6739"><a href="#not_-6739"><span class="linenos">6739</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="not_-6740"><a href="#not_-6740"><span class="linenos">6740</span></a> <span class="p">)</span> +</span><span id="not_-6741"><a href="#not_-6741"><span class="linenos">6741</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Connector</span><span class="p">))</span> </span></pre></div> @@ -99172,23 +99351,23 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#paren"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="paren-6737"><a href="#paren-6737"><span class="linenos">6737</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> -</span><span id="paren-6738"><a href="#paren-6738"><span class="linenos">6738</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="paren-6739"><a href="#paren-6739"><span class="linenos">6739</span></a><span class="sd"> Wrap an expression in parentheses.</span> -</span><span id="paren-6740"><a href="#paren-6740"><span class="linenos">6740</span></a> -</span><span id="paren-6741"><a href="#paren-6741"><span class="linenos">6741</span></a><span class="sd"> Example:</span> -</span><span id="paren-6742"><a href="#paren-6742"><span class="linenos">6742</span></a><span class="sd"> >>> paren("5 + 3").sql()</span> -</span><span id="paren-6743"><a href="#paren-6743"><span class="linenos">6743</span></a><span class="sd"> '(5 + 3)'</span> -</span><span id="paren-6744"><a href="#paren-6744"><span class="linenos">6744</span></a> -</span><span id="paren-6745"><a href="#paren-6745"><span class="linenos">6745</span></a><span class="sd"> Args:</span> -</span><span id="paren-6746"><a href="#paren-6746"><span class="linenos">6746</span></a><span class="sd"> expression: the SQL code string to parse.</span> -</span><span id="paren-6747"><a href="#paren-6747"><span class="linenos">6747</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="paren-6748"><a href="#paren-6748"><span class="linenos">6748</span></a><span class="sd"> copy: whether to copy the expression or not.</span> -</span><span id="paren-6749"><a href="#paren-6749"><span class="linenos">6749</span></a> -</span><span id="paren-6750"><a href="#paren-6750"><span class="linenos">6750</span></a><span class="sd"> Returns:</span> -</span><span id="paren-6751"><a href="#paren-6751"><span class="linenos">6751</span></a><span class="sd"> The wrapped expression.</span> -</span><span id="paren-6752"><a href="#paren-6752"><span class="linenos">6752</span></a><span class="sd"> """</span> -</span><span id="paren-6753"><a href="#paren-6753"><span class="linenos">6753</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="paren-6744"><a href="#paren-6744"><span class="linenos">6744</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> +</span><span id="paren-6745"><a href="#paren-6745"><span class="linenos">6745</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="paren-6746"><a href="#paren-6746"><span class="linenos">6746</span></a><span class="sd"> Wrap an expression in parentheses.</span> +</span><span id="paren-6747"><a href="#paren-6747"><span class="linenos">6747</span></a> +</span><span id="paren-6748"><a href="#paren-6748"><span class="linenos">6748</span></a><span class="sd"> Example:</span> +</span><span id="paren-6749"><a href="#paren-6749"><span class="linenos">6749</span></a><span class="sd"> >>> paren("5 + 3").sql()</span> +</span><span id="paren-6750"><a href="#paren-6750"><span class="linenos">6750</span></a><span class="sd"> '(5 + 3)'</span> +</span><span id="paren-6751"><a href="#paren-6751"><span class="linenos">6751</span></a> +</span><span id="paren-6752"><a href="#paren-6752"><span class="linenos">6752</span></a><span class="sd"> Args:</span> +</span><span id="paren-6753"><a href="#paren-6753"><span class="linenos">6753</span></a><span class="sd"> expression: the SQL code string to parse.</span> +</span><span id="paren-6754"><a href="#paren-6754"><span class="linenos">6754</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="paren-6755"><a href="#paren-6755"><span class="linenos">6755</span></a><span class="sd"> copy: whether to copy the expression or not.</span> +</span><span id="paren-6756"><a href="#paren-6756"><span class="linenos">6756</span></a> +</span><span id="paren-6757"><a href="#paren-6757"><span class="linenos">6757</span></a><span class="sd"> Returns:</span> +</span><span id="paren-6758"><a href="#paren-6758"><span class="linenos">6758</span></a><span class="sd"> The wrapped expression.</span> +</span><span id="paren-6759"><a href="#paren-6759"><span class="linenos">6759</span></a><span class="sd"> """</span> +</span><span id="paren-6760"><a href="#paren-6760"><span class="linenos">6760</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> </span></pre></div> @@ -99244,31 +99423,31 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#to_identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_identifier-6769"><a href="#to_identifier-6769"><span class="linenos">6769</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="to_identifier-6770"><a href="#to_identifier-6770"><span class="linenos">6770</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> -</span><span id="to_identifier-6771"><a href="#to_identifier-6771"><span class="linenos">6771</span></a> -</span><span id="to_identifier-6772"><a href="#to_identifier-6772"><span class="linenos">6772</span></a><span class="sd"> Args:</span> -</span><span id="to_identifier-6773"><a href="#to_identifier-6773"><span class="linenos">6773</span></a><span class="sd"> name: The name to turn into an identifier.</span> -</span><span id="to_identifier-6774"><a href="#to_identifier-6774"><span class="linenos">6774</span></a><span class="sd"> quoted: Whether to force quote the identifier.</span> -</span><span id="to_identifier-6775"><a href="#to_identifier-6775"><span class="linenos">6775</span></a><span class="sd"> copy: Whether to copy name if it's an Identifier.</span> -</span><span id="to_identifier-6776"><a href="#to_identifier-6776"><span class="linenos">6776</span></a> -</span><span id="to_identifier-6777"><a href="#to_identifier-6777"><span class="linenos">6777</span></a><span class="sd"> Returns:</span> -</span><span id="to_identifier-6778"><a href="#to_identifier-6778"><span class="linenos">6778</span></a><span class="sd"> The identifier ast node.</span> -</span><span id="to_identifier-6779"><a href="#to_identifier-6779"><span class="linenos">6779</span></a><span class="sd"> """</span> -</span><span id="to_identifier-6780"><a href="#to_identifier-6780"><span class="linenos">6780</span></a> -</span><span id="to_identifier-6781"><a href="#to_identifier-6781"><span class="linenos">6781</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="to_identifier-6782"><a href="#to_identifier-6782"><span class="linenos">6782</span></a> <span class="k">return</span> <span class="kc">None</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_identifier-6776"><a href="#to_identifier-6776"><span class="linenos">6776</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="to_identifier-6777"><a href="#to_identifier-6777"><span class="linenos">6777</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> +</span><span id="to_identifier-6778"><a href="#to_identifier-6778"><span class="linenos">6778</span></a> +</span><span id="to_identifier-6779"><a href="#to_identifier-6779"><span class="linenos">6779</span></a><span class="sd"> Args:</span> +</span><span id="to_identifier-6780"><a href="#to_identifier-6780"><span class="linenos">6780</span></a><span class="sd"> name: The name to turn into an identifier.</span> +</span><span id="to_identifier-6781"><a href="#to_identifier-6781"><span class="linenos">6781</span></a><span class="sd"> quoted: Whether to force quote the identifier.</span> +</span><span id="to_identifier-6782"><a href="#to_identifier-6782"><span class="linenos">6782</span></a><span class="sd"> copy: Whether to copy name if it's an Identifier.</span> </span><span id="to_identifier-6783"><a href="#to_identifier-6783"><span class="linenos">6783</span></a> -</span><span id="to_identifier-6784"><a href="#to_identifier-6784"><span class="linenos">6784</span></a> <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="n">Identifier</span><span class="p">):</span> -</span><span id="to_identifier-6785"><a href="#to_identifier-6785"><span class="linenos">6785</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="to_identifier-6786"><a href="#to_identifier-6786"><span class="linenos">6786</span></a> <span class="k">elif</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><span id="to_identifier-6787"><a href="#to_identifier-6787"><span class="linenos">6787</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> -</span><span id="to_identifier-6788"><a href="#to_identifier-6788"><span class="linenos">6788</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> -</span><span id="to_identifier-6789"><a href="#to_identifier-6789"><span class="linenos">6789</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> -</span><span id="to_identifier-6790"><a href="#to_identifier-6790"><span class="linenos">6790</span></a> <span class="p">)</span> -</span><span id="to_identifier-6791"><a href="#to_identifier-6791"><span class="linenos">6791</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="to_identifier-6792"><a href="#to_identifier-6792"><span class="linenos">6792</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="to_identifier-6793"><a href="#to_identifier-6793"><span class="linenos">6793</span></a> <span class="k">return</span> <span class="n">identifier</span> +</span><span id="to_identifier-6784"><a href="#to_identifier-6784"><span class="linenos">6784</span></a><span class="sd"> Returns:</span> +</span><span id="to_identifier-6785"><a href="#to_identifier-6785"><span class="linenos">6785</span></a><span class="sd"> The identifier ast node.</span> +</span><span id="to_identifier-6786"><a href="#to_identifier-6786"><span class="linenos">6786</span></a><span class="sd"> """</span> +</span><span id="to_identifier-6787"><a href="#to_identifier-6787"><span class="linenos">6787</span></a> +</span><span id="to_identifier-6788"><a href="#to_identifier-6788"><span class="linenos">6788</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="to_identifier-6789"><a href="#to_identifier-6789"><span class="linenos">6789</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="to_identifier-6790"><a href="#to_identifier-6790"><span class="linenos">6790</span></a> +</span><span id="to_identifier-6791"><a href="#to_identifier-6791"><span class="linenos">6791</span></a> <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="n">Identifier</span><span class="p">):</span> +</span><span id="to_identifier-6792"><a href="#to_identifier-6792"><span class="linenos">6792</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="to_identifier-6793"><a href="#to_identifier-6793"><span class="linenos">6793</span></a> <span class="k">elif</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><span id="to_identifier-6794"><a href="#to_identifier-6794"><span class="linenos">6794</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> +</span><span id="to_identifier-6795"><a href="#to_identifier-6795"><span class="linenos">6795</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> +</span><span id="to_identifier-6796"><a href="#to_identifier-6796"><span class="linenos">6796</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> +</span><span id="to_identifier-6797"><a href="#to_identifier-6797"><span class="linenos">6797</span></a> <span class="p">)</span> +</span><span id="to_identifier-6798"><a href="#to_identifier-6798"><span class="linenos">6798</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="to_identifier-6799"><a href="#to_identifier-6799"><span class="linenos">6799</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="to_identifier-6800"><a href="#to_identifier-6800"><span class="linenos">6800</span></a> <span class="k">return</span> <span class="n">identifier</span> </span></pre></div> @@ -99302,23 +99481,23 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#parse_identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="parse_identifier-6796"><a href="#parse_identifier-6796"><span class="linenos">6796</span></a><span class="k">def</span> <span class="nf">parse_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> -</span><span id="parse_identifier-6797"><a href="#parse_identifier-6797"><span class="linenos">6797</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="parse_identifier-6798"><a href="#parse_identifier-6798"><span class="linenos">6798</span></a><span class="sd"> Parses a given string into an identifier.</span> -</span><span id="parse_identifier-6799"><a href="#parse_identifier-6799"><span class="linenos">6799</span></a> -</span><span id="parse_identifier-6800"><a href="#parse_identifier-6800"><span class="linenos">6800</span></a><span class="sd"> Args:</span> -</span><span id="parse_identifier-6801"><a href="#parse_identifier-6801"><span class="linenos">6801</span></a><span class="sd"> name: The name to parse into an identifier.</span> -</span><span id="parse_identifier-6802"><a href="#parse_identifier-6802"><span class="linenos">6802</span></a><span class="sd"> dialect: The dialect to parse against.</span> -</span><span id="parse_identifier-6803"><a href="#parse_identifier-6803"><span class="linenos">6803</span></a> -</span><span id="parse_identifier-6804"><a href="#parse_identifier-6804"><span class="linenos">6804</span></a><span class="sd"> Returns:</span> -</span><span id="parse_identifier-6805"><a href="#parse_identifier-6805"><span class="linenos">6805</span></a><span class="sd"> The identifier ast node.</span> -</span><span id="parse_identifier-6806"><a href="#parse_identifier-6806"><span class="linenos">6806</span></a><span class="sd"> """</span> -</span><span id="parse_identifier-6807"><a href="#parse_identifier-6807"><span class="linenos">6807</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="parse_identifier-6808"><a href="#parse_identifier-6808"><span class="linenos">6808</span></a> <span class="n">expression</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">Identifier</span><span class="p">)</span> -</span><span id="parse_identifier-6809"><a href="#parse_identifier-6809"><span class="linenos">6809</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="parse_identifier-6810"><a href="#parse_identifier-6810"><span class="linenos">6810</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> -</span><span id="parse_identifier-6811"><a href="#parse_identifier-6811"><span class="linenos">6811</span></a> -</span><span id="parse_identifier-6812"><a href="#parse_identifier-6812"><span class="linenos">6812</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="parse_identifier-6803"><a href="#parse_identifier-6803"><span class="linenos">6803</span></a><span class="k">def</span> <span class="nf">parse_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> +</span><span id="parse_identifier-6804"><a href="#parse_identifier-6804"><span class="linenos">6804</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="parse_identifier-6805"><a href="#parse_identifier-6805"><span class="linenos">6805</span></a><span class="sd"> Parses a given string into an identifier.</span> +</span><span id="parse_identifier-6806"><a href="#parse_identifier-6806"><span class="linenos">6806</span></a> +</span><span id="parse_identifier-6807"><a href="#parse_identifier-6807"><span class="linenos">6807</span></a><span class="sd"> Args:</span> +</span><span id="parse_identifier-6808"><a href="#parse_identifier-6808"><span class="linenos">6808</span></a><span class="sd"> name: The name to parse into an identifier.</span> +</span><span id="parse_identifier-6809"><a href="#parse_identifier-6809"><span class="linenos">6809</span></a><span class="sd"> dialect: The dialect to parse against.</span> +</span><span id="parse_identifier-6810"><a href="#parse_identifier-6810"><span class="linenos">6810</span></a> +</span><span id="parse_identifier-6811"><a href="#parse_identifier-6811"><span class="linenos">6811</span></a><span class="sd"> Returns:</span> +</span><span id="parse_identifier-6812"><a href="#parse_identifier-6812"><span class="linenos">6812</span></a><span class="sd"> The identifier ast node.</span> +</span><span id="parse_identifier-6813"><a href="#parse_identifier-6813"><span class="linenos">6813</span></a><span class="sd"> """</span> +</span><span id="parse_identifier-6814"><a href="#parse_identifier-6814"><span class="linenos">6814</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="parse_identifier-6815"><a href="#parse_identifier-6815"><span class="linenos">6815</span></a> <span class="n">expression</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">Identifier</span><span class="p">)</span> +</span><span id="parse_identifier-6816"><a href="#parse_identifier-6816"><span class="linenos">6816</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="parse_identifier-6817"><a href="#parse_identifier-6817"><span class="linenos">6817</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> +</span><span id="parse_identifier-6818"><a href="#parse_identifier-6818"><span class="linenos">6818</span></a> +</span><span id="parse_identifier-6819"><a href="#parse_identifier-6819"><span class="linenos">6819</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -99363,23 +99542,23 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#to_interval"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_interval-6818"><a href="#to_interval-6818"><span class="linenos">6818</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> -</span><span id="to_interval-6819"><a href="#to_interval-6819"><span class="linenos">6819</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> -</span><span id="to_interval-6820"><a href="#to_interval-6820"><span class="linenos">6820</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> -</span><span id="to_interval-6821"><a href="#to_interval-6821"><span class="linenos">6821</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="to_interval-6822"><a href="#to_interval-6822"><span class="linenos">6822</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> -</span><span id="to_interval-6823"><a href="#to_interval-6823"><span class="linenos">6823</span></a> -</span><span id="to_interval-6824"><a href="#to_interval-6824"><span class="linenos">6824</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> -</span><span id="to_interval-6825"><a href="#to_interval-6825"><span class="linenos">6825</span></a> -</span><span id="to_interval-6826"><a href="#to_interval-6826"><span class="linenos">6826</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="to_interval-6827"><a href="#to_interval-6827"><span class="linenos">6827</span></a> -</span><span id="to_interval-6828"><a href="#to_interval-6828"><span class="linenos">6828</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> -</span><span id="to_interval-6829"><a href="#to_interval-6829"><span class="linenos">6829</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_interval-6825"><a href="#to_interval-6825"><span class="linenos">6825</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> +</span><span id="to_interval-6826"><a href="#to_interval-6826"><span class="linenos">6826</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> +</span><span id="to_interval-6827"><a href="#to_interval-6827"><span class="linenos">6827</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> +</span><span id="to_interval-6828"><a href="#to_interval-6828"><span class="linenos">6828</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="to_interval-6829"><a href="#to_interval-6829"><span class="linenos">6829</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> </span><span id="to_interval-6830"><a href="#to_interval-6830"><span class="linenos">6830</span></a> -</span><span id="to_interval-6831"><a href="#to_interval-6831"><span class="linenos">6831</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="to_interval-6832"><a href="#to_interval-6832"><span class="linenos">6832</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="to_interval-6833"><a href="#to_interval-6833"><span class="linenos">6833</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> -</span><span id="to_interval-6834"><a href="#to_interval-6834"><span class="linenos">6834</span></a> <span class="p">)</span> +</span><span id="to_interval-6831"><a href="#to_interval-6831"><span class="linenos">6831</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> +</span><span id="to_interval-6832"><a href="#to_interval-6832"><span class="linenos">6832</span></a> +</span><span id="to_interval-6833"><a href="#to_interval-6833"><span class="linenos">6833</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="to_interval-6834"><a href="#to_interval-6834"><span class="linenos">6834</span></a> +</span><span id="to_interval-6835"><a href="#to_interval-6835"><span class="linenos">6835</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> +</span><span id="to_interval-6836"><a href="#to_interval-6836"><span class="linenos">6836</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="to_interval-6837"><a href="#to_interval-6837"><span class="linenos">6837</span></a> +</span><span id="to_interval-6838"><a href="#to_interval-6838"><span class="linenos">6838</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="to_interval-6839"><a href="#to_interval-6839"><span class="linenos">6839</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="to_interval-6840"><a href="#to_interval-6840"><span class="linenos">6840</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> +</span><span id="to_interval-6841"><a href="#to_interval-6841"><span class="linenos">6841</span></a> <span class="p">)</span> </span></pre></div> @@ -99399,31 +99578,31 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#to_table"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_table-6837"><a href="#to_table-6837"><span class="linenos">6837</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span> -</span><span id="to_table-6838"><a href="#to_table-6838"><span class="linenos">6838</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="to_table-6839"><a href="#to_table-6839"><span class="linenos">6839</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> -</span><span id="to_table-6840"><a href="#to_table-6840"><span class="linenos">6840</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="to_table-6841"><a href="#to_table-6841"><span class="linenos">6841</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> -</span><span id="to_table-6842"><a href="#to_table-6842"><span class="linenos">6842</span></a><span class="sd"> If a table is passed in then that table is returned.</span> -</span><span id="to_table-6843"><a href="#to_table-6843"><span class="linenos">6843</span></a> -</span><span id="to_table-6844"><a href="#to_table-6844"><span class="linenos">6844</span></a><span class="sd"> Args:</span> -</span><span id="to_table-6845"><a href="#to_table-6845"><span class="linenos">6845</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> -</span><span id="to_table-6846"><a href="#to_table-6846"><span class="linenos">6846</span></a><span class="sd"> dialect: the source dialect according to which the table name will be parsed.</span> -</span><span id="to_table-6847"><a href="#to_table-6847"><span class="linenos">6847</span></a><span class="sd"> copy: Whether to copy a table if it is passed in.</span> -</span><span id="to_table-6848"><a href="#to_table-6848"><span class="linenos">6848</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Table` expression with.</span> -</span><span id="to_table-6849"><a href="#to_table-6849"><span class="linenos">6849</span></a> -</span><span id="to_table-6850"><a href="#to_table-6850"><span class="linenos">6850</span></a><span class="sd"> Returns:</span> -</span><span id="to_table-6851"><a href="#to_table-6851"><span class="linenos">6851</span></a><span class="sd"> A table expression.</span> -</span><span id="to_table-6852"><a href="#to_table-6852"><span class="linenos">6852</span></a><span class="sd"> """</span> -</span><span id="to_table-6853"><a href="#to_table-6853"><span class="linenos">6853</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="to_table-6854"><a href="#to_table-6854"><span class="linenos">6854</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="to_table-6855"><a href="#to_table-6855"><span class="linenos">6855</span></a> -</span><span id="to_table-6856"><a href="#to_table-6856"><span class="linenos">6856</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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="to_table-6857"><a href="#to_table-6857"><span class="linenos">6857</span></a> -</span><span id="to_table-6858"><a href="#to_table-6858"><span class="linenos">6858</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="to_table-6859"><a href="#to_table-6859"><span class="linenos">6859</span></a> <span class="n">table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> -</span><span id="to_table-6860"><a href="#to_table-6860"><span class="linenos">6860</span></a> -</span><span id="to_table-6861"><a href="#to_table-6861"><span class="linenos">6861</span></a> <span class="k">return</span> <span class="n">table</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_table-6844"><a href="#to_table-6844"><span class="linenos">6844</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span> +</span><span id="to_table-6845"><a href="#to_table-6845"><span class="linenos">6845</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="to_table-6846"><a href="#to_table-6846"><span class="linenos">6846</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="to_table-6847"><a href="#to_table-6847"><span class="linenos">6847</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="to_table-6848"><a href="#to_table-6848"><span class="linenos">6848</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> +</span><span id="to_table-6849"><a href="#to_table-6849"><span class="linenos">6849</span></a><span class="sd"> If a table is passed in then that table is returned.</span> +</span><span id="to_table-6850"><a href="#to_table-6850"><span class="linenos">6850</span></a> +</span><span id="to_table-6851"><a href="#to_table-6851"><span class="linenos">6851</span></a><span class="sd"> Args:</span> +</span><span id="to_table-6852"><a href="#to_table-6852"><span class="linenos">6852</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> +</span><span id="to_table-6853"><a href="#to_table-6853"><span class="linenos">6853</span></a><span class="sd"> dialect: the source dialect according to which the table name will be parsed.</span> +</span><span id="to_table-6854"><a href="#to_table-6854"><span class="linenos">6854</span></a><span class="sd"> copy: Whether to copy a table if it is passed in.</span> +</span><span id="to_table-6855"><a href="#to_table-6855"><span class="linenos">6855</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Table` expression with.</span> +</span><span id="to_table-6856"><a href="#to_table-6856"><span class="linenos">6856</span></a> +</span><span id="to_table-6857"><a href="#to_table-6857"><span class="linenos">6857</span></a><span class="sd"> Returns:</span> +</span><span id="to_table-6858"><a href="#to_table-6858"><span class="linenos">6858</span></a><span class="sd"> A table expression.</span> +</span><span id="to_table-6859"><a href="#to_table-6859"><span class="linenos">6859</span></a><span class="sd"> """</span> +</span><span id="to_table-6860"><a href="#to_table-6860"><span class="linenos">6860</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="to_table-6861"><a href="#to_table-6861"><span class="linenos">6861</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="to_table-6862"><a href="#to_table-6862"><span class="linenos">6862</span></a> +</span><span id="to_table-6863"><a href="#to_table-6863"><span class="linenos">6863</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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="to_table-6864"><a href="#to_table-6864"><span class="linenos">6864</span></a> +</span><span id="to_table-6865"><a href="#to_table-6865"><span class="linenos">6865</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="to_table-6866"><a href="#to_table-6866"><span class="linenos">6866</span></a> <span class="n">table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> +</span><span id="to_table-6867"><a href="#to_table-6867"><span class="linenos">6867</span></a> +</span><span id="to_table-6868"><a href="#to_table-6868"><span class="linenos">6868</span></a> <span class="k">return</span> <span class="n">table</span> </span></pre></div> @@ -99459,43 +99638,43 @@ If a table is passed in then that table is returned.</p> </div> <a class="headerlink" href="#to_column"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_column-6864"><a href="#to_column-6864"><span class="linenos">6864</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span> -</span><span id="to_column-6865"><a href="#to_column-6865"><span class="linenos">6865</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> -</span><span id="to_column-6866"><a href="#to_column-6866"><span class="linenos">6866</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="to_column-6867"><a href="#to_column-6867"><span class="linenos">6867</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="to_column-6868"><a href="#to_column-6868"><span class="linenos">6868</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="to_column-6869"><a href="#to_column-6869"><span class="linenos">6869</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="to_column-6870"><a href="#to_column-6870"><span class="linenos">6870</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="to_column-6871"><a href="#to_column-6871"><span class="linenos">6871</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="to_column-6872"><a href="#to_column-6872"><span class="linenos">6872</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Table is optional.</span> -</span><span id="to_column-6873"><a href="#to_column-6873"><span class="linenos">6873</span></a><span class="sd"> If a column is passed in then that column is returned.</span> -</span><span id="to_column-6874"><a href="#to_column-6874"><span class="linenos">6874</span></a> -</span><span id="to_column-6875"><a href="#to_column-6875"><span class="linenos">6875</span></a><span class="sd"> Args:</span> -</span><span id="to_column-6876"><a href="#to_column-6876"><span class="linenos">6876</span></a><span class="sd"> sql_path: a `[table].[column]` string.</span> -</span><span id="to_column-6877"><a href="#to_column-6877"><span class="linenos">6877</span></a><span class="sd"> quoted: Whether or not to force quote identifiers.</span> -</span><span id="to_column-6878"><a href="#to_column-6878"><span class="linenos">6878</span></a><span class="sd"> dialect: the source dialect according to which the column name will be parsed.</span> -</span><span id="to_column-6879"><a href="#to_column-6879"><span class="linenos">6879</span></a><span class="sd"> copy: Whether to copy a column if it is passed in.</span> -</span><span id="to_column-6880"><a href="#to_column-6880"><span class="linenos">6880</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Column` expression with.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_column-6871"><a href="#to_column-6871"><span class="linenos">6871</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span> +</span><span id="to_column-6872"><a href="#to_column-6872"><span class="linenos">6872</span></a> <span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> +</span><span id="to_column-6873"><a href="#to_column-6873"><span class="linenos">6873</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="to_column-6874"><a href="#to_column-6874"><span class="linenos">6874</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="to_column-6875"><a href="#to_column-6875"><span class="linenos">6875</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="to_column-6876"><a href="#to_column-6876"><span class="linenos">6876</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="to_column-6877"><a href="#to_column-6877"><span class="linenos">6877</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="to_column-6878"><a href="#to_column-6878"><span class="linenos">6878</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="to_column-6879"><a href="#to_column-6879"><span class="linenos">6879</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Table is optional.</span> +</span><span id="to_column-6880"><a href="#to_column-6880"><span class="linenos">6880</span></a><span class="sd"> If a column is passed in then that column is returned.</span> </span><span id="to_column-6881"><a href="#to_column-6881"><span class="linenos">6881</span></a> -</span><span id="to_column-6882"><a href="#to_column-6882"><span class="linenos">6882</span></a><span class="sd"> Returns:</span> -</span><span id="to_column-6883"><a href="#to_column-6883"><span class="linenos">6883</span></a><span class="sd"> A column expression.</span> -</span><span id="to_column-6884"><a href="#to_column-6884"><span class="linenos">6884</span></a><span class="sd"> """</span> -</span><span id="to_column-6885"><a href="#to_column-6885"><span class="linenos">6885</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="to_column-6886"><a href="#to_column-6886"><span class="linenos">6886</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="to_column-6887"><a href="#to_column-6887"><span class="linenos">6887</span></a> -</span><span id="to_column-6888"><a href="#to_column-6888"><span class="linenos">6888</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="to_column-6889"><a href="#to_column-6889"><span class="linenos">6889</span></a> <span class="n">col</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Column</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="to_column-6890"><a href="#to_column-6890"><span class="linenos">6890</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="to_column-6891"><a href="#to_column-6891"><span class="linenos">6891</span></a> <span class="k">return</span> <span class="n">column</span><span class="p">(</span><span class="o">*</span><span class="nb">reversed</span><span class="p">(</span><span class="n">sql_path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)),</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="to_column-6892"><a href="#to_column-6892"><span class="linenos">6892</span></a> -</span><span id="to_column-6893"><a href="#to_column-6893"><span class="linenos">6893</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="to_column-6894"><a href="#to_column-6894"><span class="linenos">6894</span></a> <span class="n">col</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> -</span><span id="to_column-6895"><a href="#to_column-6895"><span class="linenos">6895</span></a> -</span><span id="to_column-6896"><a href="#to_column-6896"><span class="linenos">6896</span></a> <span class="k">if</span> <span class="n">quoted</span><span class="p">:</span> -</span><span id="to_column-6897"><a href="#to_column-6897"><span class="linenos">6897</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">col</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="to_column-6898"><a href="#to_column-6898"><span class="linenos">6898</span></a> <span class="n">i</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"quoted"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="to_column-6882"><a href="#to_column-6882"><span class="linenos">6882</span></a><span class="sd"> Args:</span> +</span><span id="to_column-6883"><a href="#to_column-6883"><span class="linenos">6883</span></a><span class="sd"> sql_path: a `[table].[column]` string.</span> +</span><span id="to_column-6884"><a href="#to_column-6884"><span class="linenos">6884</span></a><span class="sd"> quoted: Whether or not to force quote identifiers.</span> +</span><span id="to_column-6885"><a href="#to_column-6885"><span class="linenos">6885</span></a><span class="sd"> dialect: the source dialect according to which the column name will be parsed.</span> +</span><span id="to_column-6886"><a href="#to_column-6886"><span class="linenos">6886</span></a><span class="sd"> copy: Whether to copy a column if it is passed in.</span> +</span><span id="to_column-6887"><a href="#to_column-6887"><span class="linenos">6887</span></a><span class="sd"> kwargs: the kwargs to instantiate the resulting `Column` expression with.</span> +</span><span id="to_column-6888"><a href="#to_column-6888"><span class="linenos">6888</span></a> +</span><span id="to_column-6889"><a href="#to_column-6889"><span class="linenos">6889</span></a><span class="sd"> Returns:</span> +</span><span id="to_column-6890"><a href="#to_column-6890"><span class="linenos">6890</span></a><span class="sd"> A column expression.</span> +</span><span id="to_column-6891"><a href="#to_column-6891"><span class="linenos">6891</span></a><span class="sd"> """</span> +</span><span id="to_column-6892"><a href="#to_column-6892"><span class="linenos">6892</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="to_column-6893"><a href="#to_column-6893"><span class="linenos">6893</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="to_column-6894"><a href="#to_column-6894"><span class="linenos">6894</span></a> +</span><span id="to_column-6895"><a href="#to_column-6895"><span class="linenos">6895</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="to_column-6896"><a href="#to_column-6896"><span class="linenos">6896</span></a> <span class="n">col</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Column</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="to_column-6897"><a href="#to_column-6897"><span class="linenos">6897</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="to_column-6898"><a href="#to_column-6898"><span class="linenos">6898</span></a> <span class="k">return</span> <span class="n">column</span><span class="p">(</span><span class="o">*</span><span class="nb">reversed</span><span class="p">(</span><span class="n">sql_path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)),</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="to_column-6899"><a href="#to_column-6899"><span class="linenos">6899</span></a> -</span><span id="to_column-6900"><a href="#to_column-6900"><span class="linenos">6900</span></a> <span class="k">return</span> <span class="n">col</span> +</span><span id="to_column-6900"><a href="#to_column-6900"><span class="linenos">6900</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">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="to_column-6901"><a href="#to_column-6901"><span class="linenos">6901</span></a> <span class="n">col</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> +</span><span id="to_column-6902"><a href="#to_column-6902"><span class="linenos">6902</span></a> +</span><span id="to_column-6903"><a href="#to_column-6903"><span class="linenos">6903</span></a> <span class="k">if</span> <span class="n">quoted</span><span class="p">:</span> +</span><span id="to_column-6904"><a href="#to_column-6904"><span class="linenos">6904</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">col</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="to_column-6905"><a href="#to_column-6905"><span class="linenos">6905</span></a> <span class="n">i</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"quoted"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="to_column-6906"><a href="#to_column-6906"><span class="linenos">6906</span></a> +</span><span id="to_column-6907"><a href="#to_column-6907"><span class="linenos">6907</span></a> <span class="k">return</span> <span class="n">col</span> </span></pre></div> @@ -99532,61 +99711,61 @@ If a column is passed in then that column is returned.</p> </div> <a class="headerlink" href="#alias_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="alias_-6903"><a href="#alias_-6903"><span class="linenos">6903</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> -</span><span id="alias_-6904"><a href="#alias_-6904"><span class="linenos">6904</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="alias_-6905"><a href="#alias_-6905"><span class="linenos">6905</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">],</span> -</span><span id="alias_-6906"><a href="#alias_-6906"><span class="linenos">6906</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</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="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="alias_-6907"><a href="#alias_-6907"><span class="linenos">6907</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="alias_-6908"><a href="#alias_-6908"><span class="linenos">6908</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="alias_-6909"><a href="#alias_-6909"><span class="linenos">6909</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="alias_-6910"><a href="#alias_-6910"><span class="linenos">6910</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="alias_-6911"><a href="#alias_-6911"><span class="linenos">6911</span></a><span class="p">):</span> -</span><span id="alias_-6912"><a href="#alias_-6912"><span class="linenos">6912</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> -</span><span id="alias_-6913"><a href="#alias_-6913"><span class="linenos">6913</span></a> -</span><span id="alias_-6914"><a href="#alias_-6914"><span class="linenos">6914</span></a><span class="sd"> Example:</span> -</span><span id="alias_-6915"><a href="#alias_-6915"><span class="linenos">6915</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> -</span><span id="alias_-6916"><a href="#alias_-6916"><span class="linenos">6916</span></a><span class="sd"> 'foo AS bar'</span> -</span><span id="alias_-6917"><a href="#alias_-6917"><span class="linenos">6917</span></a> -</span><span id="alias_-6918"><a href="#alias_-6918"><span class="linenos">6918</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> -</span><span id="alias_-6919"><a href="#alias_-6919"><span class="linenos">6919</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="alias_-6910"><a href="#alias_-6910"><span class="linenos">6910</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> +</span><span id="alias_-6911"><a href="#alias_-6911"><span class="linenos">6911</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="alias_-6912"><a href="#alias_-6912"><span class="linenos">6912</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">],</span> +</span><span id="alias_-6913"><a href="#alias_-6913"><span class="linenos">6913</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</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="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="alias_-6914"><a href="#alias_-6914"><span class="linenos">6914</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="alias_-6915"><a href="#alias_-6915"><span class="linenos">6915</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="alias_-6916"><a href="#alias_-6916"><span class="linenos">6916</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="alias_-6917"><a href="#alias_-6917"><span class="linenos">6917</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="alias_-6918"><a href="#alias_-6918"><span class="linenos">6918</span></a><span class="p">):</span> +</span><span id="alias_-6919"><a href="#alias_-6919"><span class="linenos">6919</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> </span><span id="alias_-6920"><a href="#alias_-6920"><span class="linenos">6920</span></a> -</span><span id="alias_-6921"><a href="#alias_-6921"><span class="linenos">6921</span></a><span class="sd"> Args:</span> -</span><span id="alias_-6922"><a href="#alias_-6922"><span class="linenos">6922</span></a><span class="sd"> expression: the SQL code strings to parse.</span> -</span><span id="alias_-6923"><a href="#alias_-6923"><span class="linenos">6923</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="alias_-6924"><a href="#alias_-6924"><span class="linenos">6924</span></a><span class="sd"> alias: the alias name to use. If the name has</span> -</span><span id="alias_-6925"><a href="#alias_-6925"><span class="linenos">6925</span></a><span class="sd"> special characters it is quoted.</span> -</span><span id="alias_-6926"><a href="#alias_-6926"><span class="linenos">6926</span></a><span class="sd"> table: Whether to create a table alias, can also be a list of columns.</span> -</span><span id="alias_-6927"><a href="#alias_-6927"><span class="linenos">6927</span></a><span class="sd"> quoted: whether to quote the alias</span> -</span><span id="alias_-6928"><a href="#alias_-6928"><span class="linenos">6928</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="alias_-6929"><a href="#alias_-6929"><span class="linenos">6929</span></a><span class="sd"> copy: Whether to copy the expression.</span> -</span><span id="alias_-6930"><a href="#alias_-6930"><span class="linenos">6930</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="alias_-6931"><a href="#alias_-6931"><span class="linenos">6931</span></a> -</span><span id="alias_-6932"><a href="#alias_-6932"><span class="linenos">6932</span></a><span class="sd"> Returns:</span> -</span><span id="alias_-6933"><a href="#alias_-6933"><span class="linenos">6933</span></a><span class="sd"> Alias: the aliased expression</span> -</span><span id="alias_-6934"><a href="#alias_-6934"><span class="linenos">6934</span></a><span class="sd"> """</span> -</span><span id="alias_-6935"><a href="#alias_-6935"><span class="linenos">6935</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="alias_-6936"><a href="#alias_-6936"><span class="linenos">6936</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> -</span><span id="alias_-6937"><a href="#alias_-6937"><span class="linenos">6937</span></a> -</span><span id="alias_-6938"><a href="#alias_-6938"><span class="linenos">6938</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> -</span><span id="alias_-6939"><a href="#alias_-6939"><span class="linenos">6939</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="alias_-6940"><a href="#alias_-6940"><span class="linenos">6940</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> -</span><span id="alias_-6941"><a href="#alias_-6941"><span class="linenos">6941</span></a> -</span><span id="alias_-6942"><a href="#alias_-6942"><span class="linenos">6942</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="alias_-6943"><a href="#alias_-6943"><span class="linenos">6943</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> -</span><span id="alias_-6944"><a href="#alias_-6944"><span class="linenos">6944</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> -</span><span id="alias_-6945"><a href="#alias_-6945"><span class="linenos">6945</span></a> -</span><span id="alias_-6946"><a href="#alias_-6946"><span class="linenos">6946</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="alias_-6947"><a href="#alias_-6947"><span class="linenos">6947</span></a> -</span><span id="alias_-6948"><a href="#alias_-6948"><span class="linenos">6948</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> -</span><span id="alias_-6949"><a href="#alias_-6949"><span class="linenos">6949</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> -</span><span id="alias_-6950"><a href="#alias_-6950"><span class="linenos">6950</span></a> <span class="c1"># for the complete Window expression.</span> -</span><span id="alias_-6951"><a href="#alias_-6951"><span class="linenos">6951</span></a> <span class="c1">#</span> -</span><span id="alias_-6952"><a href="#alias_-6952"><span class="linenos">6952</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> -</span><span id="alias_-6953"><a href="#alias_-6953"><span class="linenos">6953</span></a> -</span><span id="alias_-6954"><a href="#alias_-6954"><span class="linenos">6954</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> -</span><span id="alias_-6955"><a href="#alias_-6955"><span class="linenos">6955</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> -</span><span id="alias_-6956"><a href="#alias_-6956"><span class="linenos">6956</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="alias_-6957"><a href="#alias_-6957"><span class="linenos">6957</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="alias_-6921"><a href="#alias_-6921"><span class="linenos">6921</span></a><span class="sd"> Example:</span> +</span><span id="alias_-6922"><a href="#alias_-6922"><span class="linenos">6922</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> +</span><span id="alias_-6923"><a href="#alias_-6923"><span class="linenos">6923</span></a><span class="sd"> 'foo AS bar'</span> +</span><span id="alias_-6924"><a href="#alias_-6924"><span class="linenos">6924</span></a> +</span><span id="alias_-6925"><a href="#alias_-6925"><span class="linenos">6925</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> +</span><span id="alias_-6926"><a href="#alias_-6926"><span class="linenos">6926</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> +</span><span id="alias_-6927"><a href="#alias_-6927"><span class="linenos">6927</span></a> +</span><span id="alias_-6928"><a href="#alias_-6928"><span class="linenos">6928</span></a><span class="sd"> Args:</span> +</span><span id="alias_-6929"><a href="#alias_-6929"><span class="linenos">6929</span></a><span class="sd"> expression: the SQL code strings to parse.</span> +</span><span id="alias_-6930"><a href="#alias_-6930"><span class="linenos">6930</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="alias_-6931"><a href="#alias_-6931"><span class="linenos">6931</span></a><span class="sd"> alias: the alias name to use. If the name has</span> +</span><span id="alias_-6932"><a href="#alias_-6932"><span class="linenos">6932</span></a><span class="sd"> special characters it is quoted.</span> +</span><span id="alias_-6933"><a href="#alias_-6933"><span class="linenos">6933</span></a><span class="sd"> table: Whether to create a table alias, can also be a list of columns.</span> +</span><span id="alias_-6934"><a href="#alias_-6934"><span class="linenos">6934</span></a><span class="sd"> quoted: whether to quote the alias</span> +</span><span id="alias_-6935"><a href="#alias_-6935"><span class="linenos">6935</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="alias_-6936"><a href="#alias_-6936"><span class="linenos">6936</span></a><span class="sd"> copy: Whether to copy the expression.</span> +</span><span id="alias_-6937"><a href="#alias_-6937"><span class="linenos">6937</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="alias_-6938"><a href="#alias_-6938"><span class="linenos">6938</span></a> +</span><span id="alias_-6939"><a href="#alias_-6939"><span class="linenos">6939</span></a><span class="sd"> Returns:</span> +</span><span id="alias_-6940"><a href="#alias_-6940"><span class="linenos">6940</span></a><span class="sd"> Alias: the aliased expression</span> +</span><span id="alias_-6941"><a href="#alias_-6941"><span class="linenos">6941</span></a><span class="sd"> """</span> +</span><span id="alias_-6942"><a href="#alias_-6942"><span class="linenos">6942</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="alias_-6943"><a href="#alias_-6943"><span class="linenos">6943</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="alias_-6944"><a href="#alias_-6944"><span class="linenos">6944</span></a> +</span><span id="alias_-6945"><a href="#alias_-6945"><span class="linenos">6945</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> +</span><span id="alias_-6946"><a href="#alias_-6946"><span class="linenos">6946</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="alias_-6947"><a href="#alias_-6947"><span class="linenos">6947</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> +</span><span id="alias_-6948"><a href="#alias_-6948"><span class="linenos">6948</span></a> +</span><span id="alias_-6949"><a href="#alias_-6949"><span class="linenos">6949</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="alias_-6950"><a href="#alias_-6950"><span class="linenos">6950</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> +</span><span id="alias_-6951"><a href="#alias_-6951"><span class="linenos">6951</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> +</span><span id="alias_-6952"><a href="#alias_-6952"><span class="linenos">6952</span></a> +</span><span id="alias_-6953"><a href="#alias_-6953"><span class="linenos">6953</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="alias_-6954"><a href="#alias_-6954"><span class="linenos">6954</span></a> +</span><span id="alias_-6955"><a href="#alias_-6955"><span class="linenos">6955</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> +</span><span id="alias_-6956"><a href="#alias_-6956"><span class="linenos">6956</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> +</span><span id="alias_-6957"><a href="#alias_-6957"><span class="linenos">6957</span></a> <span class="c1"># for the complete Window expression.</span> +</span><span id="alias_-6958"><a href="#alias_-6958"><span class="linenos">6958</span></a> <span class="c1">#</span> +</span><span id="alias_-6959"><a href="#alias_-6959"><span class="linenos">6959</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> +</span><span id="alias_-6960"><a href="#alias_-6960"><span class="linenos">6960</span></a> +</span><span id="alias_-6961"><a href="#alias_-6961"><span class="linenos">6961</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> +</span><span id="alias_-6962"><a href="#alias_-6962"><span class="linenos">6962</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="alias_-6963"><a href="#alias_-6963"><span class="linenos">6963</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="alias_-6964"><a href="#alias_-6964"><span class="linenos">6964</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> </span></pre></div> @@ -99642,32 +99821,32 @@ special characters it is quoted.</li> </div> <a class="headerlink" href="#subquery"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="subquery-6960"><a href="#subquery-6960"><span class="linenos">6960</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span> -</span><span id="subquery-6961"><a href="#subquery-6961"><span class="linenos">6961</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> -</span><span id="subquery-6962"><a href="#subquery-6962"><span class="linenos">6962</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="subquery-6963"><a href="#subquery-6963"><span class="linenos">6963</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="subquery-6964"><a href="#subquery-6964"><span class="linenos">6964</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="subquery-6965"><a href="#subquery-6965"><span class="linenos">6965</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="subquery-6966"><a href="#subquery-6966"><span class="linenos">6966</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="subquery-6967"><a href="#subquery-6967"><span class="linenos">6967</span></a><span class="sd"> Build a subquery expression that's selected from.</span> -</span><span id="subquery-6968"><a href="#subquery-6968"><span class="linenos">6968</span></a> -</span><span id="subquery-6969"><a href="#subquery-6969"><span class="linenos">6969</span></a><span class="sd"> Example:</span> -</span><span id="subquery-6970"><a href="#subquery-6970"><span class="linenos">6970</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> -</span><span id="subquery-6971"><a href="#subquery-6971"><span class="linenos">6971</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> -</span><span id="subquery-6972"><a href="#subquery-6972"><span class="linenos">6972</span></a> -</span><span id="subquery-6973"><a href="#subquery-6973"><span class="linenos">6973</span></a><span class="sd"> Args:</span> -</span><span id="subquery-6974"><a href="#subquery-6974"><span class="linenos">6974</span></a><span class="sd"> expression: the SQL code strings to parse.</span> -</span><span id="subquery-6975"><a href="#subquery-6975"><span class="linenos">6975</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="subquery-6976"><a href="#subquery-6976"><span class="linenos">6976</span></a><span class="sd"> alias: the alias name to use.</span> -</span><span id="subquery-6977"><a href="#subquery-6977"><span class="linenos">6977</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="subquery-6978"><a href="#subquery-6978"><span class="linenos">6978</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="subquery-6967"><a href="#subquery-6967"><span class="linenos">6967</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span> +</span><span id="subquery-6968"><a href="#subquery-6968"><span class="linenos">6968</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> +</span><span id="subquery-6969"><a href="#subquery-6969"><span class="linenos">6969</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="subquery-6970"><a href="#subquery-6970"><span class="linenos">6970</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="subquery-6971"><a href="#subquery-6971"><span class="linenos">6971</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="subquery-6972"><a href="#subquery-6972"><span class="linenos">6972</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="subquery-6973"><a href="#subquery-6973"><span class="linenos">6973</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="subquery-6974"><a href="#subquery-6974"><span class="linenos">6974</span></a><span class="sd"> Build a subquery expression that's selected from.</span> +</span><span id="subquery-6975"><a href="#subquery-6975"><span class="linenos">6975</span></a> +</span><span id="subquery-6976"><a href="#subquery-6976"><span class="linenos">6976</span></a><span class="sd"> Example:</span> +</span><span id="subquery-6977"><a href="#subquery-6977"><span class="linenos">6977</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> +</span><span id="subquery-6978"><a href="#subquery-6978"><span class="linenos">6978</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> </span><span id="subquery-6979"><a href="#subquery-6979"><span class="linenos">6979</span></a> -</span><span id="subquery-6980"><a href="#subquery-6980"><span class="linenos">6980</span></a><span class="sd"> Returns:</span> -</span><span id="subquery-6981"><a href="#subquery-6981"><span class="linenos">6981</span></a><span class="sd"> A new Select instance with the subquery expression included.</span> -</span><span id="subquery-6982"><a href="#subquery-6982"><span class="linenos">6982</span></a><span class="sd"> """</span> -</span><span id="subquery-6983"><a href="#subquery-6983"><span class="linenos">6983</span></a> -</span><span id="subquery-6984"><a href="#subquery-6984"><span class="linenos">6984</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="subquery-6985"><a href="#subquery-6985"><span class="linenos">6985</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="subquery-6980"><a href="#subquery-6980"><span class="linenos">6980</span></a><span class="sd"> Args:</span> +</span><span id="subquery-6981"><a href="#subquery-6981"><span class="linenos">6981</span></a><span class="sd"> expression: the SQL code strings to parse.</span> +</span><span id="subquery-6982"><a href="#subquery-6982"><span class="linenos">6982</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="subquery-6983"><a href="#subquery-6983"><span class="linenos">6983</span></a><span class="sd"> alias: the alias name to use.</span> +</span><span id="subquery-6984"><a href="#subquery-6984"><span class="linenos">6984</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="subquery-6985"><a href="#subquery-6985"><span class="linenos">6985</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="subquery-6986"><a href="#subquery-6986"><span class="linenos">6986</span></a> +</span><span id="subquery-6987"><a href="#subquery-6987"><span class="linenos">6987</span></a><span class="sd"> Returns:</span> +</span><span id="subquery-6988"><a href="#subquery-6988"><span class="linenos">6988</span></a><span class="sd"> A new Select instance with the subquery expression included.</span> +</span><span id="subquery-6989"><a href="#subquery-6989"><span class="linenos">6989</span></a><span class="sd"> """</span> +</span><span id="subquery-6990"><a href="#subquery-6990"><span class="linenos">6990</span></a> +</span><span id="subquery-6991"><a href="#subquery-6991"><span class="linenos">6991</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="subquery-6992"><a href="#subquery-6992"><span class="linenos">6992</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -99713,43 +99892,43 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#column"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="column-7016"><a href="#column-7016"><span class="linenos">7016</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> -</span><span id="column-7017"><a href="#column-7017"><span class="linenos">7017</span></a> <span class="n">col</span><span class="p">,</span> -</span><span id="column-7018"><a href="#column-7018"><span class="linenos">7018</span></a> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="column-7019"><a href="#column-7019"><span class="linenos">7019</span></a> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="column-7020"><a href="#column-7020"><span class="linenos">7020</span></a> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="column-7021"><a href="#column-7021"><span class="linenos">7021</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="column-7022"><a href="#column-7022"><span class="linenos">7022</span></a> <span class="n">fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="column-7023"><a href="#column-7023"><span class="linenos">7023</span></a> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="column-7024"><a href="#column-7024"><span class="linenos">7024</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="column-7025"><a href="#column-7025"><span class="linenos">7025</span></a><span class="p">):</span> -</span><span id="column-7026"><a href="#column-7026"><span class="linenos">7026</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="column-7027"><a href="#column-7027"><span class="linenos">7027</span></a><span class="sd"> Build a Column.</span> -</span><span id="column-7028"><a href="#column-7028"><span class="linenos">7028</span></a> -</span><span id="column-7029"><a href="#column-7029"><span class="linenos">7029</span></a><span class="sd"> Args:</span> -</span><span id="column-7030"><a href="#column-7030"><span class="linenos">7030</span></a><span class="sd"> col: Column name.</span> -</span><span id="column-7031"><a href="#column-7031"><span class="linenos">7031</span></a><span class="sd"> table: Table name.</span> -</span><span id="column-7032"><a href="#column-7032"><span class="linenos">7032</span></a><span class="sd"> db: Database name.</span> -</span><span id="column-7033"><a href="#column-7033"><span class="linenos">7033</span></a><span class="sd"> catalog: Catalog name.</span> -</span><span id="column-7034"><a href="#column-7034"><span class="linenos">7034</span></a><span class="sd"> fields: Additional fields using dots.</span> -</span><span id="column-7035"><a href="#column-7035"><span class="linenos">7035</span></a><span class="sd"> quoted: Whether to force quotes on the column's identifiers.</span> -</span><span id="column-7036"><a href="#column-7036"><span class="linenos">7036</span></a><span class="sd"> copy: Whether to copy identifiers if passed in.</span> -</span><span id="column-7037"><a href="#column-7037"><span class="linenos">7037</span></a> -</span><span id="column-7038"><a href="#column-7038"><span class="linenos">7038</span></a><span class="sd"> Returns:</span> -</span><span id="column-7039"><a href="#column-7039"><span class="linenos">7039</span></a><span class="sd"> The new Column instance.</span> -</span><span id="column-7040"><a href="#column-7040"><span class="linenos">7040</span></a><span class="sd"> """</span> -</span><span id="column-7041"><a href="#column-7041"><span class="linenos">7041</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span> -</span><span id="column-7042"><a href="#column-7042"><span class="linenos">7042</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="column-7043"><a href="#column-7043"><span class="linenos">7043</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="column-7044"><a href="#column-7044"><span class="linenos">7044</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="column-7045"><a href="#column-7045"><span class="linenos">7045</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> -</span><span id="column-7046"><a href="#column-7046"><span class="linenos">7046</span></a> <span class="p">)</span> -</span><span id="column-7047"><a href="#column-7047"><span class="linenos">7047</span></a> -</span><span id="column-7048"><a href="#column-7048"><span class="linenos">7048</span></a> <span class="k">if</span> <span class="n">fields</span><span class="p">:</span> -</span><span id="column-7049"><a href="#column-7049"><span class="linenos">7049</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">build</span><span class="p">(</span> -</span><span id="column-7050"><a href="#column-7050"><span class="linenos">7050</span></a> <span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">))</span> -</span><span id="column-7051"><a href="#column-7051"><span class="linenos">7051</span></a> <span class="p">)</span> -</span><span id="column-7052"><a href="#column-7052"><span class="linenos">7052</span></a> <span class="k">return</span> <span class="n">this</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="column-7023"><a href="#column-7023"><span class="linenos">7023</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> +</span><span id="column-7024"><a href="#column-7024"><span class="linenos">7024</span></a> <span class="n">col</span><span class="p">,</span> +</span><span id="column-7025"><a href="#column-7025"><span class="linenos">7025</span></a> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="column-7026"><a href="#column-7026"><span class="linenos">7026</span></a> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="column-7027"><a href="#column-7027"><span class="linenos">7027</span></a> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="column-7028"><a href="#column-7028"><span class="linenos">7028</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="column-7029"><a href="#column-7029"><span class="linenos">7029</span></a> <span class="n">fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="column-7030"><a href="#column-7030"><span class="linenos">7030</span></a> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="column-7031"><a href="#column-7031"><span class="linenos">7031</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="column-7032"><a href="#column-7032"><span class="linenos">7032</span></a><span class="p">):</span> +</span><span id="column-7033"><a href="#column-7033"><span class="linenos">7033</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="column-7034"><a href="#column-7034"><span class="linenos">7034</span></a><span class="sd"> Build a Column.</span> +</span><span id="column-7035"><a href="#column-7035"><span class="linenos">7035</span></a> +</span><span id="column-7036"><a href="#column-7036"><span class="linenos">7036</span></a><span class="sd"> Args:</span> +</span><span id="column-7037"><a href="#column-7037"><span class="linenos">7037</span></a><span class="sd"> col: Column name.</span> +</span><span id="column-7038"><a href="#column-7038"><span class="linenos">7038</span></a><span class="sd"> table: Table name.</span> +</span><span id="column-7039"><a href="#column-7039"><span class="linenos">7039</span></a><span class="sd"> db: Database name.</span> +</span><span id="column-7040"><a href="#column-7040"><span class="linenos">7040</span></a><span class="sd"> catalog: Catalog name.</span> +</span><span id="column-7041"><a href="#column-7041"><span class="linenos">7041</span></a><span class="sd"> fields: Additional fields using dots.</span> +</span><span id="column-7042"><a href="#column-7042"><span class="linenos">7042</span></a><span class="sd"> quoted: Whether to force quotes on the column's identifiers.</span> +</span><span id="column-7043"><a href="#column-7043"><span class="linenos">7043</span></a><span class="sd"> copy: Whether to copy identifiers if passed in.</span> +</span><span id="column-7044"><a href="#column-7044"><span class="linenos">7044</span></a> +</span><span id="column-7045"><a href="#column-7045"><span class="linenos">7045</span></a><span class="sd"> Returns:</span> +</span><span id="column-7046"><a href="#column-7046"><span class="linenos">7046</span></a><span class="sd"> The new Column instance.</span> +</span><span id="column-7047"><a href="#column-7047"><span class="linenos">7047</span></a><span class="sd"> """</span> +</span><span id="column-7048"><a href="#column-7048"><span class="linenos">7048</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span> +</span><span id="column-7049"><a href="#column-7049"><span class="linenos">7049</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="column-7050"><a href="#column-7050"><span class="linenos">7050</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="column-7051"><a href="#column-7051"><span class="linenos">7051</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="column-7052"><a href="#column-7052"><span class="linenos">7052</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> +</span><span id="column-7053"><a href="#column-7053"><span class="linenos">7053</span></a> <span class="p">)</span> +</span><span id="column-7054"><a href="#column-7054"><span class="linenos">7054</span></a> +</span><span id="column-7055"><a href="#column-7055"><span class="linenos">7055</span></a> <span class="k">if</span> <span class="n">fields</span><span class="p">:</span> +</span><span id="column-7056"><a href="#column-7056"><span class="linenos">7056</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">build</span><span class="p">(</span> +</span><span id="column-7057"><a href="#column-7057"><span class="linenos">7057</span></a> <span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">))</span> +</span><span id="column-7058"><a href="#column-7058"><span class="linenos">7058</span></a> <span class="p">)</span> +</span><span id="column-7059"><a href="#column-7059"><span class="linenos">7059</span></a> <span class="k">return</span> <span class="n">this</span> </span></pre></div> @@ -99787,31 +99966,31 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#cast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="cast-7055"><a href="#cast-7055"><span class="linenos">7055</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> -</span><span id="cast-7056"><a href="#cast-7056"><span class="linenos">7056</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> -</span><span id="cast-7057"><a href="#cast-7057"><span class="linenos">7057</span></a> -</span><span id="cast-7058"><a href="#cast-7058"><span class="linenos">7058</span></a><span class="sd"> Example:</span> -</span><span id="cast-7059"><a href="#cast-7059"><span class="linenos">7059</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> -</span><span id="cast-7060"><a href="#cast-7060"><span class="linenos">7060</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> -</span><span id="cast-7061"><a href="#cast-7061"><span class="linenos">7061</span></a> -</span><span id="cast-7062"><a href="#cast-7062"><span class="linenos">7062</span></a><span class="sd"> Args:</span> -</span><span id="cast-7063"><a href="#cast-7063"><span class="linenos">7063</span></a><span class="sd"> expression: The expression to cast.</span> -</span><span id="cast-7064"><a href="#cast-7064"><span class="linenos">7064</span></a><span class="sd"> to: The datatype to cast to.</span> -</span><span id="cast-7065"><a href="#cast-7065"><span class="linenos">7065</span></a><span class="sd"> copy: Whether to copy the supplied expressions.</span> -</span><span id="cast-7066"><a href="#cast-7066"><span class="linenos">7066</span></a> -</span><span id="cast-7067"><a href="#cast-7067"><span class="linenos">7067</span></a><span class="sd"> Returns:</span> -</span><span id="cast-7068"><a href="#cast-7068"><span class="linenos">7068</span></a><span class="sd"> The new Cast instance.</span> -</span><span id="cast-7069"><a href="#cast-7069"><span class="linenos">7069</span></a><span class="sd"> """</span> -</span><span id="cast-7070"><a href="#cast-7070"><span class="linenos">7070</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="cast-7071"><a href="#cast-7071"><span class="linenos">7071</span></a> <span class="n">data_type</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">to</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="cast-7072"><a href="#cast-7072"><span class="linenos">7072</span></a> -</span><span id="cast-7073"><a href="#cast-7073"><span class="linenos">7073</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">data_type</span><span class="p">):</span> -</span><span id="cast-7074"><a href="#cast-7074"><span class="linenos">7074</span></a> <span class="k">return</span> <span class="n">expr</span> -</span><span id="cast-7075"><a href="#cast-7075"><span class="linenos">7075</span></a> -</span><span id="cast-7076"><a href="#cast-7076"><span class="linenos">7076</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="cast-7077"><a href="#cast-7077"><span class="linenos">7077</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">data_type</span> -</span><span id="cast-7078"><a href="#cast-7078"><span class="linenos">7078</span></a> -</span><span id="cast-7079"><a href="#cast-7079"><span class="linenos">7079</span></a> <span class="k">return</span> <span class="n">expr</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="cast-7062"><a href="#cast-7062"><span class="linenos">7062</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> +</span><span id="cast-7063"><a href="#cast-7063"><span class="linenos">7063</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> +</span><span id="cast-7064"><a href="#cast-7064"><span class="linenos">7064</span></a> +</span><span id="cast-7065"><a href="#cast-7065"><span class="linenos">7065</span></a><span class="sd"> Example:</span> +</span><span id="cast-7066"><a href="#cast-7066"><span class="linenos">7066</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> +</span><span id="cast-7067"><a href="#cast-7067"><span class="linenos">7067</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> +</span><span id="cast-7068"><a href="#cast-7068"><span class="linenos">7068</span></a> +</span><span id="cast-7069"><a href="#cast-7069"><span class="linenos">7069</span></a><span class="sd"> Args:</span> +</span><span id="cast-7070"><a href="#cast-7070"><span class="linenos">7070</span></a><span class="sd"> expression: The expression to cast.</span> +</span><span id="cast-7071"><a href="#cast-7071"><span class="linenos">7071</span></a><span class="sd"> to: The datatype to cast to.</span> +</span><span id="cast-7072"><a href="#cast-7072"><span class="linenos">7072</span></a><span class="sd"> copy: Whether to copy the supplied expressions.</span> +</span><span id="cast-7073"><a href="#cast-7073"><span class="linenos">7073</span></a> +</span><span id="cast-7074"><a href="#cast-7074"><span class="linenos">7074</span></a><span class="sd"> Returns:</span> +</span><span id="cast-7075"><a href="#cast-7075"><span class="linenos">7075</span></a><span class="sd"> The new Cast instance.</span> +</span><span id="cast-7076"><a href="#cast-7076"><span class="linenos">7076</span></a><span class="sd"> """</span> +</span><span id="cast-7077"><a href="#cast-7077"><span class="linenos">7077</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="cast-7078"><a href="#cast-7078"><span class="linenos">7078</span></a> <span class="n">data_type</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">to</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="cast-7079"><a href="#cast-7079"><span class="linenos">7079</span></a> +</span><span id="cast-7080"><a href="#cast-7080"><span class="linenos">7080</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">data_type</span><span class="p">):</span> +</span><span id="cast-7081"><a href="#cast-7081"><span class="linenos">7081</span></a> <span class="k">return</span> <span class="n">expr</span> +</span><span id="cast-7082"><a href="#cast-7082"><span class="linenos">7082</span></a> +</span><span id="cast-7083"><a href="#cast-7083"><span class="linenos">7083</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="cast-7084"><a href="#cast-7084"><span class="linenos">7084</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">data_type</span> +</span><span id="cast-7085"><a href="#cast-7085"><span class="linenos">7085</span></a> +</span><span id="cast-7086"><a href="#cast-7086"><span class="linenos">7086</span></a> <span class="k">return</span> <span class="n">expr</span> </span></pre></div> @@ -99855,31 +100034,31 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#table_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="table_-7082"><a href="#table_-7082"><span class="linenos">7082</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span> -</span><span id="table_-7083"><a href="#table_-7083"><span class="linenos">7083</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="table_-7084"><a href="#table_-7084"><span class="linenos">7084</span></a> <span class="n">db</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7085"><a href="#table_-7085"><span class="linenos">7085</span></a> <span class="n">catalog</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7086"><a href="#table_-7086"><span class="linenos">7086</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> -</span><span id="table_-7087"><a href="#table_-7087"><span class="linenos">7087</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7088"><a href="#table_-7088"><span class="linenos">7088</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> -</span><span id="table_-7089"><a href="#table_-7089"><span class="linenos">7089</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> -</span><span id="table_-7090"><a href="#table_-7090"><span class="linenos">7090</span></a> -</span><span id="table_-7091"><a href="#table_-7091"><span class="linenos">7091</span></a><span class="sd"> Args:</span> -</span><span id="table_-7092"><a href="#table_-7092"><span class="linenos">7092</span></a><span class="sd"> table: Table name.</span> -</span><span id="table_-7093"><a href="#table_-7093"><span class="linenos">7093</span></a><span class="sd"> db: Database name.</span> -</span><span id="table_-7094"><a href="#table_-7094"><span class="linenos">7094</span></a><span class="sd"> catalog: Catalog name.</span> -</span><span id="table_-7095"><a href="#table_-7095"><span class="linenos">7095</span></a><span class="sd"> quote: Whether to force quotes on the table's identifiers.</span> -</span><span id="table_-7096"><a href="#table_-7096"><span class="linenos">7096</span></a><span class="sd"> alias: Table's alias.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="table_-7089"><a href="#table_-7089"><span class="linenos">7089</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span> +</span><span id="table_-7090"><a href="#table_-7090"><span class="linenos">7090</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="table_-7091"><a href="#table_-7091"><span class="linenos">7091</span></a> <span class="n">db</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7092"><a href="#table_-7092"><span class="linenos">7092</span></a> <span class="n">catalog</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7093"><a href="#table_-7093"><span class="linenos">7093</span></a> <span class="n">quoted</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">None</span><span class="p">,</span> +</span><span id="table_-7094"><a href="#table_-7094"><span class="linenos">7094</span></a> <span class="n">alias</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">Identifier</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7095"><a href="#table_-7095"><span class="linenos">7095</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="table_-7096"><a href="#table_-7096"><span class="linenos">7096</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> </span><span id="table_-7097"><a href="#table_-7097"><span class="linenos">7097</span></a> -</span><span id="table_-7098"><a href="#table_-7098"><span class="linenos">7098</span></a><span class="sd"> Returns:</span> -</span><span id="table_-7099"><a href="#table_-7099"><span class="linenos">7099</span></a><span class="sd"> The new Table instance.</span> -</span><span id="table_-7100"><a href="#table_-7100"><span class="linenos">7100</span></a><span class="sd"> """</span> -</span><span id="table_-7101"><a href="#table_-7101"><span class="linenos">7101</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> -</span><span id="table_-7102"><a href="#table_-7102"><span class="linenos">7102</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7103"><a href="#table_-7103"><span class="linenos">7103</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">db</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7104"><a href="#table_-7104"><span class="linenos">7104</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">catalog</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7105"><a href="#table_-7105"><span class="linenos">7105</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-7106"><a href="#table_-7106"><span class="linenos">7106</span></a> <span class="p">)</span> +</span><span id="table_-7098"><a href="#table_-7098"><span class="linenos">7098</span></a><span class="sd"> Args:</span> +</span><span id="table_-7099"><a href="#table_-7099"><span class="linenos">7099</span></a><span class="sd"> table: Table name.</span> +</span><span id="table_-7100"><a href="#table_-7100"><span class="linenos">7100</span></a><span class="sd"> db: Database name.</span> +</span><span id="table_-7101"><a href="#table_-7101"><span class="linenos">7101</span></a><span class="sd"> catalog: Catalog name.</span> +</span><span id="table_-7102"><a href="#table_-7102"><span class="linenos">7102</span></a><span class="sd"> quote: Whether to force quotes on the table's identifiers.</span> +</span><span id="table_-7103"><a href="#table_-7103"><span class="linenos">7103</span></a><span class="sd"> alias: Table's alias.</span> +</span><span id="table_-7104"><a href="#table_-7104"><span class="linenos">7104</span></a> +</span><span id="table_-7105"><a href="#table_-7105"><span class="linenos">7105</span></a><span class="sd"> Returns:</span> +</span><span id="table_-7106"><a href="#table_-7106"><span class="linenos">7106</span></a><span class="sd"> The new Table instance.</span> +</span><span id="table_-7107"><a href="#table_-7107"><span class="linenos">7107</span></a><span class="sd"> """</span> +</span><span id="table_-7108"><a href="#table_-7108"><span class="linenos">7108</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> +</span><span id="table_-7109"><a href="#table_-7109"><span class="linenos">7109</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7110"><a href="#table_-7110"><span class="linenos">7110</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">db</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7111"><a href="#table_-7111"><span class="linenos">7111</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> <span class="k">if</span> <span class="n">catalog</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7112"><a href="#table_-7112"><span class="linenos">7112</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-7113"><a href="#table_-7113"><span class="linenos">7113</span></a> <span class="p">)</span> </span></pre></div> @@ -99915,37 +100094,37 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#values"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="values-7109"><a href="#values-7109"><span class="linenos">7109</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> -</span><span id="values-7110"><a href="#values-7110"><span class="linenos">7110</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</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="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> -</span><span id="values-7111"><a href="#values-7111"><span class="linenos">7111</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="values-7112"><a href="#values-7112"><span class="linenos">7112</span></a> <span class="n">columns</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">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="values-7113"><a href="#values-7113"><span class="linenos">7113</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> -</span><span id="values-7114"><a href="#values-7114"><span class="linenos">7114</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> -</span><span id="values-7115"><a href="#values-7115"><span class="linenos">7115</span></a> -</span><span id="values-7116"><a href="#values-7116"><span class="linenos">7116</span></a><span class="sd"> Example:</span> -</span><span id="values-7117"><a href="#values-7117"><span class="linenos">7117</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> -</span><span id="values-7118"><a href="#values-7118"><span class="linenos">7118</span></a><span class="sd"> "VALUES (1, '2')"</span> -</span><span id="values-7119"><a href="#values-7119"><span class="linenos">7119</span></a> -</span><span id="values-7120"><a href="#values-7120"><span class="linenos">7120</span></a><span class="sd"> Args:</span> -</span><span id="values-7121"><a href="#values-7121"><span class="linenos">7121</span></a><span class="sd"> values: values statements that will be converted to SQL</span> -</span><span id="values-7122"><a href="#values-7122"><span class="linenos">7122</span></a><span class="sd"> alias: optional alias</span> -</span><span id="values-7123"><a href="#values-7123"><span class="linenos">7123</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> -</span><span id="values-7124"><a href="#values-7124"><span class="linenos">7124</span></a><span class="sd"> If either are provided then an alias is also required.</span> -</span><span id="values-7125"><a href="#values-7125"><span class="linenos">7125</span></a> -</span><span id="values-7126"><a href="#values-7126"><span class="linenos">7126</span></a><span class="sd"> Returns:</span> -</span><span id="values-7127"><a href="#values-7127"><span class="linenos">7127</span></a><span class="sd"> Values: the Values expression object</span> -</span><span id="values-7128"><a href="#values-7128"><span class="linenos">7128</span></a><span class="sd"> """</span> -</span><span id="values-7129"><a href="#values-7129"><span class="linenos">7129</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="values-7130"><a href="#values-7130"><span class="linenos">7130</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> -</span><span id="values-7131"><a href="#values-7131"><span class="linenos">7131</span></a> -</span><span id="values-7132"><a href="#values-7132"><span class="linenos">7132</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> -</span><span id="values-7133"><a href="#values-7133"><span class="linenos">7133</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">],</span> -</span><span id="values-7134"><a href="#values-7134"><span class="linenos">7134</span></a> <span class="n">alias</span><span class="o">=</span><span class="p">(</span> -</span><span id="values-7135"><a href="#values-7135"><span class="linenos">7135</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> -</span><span id="values-7136"><a href="#values-7136"><span class="linenos">7136</span></a> <span class="k">if</span> <span class="n">columns</span> -</span><span id="values-7137"><a href="#values-7137"><span class="linenos">7137</span></a> <span class="k">else</span> <span class="p">(</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="values-7138"><a href="#values-7138"><span class="linenos">7138</span></a> <span class="p">),</span> -</span><span id="values-7139"><a href="#values-7139"><span class="linenos">7139</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="values-7116"><a href="#values-7116"><span class="linenos">7116</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> +</span><span id="values-7117"><a href="#values-7117"><span class="linenos">7117</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</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="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> +</span><span id="values-7118"><a href="#values-7118"><span class="linenos">7118</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="values-7119"><a href="#values-7119"><span class="linenos">7119</span></a> <span class="n">columns</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">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="values-7120"><a href="#values-7120"><span class="linenos">7120</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> +</span><span id="values-7121"><a href="#values-7121"><span class="linenos">7121</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> +</span><span id="values-7122"><a href="#values-7122"><span class="linenos">7122</span></a> +</span><span id="values-7123"><a href="#values-7123"><span class="linenos">7123</span></a><span class="sd"> Example:</span> +</span><span id="values-7124"><a href="#values-7124"><span class="linenos">7124</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> +</span><span id="values-7125"><a href="#values-7125"><span class="linenos">7125</span></a><span class="sd"> "VALUES (1, '2')"</span> +</span><span id="values-7126"><a href="#values-7126"><span class="linenos">7126</span></a> +</span><span id="values-7127"><a href="#values-7127"><span class="linenos">7127</span></a><span class="sd"> Args:</span> +</span><span id="values-7128"><a href="#values-7128"><span class="linenos">7128</span></a><span class="sd"> values: values statements that will be converted to SQL</span> +</span><span id="values-7129"><a href="#values-7129"><span class="linenos">7129</span></a><span class="sd"> alias: optional alias</span> +</span><span id="values-7130"><a href="#values-7130"><span class="linenos">7130</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> +</span><span id="values-7131"><a href="#values-7131"><span class="linenos">7131</span></a><span class="sd"> If either are provided then an alias is also required.</span> +</span><span id="values-7132"><a href="#values-7132"><span class="linenos">7132</span></a> +</span><span id="values-7133"><a href="#values-7133"><span class="linenos">7133</span></a><span class="sd"> Returns:</span> +</span><span id="values-7134"><a href="#values-7134"><span class="linenos">7134</span></a><span class="sd"> Values: the Values expression object</span> +</span><span id="values-7135"><a href="#values-7135"><span class="linenos">7135</span></a><span class="sd"> """</span> +</span><span id="values-7136"><a href="#values-7136"><span class="linenos">7136</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="values-7137"><a href="#values-7137"><span class="linenos">7137</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> +</span><span id="values-7138"><a href="#values-7138"><span class="linenos">7138</span></a> +</span><span id="values-7139"><a href="#values-7139"><span class="linenos">7139</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> +</span><span id="values-7140"><a href="#values-7140"><span class="linenos">7140</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">],</span> +</span><span id="values-7141"><a href="#values-7141"><span class="linenos">7141</span></a> <span class="n">alias</span><span class="o">=</span><span class="p">(</span> +</span><span id="values-7142"><a href="#values-7142"><span class="linenos">7142</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> +</span><span id="values-7143"><a href="#values-7143"><span class="linenos">7143</span></a> <span class="k">if</span> <span class="n">columns</span> +</span><span id="values-7144"><a href="#values-7144"><span class="linenos">7144</span></a> <span class="k">else</span> <span class="p">(</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="values-7145"><a href="#values-7145"><span class="linenos">7145</span></a> <span class="p">),</span> +</span><span id="values-7146"><a href="#values-7146"><span class="linenos">7146</span></a> <span class="p">)</span> </span></pre></div> @@ -99990,28 +100169,28 @@ If either are provided then an alias is also required.</li> </div> <a class="headerlink" href="#var"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="var-7142"><a href="#var-7142"><span class="linenos">7142</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> -</span><span id="var-7143"><a href="#var-7143"><span class="linenos">7143</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> -</span><span id="var-7144"><a href="#var-7144"><span class="linenos">7144</span></a> -</span><span id="var-7145"><a href="#var-7145"><span class="linenos">7145</span></a><span class="sd"> Example:</span> -</span><span id="var-7146"><a href="#var-7146"><span class="linenos">7146</span></a><span class="sd"> >>> repr(var('x'))</span> -</span><span id="var-7147"><a href="#var-7147"><span class="linenos">7147</span></a><span class="sd"> 'Var(this=x)'</span> -</span><span id="var-7148"><a href="#var-7148"><span class="linenos">7148</span></a> -</span><span id="var-7149"><a href="#var-7149"><span class="linenos">7149</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> -</span><span id="var-7150"><a href="#var-7150"><span class="linenos">7150</span></a><span class="sd"> 'Var(this=x)'</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="var-7149"><a href="#var-7149"><span class="linenos">7149</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> +</span><span id="var-7150"><a href="#var-7150"><span class="linenos">7150</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> </span><span id="var-7151"><a href="#var-7151"><span class="linenos">7151</span></a> -</span><span id="var-7152"><a href="#var-7152"><span class="linenos">7152</span></a><span class="sd"> Args:</span> -</span><span id="var-7153"><a href="#var-7153"><span class="linenos">7153</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> -</span><span id="var-7154"><a href="#var-7154"><span class="linenos">7154</span></a> -</span><span id="var-7155"><a href="#var-7155"><span class="linenos">7155</span></a><span class="sd"> Returns:</span> -</span><span id="var-7156"><a href="#var-7156"><span class="linenos">7156</span></a><span class="sd"> The new variable node.</span> -</span><span id="var-7157"><a href="#var-7157"><span class="linenos">7157</span></a><span class="sd"> """</span> -</span><span id="var-7158"><a href="#var-7158"><span class="linenos">7158</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> -</span><span id="var-7159"><a href="#var-7159"><span class="linenos">7159</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> -</span><span id="var-7160"><a href="#var-7160"><span class="linenos">7160</span></a> -</span><span id="var-7161"><a href="#var-7161"><span class="linenos">7161</span></a> <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="n">Expression</span><span class="p">):</span> -</span><span id="var-7162"><a href="#var-7162"><span class="linenos">7162</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> -</span><span id="var-7163"><a href="#var-7163"><span class="linenos">7163</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> +</span><span id="var-7152"><a href="#var-7152"><span class="linenos">7152</span></a><span class="sd"> Example:</span> +</span><span id="var-7153"><a href="#var-7153"><span class="linenos">7153</span></a><span class="sd"> >>> repr(var('x'))</span> +</span><span id="var-7154"><a href="#var-7154"><span class="linenos">7154</span></a><span class="sd"> 'Var(this=x)'</span> +</span><span id="var-7155"><a href="#var-7155"><span class="linenos">7155</span></a> +</span><span id="var-7156"><a href="#var-7156"><span class="linenos">7156</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> +</span><span id="var-7157"><a href="#var-7157"><span class="linenos">7157</span></a><span class="sd"> 'Var(this=x)'</span> +</span><span id="var-7158"><a href="#var-7158"><span class="linenos">7158</span></a> +</span><span id="var-7159"><a href="#var-7159"><span class="linenos">7159</span></a><span class="sd"> Args:</span> +</span><span id="var-7160"><a href="#var-7160"><span class="linenos">7160</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> +</span><span id="var-7161"><a href="#var-7161"><span class="linenos">7161</span></a> +</span><span id="var-7162"><a href="#var-7162"><span class="linenos">7162</span></a><span class="sd"> Returns:</span> +</span><span id="var-7163"><a href="#var-7163"><span class="linenos">7163</span></a><span class="sd"> The new variable node.</span> +</span><span id="var-7164"><a href="#var-7164"><span class="linenos">7164</span></a><span class="sd"> """</span> +</span><span id="var-7165"><a href="#var-7165"><span class="linenos">7165</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> +</span><span id="var-7166"><a href="#var-7166"><span class="linenos">7166</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> +</span><span id="var-7167"><a href="#var-7167"><span class="linenos">7167</span></a> +</span><span id="var-7168"><a href="#var-7168"><span class="linenos">7168</span></a> <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="n">Expression</span><span class="p">):</span> +</span><span id="var-7169"><a href="#var-7169"><span class="linenos">7169</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> +</span><span id="var-7170"><a href="#var-7170"><span class="linenos">7170</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> </span></pre></div> @@ -100059,29 +100238,29 @@ If either are provided then an alias is also required.</li> </div> <a class="headerlink" href="#rename_table"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="rename_table-7166"><a href="#rename_table-7166"><span class="linenos">7166</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span> -</span><span id="rename_table-7167"><a href="#rename_table-7167"><span class="linenos">7167</span></a> <span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="rename_table-7168"><a href="#rename_table-7168"><span class="linenos">7168</span></a> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="rename_table-7169"><a href="#rename_table-7169"><span class="linenos">7169</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="rename_table-7170"><a href="#rename_table-7170"><span class="linenos">7170</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> -</span><span id="rename_table-7171"><a href="#rename_table-7171"><span class="linenos">7171</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> -</span><span id="rename_table-7172"><a href="#rename_table-7172"><span class="linenos">7172</span></a> -</span><span id="rename_table-7173"><a href="#rename_table-7173"><span class="linenos">7173</span></a><span class="sd"> Args:</span> -</span><span id="rename_table-7174"><a href="#rename_table-7174"><span class="linenos">7174</span></a><span class="sd"> old_name: The old name of the table</span> -</span><span id="rename_table-7175"><a href="#rename_table-7175"><span class="linenos">7175</span></a><span class="sd"> new_name: The new name of the table</span> -</span><span id="rename_table-7176"><a href="#rename_table-7176"><span class="linenos">7176</span></a><span class="sd"> dialect: The dialect to parse the table.</span> -</span><span id="rename_table-7177"><a href="#rename_table-7177"><span class="linenos">7177</span></a> -</span><span id="rename_table-7178"><a href="#rename_table-7178"><span class="linenos">7178</span></a><span class="sd"> Returns:</span> -</span><span id="rename_table-7179"><a href="#rename_table-7179"><span class="linenos">7179</span></a><span class="sd"> Alter table expression</span> -</span><span id="rename_table-7180"><a href="#rename_table-7180"><span class="linenos">7180</span></a><span class="sd"> """</span> -</span><span id="rename_table-7181"><a href="#rename_table-7181"><span class="linenos">7181</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_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><span id="rename_table-7182"><a href="#rename_table-7182"><span class="linenos">7182</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_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><span id="rename_table-7183"><a href="#rename_table-7183"><span class="linenos">7183</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> -</span><span id="rename_table-7184"><a href="#rename_table-7184"><span class="linenos">7184</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> -</span><span id="rename_table-7185"><a href="#rename_table-7185"><span class="linenos">7185</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> -</span><span id="rename_table-7186"><a href="#rename_table-7186"><span class="linenos">7186</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> -</span><span id="rename_table-7187"><a href="#rename_table-7187"><span class="linenos">7187</span></a> <span class="p">],</span> -</span><span id="rename_table-7188"><a href="#rename_table-7188"><span class="linenos">7188</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="rename_table-7173"><a href="#rename_table-7173"><span class="linenos">7173</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span> +</span><span id="rename_table-7174"><a href="#rename_table-7174"><span class="linenos">7174</span></a> <span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="rename_table-7175"><a href="#rename_table-7175"><span class="linenos">7175</span></a> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="rename_table-7176"><a href="#rename_table-7176"><span class="linenos">7176</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="rename_table-7177"><a href="#rename_table-7177"><span class="linenos">7177</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> +</span><span id="rename_table-7178"><a href="#rename_table-7178"><span class="linenos">7178</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> +</span><span id="rename_table-7179"><a href="#rename_table-7179"><span class="linenos">7179</span></a> +</span><span id="rename_table-7180"><a href="#rename_table-7180"><span class="linenos">7180</span></a><span class="sd"> Args:</span> +</span><span id="rename_table-7181"><a href="#rename_table-7181"><span class="linenos">7181</span></a><span class="sd"> old_name: The old name of the table</span> +</span><span id="rename_table-7182"><a href="#rename_table-7182"><span class="linenos">7182</span></a><span class="sd"> new_name: The new name of the table</span> +</span><span id="rename_table-7183"><a href="#rename_table-7183"><span class="linenos">7183</span></a><span class="sd"> dialect: The dialect to parse the table.</span> +</span><span id="rename_table-7184"><a href="#rename_table-7184"><span class="linenos">7184</span></a> +</span><span id="rename_table-7185"><a href="#rename_table-7185"><span class="linenos">7185</span></a><span class="sd"> Returns:</span> +</span><span id="rename_table-7186"><a href="#rename_table-7186"><span class="linenos">7186</span></a><span class="sd"> Alter table expression</span> +</span><span id="rename_table-7187"><a href="#rename_table-7187"><span class="linenos">7187</span></a><span class="sd"> """</span> +</span><span id="rename_table-7188"><a href="#rename_table-7188"><span class="linenos">7188</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_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><span id="rename_table-7189"><a href="#rename_table-7189"><span class="linenos">7189</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_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><span id="rename_table-7190"><a href="#rename_table-7190"><span class="linenos">7190</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> +</span><span id="rename_table-7191"><a href="#rename_table-7191"><span class="linenos">7191</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> +</span><span id="rename_table-7192"><a href="#rename_table-7192"><span class="linenos">7192</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> +</span><span id="rename_table-7193"><a href="#rename_table-7193"><span class="linenos">7193</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> +</span><span id="rename_table-7194"><a href="#rename_table-7194"><span class="linenos">7194</span></a> <span class="p">],</span> +</span><span id="rename_table-7195"><a href="#rename_table-7195"><span class="linenos">7195</span></a> <span class="p">)</span> </span></pre></div> @@ -100115,34 +100294,34 @@ If either are provided then an alias is also required.</li> </div> <a class="headerlink" href="#rename_column"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="rename_column-7191"><a href="#rename_column-7191"><span class="linenos">7191</span></a><span class="k">def</span> <span class="nf">rename_column</span><span class="p">(</span> -</span><span id="rename_column-7192"><a href="#rename_column-7192"><span class="linenos">7192</span></a> <span class="n">table_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> -</span><span id="rename_column-7193"><a href="#rename_column-7193"><span class="linenos">7193</span></a> <span class="n">old_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> -</span><span id="rename_column-7194"><a href="#rename_column-7194"><span class="linenos">7194</span></a> <span class="n">new_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> -</span><span id="rename_column-7195"><a href="#rename_column-7195"><span class="linenos">7195</span></a> <span class="n">exists</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">None</span><span class="p">,</span> -</span><span id="rename_column-7196"><a href="#rename_column-7196"><span class="linenos">7196</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="rename_column-7197"><a href="#rename_column-7197"><span class="linenos">7197</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> -</span><span id="rename_column-7198"><a href="#rename_column-7198"><span class="linenos">7198</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME COLUMN... expression</span> -</span><span id="rename_column-7199"><a href="#rename_column-7199"><span class="linenos">7199</span></a> -</span><span id="rename_column-7200"><a href="#rename_column-7200"><span class="linenos">7200</span></a><span class="sd"> Args:</span> -</span><span id="rename_column-7201"><a href="#rename_column-7201"><span class="linenos">7201</span></a><span class="sd"> table_name: Name of the table</span> -</span><span id="rename_column-7202"><a href="#rename_column-7202"><span class="linenos">7202</span></a><span class="sd"> old_column: The old name of the column</span> -</span><span id="rename_column-7203"><a href="#rename_column-7203"><span class="linenos">7203</span></a><span class="sd"> new_column: The new name of the column</span> -</span><span id="rename_column-7204"><a href="#rename_column-7204"><span class="linenos">7204</span></a><span class="sd"> exists: Whether to add the `IF EXISTS` clause</span> -</span><span id="rename_column-7205"><a href="#rename_column-7205"><span class="linenos">7205</span></a><span class="sd"> dialect: The dialect to parse the table/column.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="rename_column-7198"><a href="#rename_column-7198"><span class="linenos">7198</span></a><span class="k">def</span> <span class="nf">rename_column</span><span class="p">(</span> +</span><span id="rename_column-7199"><a href="#rename_column-7199"><span class="linenos">7199</span></a> <span class="n">table_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> +</span><span id="rename_column-7200"><a href="#rename_column-7200"><span class="linenos">7200</span></a> <span class="n">old_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> +</span><span id="rename_column-7201"><a href="#rename_column-7201"><span class="linenos">7201</span></a> <span class="n">new_column_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> +</span><span id="rename_column-7202"><a href="#rename_column-7202"><span class="linenos">7202</span></a> <span class="n">exists</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">None</span><span class="p">,</span> +</span><span id="rename_column-7203"><a href="#rename_column-7203"><span class="linenos">7203</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="rename_column-7204"><a href="#rename_column-7204"><span class="linenos">7204</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> +</span><span id="rename_column-7205"><a href="#rename_column-7205"><span class="linenos">7205</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME COLUMN... expression</span> </span><span id="rename_column-7206"><a href="#rename_column-7206"><span class="linenos">7206</span></a> -</span><span id="rename_column-7207"><a href="#rename_column-7207"><span class="linenos">7207</span></a><span class="sd"> Returns:</span> -</span><span id="rename_column-7208"><a href="#rename_column-7208"><span class="linenos">7208</span></a><span class="sd"> Alter table expression</span> -</span><span id="rename_column-7209"><a href="#rename_column-7209"><span class="linenos">7209</span></a><span class="sd"> """</span> -</span><span id="rename_column-7210"><a href="#rename_column-7210"><span class="linenos">7210</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">table_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><span id="rename_column-7211"><a href="#rename_column-7211"><span class="linenos">7211</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">old_column_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><span id="rename_column-7212"><a href="#rename_column-7212"><span class="linenos">7212</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">new_column_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><span id="rename_column-7213"><a href="#rename_column-7213"><span class="linenos">7213</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> -</span><span id="rename_column-7214"><a href="#rename_column-7214"><span class="linenos">7214</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="rename_column-7215"><a href="#rename_column-7215"><span class="linenos">7215</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> -</span><span id="rename_column-7216"><a href="#rename_column-7216"><span class="linenos">7216</span></a> <span class="n">RenameColumn</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">),</span> -</span><span id="rename_column-7217"><a href="#rename_column-7217"><span class="linenos">7217</span></a> <span class="p">],</span> -</span><span id="rename_column-7218"><a href="#rename_column-7218"><span class="linenos">7218</span></a> <span class="p">)</span> +</span><span id="rename_column-7207"><a href="#rename_column-7207"><span class="linenos">7207</span></a><span class="sd"> Args:</span> +</span><span id="rename_column-7208"><a href="#rename_column-7208"><span class="linenos">7208</span></a><span class="sd"> table_name: Name of the table</span> +</span><span id="rename_column-7209"><a href="#rename_column-7209"><span class="linenos">7209</span></a><span class="sd"> old_column: The old name of the column</span> +</span><span id="rename_column-7210"><a href="#rename_column-7210"><span class="linenos">7210</span></a><span class="sd"> new_column: The new name of the column</span> +</span><span id="rename_column-7211"><a href="#rename_column-7211"><span class="linenos">7211</span></a><span class="sd"> exists: Whether to add the `IF EXISTS` clause</span> +</span><span id="rename_column-7212"><a href="#rename_column-7212"><span class="linenos">7212</span></a><span class="sd"> dialect: The dialect to parse the table/column.</span> +</span><span id="rename_column-7213"><a href="#rename_column-7213"><span class="linenos">7213</span></a> +</span><span id="rename_column-7214"><a href="#rename_column-7214"><span class="linenos">7214</span></a><span class="sd"> Returns:</span> +</span><span id="rename_column-7215"><a href="#rename_column-7215"><span class="linenos">7215</span></a><span class="sd"> Alter table expression</span> +</span><span id="rename_column-7216"><a href="#rename_column-7216"><span class="linenos">7216</span></a><span class="sd"> """</span> +</span><span id="rename_column-7217"><a href="#rename_column-7217"><span class="linenos">7217</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">table_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><span id="rename_column-7218"><a href="#rename_column-7218"><span class="linenos">7218</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">old_column_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><span id="rename_column-7219"><a href="#rename_column-7219"><span class="linenos">7219</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="n">to_column</span><span class="p">(</span><span class="n">new_column_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><span id="rename_column-7220"><a href="#rename_column-7220"><span class="linenos">7220</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> +</span><span id="rename_column-7221"><a href="#rename_column-7221"><span class="linenos">7221</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="rename_column-7222"><a href="#rename_column-7222"><span class="linenos">7222</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> +</span><span id="rename_column-7223"><a href="#rename_column-7223"><span class="linenos">7223</span></a> <span class="n">RenameColumn</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">),</span> +</span><span id="rename_column-7224"><a href="#rename_column-7224"><span class="linenos">7224</span></a> <span class="p">],</span> +</span><span id="rename_column-7225"><a href="#rename_column-7225"><span class="linenos">7225</span></a> <span class="p">)</span> </span></pre></div> @@ -100178,66 +100357,66 @@ If either are provided then an alias is also required.</li> </div> <a class="headerlink" href="#convert"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="convert-7221"><a href="#convert-7221"><span class="linenos">7221</span></a><span class="k">def</span> <span class="nf">convert</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="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="convert-7222"><a href="#convert-7222"><span class="linenos">7222</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> -</span><span id="convert-7223"><a href="#convert-7223"><span class="linenos">7223</span></a> -</span><span id="convert-7224"><a href="#convert-7224"><span class="linenos">7224</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> -</span><span id="convert-7225"><a href="#convert-7225"><span class="linenos">7225</span></a> -</span><span id="convert-7226"><a href="#convert-7226"><span class="linenos">7226</span></a><span class="sd"> Args:</span> -</span><span id="convert-7227"><a href="#convert-7227"><span class="linenos">7227</span></a><span class="sd"> value: A python object.</span> -</span><span id="convert-7228"><a href="#convert-7228"><span class="linenos">7228</span></a><span class="sd"> copy: Whether to copy `value` (only applies to Expressions and collections).</span> -</span><span id="convert-7229"><a href="#convert-7229"><span class="linenos">7229</span></a> -</span><span id="convert-7230"><a href="#convert-7230"><span class="linenos">7230</span></a><span class="sd"> Returns:</span> -</span><span id="convert-7231"><a href="#convert-7231"><span class="linenos">7231</span></a><span class="sd"> The equivalent expression object.</span> -</span><span id="convert-7232"><a href="#convert-7232"><span class="linenos">7232</span></a><span class="sd"> """</span> -</span><span id="convert-7233"><a href="#convert-7233"><span class="linenos">7233</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="convert-7234"><a href="#convert-7234"><span class="linenos">7234</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="convert-7235"><a href="#convert-7235"><span class="linenos">7235</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="convert-7236"><a href="#convert-7236"><span class="linenos">7236</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="convert-7237"><a href="#convert-7237"><span class="linenos">7237</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="convert-7238"><a href="#convert-7238"><span class="linenos">7238</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="convert-7239"><a href="#convert-7239"><span class="linenos">7239</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">)):</span> -</span><span id="convert-7240"><a href="#convert-7240"><span class="linenos">7240</span></a> <span class="k">return</span> <span class="n">null</span><span class="p">()</span> -</span><span id="convert-7241"><a href="#convert-7241"><span class="linenos">7241</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> -</span><span id="convert-7242"><a href="#convert-7242"><span class="linenos">7242</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="convert-7243"><a href="#convert-7243"><span class="linenos">7243</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span> -</span><span id="convert-7244"><a href="#convert-7244"><span class="linenos">7244</span></a> <span class="k">return</span> <span class="n">HexString</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="o">.</span><span class="n">hex</span><span class="p">())</span> -</span><span id="convert-7245"><a href="#convert-7245"><span class="linenos">7245</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> -</span><span id="convert-7246"><a href="#convert-7246"><span class="linenos">7246</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="convert-7247"><a href="#convert-7247"><span class="linenos">7247</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span> -</span><span id="convert-7248"><a href="#convert-7248"><span class="linenos">7248</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span> -</span><span id="convert-7249"><a href="#convert-7249"><span class="linenos">7249</span></a> <span class="p">)</span> -</span><span id="convert-7250"><a href="#convert-7250"><span class="linenos">7250</span></a> <span class="p">)</span> -</span><span id="convert-7251"><a href="#convert-7251"><span class="linenos">7251</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> -</span><span id="convert-7252"><a href="#convert-7252"><span class="linenos">7252</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> -</span><span id="convert-7253"><a href="#convert-7253"><span class="linenos">7253</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> -</span><span id="convert-7254"><a href="#convert-7254"><span class="linenos">7254</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> -</span><span id="convert-7255"><a href="#convert-7255"><span class="linenos">7255</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> -</span><span id="convert-7256"><a href="#convert-7256"><span class="linenos">7256</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"_fields"</span><span class="p">):</span> -</span><span id="convert-7257"><a href="#convert-7257"><span class="linenos">7257</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> -</span><span id="convert-7258"><a href="#convert-7258"><span class="linenos">7258</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="convert-7259"><a href="#convert-7259"><span class="linenos">7259</span></a> <span class="n">PropertyEQ</span><span class="p">(</span> -</span><span id="convert-7260"><a href="#convert-7260"><span class="linenos">7260</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">k</span><span class="p">),</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="convert-7261"><a href="#convert-7261"><span class="linenos">7261</span></a> <span class="p">)</span> -</span><span id="convert-7262"><a href="#convert-7262"><span class="linenos">7262</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">_fields</span> -</span><span id="convert-7263"><a href="#convert-7263"><span class="linenos">7263</span></a> <span class="p">]</span> -</span><span id="convert-7264"><a href="#convert-7264"><span class="linenos">7264</span></a> <span class="p">)</span> -</span><span id="convert-7265"><a href="#convert-7265"><span class="linenos">7265</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="convert-7266"><a href="#convert-7266"><span class="linenos">7266</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="convert-7267"><a href="#convert-7267"><span class="linenos">7267</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="convert-7268"><a href="#convert-7268"><span class="linenos">7268</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="convert-7269"><a href="#convert-7269"><span class="linenos">7269</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> -</span><span id="convert-7270"><a href="#convert-7270"><span class="linenos">7270</span></a> <span class="n">keys</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]),</span> -</span><span id="convert-7271"><a href="#convert-7271"><span class="linenos">7271</span></a> <span class="n">values</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()]),</span> -</span><span id="convert-7272"><a href="#convert-7272"><span class="linenos">7272</span></a> <span class="p">)</span> -</span><span id="convert-7273"><a href="#convert-7273"><span class="linenos">7273</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"__dict__"</span><span class="p">):</span> -</span><span id="convert-7274"><a href="#convert-7274"><span class="linenos">7274</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> -</span><span id="convert-7275"><a href="#convert-7275"><span class="linenos">7275</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="convert-7276"><a href="#convert-7276"><span class="linenos">7276</span></a> <span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> -</span><span id="convert-7277"><a href="#convert-7277"><span class="linenos">7277</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">value</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="convert-7278"><a href="#convert-7278"><span class="linenos">7278</span></a> <span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="convert-7228"><a href="#convert-7228"><span class="linenos">7228</span></a><span class="k">def</span> <span class="nf">convert</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="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="convert-7229"><a href="#convert-7229"><span class="linenos">7229</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> +</span><span id="convert-7230"><a href="#convert-7230"><span class="linenos">7230</span></a> +</span><span id="convert-7231"><a href="#convert-7231"><span class="linenos">7231</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> +</span><span id="convert-7232"><a href="#convert-7232"><span class="linenos">7232</span></a> +</span><span id="convert-7233"><a href="#convert-7233"><span class="linenos">7233</span></a><span class="sd"> Args:</span> +</span><span id="convert-7234"><a href="#convert-7234"><span class="linenos">7234</span></a><span class="sd"> value: A python object.</span> +</span><span id="convert-7235"><a href="#convert-7235"><span class="linenos">7235</span></a><span class="sd"> copy: Whether to copy `value` (only applies to Expressions and collections).</span> +</span><span id="convert-7236"><a href="#convert-7236"><span class="linenos">7236</span></a> +</span><span id="convert-7237"><a href="#convert-7237"><span class="linenos">7237</span></a><span class="sd"> Returns:</span> +</span><span id="convert-7238"><a href="#convert-7238"><span class="linenos">7238</span></a><span class="sd"> The equivalent expression object.</span> +</span><span id="convert-7239"><a href="#convert-7239"><span class="linenos">7239</span></a><span class="sd"> """</span> +</span><span id="convert-7240"><a href="#convert-7240"><span class="linenos">7240</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="convert-7241"><a href="#convert-7241"><span class="linenos">7241</span></a> <span class="k">return</span> <span class="n">maybe_copy</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="convert-7242"><a href="#convert-7242"><span class="linenos">7242</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="convert-7243"><a href="#convert-7243"><span class="linenos">7243</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="convert-7244"><a href="#convert-7244"><span class="linenos">7244</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="convert-7245"><a href="#convert-7245"><span class="linenos">7245</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="convert-7246"><a href="#convert-7246"><span class="linenos">7246</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">)):</span> +</span><span id="convert-7247"><a href="#convert-7247"><span class="linenos">7247</span></a> <span class="k">return</span> <span class="n">null</span><span class="p">()</span> +</span><span id="convert-7248"><a href="#convert-7248"><span class="linenos">7248</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> +</span><span id="convert-7249"><a href="#convert-7249"><span class="linenos">7249</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="convert-7250"><a href="#convert-7250"><span class="linenos">7250</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span> +</span><span id="convert-7251"><a href="#convert-7251"><span class="linenos">7251</span></a> <span class="k">return</span> <span class="n">HexString</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="o">.</span><span class="n">hex</span><span class="p">())</span> +</span><span id="convert-7252"><a href="#convert-7252"><span class="linenos">7252</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> +</span><span id="convert-7253"><a href="#convert-7253"><span class="linenos">7253</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="convert-7254"><a href="#convert-7254"><span class="linenos">7254</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span> +</span><span id="convert-7255"><a href="#convert-7255"><span class="linenos">7255</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span> +</span><span id="convert-7256"><a href="#convert-7256"><span class="linenos">7256</span></a> <span class="p">)</span> +</span><span id="convert-7257"><a href="#convert-7257"><span class="linenos">7257</span></a> <span class="p">)</span> +</span><span id="convert-7258"><a href="#convert-7258"><span class="linenos">7258</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> +</span><span id="convert-7259"><a href="#convert-7259"><span class="linenos">7259</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> +</span><span id="convert-7260"><a href="#convert-7260"><span class="linenos">7260</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> +</span><span id="convert-7261"><a href="#convert-7261"><span class="linenos">7261</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> +</span><span id="convert-7262"><a href="#convert-7262"><span class="linenos">7262</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> +</span><span id="convert-7263"><a href="#convert-7263"><span class="linenos">7263</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"_fields"</span><span class="p">):</span> +</span><span id="convert-7264"><a href="#convert-7264"><span class="linenos">7264</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> +</span><span id="convert-7265"><a href="#convert-7265"><span class="linenos">7265</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="convert-7266"><a href="#convert-7266"><span class="linenos">7266</span></a> <span class="n">PropertyEQ</span><span class="p">(</span> +</span><span id="convert-7267"><a href="#convert-7267"><span class="linenos">7267</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">k</span><span class="p">),</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="convert-7268"><a href="#convert-7268"><span class="linenos">7268</span></a> <span class="p">)</span> +</span><span id="convert-7269"><a href="#convert-7269"><span class="linenos">7269</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">_fields</span> +</span><span id="convert-7270"><a href="#convert-7270"><span class="linenos">7270</span></a> <span class="p">]</span> +</span><span id="convert-7271"><a href="#convert-7271"><span class="linenos">7271</span></a> <span class="p">)</span> +</span><span id="convert-7272"><a href="#convert-7272"><span class="linenos">7272</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="convert-7273"><a href="#convert-7273"><span class="linenos">7273</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="convert-7274"><a href="#convert-7274"><span class="linenos">7274</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="convert-7275"><a href="#convert-7275"><span class="linenos">7275</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="convert-7276"><a href="#convert-7276"><span class="linenos">7276</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> +</span><span id="convert-7277"><a href="#convert-7277"><span class="linenos">7277</span></a> <span class="n">keys</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]),</span> +</span><span id="convert-7278"><a href="#convert-7278"><span class="linenos">7278</span></a> <span class="n">values</span><span class="o">=</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()]),</span> </span><span id="convert-7279"><a href="#convert-7279"><span class="linenos">7279</span></a> <span class="p">)</span> -</span><span id="convert-7280"><a href="#convert-7280"><span class="linenos">7280</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="convert-7280"><a href="#convert-7280"><span class="linenos">7280</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"__dict__"</span><span class="p">):</span> +</span><span id="convert-7281"><a href="#convert-7281"><span class="linenos">7281</span></a> <span class="k">return</span> <span class="n">Struct</span><span class="p">(</span> +</span><span id="convert-7282"><a href="#convert-7282"><span class="linenos">7282</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="convert-7283"><a href="#convert-7283"><span class="linenos">7283</span></a> <span class="n">PropertyEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> +</span><span id="convert-7284"><a href="#convert-7284"><span class="linenos">7284</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">value</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="convert-7285"><a href="#convert-7285"><span class="linenos">7285</span></a> <span class="p">]</span> +</span><span id="convert-7286"><a href="#convert-7286"><span class="linenos">7286</span></a> <span class="p">)</span> +</span><span id="convert-7287"><a href="#convert-7287"><span class="linenos">7287</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span></pre></div> @@ -100272,24 +100451,24 @@ If either are provided then an alias is also required.</li> </div> <a class="headerlink" href="#replace_children"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_children-7283"><a href="#replace_children-7283"><span class="linenos">7283</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="replace_children-7284"><a href="#replace_children-7284"><span class="linenos">7284</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="replace_children-7285"><a href="#replace_children-7285"><span class="linenos">7285</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> -</span><span id="replace_children-7286"><a href="#replace_children-7286"><span class="linenos">7286</span></a><span class="sd"> """</span> -</span><span id="replace_children-7287"><a href="#replace_children-7287"><span class="linenos">7287</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="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span> -</span><span id="replace_children-7288"><a href="#replace_children-7288"><span class="linenos">7288</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span> -</span><span id="replace_children-7289"><a href="#replace_children-7289"><span class="linenos">7289</span></a> -</span><span id="replace_children-7290"><a href="#replace_children-7290"><span class="linenos">7290</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> -</span><span id="replace_children-7291"><a href="#replace_children-7291"><span class="linenos">7291</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="replace_children-7292"><a href="#replace_children-7292"><span class="linenos">7292</span></a> -</span><span id="replace_children-7293"><a href="#replace_children-7293"><span class="linenos">7293</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> -</span><span id="replace_children-7294"><a href="#replace_children-7294"><span class="linenos">7294</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="replace_children-7295"><a href="#replace_children-7295"><span class="linenos">7295</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)):</span> -</span><span id="replace_children-7296"><a href="#replace_children-7296"><span class="linenos">7296</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> -</span><span id="replace_children-7297"><a href="#replace_children-7297"><span class="linenos">7297</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="replace_children-7298"><a href="#replace_children-7298"><span class="linenos">7298</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_children-7290"><a href="#replace_children-7290"><span class="linenos">7290</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="replace_children-7291"><a href="#replace_children-7291"><span class="linenos">7291</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="replace_children-7292"><a href="#replace_children-7292"><span class="linenos">7292</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> +</span><span id="replace_children-7293"><a href="#replace_children-7293"><span class="linenos">7293</span></a><span class="sd"> """</span> +</span><span id="replace_children-7294"><a href="#replace_children-7294"><span class="linenos">7294</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="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span> +</span><span id="replace_children-7295"><a href="#replace_children-7295"><span class="linenos">7295</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span> +</span><span id="replace_children-7296"><a href="#replace_children-7296"><span class="linenos">7296</span></a> +</span><span id="replace_children-7297"><a href="#replace_children-7297"><span class="linenos">7297</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> +</span><span id="replace_children-7298"><a href="#replace_children-7298"><span class="linenos">7298</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="replace_children-7299"><a href="#replace_children-7299"><span class="linenos">7299</span></a> -</span><span id="replace_children-7300"><a href="#replace_children-7300"><span class="linenos">7300</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="replace_children-7300"><a href="#replace_children-7300"><span class="linenos">7300</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> +</span><span id="replace_children-7301"><a href="#replace_children-7301"><span class="linenos">7301</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="replace_children-7302"><a href="#replace_children-7302"><span class="linenos">7302</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)):</span> +</span><span id="replace_children-7303"><a href="#replace_children-7303"><span class="linenos">7303</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> +</span><span id="replace_children-7304"><a href="#replace_children-7304"><span class="linenos">7304</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="replace_children-7305"><a href="#replace_children-7305"><span class="linenos">7305</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> +</span><span id="replace_children-7306"><a href="#replace_children-7306"><span class="linenos">7306</span></a> +</span><span id="replace_children-7307"><a href="#replace_children-7307"><span class="linenos">7307</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> </span></pre></div> @@ -100309,30 +100488,30 @@ If either are provided then an alias is also required.</li> </div> <a class="headerlink" href="#replace_tree"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_tree-7303"><a href="#replace_tree-7303"><span class="linenos">7303</span></a><span class="k">def</span> <span class="nf">replace_tree</span><span class="p">(</span> -</span><span id="replace_tree-7304"><a href="#replace_tree-7304"><span class="linenos">7304</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="replace_tree-7305"><a href="#replace_tree-7305"><span class="linenos">7305</span></a> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> -</span><span id="replace_tree-7306"><a href="#replace_tree-7306"><span class="linenos">7306</span></a> <span class="n">prune</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">Callable</span><span class="p">[[</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="replace_tree-7307"><a href="#replace_tree-7307"><span class="linenos">7307</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="replace_tree-7308"><a href="#replace_tree-7308"><span class="linenos">7308</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="replace_tree-7309"><a href="#replace_tree-7309"><span class="linenos">7309</span></a><span class="sd"> Replace an entire tree with the result of function calls on each node.</span> -</span><span id="replace_tree-7310"><a href="#replace_tree-7310"><span class="linenos">7310</span></a> -</span><span id="replace_tree-7311"><a href="#replace_tree-7311"><span class="linenos">7311</span></a><span class="sd"> This will be traversed in reverse dfs, so leaves first.</span> -</span><span id="replace_tree-7312"><a href="#replace_tree-7312"><span class="linenos">7312</span></a><span class="sd"> If new nodes are created as a result of function calls, they will also be traversed.</span> -</span><span id="replace_tree-7313"><a href="#replace_tree-7313"><span class="linenos">7313</span></a><span class="sd"> """</span> -</span><span id="replace_tree-7314"><a href="#replace_tree-7314"><span class="linenos">7314</span></a> <span class="n">stack</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">))</span> -</span><span id="replace_tree-7315"><a href="#replace_tree-7315"><span class="linenos">7315</span></a> -</span><span id="replace_tree-7316"><a href="#replace_tree-7316"><span class="linenos">7316</span></a> <span class="k">while</span> <span class="n">stack</span><span class="p">:</span> -</span><span id="replace_tree-7317"><a href="#replace_tree-7317"><span class="linenos">7317</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> -</span><span id="replace_tree-7318"><a href="#replace_tree-7318"><span class="linenos">7318</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> -</span><span id="replace_tree-7319"><a href="#replace_tree-7319"><span class="linenos">7319</span></a> -</span><span id="replace_tree-7320"><a href="#replace_tree-7320"><span class="linenos">7320</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="replace_tree-7321"><a href="#replace_tree-7321"><span class="linenos">7321</span></a> <span class="n">node</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_tree-7310"><a href="#replace_tree-7310"><span class="linenos">7310</span></a><span class="k">def</span> <span class="nf">replace_tree</span><span class="p">(</span> +</span><span id="replace_tree-7311"><a href="#replace_tree-7311"><span class="linenos">7311</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="replace_tree-7312"><a href="#replace_tree-7312"><span class="linenos">7312</span></a> <span class="n">fun</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> +</span><span id="replace_tree-7313"><a href="#replace_tree-7313"><span class="linenos">7313</span></a> <span class="n">prune</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">Callable</span><span class="p">[[</span><span class="n">Expression</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="replace_tree-7314"><a href="#replace_tree-7314"><span class="linenos">7314</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="replace_tree-7315"><a href="#replace_tree-7315"><span class="linenos">7315</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="replace_tree-7316"><a href="#replace_tree-7316"><span class="linenos">7316</span></a><span class="sd"> Replace an entire tree with the result of function calls on each node.</span> +</span><span id="replace_tree-7317"><a href="#replace_tree-7317"><span class="linenos">7317</span></a> +</span><span id="replace_tree-7318"><a href="#replace_tree-7318"><span class="linenos">7318</span></a><span class="sd"> This will be traversed in reverse dfs, so leaves first.</span> +</span><span id="replace_tree-7319"><a href="#replace_tree-7319"><span class="linenos">7319</span></a><span class="sd"> If new nodes are created as a result of function calls, they will also be traversed.</span> +</span><span id="replace_tree-7320"><a href="#replace_tree-7320"><span class="linenos">7320</span></a><span class="sd"> """</span> +</span><span id="replace_tree-7321"><a href="#replace_tree-7321"><span class="linenos">7321</span></a> <span class="n">stack</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">))</span> </span><span id="replace_tree-7322"><a href="#replace_tree-7322"><span class="linenos">7322</span></a> -</span><span id="replace_tree-7323"><a href="#replace_tree-7323"><span class="linenos">7323</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="replace_tree-7324"><a href="#replace_tree-7324"><span class="linenos">7324</span></a> <span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> -</span><span id="replace_tree-7325"><a href="#replace_tree-7325"><span class="linenos">7325</span></a> -</span><span id="replace_tree-7326"><a href="#replace_tree-7326"><span class="linenos">7326</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="replace_tree-7323"><a href="#replace_tree-7323"><span class="linenos">7323</span></a> <span class="k">while</span> <span class="n">stack</span><span class="p">:</span> +</span><span id="replace_tree-7324"><a href="#replace_tree-7324"><span class="linenos">7324</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> +</span><span id="replace_tree-7325"><a href="#replace_tree-7325"><span class="linenos">7325</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> +</span><span id="replace_tree-7326"><a href="#replace_tree-7326"><span class="linenos">7326</span></a> +</span><span id="replace_tree-7327"><a href="#replace_tree-7327"><span class="linenos">7327</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="replace_tree-7328"><a href="#replace_tree-7328"><span class="linenos">7328</span></a> <span class="n">node</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> +</span><span id="replace_tree-7329"><a href="#replace_tree-7329"><span class="linenos">7329</span></a> +</span><span id="replace_tree-7330"><a href="#replace_tree-7330"><span class="linenos">7330</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="replace_tree-7331"><a href="#replace_tree-7331"><span class="linenos">7331</span></a> <span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_node</span><span class="p">)</span> +</span><span id="replace_tree-7332"><a href="#replace_tree-7332"><span class="linenos">7332</span></a> +</span><span id="replace_tree-7333"><a href="#replace_tree-7333"><span class="linenos">7333</span></a> <span class="k">return</span> <span class="n">new_node</span> </span></pre></div> @@ -100355,27 +100534,27 @@ If new nodes are created as a result of function calls, they will also be traver </div> <a class="headerlink" href="#column_table_names"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="column_table_names-7329"><a href="#column_table_names-7329"><span class="linenos">7329</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">exclude</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> -</span><span id="column_table_names-7330"><a href="#column_table_names-7330"><span class="linenos">7330</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="column_table_names-7331"><a href="#column_table_names-7331"><span class="linenos">7331</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> -</span><span id="column_table_names-7332"><a href="#column_table_names-7332"><span class="linenos">7332</span></a> -</span><span id="column_table_names-7333"><a href="#column_table_names-7333"><span class="linenos">7333</span></a><span class="sd"> Example:</span> -</span><span id="column_table_names-7334"><a href="#column_table_names-7334"><span class="linenos">7334</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="column_table_names-7335"><a href="#column_table_names-7335"><span class="linenos">7335</span></a><span class="sd"> >>> sorted(column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")))</span> -</span><span id="column_table_names-7336"><a href="#column_table_names-7336"><span class="linenos">7336</span></a><span class="sd"> ['a', 'c']</span> -</span><span id="column_table_names-7337"><a href="#column_table_names-7337"><span class="linenos">7337</span></a> -</span><span id="column_table_names-7338"><a href="#column_table_names-7338"><span class="linenos">7338</span></a><span class="sd"> Args:</span> -</span><span id="column_table_names-7339"><a href="#column_table_names-7339"><span class="linenos">7339</span></a><span class="sd"> expression: expression to find table names.</span> -</span><span id="column_table_names-7340"><a href="#column_table_names-7340"><span class="linenos">7340</span></a><span class="sd"> exclude: a table name to exclude</span> -</span><span id="column_table_names-7341"><a href="#column_table_names-7341"><span class="linenos">7341</span></a> -</span><span id="column_table_names-7342"><a href="#column_table_names-7342"><span class="linenos">7342</span></a><span class="sd"> Returns:</span> -</span><span id="column_table_names-7343"><a href="#column_table_names-7343"><span class="linenos">7343</span></a><span class="sd"> A list of unique names.</span> -</span><span id="column_table_names-7344"><a href="#column_table_names-7344"><span class="linenos">7344</span></a><span class="sd"> """</span> -</span><span id="column_table_names-7345"><a href="#column_table_names-7345"><span class="linenos">7345</span></a> <span class="k">return</span> <span class="p">{</span> -</span><span id="column_table_names-7346"><a href="#column_table_names-7346"><span class="linenos">7346</span></a> <span class="n">table</span> -</span><span id="column_table_names-7347"><a href="#column_table_names-7347"><span class="linenos">7347</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">))</span> -</span><span id="column_table_names-7348"><a href="#column_table_names-7348"><span class="linenos">7348</span></a> <span class="k">if</span> <span class="n">table</span> <span class="ow">and</span> <span class="n">table</span> <span class="o">!=</span> <span class="n">exclude</span> -</span><span id="column_table_names-7349"><a href="#column_table_names-7349"><span class="linenos">7349</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="column_table_names-7336"><a href="#column_table_names-7336"><span class="linenos">7336</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">exclude</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="column_table_names-7337"><a href="#column_table_names-7337"><span class="linenos">7337</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="column_table_names-7338"><a href="#column_table_names-7338"><span class="linenos">7338</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> +</span><span id="column_table_names-7339"><a href="#column_table_names-7339"><span class="linenos">7339</span></a> +</span><span id="column_table_names-7340"><a href="#column_table_names-7340"><span class="linenos">7340</span></a><span class="sd"> Example:</span> +</span><span id="column_table_names-7341"><a href="#column_table_names-7341"><span class="linenos">7341</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="column_table_names-7342"><a href="#column_table_names-7342"><span class="linenos">7342</span></a><span class="sd"> >>> sorted(column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")))</span> +</span><span id="column_table_names-7343"><a href="#column_table_names-7343"><span class="linenos">7343</span></a><span class="sd"> ['a', 'c']</span> +</span><span id="column_table_names-7344"><a href="#column_table_names-7344"><span class="linenos">7344</span></a> +</span><span id="column_table_names-7345"><a href="#column_table_names-7345"><span class="linenos">7345</span></a><span class="sd"> Args:</span> +</span><span id="column_table_names-7346"><a href="#column_table_names-7346"><span class="linenos">7346</span></a><span class="sd"> expression: expression to find table names.</span> +</span><span id="column_table_names-7347"><a href="#column_table_names-7347"><span class="linenos">7347</span></a><span class="sd"> exclude: a table name to exclude</span> +</span><span id="column_table_names-7348"><a href="#column_table_names-7348"><span class="linenos">7348</span></a> +</span><span id="column_table_names-7349"><a href="#column_table_names-7349"><span class="linenos">7349</span></a><span class="sd"> Returns:</span> +</span><span id="column_table_names-7350"><a href="#column_table_names-7350"><span class="linenos">7350</span></a><span class="sd"> A list of unique names.</span> +</span><span id="column_table_names-7351"><a href="#column_table_names-7351"><span class="linenos">7351</span></a><span class="sd"> """</span> +</span><span id="column_table_names-7352"><a href="#column_table_names-7352"><span class="linenos">7352</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="column_table_names-7353"><a href="#column_table_names-7353"><span class="linenos">7353</span></a> <span class="n">table</span> +</span><span id="column_table_names-7354"><a href="#column_table_names-7354"><span class="linenos">7354</span></a> <span class="k">for</span> <span class="n">table</span> <span class="ow">in</span> <span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">))</span> +</span><span id="column_table_names-7355"><a href="#column_table_names-7355"><span class="linenos">7355</span></a> <span class="k">if</span> <span class="n">table</span> <span class="ow">and</span> <span class="n">table</span> <span class="o">!=</span> <span class="n">exclude</span> +</span><span id="column_table_names-7356"><a href="#column_table_names-7356"><span class="linenos">7356</span></a> <span class="p">}</span> </span></pre></div> @@ -100419,38 +100598,38 @@ If new nodes are created as a result of function calls, they will also be traver </div> <a class="headerlink" href="#table_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="table_name-7352"><a href="#table_name-7352"><span class="linenos">7352</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="table_name-7353"><a href="#table_name-7353"><span class="linenos">7353</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> -</span><span id="table_name-7354"><a href="#table_name-7354"><span class="linenos">7354</span></a> -</span><span id="table_name-7355"><a href="#table_name-7355"><span class="linenos">7355</span></a><span class="sd"> Args:</span> -</span><span id="table_name-7356"><a href="#table_name-7356"><span class="linenos">7356</span></a><span class="sd"> table: Table expression node or string.</span> -</span><span id="table_name-7357"><a href="#table_name-7357"><span class="linenos">7357</span></a><span class="sd"> dialect: The dialect to generate the table name for.</span> -</span><span id="table_name-7358"><a href="#table_name-7358"><span class="linenos">7358</span></a><span class="sd"> identify: Determines when an identifier should be quoted. Possible values are:</span> -</span><span id="table_name-7359"><a href="#table_name-7359"><span class="linenos">7359</span></a><span class="sd"> False (default): Never quote, except in cases where it's mandatory by the dialect.</span> -</span><span id="table_name-7360"><a href="#table_name-7360"><span class="linenos">7360</span></a><span class="sd"> True: Always quote.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="table_name-7359"><a href="#table_name-7359"><span class="linenos">7359</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="table_name-7360"><a href="#table_name-7360"><span class="linenos">7360</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> </span><span id="table_name-7361"><a href="#table_name-7361"><span class="linenos">7361</span></a> -</span><span id="table_name-7362"><a href="#table_name-7362"><span class="linenos">7362</span></a><span class="sd"> Examples:</span> -</span><span id="table_name-7363"><a href="#table_name-7363"><span class="linenos">7363</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="table_name-7364"><a href="#table_name-7364"><span class="linenos">7364</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> -</span><span id="table_name-7365"><a href="#table_name-7365"><span class="linenos">7365</span></a><span class="sd"> 'a.b.c'</span> -</span><span id="table_name-7366"><a href="#table_name-7366"><span class="linenos">7366</span></a> -</span><span id="table_name-7367"><a href="#table_name-7367"><span class="linenos">7367</span></a><span class="sd"> Returns:</span> -</span><span id="table_name-7368"><a href="#table_name-7368"><span class="linenos">7368</span></a><span class="sd"> The table name.</span> -</span><span id="table_name-7369"><a href="#table_name-7369"><span class="linenos">7369</span></a><span class="sd"> """</span> -</span><span id="table_name-7370"><a href="#table_name-7370"><span class="linenos">7370</span></a> -</span><span id="table_name-7371"><a href="#table_name-7371"><span class="linenos">7371</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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="table_name-7372"><a href="#table_name-7372"><span class="linenos">7372</span></a> -</span><span id="table_name-7373"><a href="#table_name-7373"><span class="linenos">7373</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> -</span><span id="table_name-7374"><a href="#table_name-7374"><span class="linenos">7374</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="table_name-7375"><a href="#table_name-7375"><span class="linenos">7375</span></a> -</span><span id="table_name-7376"><a href="#table_name-7376"><span class="linenos">7376</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="table_name-7377"><a href="#table_name-7377"><span class="linenos">7377</span></a> <span class="p">(</span> -</span><span id="table_name-7378"><a href="#table_name-7378"><span class="linenos">7378</span></a> <span class="n">part</span><span class="o">.</span><span class="n">sql</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">identify</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="table_name-7379"><a href="#table_name-7379"><span class="linenos">7379</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="table_name-7380"><a href="#table_name-7380"><span class="linenos">7380</span></a> <span class="k">else</span> <span class="n">part</span><span class="o">.</span><span class="n">name</span> -</span><span id="table_name-7381"><a href="#table_name-7381"><span class="linenos">7381</span></a> <span class="p">)</span> -</span><span id="table_name-7382"><a href="#table_name-7382"><span class="linenos">7382</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">table</span><span class="o">.</span><span class="n">parts</span> -</span><span id="table_name-7383"><a href="#table_name-7383"><span class="linenos">7383</span></a> <span class="p">)</span> +</span><span id="table_name-7362"><a href="#table_name-7362"><span class="linenos">7362</span></a><span class="sd"> Args:</span> +</span><span id="table_name-7363"><a href="#table_name-7363"><span class="linenos">7363</span></a><span class="sd"> table: Table expression node or string.</span> +</span><span id="table_name-7364"><a href="#table_name-7364"><span class="linenos">7364</span></a><span class="sd"> dialect: The dialect to generate the table name for.</span> +</span><span id="table_name-7365"><a href="#table_name-7365"><span class="linenos">7365</span></a><span class="sd"> identify: Determines when an identifier should be quoted. Possible values are:</span> +</span><span id="table_name-7366"><a href="#table_name-7366"><span class="linenos">7366</span></a><span class="sd"> False (default): Never quote, except in cases where it's mandatory by the dialect.</span> +</span><span id="table_name-7367"><a href="#table_name-7367"><span class="linenos">7367</span></a><span class="sd"> True: Always quote.</span> +</span><span id="table_name-7368"><a href="#table_name-7368"><span class="linenos">7368</span></a> +</span><span id="table_name-7369"><a href="#table_name-7369"><span class="linenos">7369</span></a><span class="sd"> Examples:</span> +</span><span id="table_name-7370"><a href="#table_name-7370"><span class="linenos">7370</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="table_name-7371"><a href="#table_name-7371"><span class="linenos">7371</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> +</span><span id="table_name-7372"><a href="#table_name-7372"><span class="linenos">7372</span></a><span class="sd"> 'a.b.c'</span> +</span><span id="table_name-7373"><a href="#table_name-7373"><span class="linenos">7373</span></a> +</span><span id="table_name-7374"><a href="#table_name-7374"><span class="linenos">7374</span></a><span class="sd"> Returns:</span> +</span><span id="table_name-7375"><a href="#table_name-7375"><span class="linenos">7375</span></a><span class="sd"> The table name.</span> +</span><span id="table_name-7376"><a href="#table_name-7376"><span class="linenos">7376</span></a><span class="sd"> """</span> +</span><span id="table_name-7377"><a href="#table_name-7377"><span class="linenos">7377</span></a> +</span><span id="table_name-7378"><a href="#table_name-7378"><span class="linenos">7378</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</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="table_name-7379"><a href="#table_name-7379"><span class="linenos">7379</span></a> +</span><span id="table_name-7380"><a href="#table_name-7380"><span class="linenos">7380</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="table_name-7381"><a href="#table_name-7381"><span class="linenos">7381</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="table_name-7382"><a href="#table_name-7382"><span class="linenos">7382</span></a> +</span><span id="table_name-7383"><a href="#table_name-7383"><span class="linenos">7383</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="table_name-7384"><a href="#table_name-7384"><span class="linenos">7384</span></a> <span class="p">(</span> +</span><span id="table_name-7385"><a href="#table_name-7385"><span class="linenos">7385</span></a> <span class="n">part</span><span class="o">.</span><span class="n">sql</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">identify</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="table_name-7386"><a href="#table_name-7386"><span class="linenos">7386</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">SAFE_IDENTIFIER_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="table_name-7387"><a href="#table_name-7387"><span class="linenos">7387</span></a> <span class="k">else</span> <span class="n">part</span><span class="o">.</span><span class="n">name</span> +</span><span id="table_name-7388"><a href="#table_name-7388"><span class="linenos">7388</span></a> <span class="p">)</span> +</span><span id="table_name-7389"><a href="#table_name-7389"><span class="linenos">7389</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">table</span><span class="o">.</span><span class="n">parts</span> +</span><span id="table_name-7390"><a href="#table_name-7390"><span class="linenos">7390</span></a> <span class="p">)</span> </span></pre></div> @@ -100497,26 +100676,26 @@ True: Always quote.</li> </div> <a class="headerlink" href="#normalize_table_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="normalize_table_name-7386"><a href="#normalize_table_name-7386"><span class="linenos">7386</span></a><span class="k">def</span> <span class="nf">normalize_table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="normalize_table_name-7387"><a href="#normalize_table_name-7387"><span class="linenos">7387</span></a><span class="w"> </span><span class="sd">"""Returns a case normalized table name without quotes.</span> -</span><span id="normalize_table_name-7388"><a href="#normalize_table_name-7388"><span class="linenos">7388</span></a> -</span><span id="normalize_table_name-7389"><a href="#normalize_table_name-7389"><span class="linenos">7389</span></a><span class="sd"> Args:</span> -</span><span id="normalize_table_name-7390"><a href="#normalize_table_name-7390"><span class="linenos">7390</span></a><span class="sd"> table: the table to normalize</span> -</span><span id="normalize_table_name-7391"><a href="#normalize_table_name-7391"><span class="linenos">7391</span></a><span class="sd"> dialect: the dialect to use for normalization rules</span> -</span><span id="normalize_table_name-7392"><a href="#normalize_table_name-7392"><span class="linenos">7392</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="normalize_table_name-7393"><a href="#normalize_table_name-7393"><span class="linenos">7393</span></a> -</span><span id="normalize_table_name-7394"><a href="#normalize_table_name-7394"><span class="linenos">7394</span></a><span class="sd"> Examples:</span> -</span><span id="normalize_table_name-7395"><a href="#normalize_table_name-7395"><span class="linenos">7395</span></a><span class="sd"> >>> normalize_table_name("`A-B`.c", dialect="bigquery")</span> -</span><span id="normalize_table_name-7396"><a href="#normalize_table_name-7396"><span class="linenos">7396</span></a><span class="sd"> 'A-B.c'</span> -</span><span id="normalize_table_name-7397"><a href="#normalize_table_name-7397"><span class="linenos">7397</span></a><span class="sd"> """</span> -</span><span id="normalize_table_name-7398"><a href="#normalize_table_name-7398"><span class="linenos">7398</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> -</span><span id="normalize_table_name-7399"><a href="#normalize_table_name-7399"><span class="linenos">7399</span></a> -</span><span id="normalize_table_name-7400"><a href="#normalize_table_name-7400"><span class="linenos">7400</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="normalize_table_name-7401"><a href="#normalize_table_name-7401"><span class="linenos">7401</span></a> <span class="n">p</span><span class="o">.</span><span class="n">name</span> -</span><span id="normalize_table_name-7402"><a href="#normalize_table_name-7402"><span class="linenos">7402</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">normalize_identifiers</span><span class="p">(</span> -</span><span id="normalize_table_name-7403"><a href="#normalize_table_name-7403"><span class="linenos">7403</span></a> <span class="n">to_table</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> -</span><span id="normalize_table_name-7404"><a href="#normalize_table_name-7404"><span class="linenos">7404</span></a> <span class="p">)</span><span class="o">.</span><span class="n">parts</span> -</span><span id="normalize_table_name-7405"><a href="#normalize_table_name-7405"><span class="linenos">7405</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="normalize_table_name-7393"><a href="#normalize_table_name-7393"><span class="linenos">7393</span></a><span class="k">def</span> <span class="nf">normalize_table_name</span><span class="p">(</span><span class="n">table</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="normalize_table_name-7394"><a href="#normalize_table_name-7394"><span class="linenos">7394</span></a><span class="w"> </span><span class="sd">"""Returns a case normalized table name without quotes.</span> +</span><span id="normalize_table_name-7395"><a href="#normalize_table_name-7395"><span class="linenos">7395</span></a> +</span><span id="normalize_table_name-7396"><a href="#normalize_table_name-7396"><span class="linenos">7396</span></a><span class="sd"> Args:</span> +</span><span id="normalize_table_name-7397"><a href="#normalize_table_name-7397"><span class="linenos">7397</span></a><span class="sd"> table: the table to normalize</span> +</span><span id="normalize_table_name-7398"><a href="#normalize_table_name-7398"><span class="linenos">7398</span></a><span class="sd"> dialect: the dialect to use for normalization rules</span> +</span><span id="normalize_table_name-7399"><a href="#normalize_table_name-7399"><span class="linenos">7399</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="normalize_table_name-7400"><a href="#normalize_table_name-7400"><span class="linenos">7400</span></a> +</span><span id="normalize_table_name-7401"><a href="#normalize_table_name-7401"><span class="linenos">7401</span></a><span class="sd"> Examples:</span> +</span><span id="normalize_table_name-7402"><a href="#normalize_table_name-7402"><span class="linenos">7402</span></a><span class="sd"> >>> normalize_table_name("`A-B`.c", dialect="bigquery")</span> +</span><span id="normalize_table_name-7403"><a href="#normalize_table_name-7403"><span class="linenos">7403</span></a><span class="sd"> 'A-B.c'</span> +</span><span id="normalize_table_name-7404"><a href="#normalize_table_name-7404"><span class="linenos">7404</span></a><span class="sd"> """</span> +</span><span id="normalize_table_name-7405"><a href="#normalize_table_name-7405"><span class="linenos">7405</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> +</span><span id="normalize_table_name-7406"><a href="#normalize_table_name-7406"><span class="linenos">7406</span></a> +</span><span id="normalize_table_name-7407"><a href="#normalize_table_name-7407"><span class="linenos">7407</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="normalize_table_name-7408"><a href="#normalize_table_name-7408"><span class="linenos">7408</span></a> <span class="n">p</span><span class="o">.</span><span class="n">name</span> +</span><span id="normalize_table_name-7409"><a href="#normalize_table_name-7409"><span class="linenos">7409</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">normalize_identifiers</span><span class="p">(</span> +</span><span id="normalize_table_name-7410"><a href="#normalize_table_name-7410"><span class="linenos">7410</span></a> <span class="n">to_table</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> +</span><span id="normalize_table_name-7411"><a href="#normalize_table_name-7411"><span class="linenos">7411</span></a> <span class="p">)</span><span class="o">.</span><span class="n">parts</span> +</span><span id="normalize_table_name-7412"><a href="#normalize_table_name-7412"><span class="linenos">7412</span></a> <span class="p">)</span> </span></pre></div> @@ -100554,44 +100733,44 @@ True: Always quote.</li> </div> <a class="headerlink" href="#replace_tables"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_tables-7408"><a href="#replace_tables-7408"><span class="linenos">7408</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span> -</span><span id="replace_tables-7409"><a href="#replace_tables-7409"><span class="linenos">7409</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">E</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">Dict</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="replace_tables-7410"><a href="#replace_tables-7410"><span class="linenos">7410</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="replace_tables-7411"><a href="#replace_tables-7411"><span class="linenos">7411</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> -</span><span id="replace_tables-7412"><a href="#replace_tables-7412"><span class="linenos">7412</span></a> -</span><span id="replace_tables-7413"><a href="#replace_tables-7413"><span class="linenos">7413</span></a><span class="sd"> Args:</span> -</span><span id="replace_tables-7414"><a href="#replace_tables-7414"><span class="linenos">7414</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> -</span><span id="replace_tables-7415"><a href="#replace_tables-7415"><span class="linenos">7415</span></a><span class="sd"> mapping: mapping of table names.</span> -</span><span id="replace_tables-7416"><a href="#replace_tables-7416"><span class="linenos">7416</span></a><span class="sd"> dialect: the dialect of the mapping table</span> -</span><span id="replace_tables-7417"><a href="#replace_tables-7417"><span class="linenos">7417</span></a><span class="sd"> copy: whether to copy the expression.</span> -</span><span id="replace_tables-7418"><a href="#replace_tables-7418"><span class="linenos">7418</span></a> -</span><span id="replace_tables-7419"><a href="#replace_tables-7419"><span class="linenos">7419</span></a><span class="sd"> Examples:</span> -</span><span id="replace_tables-7420"><a href="#replace_tables-7420"><span class="linenos">7420</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="replace_tables-7421"><a href="#replace_tables-7421"><span class="linenos">7421</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> -</span><span id="replace_tables-7422"><a href="#replace_tables-7422"><span class="linenos">7422</span></a><span class="sd"> 'SELECT * FROM c /* a.b */'</span> -</span><span id="replace_tables-7423"><a href="#replace_tables-7423"><span class="linenos">7423</span></a> -</span><span id="replace_tables-7424"><a href="#replace_tables-7424"><span class="linenos">7424</span></a><span class="sd"> Returns:</span> -</span><span id="replace_tables-7425"><a href="#replace_tables-7425"><span class="linenos">7425</span></a><span class="sd"> The mapped expression.</span> -</span><span id="replace_tables-7426"><a href="#replace_tables-7426"><span class="linenos">7426</span></a><span class="sd"> """</span> -</span><span id="replace_tables-7427"><a href="#replace_tables-7427"><span class="linenos">7427</span></a> -</span><span id="replace_tables-7428"><a href="#replace_tables-7428"><span class="linenos">7428</span></a> <span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="replace_tables-7429"><a href="#replace_tables-7429"><span class="linenos">7429</span></a> -</span><span id="replace_tables-7430"><a href="#replace_tables-7430"><span class="linenos">7430</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="replace_tables-7431"><a href="#replace_tables-7431"><span class="linenos">7431</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="replace_tables-7432"><a href="#replace_tables-7432"><span class="linenos">7432</span></a> <span class="n">original</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="replace_tables-7433"><a href="#replace_tables-7433"><span class="linenos">7433</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">original</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_tables-7415"><a href="#replace_tables-7415"><span class="linenos">7415</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span> +</span><span id="replace_tables-7416"><a href="#replace_tables-7416"><span class="linenos">7416</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">E</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">Dict</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="replace_tables-7417"><a href="#replace_tables-7417"><span class="linenos">7417</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="replace_tables-7418"><a href="#replace_tables-7418"><span class="linenos">7418</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> +</span><span id="replace_tables-7419"><a href="#replace_tables-7419"><span class="linenos">7419</span></a> +</span><span id="replace_tables-7420"><a href="#replace_tables-7420"><span class="linenos">7420</span></a><span class="sd"> Args:</span> +</span><span id="replace_tables-7421"><a href="#replace_tables-7421"><span class="linenos">7421</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> +</span><span id="replace_tables-7422"><a href="#replace_tables-7422"><span class="linenos">7422</span></a><span class="sd"> mapping: mapping of table names.</span> +</span><span id="replace_tables-7423"><a href="#replace_tables-7423"><span class="linenos">7423</span></a><span class="sd"> dialect: the dialect of the mapping table</span> +</span><span id="replace_tables-7424"><a href="#replace_tables-7424"><span class="linenos">7424</span></a><span class="sd"> copy: whether to copy the expression.</span> +</span><span id="replace_tables-7425"><a href="#replace_tables-7425"><span class="linenos">7425</span></a> +</span><span id="replace_tables-7426"><a href="#replace_tables-7426"><span class="linenos">7426</span></a><span class="sd"> Examples:</span> +</span><span id="replace_tables-7427"><a href="#replace_tables-7427"><span class="linenos">7427</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="replace_tables-7428"><a href="#replace_tables-7428"><span class="linenos">7428</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> +</span><span id="replace_tables-7429"><a href="#replace_tables-7429"><span class="linenos">7429</span></a><span class="sd"> 'SELECT * FROM c /* a.b */'</span> +</span><span id="replace_tables-7430"><a href="#replace_tables-7430"><span class="linenos">7430</span></a> +</span><span id="replace_tables-7431"><a href="#replace_tables-7431"><span class="linenos">7431</span></a><span class="sd"> Returns:</span> +</span><span id="replace_tables-7432"><a href="#replace_tables-7432"><span class="linenos">7432</span></a><span class="sd"> The mapped expression.</span> +</span><span id="replace_tables-7433"><a href="#replace_tables-7433"><span class="linenos">7433</span></a><span class="sd"> """</span> </span><span id="replace_tables-7434"><a href="#replace_tables-7434"><span class="linenos">7434</span></a> -</span><span id="replace_tables-7435"><a href="#replace_tables-7435"><span class="linenos">7435</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> -</span><span id="replace_tables-7436"><a href="#replace_tables-7436"><span class="linenos">7436</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span> -</span><span id="replace_tables-7437"><a href="#replace_tables-7437"><span class="linenos">7437</span></a> <span class="n">new_name</span><span class="p">,</span> -</span><span id="replace_tables-7438"><a href="#replace_tables-7438"><span class="linenos">7438</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">TABLE_PARTS</span><span class="p">},</span> -</span><span id="replace_tables-7439"><a href="#replace_tables-7439"><span class="linenos">7439</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="replace_tables-7440"><a href="#replace_tables-7440"><span class="linenos">7440</span></a> <span class="p">)</span> -</span><span id="replace_tables-7441"><a href="#replace_tables-7441"><span class="linenos">7441</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span> -</span><span id="replace_tables-7442"><a href="#replace_tables-7442"><span class="linenos">7442</span></a> <span class="k">return</span> <span class="n">table</span> -</span><span id="replace_tables-7443"><a href="#replace_tables-7443"><span class="linenos">7443</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="replace_tables-7444"><a href="#replace_tables-7444"><span class="linenos">7444</span></a> -</span><span id="replace_tables-7445"><a href="#replace_tables-7445"><span class="linenos">7445</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="replace_tables-7435"><a href="#replace_tables-7435"><span class="linenos">7435</span></a> <span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="replace_tables-7436"><a href="#replace_tables-7436"><span class="linenos">7436</span></a> +</span><span id="replace_tables-7437"><a href="#replace_tables-7437"><span class="linenos">7437</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="replace_tables-7438"><a href="#replace_tables-7438"><span class="linenos">7438</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="replace_tables-7439"><a href="#replace_tables-7439"><span class="linenos">7439</span></a> <span class="n">original</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="replace_tables-7440"><a href="#replace_tables-7440"><span class="linenos">7440</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">original</span><span class="p">)</span> +</span><span id="replace_tables-7441"><a href="#replace_tables-7441"><span class="linenos">7441</span></a> +</span><span id="replace_tables-7442"><a href="#replace_tables-7442"><span class="linenos">7442</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> +</span><span id="replace_tables-7443"><a href="#replace_tables-7443"><span class="linenos">7443</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span> +</span><span id="replace_tables-7444"><a href="#replace_tables-7444"><span class="linenos">7444</span></a> <span class="n">new_name</span><span class="p">,</span> +</span><span id="replace_tables-7445"><a href="#replace_tables-7445"><span class="linenos">7445</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">TABLE_PARTS</span><span class="p">},</span> +</span><span id="replace_tables-7446"><a href="#replace_tables-7446"><span class="linenos">7446</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="replace_tables-7447"><a href="#replace_tables-7447"><span class="linenos">7447</span></a> <span class="p">)</span> +</span><span id="replace_tables-7448"><a href="#replace_tables-7448"><span class="linenos">7448</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span> +</span><span id="replace_tables-7449"><a href="#replace_tables-7449"><span class="linenos">7449</span></a> <span class="k">return</span> <span class="n">table</span> +</span><span id="replace_tables-7450"><a href="#replace_tables-7450"><span class="linenos">7450</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="replace_tables-7451"><a href="#replace_tables-7451"><span class="linenos">7451</span></a> +</span><span id="replace_tables-7452"><a href="#replace_tables-7452"><span class="linenos">7452</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span></pre></div> @@ -100637,40 +100816,40 @@ True: Always quote.</li> </div> <a class="headerlink" href="#replace_placeholders"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_placeholders-7448"><a href="#replace_placeholders-7448"><span class="linenos">7448</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="replace_placeholders-7449"><a href="#replace_placeholders-7449"><span class="linenos">7449</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> -</span><span id="replace_placeholders-7450"><a href="#replace_placeholders-7450"><span class="linenos">7450</span></a> -</span><span id="replace_placeholders-7451"><a href="#replace_placeholders-7451"><span class="linenos">7451</span></a><span class="sd"> Args:</span> -</span><span id="replace_placeholders-7452"><a href="#replace_placeholders-7452"><span class="linenos">7452</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> -</span><span id="replace_placeholders-7453"><a href="#replace_placeholders-7453"><span class="linenos">7453</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> -</span><span id="replace_placeholders-7454"><a href="#replace_placeholders-7454"><span class="linenos">7454</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> -</span><span id="replace_placeholders-7455"><a href="#replace_placeholders-7455"><span class="linenos">7455</span></a> -</span><span id="replace_placeholders-7456"><a href="#replace_placeholders-7456"><span class="linenos">7456</span></a><span class="sd"> Examples:</span> -</span><span id="replace_placeholders-7457"><a href="#replace_placeholders-7457"><span class="linenos">7457</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="replace_placeholders-7458"><a href="#replace_placeholders-7458"><span class="linenos">7458</span></a><span class="sd"> >>> replace_placeholders(</span> -</span><span id="replace_placeholders-7459"><a href="#replace_placeholders-7459"><span class="linenos">7459</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"),</span> -</span><span id="replace_placeholders-7460"><a href="#replace_placeholders-7460"><span class="linenos">7460</span></a><span class="sd"> ... exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")</span> -</span><span id="replace_placeholders-7461"><a href="#replace_placeholders-7461"><span class="linenos">7461</span></a><span class="sd"> ... ).sql()</span> -</span><span id="replace_placeholders-7462"><a href="#replace_placeholders-7462"><span class="linenos">7462</span></a><span class="sd"> "SELECT * FROM foo WHERE str_col = 'b'"</span> -</span><span id="replace_placeholders-7463"><a href="#replace_placeholders-7463"><span class="linenos">7463</span></a> -</span><span id="replace_placeholders-7464"><a href="#replace_placeholders-7464"><span class="linenos">7464</span></a><span class="sd"> Returns:</span> -</span><span id="replace_placeholders-7465"><a href="#replace_placeholders-7465"><span class="linenos">7465</span></a><span class="sd"> The mapped expression.</span> -</span><span id="replace_placeholders-7466"><a href="#replace_placeholders-7466"><span class="linenos">7466</span></a><span class="sd"> """</span> -</span><span id="replace_placeholders-7467"><a href="#replace_placeholders-7467"><span class="linenos">7467</span></a> -</span><span id="replace_placeholders-7468"><a href="#replace_placeholders-7468"><span class="linenos">7468</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="replace_placeholders-7469"><a href="#replace_placeholders-7469"><span class="linenos">7469</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> -</span><span id="replace_placeholders-7470"><a href="#replace_placeholders-7470"><span class="linenos">7470</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> -</span><span id="replace_placeholders-7471"><a href="#replace_placeholders-7471"><span class="linenos">7471</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="replace_placeholders-7472"><a href="#replace_placeholders-7472"><span class="linenos">7472</span></a> <span class="k">if</span> <span class="n">new_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="replace_placeholders-7473"><a href="#replace_placeholders-7473"><span class="linenos">7473</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> -</span><span id="replace_placeholders-7474"><a href="#replace_placeholders-7474"><span class="linenos">7474</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="replace_placeholders-7475"><a href="#replace_placeholders-7475"><span class="linenos">7475</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="replace_placeholders-7476"><a href="#replace_placeholders-7476"><span class="linenos">7476</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> -</span><span id="replace_placeholders-7477"><a href="#replace_placeholders-7477"><span class="linenos">7477</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> -</span><span id="replace_placeholders-7478"><a href="#replace_placeholders-7478"><span class="linenos">7478</span></a> <span class="k">pass</span> -</span><span id="replace_placeholders-7479"><a href="#replace_placeholders-7479"><span class="linenos">7479</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="replace_placeholders-7480"><a href="#replace_placeholders-7480"><span class="linenos">7480</span></a> -</span><span id="replace_placeholders-7481"><a href="#replace_placeholders-7481"><span class="linenos">7481</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_placeholders-7455"><a href="#replace_placeholders-7455"><span class="linenos">7455</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="replace_placeholders-7456"><a href="#replace_placeholders-7456"><span class="linenos">7456</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> +</span><span id="replace_placeholders-7457"><a href="#replace_placeholders-7457"><span class="linenos">7457</span></a> +</span><span id="replace_placeholders-7458"><a href="#replace_placeholders-7458"><span class="linenos">7458</span></a><span class="sd"> Args:</span> +</span><span id="replace_placeholders-7459"><a href="#replace_placeholders-7459"><span class="linenos">7459</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span> +</span><span id="replace_placeholders-7460"><a href="#replace_placeholders-7460"><span class="linenos">7460</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> +</span><span id="replace_placeholders-7461"><a href="#replace_placeholders-7461"><span class="linenos">7461</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> +</span><span id="replace_placeholders-7462"><a href="#replace_placeholders-7462"><span class="linenos">7462</span></a> +</span><span id="replace_placeholders-7463"><a href="#replace_placeholders-7463"><span class="linenos">7463</span></a><span class="sd"> Examples:</span> +</span><span id="replace_placeholders-7464"><a href="#replace_placeholders-7464"><span class="linenos">7464</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="replace_placeholders-7465"><a href="#replace_placeholders-7465"><span class="linenos">7465</span></a><span class="sd"> >>> replace_placeholders(</span> +</span><span id="replace_placeholders-7466"><a href="#replace_placeholders-7466"><span class="linenos">7466</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"),</span> +</span><span id="replace_placeholders-7467"><a href="#replace_placeholders-7467"><span class="linenos">7467</span></a><span class="sd"> ... exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")</span> +</span><span id="replace_placeholders-7468"><a href="#replace_placeholders-7468"><span class="linenos">7468</span></a><span class="sd"> ... ).sql()</span> +</span><span id="replace_placeholders-7469"><a href="#replace_placeholders-7469"><span class="linenos">7469</span></a><span class="sd"> "SELECT * FROM foo WHERE str_col = 'b'"</span> +</span><span id="replace_placeholders-7470"><a href="#replace_placeholders-7470"><span class="linenos">7470</span></a> +</span><span id="replace_placeholders-7471"><a href="#replace_placeholders-7471"><span class="linenos">7471</span></a><span class="sd"> Returns:</span> +</span><span id="replace_placeholders-7472"><a href="#replace_placeholders-7472"><span class="linenos">7472</span></a><span class="sd"> The mapped expression.</span> +</span><span id="replace_placeholders-7473"><a href="#replace_placeholders-7473"><span class="linenos">7473</span></a><span class="sd"> """</span> +</span><span id="replace_placeholders-7474"><a href="#replace_placeholders-7474"><span class="linenos">7474</span></a> +</span><span id="replace_placeholders-7475"><a href="#replace_placeholders-7475"><span class="linenos">7475</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="replace_placeholders-7476"><a href="#replace_placeholders-7476"><span class="linenos">7476</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> +</span><span id="replace_placeholders-7477"><a href="#replace_placeholders-7477"><span class="linenos">7477</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> +</span><span id="replace_placeholders-7478"><a href="#replace_placeholders-7478"><span class="linenos">7478</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="replace_placeholders-7479"><a href="#replace_placeholders-7479"><span class="linenos">7479</span></a> <span class="k">if</span> <span class="n">new_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="replace_placeholders-7480"><a href="#replace_placeholders-7480"><span class="linenos">7480</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> +</span><span id="replace_placeholders-7481"><a href="#replace_placeholders-7481"><span class="linenos">7481</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="replace_placeholders-7482"><a href="#replace_placeholders-7482"><span class="linenos">7482</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="replace_placeholders-7483"><a href="#replace_placeholders-7483"><span class="linenos">7483</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> +</span><span id="replace_placeholders-7484"><a href="#replace_placeholders-7484"><span class="linenos">7484</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> +</span><span id="replace_placeholders-7485"><a href="#replace_placeholders-7485"><span class="linenos">7485</span></a> <span class="k">pass</span> +</span><span id="replace_placeholders-7486"><a href="#replace_placeholders-7486"><span class="linenos">7486</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="replace_placeholders-7487"><a href="#replace_placeholders-7487"><span class="linenos">7487</span></a> +</span><span id="replace_placeholders-7488"><a href="#replace_placeholders-7488"><span class="linenos">7488</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span></pre></div> @@ -100718,44 +100897,44 @@ True: Always quote.</li> </div> <a class="headerlink" href="#expand"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="expand-7484"><a href="#expand-7484"><span class="linenos">7484</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span> -</span><span id="expand-7485"><a href="#expand-7485"><span class="linenos">7485</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="expand-7486"><a href="#expand-7486"><span class="linenos">7486</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Query</span><span class="p">],</span> -</span><span id="expand-7487"><a href="#expand-7487"><span class="linenos">7487</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="expand-7488"><a href="#expand-7488"><span class="linenos">7488</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="expand-7489"><a href="#expand-7489"><span class="linenos">7489</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="expand-7490"><a href="#expand-7490"><span class="linenos">7490</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> -</span><span id="expand-7491"><a href="#expand-7491"><span class="linenos">7491</span></a> -</span><span id="expand-7492"><a href="#expand-7492"><span class="linenos">7492</span></a><span class="sd"> Examples:</span> -</span><span id="expand-7493"><a href="#expand-7493"><span class="linenos">7493</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="expand-7494"><a href="#expand-7494"><span class="linenos">7494</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> -</span><span id="expand-7495"><a href="#expand-7495"><span class="linenos">7495</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> -</span><span id="expand-7496"><a href="#expand-7496"><span class="linenos">7496</span></a> -</span><span id="expand-7497"><a href="#expand-7497"><span class="linenos">7497</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()</span> -</span><span id="expand-7498"><a href="#expand-7498"><span class="linenos">7498</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'</span> -</span><span id="expand-7499"><a href="#expand-7499"><span class="linenos">7499</span></a> -</span><span id="expand-7500"><a href="#expand-7500"><span class="linenos">7500</span></a><span class="sd"> Args:</span> -</span><span id="expand-7501"><a href="#expand-7501"><span class="linenos">7501</span></a><span class="sd"> expression: The expression to expand.</span> -</span><span id="expand-7502"><a href="#expand-7502"><span class="linenos">7502</span></a><span class="sd"> sources: A dictionary of name to Queries.</span> -</span><span id="expand-7503"><a href="#expand-7503"><span class="linenos">7503</span></a><span class="sd"> dialect: The dialect of the sources dict.</span> -</span><span id="expand-7504"><a href="#expand-7504"><span class="linenos">7504</span></a><span class="sd"> copy: Whether to copy the expression during transformation. Defaults to True.</span> -</span><span id="expand-7505"><a href="#expand-7505"><span class="linenos">7505</span></a> -</span><span id="expand-7506"><a href="#expand-7506"><span class="linenos">7506</span></a><span class="sd"> Returns:</span> -</span><span id="expand-7507"><a href="#expand-7507"><span class="linenos">7507</span></a><span class="sd"> The transformed expression.</span> -</span><span id="expand-7508"><a href="#expand-7508"><span class="linenos">7508</span></a><span class="sd"> """</span> -</span><span id="expand-7509"><a href="#expand-7509"><span class="linenos">7509</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="expand-7510"><a href="#expand-7510"><span class="linenos">7510</span></a> -</span><span id="expand-7511"><a href="#expand-7511"><span class="linenos">7511</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="expand-7512"><a href="#expand-7512"><span class="linenos">7512</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="expand-7513"><a href="#expand-7513"><span class="linenos">7513</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="expand-7514"><a href="#expand-7514"><span class="linenos">7514</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> -</span><span id="expand-7515"><a href="#expand-7515"><span class="linenos">7515</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> -</span><span id="expand-7516"><a href="#expand-7516"><span class="linenos">7516</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> -</span><span id="expand-7517"><a href="#expand-7517"><span class="linenos">7517</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> -</span><span id="expand-7518"><a href="#expand-7518"><span class="linenos">7518</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="expand-7519"><a href="#expand-7519"><span class="linenos">7519</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="expand-7520"><a href="#expand-7520"><span class="linenos">7520</span></a> -</span><span id="expand-7521"><a href="#expand-7521"><span class="linenos">7521</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="expand-7491"><a href="#expand-7491"><span class="linenos">7491</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span> +</span><span id="expand-7492"><a href="#expand-7492"><span class="linenos">7492</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="expand-7493"><a href="#expand-7493"><span class="linenos">7493</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Query</span><span class="p">],</span> +</span><span id="expand-7494"><a href="#expand-7494"><span class="linenos">7494</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="expand-7495"><a href="#expand-7495"><span class="linenos">7495</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="expand-7496"><a href="#expand-7496"><span class="linenos">7496</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="expand-7497"><a href="#expand-7497"><span class="linenos">7497</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> +</span><span id="expand-7498"><a href="#expand-7498"><span class="linenos">7498</span></a> +</span><span id="expand-7499"><a href="#expand-7499"><span class="linenos">7499</span></a><span class="sd"> Examples:</span> +</span><span id="expand-7500"><a href="#expand-7500"><span class="linenos">7500</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="expand-7501"><a href="#expand-7501"><span class="linenos">7501</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> +</span><span id="expand-7502"><a href="#expand-7502"><span class="linenos">7502</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> +</span><span id="expand-7503"><a href="#expand-7503"><span class="linenos">7503</span></a> +</span><span id="expand-7504"><a href="#expand-7504"><span class="linenos">7504</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()</span> +</span><span id="expand-7505"><a href="#expand-7505"><span class="linenos">7505</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'</span> +</span><span id="expand-7506"><a href="#expand-7506"><span class="linenos">7506</span></a> +</span><span id="expand-7507"><a href="#expand-7507"><span class="linenos">7507</span></a><span class="sd"> Args:</span> +</span><span id="expand-7508"><a href="#expand-7508"><span class="linenos">7508</span></a><span class="sd"> expression: The expression to expand.</span> +</span><span id="expand-7509"><a href="#expand-7509"><span class="linenos">7509</span></a><span class="sd"> sources: A dictionary of name to Queries.</span> +</span><span id="expand-7510"><a href="#expand-7510"><span class="linenos">7510</span></a><span class="sd"> dialect: The dialect of the sources dict.</span> +</span><span id="expand-7511"><a href="#expand-7511"><span class="linenos">7511</span></a><span class="sd"> copy: Whether to copy the expression during transformation. Defaults to True.</span> +</span><span id="expand-7512"><a href="#expand-7512"><span class="linenos">7512</span></a> +</span><span id="expand-7513"><a href="#expand-7513"><span class="linenos">7513</span></a><span class="sd"> Returns:</span> +</span><span id="expand-7514"><a href="#expand-7514"><span class="linenos">7514</span></a><span class="sd"> The transformed expression.</span> +</span><span id="expand-7515"><a href="#expand-7515"><span class="linenos">7515</span></a><span class="sd"> """</span> +</span><span id="expand-7516"><a href="#expand-7516"><span class="linenos">7516</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">):</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="expand-7517"><a href="#expand-7517"><span class="linenos">7517</span></a> +</span><span id="expand-7518"><a href="#expand-7518"><span class="linenos">7518</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="expand-7519"><a href="#expand-7519"><span class="linenos">7519</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="expand-7520"><a href="#expand-7520"><span class="linenos">7520</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="expand-7521"><a href="#expand-7521"><span class="linenos">7521</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> +</span><span id="expand-7522"><a href="#expand-7522"><span class="linenos">7522</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> +</span><span id="expand-7523"><a href="#expand-7523"><span class="linenos">7523</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> +</span><span id="expand-7524"><a href="#expand-7524"><span class="linenos">7524</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> +</span><span id="expand-7525"><a href="#expand-7525"><span class="linenos">7525</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="expand-7526"><a href="#expand-7526"><span class="linenos">7526</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="expand-7527"><a href="#expand-7527"><span class="linenos">7527</span></a> +</span><span id="expand-7528"><a href="#expand-7528"><span class="linenos">7528</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> </span></pre></div> @@ -100807,67 +100986,67 @@ True: Always quote.</li> </div> <a class="headerlink" href="#func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="func-7524"><a href="#func-7524"><span class="linenos">7524</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> -</span><span id="func-7525"><a href="#func-7525"><span class="linenos">7525</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="func-7526"><a href="#func-7526"><span class="linenos">7526</span></a><span class="sd"> Returns a Func expression.</span> -</span><span id="func-7527"><a href="#func-7527"><span class="linenos">7527</span></a> -</span><span id="func-7528"><a href="#func-7528"><span class="linenos">7528</span></a><span class="sd"> Examples:</span> -</span><span id="func-7529"><a href="#func-7529"><span class="linenos">7529</span></a><span class="sd"> >>> func("abs", 5).sql()</span> -</span><span id="func-7530"><a href="#func-7530"><span class="linenos">7530</span></a><span class="sd"> 'ABS(5)'</span> -</span><span id="func-7531"><a href="#func-7531"><span class="linenos">7531</span></a> -</span><span id="func-7532"><a href="#func-7532"><span class="linenos">7532</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> -</span><span id="func-7533"><a href="#func-7533"><span class="linenos">7533</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="func-7531"><a href="#func-7531"><span class="linenos">7531</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> +</span><span id="func-7532"><a href="#func-7532"><span class="linenos">7532</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="func-7533"><a href="#func-7533"><span class="linenos">7533</span></a><span class="sd"> Returns a Func expression.</span> </span><span id="func-7534"><a href="#func-7534"><span class="linenos">7534</span></a> -</span><span id="func-7535"><a href="#func-7535"><span class="linenos">7535</span></a><span class="sd"> Args:</span> -</span><span id="func-7536"><a href="#func-7536"><span class="linenos">7536</span></a><span class="sd"> name: the name of the function to build.</span> -</span><span id="func-7537"><a href="#func-7537"><span class="linenos">7537</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> -</span><span id="func-7538"><a href="#func-7538"><span class="linenos">7538</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> -</span><span id="func-7539"><a href="#func-7539"><span class="linenos">7539</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="func-7540"><a href="#func-7540"><span class="linenos">7540</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="func-7535"><a href="#func-7535"><span class="linenos">7535</span></a><span class="sd"> Examples:</span> +</span><span id="func-7536"><a href="#func-7536"><span class="linenos">7536</span></a><span class="sd"> >>> func("abs", 5).sql()</span> +</span><span id="func-7537"><a href="#func-7537"><span class="linenos">7537</span></a><span class="sd"> 'ABS(5)'</span> +</span><span id="func-7538"><a href="#func-7538"><span class="linenos">7538</span></a> +</span><span id="func-7539"><a href="#func-7539"><span class="linenos">7539</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> +</span><span id="func-7540"><a href="#func-7540"><span class="linenos">7540</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> </span><span id="func-7541"><a href="#func-7541"><span class="linenos">7541</span></a> -</span><span id="func-7542"><a href="#func-7542"><span class="linenos">7542</span></a><span class="sd"> Note:</span> -</span><span id="func-7543"><a href="#func-7543"><span class="linenos">7543</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> -</span><span id="func-7544"><a href="#func-7544"><span class="linenos">7544</span></a> -</span><span id="func-7545"><a href="#func-7545"><span class="linenos">7545</span></a><span class="sd"> Returns:</span> -</span><span id="func-7546"><a href="#func-7546"><span class="linenos">7546</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> -</span><span id="func-7547"><a href="#func-7547"><span class="linenos">7547</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> -</span><span id="func-7548"><a href="#func-7548"><span class="linenos">7548</span></a><span class="sd"> """</span> -</span><span id="func-7549"><a href="#func-7549"><span class="linenos">7549</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> -</span><span id="func-7550"><a href="#func-7550"><span class="linenos">7550</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> +</span><span id="func-7542"><a href="#func-7542"><span class="linenos">7542</span></a><span class="sd"> Args:</span> +</span><span id="func-7543"><a href="#func-7543"><span class="linenos">7543</span></a><span class="sd"> name: the name of the function to build.</span> +</span><span id="func-7544"><a href="#func-7544"><span class="linenos">7544</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> +</span><span id="func-7545"><a href="#func-7545"><span class="linenos">7545</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> +</span><span id="func-7546"><a href="#func-7546"><span class="linenos">7546</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="func-7547"><a href="#func-7547"><span class="linenos">7547</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="func-7548"><a href="#func-7548"><span class="linenos">7548</span></a> +</span><span id="func-7549"><a href="#func-7549"><span class="linenos">7549</span></a><span class="sd"> Note:</span> +</span><span id="func-7550"><a href="#func-7550"><span class="linenos">7550</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> </span><span id="func-7551"><a href="#func-7551"><span class="linenos">7551</span></a> -</span><span id="func-7552"><a href="#func-7552"><span class="linenos">7552</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="func-7553"><a href="#func-7553"><span class="linenos">7553</span></a> -</span><span id="func-7554"><a href="#func-7554"><span class="linenos">7554</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="func-7555"><a href="#func-7555"><span class="linenos">7555</span></a> -</span><span id="func-7556"><a href="#func-7556"><span class="linenos">7556</span></a> <span class="n">converted</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span> -</span><span id="func-7557"><a href="#func-7557"><span class="linenos">7557</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="func-7552"><a href="#func-7552"><span class="linenos">7552</span></a><span class="sd"> Returns:</span> +</span><span id="func-7553"><a href="#func-7553"><span class="linenos">7553</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> +</span><span id="func-7554"><a href="#func-7554"><span class="linenos">7554</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> +</span><span id="func-7555"><a href="#func-7555"><span class="linenos">7555</span></a><span class="sd"> """</span> +</span><span id="func-7556"><a href="#func-7556"><span class="linenos">7556</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> +</span><span id="func-7557"><a href="#func-7557"><span class="linenos">7557</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> </span><span id="func-7558"><a href="#func-7558"><span class="linenos">7558</span></a> -</span><span id="func-7559"><a href="#func-7559"><span class="linenos">7559</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="func-7560"><a href="#func-7560"><span class="linenos">7560</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> -</span><span id="func-7561"><a href="#func-7561"><span class="linenos">7561</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span> -</span><span id="func-7562"><a href="#func-7562"><span class="linenos">7562</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> -</span><span id="func-7563"><a href="#func-7563"><span class="linenos">7563</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="func-7564"><a href="#func-7564"><span class="linenos">7564</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="func-7565"><a href="#func-7565"><span class="linenos">7565</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span> -</span><span id="func-7566"><a href="#func-7566"><span class="linenos">7566</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"from_arg_list"</span><span class="p">:</span> -</span><span id="func-7567"><a href="#func-7567"><span class="linenos">7567</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="func-7568"><a href="#func-7568"><span class="linenos">7568</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="func-7569"><a href="#func-7569"><span class="linenos">7569</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="func-7570"><a href="#func-7570"><span class="linenos">7570</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> -</span><span id="func-7571"><a href="#func-7571"><span class="linenos">7571</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="func-7572"><a href="#func-7572"><span class="linenos">7572</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="func-7573"><a href="#func-7573"><span class="linenos">7573</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> -</span><span id="func-7574"><a href="#func-7574"><span class="linenos">7574</span></a> <span class="sa">f</span><span class="s2">"Unable to convert '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' into a Func. Either manually construct "</span> -</span><span id="func-7575"><a href="#func-7575"><span class="linenos">7575</span></a> <span class="s2">"the Func expression of interest or parse the function call."</span> -</span><span id="func-7576"><a href="#func-7576"><span class="linenos">7576</span></a> <span class="p">)</span> -</span><span id="func-7577"><a href="#func-7577"><span class="linenos">7577</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="func-7578"><a href="#func-7578"><span class="linenos">7578</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span> -</span><span id="func-7579"><a href="#func-7579"><span class="linenos">7579</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="func-7580"><a href="#func-7580"><span class="linenos">7580</span></a> -</span><span id="func-7581"><a href="#func-7581"><span class="linenos">7581</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span> -</span><span id="func-7582"><a href="#func-7582"><span class="linenos">7582</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="func-7583"><a href="#func-7583"><span class="linenos">7583</span></a> -</span><span id="func-7584"><a href="#func-7584"><span class="linenos">7584</span></a> <span class="k">return</span> <span class="n">function</span> +</span><span id="func-7559"><a href="#func-7559"><span class="linenos">7559</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="func-7560"><a href="#func-7560"><span class="linenos">7560</span></a> +</span><span id="func-7561"><a href="#func-7561"><span class="linenos">7561</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="func-7562"><a href="#func-7562"><span class="linenos">7562</span></a> +</span><span id="func-7563"><a href="#func-7563"><span class="linenos">7563</span></a> <span class="n">converted</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span> +</span><span id="func-7564"><a href="#func-7564"><span class="linenos">7564</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="func-7565"><a href="#func-7565"><span class="linenos">7565</span></a> +</span><span id="func-7566"><a href="#func-7566"><span class="linenos">7566</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="func-7567"><a href="#func-7567"><span class="linenos">7567</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> +</span><span id="func-7568"><a href="#func-7568"><span class="linenos">7568</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span> +</span><span id="func-7569"><a href="#func-7569"><span class="linenos">7569</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> +</span><span id="func-7570"><a href="#func-7570"><span class="linenos">7570</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="func-7571"><a href="#func-7571"><span class="linenos">7571</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="func-7572"><a href="#func-7572"><span class="linenos">7572</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span> +</span><span id="func-7573"><a href="#func-7573"><span class="linenos">7573</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"from_arg_list"</span><span class="p">:</span> +</span><span id="func-7574"><a href="#func-7574"><span class="linenos">7574</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="func-7575"><a href="#func-7575"><span class="linenos">7575</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="func-7576"><a href="#func-7576"><span class="linenos">7576</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="func-7577"><a href="#func-7577"><span class="linenos">7577</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span> +</span><span id="func-7578"><a href="#func-7578"><span class="linenos">7578</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="func-7579"><a href="#func-7579"><span class="linenos">7579</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="func-7580"><a href="#func-7580"><span class="linenos">7580</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> +</span><span id="func-7581"><a href="#func-7581"><span class="linenos">7581</span></a> <span class="sa">f</span><span class="s2">"Unable to convert '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' into a Func. Either manually construct "</span> +</span><span id="func-7582"><a href="#func-7582"><span class="linenos">7582</span></a> <span class="s2">"the Func expression of interest or parse the function call."</span> +</span><span id="func-7583"><a href="#func-7583"><span class="linenos">7583</span></a> <span class="p">)</span> +</span><span id="func-7584"><a href="#func-7584"><span class="linenos">7584</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="func-7585"><a href="#func-7585"><span class="linenos">7585</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span> +</span><span id="func-7586"><a href="#func-7586"><span class="linenos">7586</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="func-7587"><a href="#func-7587"><span class="linenos">7587</span></a> +</span><span id="func-7588"><a href="#func-7588"><span class="linenos">7588</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span> +</span><span id="func-7589"><a href="#func-7589"><span class="linenos">7589</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="func-7590"><a href="#func-7590"><span class="linenos">7590</span></a> +</span><span id="func-7591"><a href="#func-7591"><span class="linenos">7591</span></a> <span class="k">return</span> <span class="n">function</span> </span></pre></div> @@ -100926,25 +101105,25 @@ True: Always quote.</li> </div> <a class="headerlink" href="#case"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="case-7587"><a href="#case-7587"><span class="linenos">7587</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span> -</span><span id="case-7588"><a href="#case-7588"><span class="linenos">7588</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="case-7589"><a href="#case-7589"><span class="linenos">7589</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="case-7590"><a href="#case-7590"><span class="linenos">7590</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> -</span><span id="case-7591"><a href="#case-7591"><span class="linenos">7591</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="case-7592"><a href="#case-7592"><span class="linenos">7592</span></a><span class="sd"> Initialize a CASE statement.</span> -</span><span id="case-7593"><a href="#case-7593"><span class="linenos">7593</span></a> -</span><span id="case-7594"><a href="#case-7594"><span class="linenos">7594</span></a><span class="sd"> Example:</span> -</span><span id="case-7595"><a href="#case-7595"><span class="linenos">7595</span></a><span class="sd"> case().when("a = 1", "foo").else_("bar")</span> -</span><span id="case-7596"><a href="#case-7596"><span class="linenos">7596</span></a> -</span><span id="case-7597"><a href="#case-7597"><span class="linenos">7597</span></a><span class="sd"> Args:</span> -</span><span id="case-7598"><a href="#case-7598"><span class="linenos">7598</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span> -</span><span id="case-7599"><a href="#case-7599"><span class="linenos">7599</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span> -</span><span id="case-7600"><a href="#case-7600"><span class="linenos">7600</span></a><span class="sd"> """</span> -</span><span id="case-7601"><a href="#case-7601"><span class="linenos">7601</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="case-7602"><a href="#case-7602"><span class="linenos">7602</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="case-7603"><a href="#case-7603"><span class="linenos">7603</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="case-7604"><a href="#case-7604"><span class="linenos">7604</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="case-7605"><a href="#case-7605"><span class="linenos">7605</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="case-7594"><a href="#case-7594"><span class="linenos">7594</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span> +</span><span id="case-7595"><a href="#case-7595"><span class="linenos">7595</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="case-7596"><a href="#case-7596"><span class="linenos">7596</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="case-7597"><a href="#case-7597"><span class="linenos">7597</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Case</span><span class="p">:</span> +</span><span id="case-7598"><a href="#case-7598"><span class="linenos">7598</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="case-7599"><a href="#case-7599"><span class="linenos">7599</span></a><span class="sd"> Initialize a CASE statement.</span> +</span><span id="case-7600"><a href="#case-7600"><span class="linenos">7600</span></a> +</span><span id="case-7601"><a href="#case-7601"><span class="linenos">7601</span></a><span class="sd"> Example:</span> +</span><span id="case-7602"><a href="#case-7602"><span class="linenos">7602</span></a><span class="sd"> case().when("a = 1", "foo").else_("bar")</span> +</span><span id="case-7603"><a href="#case-7603"><span class="linenos">7603</span></a> +</span><span id="case-7604"><a href="#case-7604"><span class="linenos">7604</span></a><span class="sd"> Args:</span> +</span><span id="case-7605"><a href="#case-7605"><span class="linenos">7605</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span> +</span><span id="case-7606"><a href="#case-7606"><span class="linenos">7606</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span> +</span><span id="case-7607"><a href="#case-7607"><span class="linenos">7607</span></a><span class="sd"> """</span> +</span><span id="case-7608"><a href="#case-7608"><span class="linenos">7608</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="case-7609"><a href="#case-7609"><span class="linenos">7609</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="case-7610"><a href="#case-7610"><span class="linenos">7610</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="case-7611"><a href="#case-7611"><span class="linenos">7611</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="case-7612"><a href="#case-7612"><span class="linenos">7612</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span> </span></pre></div> @@ -100977,31 +101156,31 @@ True: Always quote.</li> </div> <a class="headerlink" href="#array"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="array-7608"><a href="#array-7608"><span class="linenos">7608</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span> -</span><span id="array-7609"><a href="#array-7609"><span class="linenos">7609</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="array-7610"><a href="#array-7610"><span class="linenos">7610</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Array</span><span class="p">:</span> -</span><span id="array-7611"><a href="#array-7611"><span class="linenos">7611</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="array-7612"><a href="#array-7612"><span class="linenos">7612</span></a><span class="sd"> Returns an array.</span> -</span><span id="array-7613"><a href="#array-7613"><span class="linenos">7613</span></a> -</span><span id="array-7614"><a href="#array-7614"><span class="linenos">7614</span></a><span class="sd"> Examples:</span> -</span><span id="array-7615"><a href="#array-7615"><span class="linenos">7615</span></a><span class="sd"> >>> array(1, 'x').sql()</span> -</span><span id="array-7616"><a href="#array-7616"><span class="linenos">7616</span></a><span class="sd"> 'ARRAY(1, x)'</span> -</span><span id="array-7617"><a href="#array-7617"><span class="linenos">7617</span></a> -</span><span id="array-7618"><a href="#array-7618"><span class="linenos">7618</span></a><span class="sd"> Args:</span> -</span><span id="array-7619"><a href="#array-7619"><span class="linenos">7619</span></a><span class="sd"> expressions: the expressions to add to the array.</span> -</span><span id="array-7620"><a href="#array-7620"><span class="linenos">7620</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> -</span><span id="array-7621"><a href="#array-7621"><span class="linenos">7621</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="array-7622"><a href="#array-7622"><span class="linenos">7622</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> -</span><span id="array-7623"><a href="#array-7623"><span class="linenos">7623</span></a> -</span><span id="array-7624"><a href="#array-7624"><span class="linenos">7624</span></a><span class="sd"> Returns:</span> -</span><span id="array-7625"><a href="#array-7625"><span class="linenos">7625</span></a><span class="sd"> An array expression.</span> -</span><span id="array-7626"><a href="#array-7626"><span class="linenos">7626</span></a><span class="sd"> """</span> -</span><span id="array-7627"><a href="#array-7627"><span class="linenos">7627</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span> -</span><span id="array-7628"><a href="#array-7628"><span class="linenos">7628</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="array-7629"><a href="#array-7629"><span class="linenos">7629</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="array-7630"><a href="#array-7630"><span class="linenos">7630</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="array-7631"><a href="#array-7631"><span class="linenos">7631</span></a> <span class="p">]</span> -</span><span id="array-7632"><a href="#array-7632"><span class="linenos">7632</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="array-7615"><a href="#array-7615"><span class="linenos">7615</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span> +</span><span id="array-7616"><a href="#array-7616"><span class="linenos">7616</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="array-7617"><a href="#array-7617"><span class="linenos">7617</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Array</span><span class="p">:</span> +</span><span id="array-7618"><a href="#array-7618"><span class="linenos">7618</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="array-7619"><a href="#array-7619"><span class="linenos">7619</span></a><span class="sd"> Returns an array.</span> +</span><span id="array-7620"><a href="#array-7620"><span class="linenos">7620</span></a> +</span><span id="array-7621"><a href="#array-7621"><span class="linenos">7621</span></a><span class="sd"> Examples:</span> +</span><span id="array-7622"><a href="#array-7622"><span class="linenos">7622</span></a><span class="sd"> >>> array(1, 'x').sql()</span> +</span><span id="array-7623"><a href="#array-7623"><span class="linenos">7623</span></a><span class="sd"> 'ARRAY(1, x)'</span> +</span><span id="array-7624"><a href="#array-7624"><span class="linenos">7624</span></a> +</span><span id="array-7625"><a href="#array-7625"><span class="linenos">7625</span></a><span class="sd"> Args:</span> +</span><span id="array-7626"><a href="#array-7626"><span class="linenos">7626</span></a><span class="sd"> expressions: the expressions to add to the array.</span> +</span><span id="array-7627"><a href="#array-7627"><span class="linenos">7627</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> +</span><span id="array-7628"><a href="#array-7628"><span class="linenos">7628</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="array-7629"><a href="#array-7629"><span class="linenos">7629</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="array-7630"><a href="#array-7630"><span class="linenos">7630</span></a> +</span><span id="array-7631"><a href="#array-7631"><span class="linenos">7631</span></a><span class="sd"> Returns:</span> +</span><span id="array-7632"><a href="#array-7632"><span class="linenos">7632</span></a><span class="sd"> An array expression.</span> +</span><span id="array-7633"><a href="#array-7633"><span class="linenos">7633</span></a><span class="sd"> """</span> +</span><span id="array-7634"><a href="#array-7634"><span class="linenos">7634</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span> +</span><span id="array-7635"><a href="#array-7635"><span class="linenos">7635</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="array-7636"><a href="#array-7636"><span class="linenos">7636</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="array-7637"><a href="#array-7637"><span class="linenos">7637</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="array-7638"><a href="#array-7638"><span class="linenos">7638</span></a> <span class="p">]</span> +</span><span id="array-7639"><a href="#array-7639"><span class="linenos">7639</span></a> <span class="p">)</span> </span></pre></div> @@ -101046,31 +101225,31 @@ True: Always quote.</li> </div> <a class="headerlink" href="#tuple_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="tuple_-7635"><a href="#tuple_-7635"><span class="linenos">7635</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span> -</span><span id="tuple_-7636"><a href="#tuple_-7636"><span class="linenos">7636</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="tuple_-7637"><a href="#tuple_-7637"><span class="linenos">7637</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">:</span> -</span><span id="tuple_-7638"><a href="#tuple_-7638"><span class="linenos">7638</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="tuple_-7639"><a href="#tuple_-7639"><span class="linenos">7639</span></a><span class="sd"> Returns an tuple.</span> -</span><span id="tuple_-7640"><a href="#tuple_-7640"><span class="linenos">7640</span></a> -</span><span id="tuple_-7641"><a href="#tuple_-7641"><span class="linenos">7641</span></a><span class="sd"> Examples:</span> -</span><span id="tuple_-7642"><a href="#tuple_-7642"><span class="linenos">7642</span></a><span class="sd"> >>> tuple_(1, 'x').sql()</span> -</span><span id="tuple_-7643"><a href="#tuple_-7643"><span class="linenos">7643</span></a><span class="sd"> '(1, x)'</span> -</span><span id="tuple_-7644"><a href="#tuple_-7644"><span class="linenos">7644</span></a> -</span><span id="tuple_-7645"><a href="#tuple_-7645"><span class="linenos">7645</span></a><span class="sd"> Args:</span> -</span><span id="tuple_-7646"><a href="#tuple_-7646"><span class="linenos">7646</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span> -</span><span id="tuple_-7647"><a href="#tuple_-7647"><span class="linenos">7647</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> -</span><span id="tuple_-7648"><a href="#tuple_-7648"><span class="linenos">7648</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="tuple_-7649"><a href="#tuple_-7649"><span class="linenos">7649</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> -</span><span id="tuple_-7650"><a href="#tuple_-7650"><span class="linenos">7650</span></a> -</span><span id="tuple_-7651"><a href="#tuple_-7651"><span class="linenos">7651</span></a><span class="sd"> Returns:</span> -</span><span id="tuple_-7652"><a href="#tuple_-7652"><span class="linenos">7652</span></a><span class="sd"> A tuple expression.</span> -</span><span id="tuple_-7653"><a href="#tuple_-7653"><span class="linenos">7653</span></a><span class="sd"> """</span> -</span><span id="tuple_-7654"><a href="#tuple_-7654"><span class="linenos">7654</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span> -</span><span id="tuple_-7655"><a href="#tuple_-7655"><span class="linenos">7655</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="tuple_-7656"><a href="#tuple_-7656"><span class="linenos">7656</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="tuple_-7657"><a href="#tuple_-7657"><span class="linenos">7657</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="tuple_-7658"><a href="#tuple_-7658"><span class="linenos">7658</span></a> <span class="p">]</span> -</span><span id="tuple_-7659"><a href="#tuple_-7659"><span class="linenos">7659</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="tuple_-7642"><a href="#tuple_-7642"><span class="linenos">7642</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span> +</span><span id="tuple_-7643"><a href="#tuple_-7643"><span class="linenos">7643</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="tuple_-7644"><a href="#tuple_-7644"><span class="linenos">7644</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">:</span> +</span><span id="tuple_-7645"><a href="#tuple_-7645"><span class="linenos">7645</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="tuple_-7646"><a href="#tuple_-7646"><span class="linenos">7646</span></a><span class="sd"> Returns an tuple.</span> +</span><span id="tuple_-7647"><a href="#tuple_-7647"><span class="linenos">7647</span></a> +</span><span id="tuple_-7648"><a href="#tuple_-7648"><span class="linenos">7648</span></a><span class="sd"> Examples:</span> +</span><span id="tuple_-7649"><a href="#tuple_-7649"><span class="linenos">7649</span></a><span class="sd"> >>> tuple_(1, 'x').sql()</span> +</span><span id="tuple_-7650"><a href="#tuple_-7650"><span class="linenos">7650</span></a><span class="sd"> '(1, x)'</span> +</span><span id="tuple_-7651"><a href="#tuple_-7651"><span class="linenos">7651</span></a> +</span><span id="tuple_-7652"><a href="#tuple_-7652"><span class="linenos">7652</span></a><span class="sd"> Args:</span> +</span><span id="tuple_-7653"><a href="#tuple_-7653"><span class="linenos">7653</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span> +</span><span id="tuple_-7654"><a href="#tuple_-7654"><span class="linenos">7654</span></a><span class="sd"> copy: whether to copy the argument expressions.</span> +</span><span id="tuple_-7655"><a href="#tuple_-7655"><span class="linenos">7655</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="tuple_-7656"><a href="#tuple_-7656"><span class="linenos">7656</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="tuple_-7657"><a href="#tuple_-7657"><span class="linenos">7657</span></a> +</span><span id="tuple_-7658"><a href="#tuple_-7658"><span class="linenos">7658</span></a><span class="sd"> Returns:</span> +</span><span id="tuple_-7659"><a href="#tuple_-7659"><span class="linenos">7659</span></a><span class="sd"> A tuple expression.</span> +</span><span id="tuple_-7660"><a href="#tuple_-7660"><span class="linenos">7660</span></a><span class="sd"> """</span> +</span><span id="tuple_-7661"><a href="#tuple_-7661"><span class="linenos">7661</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span> +</span><span id="tuple_-7662"><a href="#tuple_-7662"><span class="linenos">7662</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="tuple_-7663"><a href="#tuple_-7663"><span class="linenos">7663</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="tuple_-7664"><a href="#tuple_-7664"><span class="linenos">7664</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="tuple_-7665"><a href="#tuple_-7665"><span class="linenos">7665</span></a> <span class="p">]</span> +</span><span id="tuple_-7666"><a href="#tuple_-7666"><span class="linenos">7666</span></a> <span class="p">)</span> </span></pre></div> @@ -101115,11 +101294,11 @@ True: Always quote.</li> </div> <a class="headerlink" href="#true"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="true-7662"><a href="#true-7662"><span class="linenos">7662</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> -</span><span id="true-7663"><a href="#true-7663"><span class="linenos">7663</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="true-7664"><a href="#true-7664"><span class="linenos">7664</span></a><span class="sd"> Returns a true Boolean expression.</span> -</span><span id="true-7665"><a href="#true-7665"><span class="linenos">7665</span></a><span class="sd"> """</span> -</span><span id="true-7666"><a href="#true-7666"><span class="linenos">7666</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="true-7669"><a href="#true-7669"><span class="linenos">7669</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> +</span><span id="true-7670"><a href="#true-7670"><span class="linenos">7670</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="true-7671"><a href="#true-7671"><span class="linenos">7671</span></a><span class="sd"> Returns a true Boolean expression.</span> +</span><span id="true-7672"><a href="#true-7672"><span class="linenos">7672</span></a><span class="sd"> """</span> +</span><span id="true-7673"><a href="#true-7673"><span class="linenos">7673</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span></pre></div> @@ -101139,11 +101318,11 @@ True: Always quote.</li> </div> <a class="headerlink" href="#false"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="false-7669"><a href="#false-7669"><span class="linenos">7669</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> -</span><span id="false-7670"><a href="#false-7670"><span class="linenos">7670</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="false-7671"><a href="#false-7671"><span class="linenos">7671</span></a><span class="sd"> Returns a false Boolean expression.</span> -</span><span id="false-7672"><a href="#false-7672"><span class="linenos">7672</span></a><span class="sd"> """</span> -</span><span id="false-7673"><a href="#false-7673"><span class="linenos">7673</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="false-7676"><a href="#false-7676"><span class="linenos">7676</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-></span> <span class="n">Boolean</span><span class="p">:</span> +</span><span id="false-7677"><a href="#false-7677"><span class="linenos">7677</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="false-7678"><a href="#false-7678"><span class="linenos">7678</span></a><span class="sd"> Returns a false Boolean expression.</span> +</span><span id="false-7679"><a href="#false-7679"><span class="linenos">7679</span></a><span class="sd"> """</span> +</span><span id="false-7680"><a href="#false-7680"><span class="linenos">7680</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -101163,11 +101342,11 @@ True: Always quote.</li> </div> <a class="headerlink" href="#null"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="null-7676"><a href="#null-7676"><span class="linenos">7676</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-></span> <span class="n">Null</span><span class="p">:</span> -</span><span id="null-7677"><a href="#null-7677"><span class="linenos">7677</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="null-7678"><a href="#null-7678"><span class="linenos">7678</span></a><span class="sd"> Returns a Null expression.</span> -</span><span id="null-7679"><a href="#null-7679"><span class="linenos">7679</span></a><span class="sd"> """</span> -</span><span id="null-7680"><a href="#null-7680"><span class="linenos">7680</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="null-7683"><a href="#null-7683"><span class="linenos">7683</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-></span> <span class="n">Null</span><span class="p">:</span> +</span><span id="null-7684"><a href="#null-7684"><span class="linenos">7684</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="null-7685"><a href="#null-7685"><span class="linenos">7685</span></a><span class="sd"> Returns a Null expression.</span> +</span><span id="null-7686"><a href="#null-7686"><span class="linenos">7686</span></a><span class="sd"> """</span> +</span><span id="null-7687"><a href="#null-7687"><span class="linenos">7687</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> </span></pre></div> diff --git a/docs/sqlglot/generator.html b/docs/sqlglot/generator.html index 97eae47..01df0a7 100644 --- a/docs/sqlglot/generator.html +++ b/docs/sqlglot/generator.html @@ -10073,7 +10073,7 @@ Default: True</li> <div class="attr variable"> <span class="name">SUPPORTED_JSON_PATH_PARTS</span> = <input id="Generator.SUPPORTED_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>}</span> + <label class="view-value-button pdoc-button" for="Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>}</span> </div> @@ -10355,7 +10355,7 @@ Default: True</li> <div id="Generator.PARAMETERIZABLE_TEXT_TYPES" class="classattr"> <div class="attr variable"> <span class="name">PARAMETERIZABLE_TEXT_TYPES</span> = -<span class="default_value">{<Type.CHAR: 'CHAR'>, <Type.NVARCHAR: 'NVARCHAR'>, <Type.VARCHAR: 'VARCHAR'>, <Type.NCHAR: 'NCHAR'>}</span> +<span class="default_value">{<Type.CHAR: 'CHAR'>, <Type.NVARCHAR: 'NVARCHAR'>, <Type.NCHAR: 'NCHAR'>, <Type.VARCHAR: 'VARCHAR'>}</span> </div> diff --git a/docs/sqlglot/helper.html b/docs/sqlglot/helper.html index 36a6abd..da92cfa 100644 --- a/docs/sqlglot/helper.html +++ b/docs/sqlglot/helper.html @@ -1893,7 +1893,7 @@ belong to some totally-ordered set.</p> <section id="DATE_UNITS"> <div class="attr variable"> <span class="name">DATE_UNITS</span> = -<span class="default_value">{'year', 'month', 'quarter', 'day', 'year_month', 'week'}</span> +<span class="default_value">{'quarter', 'month', 'year', 'year_month', 'week', 'day'}</span> </div> diff --git a/docs/sqlglot/jsonpath.html b/docs/sqlglot/jsonpath.html index 30cd5fb..e46e036 100644 --- a/docs/sqlglot/jsonpath.html +++ b/docs/sqlglot/jsonpath.html @@ -577,7 +577,7 @@ <div class="attr variable"> <span class="name">ALL_JSON_PATH_PARTS</span> = <input id="ALL_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="ALL_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>}</span> + <label class="view-value-button pdoc-button" for="ALL_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>}</span> </div> diff --git a/docs/sqlglot/optimizer/annotate_types.html b/docs/sqlglot/optimizer/annotate_types.html index afacae9..4439431 100644 --- a/docs/sqlglot/optimizer/annotate_types.html +++ b/docs/sqlglot/optimizer/annotate_types.html @@ -1500,7 +1500,7 @@ <div class="attr variable"> <span class="name">TYPE_TO_EXPRESSIONS</span><span class="annotation">: Dict[<a href="../expressions.html#DataType.Type">sqlglot.expressions.DataType.Type</a>, Set[Type[<a href="../expressions.html#Expression">sqlglot.expressions.Expression</a>]]]</span> = <input id="TypeAnnotator.TYPE_TO_EXPRESSIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TypeAnnotator.TYPE_TO_EXPRESSIONS-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>: {<class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>, <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>}, <Type.BOOLEAN: 'BOOLEAN'>: {<class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>, <class '<a href="../expressions.html#Between">sqlglot.expressions.Between</a>'>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>, <class '<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>'>}, <Type.DATE: 'DATE'>: {<class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>, <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>, <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>, <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>, <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>, <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>}, <Type.DATETIME: 'DATETIME'>: {<class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>, <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>, <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>}, <Type.DOUBLE: 'DOUBLE'>: {<class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>, <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>, <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>, <class '<a href="../expressions.html#Div">sqlglot.expressions.Div</a>'>, <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>, <class '<a href="../expressions.html#Log">sqlglot.expressions.Log</a>'>, <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>, <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>, <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>, <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>, <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>, <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>, <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>}, <Type.INT: 'INT'>: {<class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>, <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>, <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>, <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>, <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>, <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>, <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>, <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>, <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>, <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>}, <Type.JSON: 'JSON'>: {<class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>}, <Type.TIMESTAMP: 'TIMESTAMP'>: {<class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>, <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>, <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>, <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>, <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>, <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>}, <Type.TINYINT: 'TINYINT'>: {<class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>, <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>, <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>, <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>, <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>}, <Type.VARCHAR: 'VARCHAR'>: {<class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>, <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>, <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>, <class '<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>'>, <class '<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>'>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>, <class '<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>'>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>, <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>, <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>}}</span> + <label class="view-value-button pdoc-button" for="TypeAnnotator.TYPE_TO_EXPRESSIONS-view-value"></label><span class="default_value">{<Type.BIGINT: 'BIGINT'>: {<class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>, <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>, <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>}, <Type.BOOLEAN: 'BOOLEAN'>: {<class '<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>'>, <class '<a href="../expressions.html#Between">sqlglot.expressions.Between</a>'>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>}, <Type.DATE: 'DATE'>: {<class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>, <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>, <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>, <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>, <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>}, <Type.DATETIME: 'DATETIME'>: {<class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>, <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>, <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>}, <Type.DOUBLE: 'DOUBLE'>: {<class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>, <class '<a href="../expressions.html#Log">sqlglot.expressions.Log</a>'>, <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>, <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>, <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>, <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>, <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>, <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>, <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>, <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>, <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>, <class '<a href="../expressions.html#Div">sqlglot.expressions.Div</a>'>, <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>}, <Type.INT: 'INT'>: {<class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>, <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>, <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>, <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>, <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>, <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>, <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>, <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>, <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>, <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>}, <Type.JSON: 'JSON'>: {<class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>}, <Type.TIMESTAMP: 'TIMESTAMP'>: {<class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>, <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>, <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>, <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>, <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>, <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>}, <Type.TINYINT: 'TINYINT'>: {<class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>, <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>, <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>, <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>, <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>}, <Type.VARCHAR: 'VARCHAR'>: {<class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>, <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>, <class '<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>'>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>, <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>, <class '<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>'>, <class '<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>'>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>, <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>, <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>, <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>}}</span> </div> @@ -1513,7 +1513,7 @@ <div class="attr variable"> <span class="name">ANNOTATORS</span><span class="annotation">: Dict</span> = <input id="TypeAnnotator.ANNOTATORS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TypeAnnotator.ANNOTATORS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseNot">sqlglot.expressions.BitwiseNot</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Neg">sqlglot.expressions.Neg</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Not">sqlglot.expressions.Not</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Paren">sqlglot.expressions.Paren</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#PivotAlias">sqlglot.expressions.PivotAlias</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Unary">sqlglot.expressions.Unary</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Add">sqlglot.expressions.Add</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#And">sqlglot.expressions.And</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Binary">sqlglot.expressions.Binary</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseAnd">sqlglot.expressions.BitwiseAnd</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseLeftShift">sqlglot.expressions.BitwiseLeftShift</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseOr">sqlglot.expressions.BitwiseOr</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseRightShift">sqlglot.expressions.BitwiseRightShift</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Connector">sqlglot.expressions.Connector</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#DPipe">sqlglot.expressions.DPipe</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Distance">sqlglot.expressions.Distance</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Div">sqlglot.expressions.Div</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Dot">sqlglot.expressions.Dot</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Escape">sqlglot.expressions.Escape</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Glob">sqlglot.expressions.Glob</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ILike">sqlglot.expressions.ILike</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ILikeAny">sqlglot.expressions.ILikeAny</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#IntDiv">sqlglot.expressions.IntDiv</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Is">sqlglot.expressions.Is</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Kwarg">sqlglot.expressions.Kwarg</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Like">sqlglot.expressions.Like</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#LikeAny">sqlglot.expressions.LikeAny</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Mod">sqlglot.expressions.Mod</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Mul">sqlglot.expressions.Mul</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#NullSafeEQ">sqlglot.expressions.NullSafeEQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#NullSafeNEQ">sqlglot.expressions.NullSafeNEQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Operator">sqlglot.expressions.Operator</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Or">sqlglot.expressions.Or</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Overlaps">sqlglot.expressions.Overlaps</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#PropertyEQ">sqlglot.expressions.PropertyEQ</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#SimilarTo">sqlglot.expressions.SimilarTo</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Slice">sqlglot.expressions.Slice</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Sub">sqlglot.expressions.Sub</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Between">sqlglot.expressions.Between</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Log">sqlglot.expressions.Log</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Anonymous">sqlglot.expressions.Anonymous</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Bracket">sqlglot.expressions.Bracket</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DataType">sqlglot.expressions.DataType</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Distinct">sqlglot.expressions.Distinct</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Filter">sqlglot.expressions.Filter</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Interval">sqlglot.expressions.Interval</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Literal">sqlglot.expressions.Literal</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Null">sqlglot.expressions.Null</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Unnest">sqlglot.expressions.Unnest</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function TypeAnnotator.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="TypeAnnotator.ANNOTATORS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#Alias">sqlglot.expressions.Alias</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseNot">sqlglot.expressions.BitwiseNot</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Neg">sqlglot.expressions.Neg</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Not">sqlglot.expressions.Not</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Paren">sqlglot.expressions.Paren</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#PivotAlias">sqlglot.expressions.PivotAlias</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Unary">sqlglot.expressions.Unary</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Add">sqlglot.expressions.Add</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#And">sqlglot.expressions.And</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Binary">sqlglot.expressions.Binary</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseAnd">sqlglot.expressions.BitwiseAnd</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseLeftShift">sqlglot.expressions.BitwiseLeftShift</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseOr">sqlglot.expressions.BitwiseOr</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseRightShift">sqlglot.expressions.BitwiseRightShift</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#BitwiseXor">sqlglot.expressions.BitwiseXor</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Connector">sqlglot.expressions.Connector</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#DPipe">sqlglot.expressions.DPipe</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Distance">sqlglot.expressions.Distance</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Div">sqlglot.expressions.Div</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Dot">sqlglot.expressions.Dot</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Escape">sqlglot.expressions.Escape</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Glob">sqlglot.expressions.Glob</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ILike">sqlglot.expressions.ILike</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ILikeAny">sqlglot.expressions.ILikeAny</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#IntDiv">sqlglot.expressions.IntDiv</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Is">sqlglot.expressions.Is</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONBContains">sqlglot.expressions.JSONBContains</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Kwarg">sqlglot.expressions.Kwarg</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Like">sqlglot.expressions.Like</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#LikeAny">sqlglot.expressions.LikeAny</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Mod">sqlglot.expressions.Mod</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Mul">sqlglot.expressions.Mul</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#NullSafeEQ">sqlglot.expressions.NullSafeEQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#NullSafeNEQ">sqlglot.expressions.NullSafeNEQ</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Operator">sqlglot.expressions.Operator</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Or">sqlglot.expressions.Or</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Overlaps">sqlglot.expressions.Overlaps</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#PropertyEQ">sqlglot.expressions.PropertyEQ</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#SimilarTo">sqlglot.expressions.SimilarTo</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Slice">sqlglot.expressions.Slice</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Sub">sqlglot.expressions.Sub</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>: <function TypeAnnotator.<dictcomp>.<lambda>>, <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Boolean">sqlglot.expressions.Boolean</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Between">sqlglot.expressions.Between</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Date">sqlglot.expressions.Date</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Log">sqlglot.expressions.Log</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#DateToDateStr">sqlglot.expressions.DateToDateStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeToTimeStr">sqlglot.expressions.TimeToTimeStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TsOrDsToDateStr">sqlglot.expressions.TsOrDsToDateStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>: <function _annotate_with_type_lambda.<locals>.<lambda>>, <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Anonymous">sqlglot.expressions.Anonymous</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Bracket">sqlglot.expressions.Bracket</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DataType">sqlglot.expressions.DataType</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Distinct">sqlglot.expressions.Distinct</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Filter">sqlglot.expressions.Filter</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Interval">sqlglot.expressions.Interval</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Literal">sqlglot.expressions.Literal</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Null">sqlglot.expressions.Null</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#Unnest">sqlglot.expressions.Unnest</a>'>: <function TypeAnnotator.<lambda>>, <class '<a href="../expressions.html#VarMap">sqlglot.expressions.VarMap</a>'>: <function TypeAnnotator.<lambda>>}</span> </div> @@ -1538,7 +1538,7 @@ <div class="attr variable"> <span class="name">COERCES_TO</span><span class="annotation">: Dict[<a href="../expressions.html#DataType.Type">sqlglot.expressions.DataType.Type</a>, Set[<a href="../expressions.html#DataType.Type">sqlglot.expressions.DataType.Type</a>]]</span> = <input id="TypeAnnotator.COERCES_TO-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TypeAnnotator.COERCES_TO-view-value"></label><span class="default_value">{<Type.TEXT: 'TEXT'>: set(), <Type.NVARCHAR: 'NVARCHAR'>: {<Type.TEXT: 'TEXT'>}, <Type.VARCHAR: 'VARCHAR'>: {<Type.NVARCHAR: 'NVARCHAR'>, <Type.TEXT: 'TEXT'>}, <Type.NCHAR: 'NCHAR'>: {<Type.NVARCHAR: 'NVARCHAR'>, <Type.VARCHAR: 'VARCHAR'>, <Type.TEXT: 'TEXT'>}, <Type.CHAR: 'CHAR'>: {<Type.NVARCHAR: 'NVARCHAR'>, <Type.VARCHAR: 'VARCHAR'>, <Type.NCHAR: 'NCHAR'>, <Type.TEXT: 'TEXT'>}, <Type.DOUBLE: 'DOUBLE'>: set(), <Type.FLOAT: 'FLOAT'>: {<Type.DOUBLE: 'DOUBLE'>}, <Type.DECIMAL: 'DECIMAL'>: {<Type.DOUBLE: 'DOUBLE'>, <Type.FLOAT: 'FLOAT'>}, <Type.BIGINT: 'BIGINT'>: {<Type.DECIMAL: 'DECIMAL'>, <Type.DOUBLE: 'DOUBLE'>, <Type.FLOAT: 'FLOAT'>}, <Type.INT: 'INT'>: {<Type.BIGINT: 'BIGINT'>, <Type.DECIMAL: 'DECIMAL'>, <Type.DOUBLE: 'DOUBLE'>, <Type.FLOAT: 'FLOAT'>}, <Type.SMALLINT: 'SMALLINT'>: {<Type.BIGINT: 'BIGINT'>, <Type.DECIMAL: 'DECIMAL'>, <Type.DOUBLE: 'DOUBLE'>, <Type.INT: 'INT'>, <Type.FLOAT: 'FLOAT'>}, <Type.TINYINT: 'TINYINT'>: {<Type.BIGINT: 'BIGINT'>, <Type.SMALLINT: 'SMALLINT'>, <Type.DECIMAL: 'DECIMAL'>, <Type.DOUBLE: 'DOUBLE'>, <Type.INT: 'INT'>, <Type.FLOAT: 'FLOAT'>}, <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>: set(), <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>: {<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>}, <Type.TIMESTAMP: 'TIMESTAMP'>: {<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>}, <Type.DATETIME: 'DATETIME'>: {<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <Type.TIMESTAMP: 'TIMESTAMP'>}, <Type.DATE: 'DATE'>: {<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.DATETIME: 'DATETIME'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <Type.TIMESTAMP: 'TIMESTAMP'>}}</span> + <label class="view-value-button pdoc-button" for="TypeAnnotator.COERCES_TO-view-value"></label><span class="default_value">{<Type.TEXT: 'TEXT'>: set(), <Type.NVARCHAR: 'NVARCHAR'>: {<Type.TEXT: 'TEXT'>}, <Type.VARCHAR: 'VARCHAR'>: {<Type.NVARCHAR: 'NVARCHAR'>, <Type.TEXT: 'TEXT'>}, <Type.NCHAR: 'NCHAR'>: {<Type.NVARCHAR: 'NVARCHAR'>, <Type.TEXT: 'TEXT'>, <Type.VARCHAR: 'VARCHAR'>}, <Type.CHAR: 'CHAR'>: {<Type.NVARCHAR: 'NVARCHAR'>, <Type.NCHAR: 'NCHAR'>, <Type.TEXT: 'TEXT'>, <Type.VARCHAR: 'VARCHAR'>}, <Type.DOUBLE: 'DOUBLE'>: set(), <Type.FLOAT: 'FLOAT'>: {<Type.DOUBLE: 'DOUBLE'>}, <Type.DECIMAL: 'DECIMAL'>: {<Type.FLOAT: 'FLOAT'>, <Type.DOUBLE: 'DOUBLE'>}, <Type.BIGINT: 'BIGINT'>: {<Type.FLOAT: 'FLOAT'>, <Type.DOUBLE: 'DOUBLE'>, <Type.DECIMAL: 'DECIMAL'>}, <Type.INT: 'INT'>: {<Type.FLOAT: 'FLOAT'>, <Type.DOUBLE: 'DOUBLE'>, <Type.DECIMAL: 'DECIMAL'>, <Type.BIGINT: 'BIGINT'>}, <Type.SMALLINT: 'SMALLINT'>: {<Type.DOUBLE: 'DOUBLE'>, <Type.DECIMAL: 'DECIMAL'>, <Type.BIGINT: 'BIGINT'>, <Type.FLOAT: 'FLOAT'>, <Type.INT: 'INT'>}, <Type.TINYINT: 'TINYINT'>: {<Type.DOUBLE: 'DOUBLE'>, <Type.DECIMAL: 'DECIMAL'>, <Type.BIGINT: 'BIGINT'>, <Type.SMALLINT: 'SMALLINT'>, <Type.FLOAT: 'FLOAT'>, <Type.INT: 'INT'>}, <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>: set(), <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>: {<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>}, <Type.TIMESTAMP: 'TIMESTAMP'>: {<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>}, <Type.DATETIME: 'DATETIME'>: {<Type.TIMESTAMP: 'TIMESTAMP'>, <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>}, <Type.DATE: 'DATE'>: {<Type.DATETIME: 'DATETIME'>, <Type.TIMESTAMP: 'TIMESTAMP'>, <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>}}</span> </div> @@ -1551,7 +1551,7 @@ <div class="attr variable"> <span class="name">BINARY_COERCIONS</span><span class="annotation">: Dict[Tuple[<a href="../expressions.html#DataType.Type">sqlglot.expressions.DataType.Type</a>, <a href="../expressions.html#DataType.Type">sqlglot.expressions.DataType.Type</a>], Callable[[<a href="../expressions.html#Expression">sqlglot.expressions.Expression</a>, <a href="../expressions.html#Expression">sqlglot.expressions.Expression</a>], <a href="../expressions.html#DataType.Type">sqlglot.expressions.DataType.Type</a>]]</span> = <input id="TypeAnnotator.BINARY_COERCIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TypeAnnotator.BINARY_COERCIONS-view-value"></label><span class="default_value">{(<Type.TEXT: 'TEXT'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DATE: 'DATE'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.DATE: 'DATE'>): <function TypeAnnotator.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="TypeAnnotator.BINARY_COERCIONS-view-value"></label><span class="default_value">{(<Type.NAME: 'NAME'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NAME: 'NAME'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NCHAR: 'NCHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.NVARCHAR: 'NVARCHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TEXT: 'TEXT'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.VARCHAR: 'VARCHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.BIGDECIMAL: 'BIGDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UBIGINT: 'UBIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INT128: 'INT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UINT256: 'UINT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UINT: 'UINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UMEDIUMINT: 'UMEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.USMALLINT: 'USMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.FLOAT: 'FLOAT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.SMALLMONEY: 'SMALLMONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.TINYINT: 'TINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.BIGINT: 'BIGINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UINT128: 'UINT128'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UDECIMAL: 'UDECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INT: 'INT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.DOUBLE: 'DOUBLE'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.DECIMAL: 'DECIMAL'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.BIT: 'BIT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.INT256: 'INT256'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.SMALLINT: 'SMALLINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.UTINYINT: 'UTINYINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.MONEY: 'MONEY'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.CHAR: 'CHAR'>, <Type.MEDIUMINT: 'MEDIUMINT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.NAME: 'NAME'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.NCHAR: 'NCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.NVARCHAR: 'NVARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.TEXT: 'TEXT'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.VARCHAR: 'VARCHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGDECIMAL: 'BIGDECIMAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UBIGINT: 'UBIGINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT128: 'INT128'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT256: 'UINT256'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT: 'UINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UMEDIUMINT: 'UMEDIUMINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.USMALLINT: 'USMALLINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.FLOAT: 'FLOAT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLMONEY: 'SMALLMONEY'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.TINYINT: 'TINYINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIGINT: 'BIGINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UINT128: 'UINT128'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UDECIMAL: 'UDECIMAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT: 'INT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DOUBLE: 'DOUBLE'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DECIMAL: 'DECIMAL'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.BIT: 'BIT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.INT256: 'INT256'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.SMALLINT: 'SMALLINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.UTINYINT: 'UTINYINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MONEY: 'MONEY'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.MEDIUMINT: 'MEDIUMINT'>, <Type.CHAR: 'CHAR'>): <function TypeAnnotator.<dictcomp>.<lambda>>, (<Type.DATE: 'DATE'>, <Type.INTERVAL: 'INTERVAL'>): <function TypeAnnotator.<lambda>>, (<Type.INTERVAL: 'INTERVAL'>, <Type.DATE: 'DATE'>): <function TypeAnnotator.<lambda>>}</span> </div> diff --git a/docs/sqlglot/optimizer/merge_subqueries.html b/docs/sqlglot/optimizer/merge_subqueries.html index b0f9e81..762fb68 100644 --- a/docs/sqlglot/optimizer/merge_subqueries.html +++ b/docs/sqlglot/optimizer/merge_subqueries.html @@ -586,7 +586,7 @@ queries if it would result in multiple table selects in a single query:</p> <div class="attr variable"> <span class="name">UNMERGABLE_ARGS</span> = <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">{'sample', 'prewhere', 'offset', 'group', 'with', 'laterals', 'kind', 'distinct', 'having', 'sort', 'cluster', 'limit', 'format', 'locks', 'distribute', 'settings', 'match', 'connect', 'qualify', 'options', 'windows', 'into', 'pivots'}</span> + <label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'prewhere', 'locks', 'having', 'distinct', 'into', 'limit', 'match', 'options', 'cluster', 'connect', 'laterals', 'windows', 'qualify', 'offset', 'pivots', 'sort', 'group', 'format', 'with', 'distribute', 'sample', 'kind', 'settings'}</span> </div> diff --git a/docs/sqlglot/optimizer/simplify.html b/docs/sqlglot/optimizer/simplify.html index 5941d40..a6d0d64 100644 --- a/docs/sqlglot/optimizer/simplify.html +++ b/docs/sqlglot/optimizer/simplify.html @@ -3220,7 +3220,7 @@ prefix are statically known.</p> <div class="attr variable"> <span class="name">DATETRUNC_COMPARISONS</span> = <input id="DATETRUNC_COMPARISONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="DATETRUNC_COMPARISONS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>, <class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>}</span> + <label class="view-value-button pdoc-button" for="DATETRUNC_COMPARISONS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>}</span> </div> @@ -3300,7 +3300,7 @@ prefix are statically known.</p> <section id="JOINS"> <div class="attr variable"> <span class="name">JOINS</span> = -<span class="default_value">{('RIGHT', ''), ('', 'INNER'), ('RIGHT', 'OUTER'), ('', '')}</span> +<span class="default_value">{('RIGHT', ''), ('RIGHT', 'OUTER'), ('', 'INNER'), ('', '')}</span> </div> diff --git a/docs/sqlglot/parser.html b/docs/sqlglot/parser.html index ae0c89f..8a1a29d 100644 --- a/docs/sqlglot/parser.html +++ b/docs/sqlglot/parser.html @@ -118,6 +118,9 @@ <a class="variable" href="#Parser.ALIAS_TOKENS">ALIAS_TOKENS</a> </li> <li> + <a class="variable" href="#Parser.ARRAY_CONSTRUCTORS">ARRAY_CONSTRUCTORS</a> + </li> + <li> <a class="variable" href="#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a> </li> <li> @@ -656,6594 +659,6631 @@ </span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> </span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="o">*</span><span class="n">STRUCT_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="p">}</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> -</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">ENUM_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="p">}</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> -</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">AGGREGATE_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</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-212"><a href="#L-212"><span class="linenos"> 212</span></a> -</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="n">TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> -</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span> -</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SUPER</span><span class="p">,</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> -</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XML</span><span class="p">,</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">YEAR</span><span class="p">,</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUEIDENTIFIER</span><span class="p">,</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">,</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IMAGE</span><span class="p">,</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span> -</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span> -</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="o">*</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="o">*</span><span class="n">AGGREGATE_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="p">}</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> -</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</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-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</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-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</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-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</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-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="p">}</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="p">}</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="p">}</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">}</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> -</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="n">DB_CREATABLES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> -</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> -</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STORAGE_INTEGRATION</span><span class="p">,</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TAG</span><span class="p">,</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WAREHOUSE</span><span class="p">,</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STREAMLIT</span><span class="p">,</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="p">}</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> -</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="o">*</span><span class="n">DB_CREATABLES</span><span class="p">,</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="p">}</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> -</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="c1"># Tokens that can represent identifiers</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> -</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> -</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> -</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> -</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> -</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> -</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">,</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> -</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> -</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="o">*</span><span class="n">CREATABLES</span><span class="p">,</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="p">}</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="n">INTERVAL_VARS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">}</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> -</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> -</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <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 class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> -</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="n">COMMENT_TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> -</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"LEADING"</span><span class="p">,</span> <span class="s2">"TRAILING"</span><span class="p">,</span> <span class="s2">"BOTH"</span><span class="p">}</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIST</span><span class="p">,</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</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">STRUCT_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="p">}</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> +</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">ENUM_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="p">}</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> +</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">AGGREGATE_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">,</span> +</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><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">TYPE_TOKENS</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="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> +</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> +</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SUPER</span><span class="p">,</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XML</span><span class="p">,</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">YEAR</span><span class="p">,</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUEIDENTIFIER</span><span class="p">,</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">,</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IMAGE</span><span class="p">,</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span> +</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="o">*</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="o">*</span><span class="n">AGGREGATE_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="p">}</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> +</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</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-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</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-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</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-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</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-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="p">}</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="p">}</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="p">}</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">}</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="n">DB_CREATABLES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> +</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> +</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STORAGE_INTEGRATION</span><span class="p">,</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TAG</span><span class="p">,</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WAREHOUSE</span><span class="p">,</span> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STREAMLIT</span><span class="p">,</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="p">}</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> +</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="o">*</span><span class="n">DB_CREATABLES</span><span class="p">,</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="p">}</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> +</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="c1"># Tokens that can represent identifiers</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> +</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> +</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> +</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> +</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> +</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> +</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">,</span> +</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> +</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="o">*</span><span class="n">CREATABLES</span><span class="p">,</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="p">}</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="n">INTERVAL_VARS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">}</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> +</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> +</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="p">}</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> +</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</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">ARRAY_CONSTRUCTORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="s2">"LIST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> +</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="p">}</span> </span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> -</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> -</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="p">}</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">CONJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="p">}</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">ASSIGNMENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="p">}</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="n">DISJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="p">}</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">COMMENT_TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"LEADING"</span><span class="p">,</span> <span class="s2">"TRAILING"</span><span class="p">,</span> <span class="s2">"BOTH"</span><span class="p">}</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> +</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> +</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="p">}</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">CONJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="p">}</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="n">ASSIGNMENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="p">}</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">DISJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> </span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="p">}</span> </span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="p">}</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">,</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">,</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="p">}</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> </span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="p">}</span> </span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="p">}</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> -</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> -</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> -</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> -</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="p">}</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="n">EXPONENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="n">TIMES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="p">}</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> -</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="o">*</span><span class="n">TIMES</span><span class="p">,</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="p">}</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">,</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">,</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="p">}</span> +</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> +</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> +</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="p">}</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> +</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="p">}</span> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="n">EXPONENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> +</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="n">TIMES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="p">}</span> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> +</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="o">*</span><span class="n">TIMES</span><span class="p">,</span> </span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="p">}</span> </span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="n">JOIN_METHODS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">POSITIONAL</span><span class="p">,</span> +</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> </span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="p">}</span> </span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="n">JOIN_METHODS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">POSITIONAL</span><span class="p">,</span> </span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="p">}</span> </span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="p">}</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">JOIN_HINTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">,</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">(</span> -</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="n">expressions</span><span class="p">,</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="p">),</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="p">),</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="p">),</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="p">}</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> -</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="p">),</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> -</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span><span class="p">,</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="p">}</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="p">}</span> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="n">JOIN_HINTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">,</span> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">(</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">expressions</span><span class="p">,</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="p">),</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="p">),</span> +</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="p">),</span> +</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="p">}</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> </span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="p">),</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> </span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> </span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> </span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span><span class="p">,</span> </span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="p">),</span> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> +</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> </span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="p">),</span> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="p">),</span> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="p">),</span> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="p">}</span> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(),</span> -</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(),</span> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> -</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> -</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(),</span> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(),</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">),</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(),</span> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">(),</span> -</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">(),</span> -</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="p">}</span> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> -</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> -</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> -</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comment</span><span class="p">(),</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy</span><span class="p">(),</span> -</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> -</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> -</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_kill</span><span class="p">(),</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load</span><span class="p">(),</span> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">(),</span> -</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pragma</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span> -</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_refresh</span><span class="p">(),</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">(),</span> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_truncate_table</span><span class="p">(),</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Use</span><span class="p">,</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">USABLES</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="p">),</span> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">),</span> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="p">}</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> -</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sqrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cbrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="p">}</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="n">STRING_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="p">),</span> -</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="p">),</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="p">),</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnicodeString</span><span class="p">,</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="n">escape</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UESCAPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="p">),</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="p">}</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="n">NUMERIC_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="p">),</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="p">}</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="o">**</span><span class="n">STRING_PARSERS</span><span class="p">,</span> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="o">**</span><span class="n">NUMERIC_PARSERS</span><span class="p">,</span> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> -</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> -</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"EXCEPT"</span><span class="p">,</span> <span class="s2">"EXCLUDE"</span><span class="p">),</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"REPLACE"</span><span class="p">),</span> -</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="s2">"rename"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">),</span> -</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="p">},</span> -</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="p">),</span> -</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="p">}</span> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> -</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> -</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="p">),</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="p">}</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">),</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">),</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">),</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">),</span> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Overlaps</span><span class="p">),</span> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">),</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">),</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comprehension</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="p">}</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> -</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="n">PROPERTY_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="s2">"ALLOWED_VALUES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AllowedValuesProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="p">),</span> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> -</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="s2">"AUTO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_property</span><span class="p">(),</span> -</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> -</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="s2">"BACKUP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BackupProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span><span class="p">,</span> +</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="p">),</span> +</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> +</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="p">),</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="p">),</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="p">),</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="p">}</span> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> +</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(),</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(),</span> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> +</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(),</span> +</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(),</span> +</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> +</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">),</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(),</span> +</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">(),</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">(),</span> +</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="p">}</span> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> +</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comment</span><span class="p">(),</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy</span><span class="p">(),</span> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_kill</span><span class="p">(),</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load</span><span class="p">(),</span> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">(),</span> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pragma</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_refresh</span><span class="p">(),</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">(),</span> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_truncate_table</span><span class="p">(),</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Use</span><span class="p">,</span> +</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">USABLES</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="p">),</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">),</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="p">}</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sqrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cbrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="p">}</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> +</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="n">STRING_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="p">),</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="p">),</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="p">),</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnicodeString</span><span class="p">,</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="n">escape</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UESCAPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="p">),</span> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="p">}</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> +</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="n">NUMERIC_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="p">),</span> +</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="p">}</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="o">**</span><span class="n">STRING_PARSERS</span><span class="p">,</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="o">**</span><span class="n">NUMERIC_PARSERS</span><span class="p">,</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"EXCEPT"</span><span class="p">,</span> <span class="s2">"EXCLUDE"</span><span class="p">),</span> +</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"REPLACE"</span><span class="p">),</span> +</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="s2">"rename"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">),</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="p">},</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="p">),</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="p">}</span> +</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> +</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="p">),</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="p">}</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">),</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">),</span> +</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">),</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">),</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Overlaps</span><span class="p">),</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">),</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">),</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comprehension</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="p">}</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> +</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="n">PROPERTY_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="s2">"ALLOWED_VALUES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AllowedValuesProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> </span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="p">),</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> -</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="s2">"CHARSET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(),</span> -</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_clustered_by</span><span class="p">(),</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="p">),</span> -</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> -</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="s2">"CONTAINS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_contains_property</span><span class="p">(),</span> -</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_property</span><span class="p">(),</span> -</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="s2">"DATA_DELETION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_data_deletion_property</span><span class="p">(),</span> -</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> -</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="p">),</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">),</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="s2">"EXTERNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">),</span> -</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GlobalProperty</span><span class="p">),</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="s2">"HEAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HeapProperty</span><span class="p">),</span> -</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="s2">"ICEBERG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IcebergProperty</span><span class="p">),</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="p">),</span> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="s2">"INHERITS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InheritsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="p">),</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="s2">"INPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="s2">"LAYOUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LAYOUT"</span><span class="p">),</span> -</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="s2">"LIFETIME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LIFETIME"</span><span class="p">),</span> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">),</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="s2">"MODIFIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_modifies_property</span><span class="p">(),</span> -</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="s2">"MULTISET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_no_property</span><span class="p">(),</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">(),</span> -</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">skip_order_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="s2">"OUTPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OutputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_of</span><span class="p">(),</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span><span class="n">in_props</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"RANGE"</span><span class="p">),</span> -</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="s2">"READS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_reads_property</span><span class="p">(),</span> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="s2">"REMOTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_remote_with_connection</span><span class="p">(),</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="s2">"STRICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrictProperty</span><span class="p">),</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="s2">"ROW_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatProperty</span><span class="p">),</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SampleProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="p">),</span> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SettingsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> -</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="p">),</span> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="s2">"SHARING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SharingProperty</span><span class="p">),</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="s2">"SOURCE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"SOURCE"</span><span class="p">),</span> -</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> +</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="s2">"AUTO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_property</span><span class="p">(),</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="s2">"BACKUP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BackupProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="p">),</span> +</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="s2">"CHARSET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> +</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(),</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_clustered_by</span><span class="p">(),</span> +</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="p">),</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> +</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="s2">"CONTAINS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_contains_property</span><span class="p">(),</span> +</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_property</span><span class="p">(),</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"DATA_DELETION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_data_deletion_property</span><span class="p">(),</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> +</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="p">),</span> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">),</span> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="s2">"EXTERNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">),</span> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GlobalProperty</span><span class="p">),</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="s2">"HEAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HeapProperty</span><span class="p">),</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="s2">"ICEBERG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IcebergProperty</span><span class="p">),</span> +</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="p">),</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="s2">"INHERITS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InheritsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="p">),</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="s2">"INPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> +</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="s2">"LAYOUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LAYOUT"</span><span class="p">),</span> +</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="s2">"LIFETIME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LIFETIME"</span><span class="p">),</span> +</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">),</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="s2">"MODIFIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_modifies_property</span><span class="p">(),</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="s2">"MULTISET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_no_property</span><span class="p">(),</span> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">(),</span> +</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">skip_order_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="s2">"OUTPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OutputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> +</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_of</span><span class="p">(),</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span><span class="n">in_props</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"RANGE"</span><span class="p">),</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="s2">"READS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_reads_property</span><span class="p">(),</span> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="s2">"REMOTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_remote_with_connection</span><span class="p">(),</span> +</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="s2">"STRICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrictProperty</span><span class="p">),</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="s2">"ROW_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatProperty</span><span class="p">),</span> +</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SampleProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="p">),</span> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SettingsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> </span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="p">),</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> -</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(),</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="s2">"TO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_to_table</span><span class="p">(),</span> -</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="s2">"TRANSIENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">),</span> -</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="s2">"TRANSFORM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransformModelProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="p">),</span> -</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ttl</span><span class="p">(),</span> -</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UnloggedProperty</span><span class="p">),</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_volatile_property</span><span class="p">(),</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="p">}</span> -</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="p">),</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="n">enforced</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">),</span> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="p">),</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="p">),</span> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="s2">"SHARING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SharingProperty</span><span class="p">),</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="s2">"SOURCE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"SOURCE"</span><span class="p">),</span> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="p">),</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(),</span> +</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> +</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> +</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="s2">"TO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_to_table</span><span class="p">(),</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="s2">"TRANSIENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">),</span> +</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="s2">"TRANSFORM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransformModelProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="p">),</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ttl</span><span class="p">(),</span> +</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UnloggedProperty</span><span class="p">),</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_volatile_property</span><span class="p">(),</span> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="p">}</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="p">),</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="n">enforced</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">),</span> </span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="p">),</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="s2">"COMPRESS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="p">),</span> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="s2">"NONCLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NonClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="p">),</span> -</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="p">),</span> +</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="p">),</span> +</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="s2">"COMPRESS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span> +</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> </span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="p">),</span> -</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="s2">"EPHEMERAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EphemeralColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="p">),</span> -</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExcludeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="p">),</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> -</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="p">),</span> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> -</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="s2">"INLINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_inline</span><span class="p">(),</span> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> -</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)</span> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnUpdateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> -</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="p">)</span> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> -</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="s2">"PERIOD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_period_for_system_time</span><span class="p">(),</span> -</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">(</span><span class="n">match</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="p">),</span> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]),</span> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> -</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> +</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="s2">"NONCLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NonClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="p">),</span> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="p">),</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="s2">"EPHEMERAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EphemeralColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="p">),</span> +</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExcludeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> +</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="p">),</span> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> +</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="p">),</span> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="s2">"INLINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_inline</span><span class="p">(),</span> +</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnUpdateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="p">)</span> +</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> +</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="s2">"PERIOD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_period_for_system_time</span><span class="p">(),</span> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">(</span><span class="n">match</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> </span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="p">),</span> -</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="p">}</span> -</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="s2">"ADD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_add</span><span class="p">(),</span> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_alter</span><span class="p">(),</span> -</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(</span><span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_drop</span><span class="p">(),</span> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_rename</span><span class="p">(),</span> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_set</span><span class="p">(),</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="p">}</span> -</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="n">ALTER_ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> -</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(),</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="p">}</span> -</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="s2">"CHECK"</span><span class="p">,</span> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="s2">"EXCLUDE"</span><span class="p">,</span> -</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="s2">"LIKE"</span><span class="p">,</span> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="s2">"PERIOD"</span><span class="p">,</span> -</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> -</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="s2">"UNIQUE"</span><span class="p">,</span> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="p">}</span> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> -</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> -</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_next_value_for</span><span class="p">(),</span> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="p">}</span> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">INVALID_FUNC_NAME_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="p">}</span> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> -</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"STRUCT"</span><span class="p">}</span> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> -</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">KEY_VALUE_DEFINITIONS</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">)</span> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> -</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_decode</span><span class="p">(),</span> -</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="s2">"GAP_FILL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_gap_fill</span><span class="p">(),</span> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="s2">"JSON_OBJECT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(),</span> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="s2">"JSON_OBJECTAGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(</span><span class="n">agg</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="s2">"JSON_TABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_table</span><span class="p">(),</span> -</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="s2">"MATCH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_against</span><span class="p">(),</span> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="s2">"OPENJSON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_open_json</span><span class="p">(),</span> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="s2">"PREDICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_predict</span><span class="p">(),</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="s2">"SAFE_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> -</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> -</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="p">}</span> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"match"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">()),</span> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"prewhere"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_prewhere</span><span class="p">()),</span> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"where"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"group"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()),</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"having"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">()),</span> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"qualify"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">()),</span> -</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"windows"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">()),</span> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"order"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()),</span> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> -</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">()),</span> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="s2">"cluster"</span><span class="p">,</span> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="p">),</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="s2">"distribute"</span><span class="p">,</span> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">),</span> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="p">),</span> -</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sort"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">)),</span> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">(</span><span class="n">skip_start_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">()),</span> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="p">}</span> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">SET_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">),</span> -</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">),</span> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="s2">"SESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"SESSION"</span><span class="p">),</span> -</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="s2">"TRANSACTION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(),</span> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="p">}</span> -</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="n">TYPE_LITERAL_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]),</span> +</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> +</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> +</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="p">),</span> +</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="p">}</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="s2">"ADD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_add</span><span class="p">(),</span> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_alter</span><span class="p">(),</span> +</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(</span><span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_drop</span><span class="p">(),</span> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_rename</span><span class="p">(),</span> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_set</span><span class="p">(),</span> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="p">}</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> +</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">ALTER_ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(),</span> +</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="p">}</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> +</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="s2">"CHECK"</span><span class="p">,</span> +</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="s2">"EXCLUDE"</span><span class="p">,</span> +</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> +</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="s2">"LIKE"</span><span class="p">,</span> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="s2">"PERIOD"</span><span class="p">,</span> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> +</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="s2">"UNIQUE"</span><span class="p">,</span> +</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="p">}</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> +</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_next_value_for</span><span class="p">(),</span> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="p">}</span> +</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="n">INVALID_FUNC_NAME_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> +</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="p">}</span> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"STRUCT"</span><span class="p">}</span> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> +</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="n">KEY_VALUE_DEFINITIONS</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">)</span> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_decode</span><span class="p">(),</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="s2">"GAP_FILL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_gap_fill</span><span class="p">(),</span> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="s2">"JSON_OBJECT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(),</span> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="s2">"JSON_OBJECTAGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(</span><span class="n">agg</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="s2">"JSON_TABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_table</span><span class="p">(),</span> +</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="s2">"MATCH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_against</span><span class="p">(),</span> +</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="s2">"OPENJSON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_open_json</span><span class="p">(),</span> +</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> +</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="s2">"PREDICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_predict</span><span class="p">(),</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="s2">"SAFE_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> +</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="p">}</span> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"match"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">()),</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"prewhere"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_prewhere</span><span class="p">()),</span> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"where"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"group"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()),</span> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"having"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">()),</span> +</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"qualify"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">()),</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"windows"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">()),</span> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"order"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()),</span> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">()),</span> +</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="s2">"cluster"</span><span class="p">,</span> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="p">),</span> +</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="s2">"distribute"</span><span class="p">,</span> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">),</span> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="p">),</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sort"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">)),</span> +</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">(</span><span class="n">skip_start_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">()),</span> +</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="p">}</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> +</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="n">SET_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">),</span> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">),</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="s2">"SESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"SESSION"</span><span class="p">),</span> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="s2">"TRANSACTION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(),</span> </span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="p">}</span> </span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> -</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="n">TYPE_CONVERTER</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">DDL_SELECT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">}</span> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> -</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="n">PRE_VOLATILE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">}</span> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">TYPE_LITERAL_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="p">}</span> </span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="s2">"ISOLATION"</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">),</span> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"COMMITTED"</span><span class="p">),</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"UNCOMITTED"</span><span class="p">),</span> -</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"SERIALIZABLE"</span><span class="p">),</span> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="p">),</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="s2">"READ"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"WRITE"</span><span class="p">,</span> <span class="s2">"ONLY"</span><span class="p">),</span> -</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="p">}</span> -</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> -</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> -</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="p">(</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">()</span> -</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="p">)</span> -</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">[</span><span class="s2">"DO"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"NOTHING"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">)</span> -</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> -</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="n">CREATE_SEQUENCE</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="s2">"SCALE"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> -</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="s2">"SHARD"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">,</span> <span class="s2">"CACHE"</span><span class="p">,</span> <span class="s2">"MAXVALUE"</span><span class="p">,</span> <span class="s2">"MINVALUE"</span><span class="p">),</span> -</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="o">**</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> -</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="p">(</span> -</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="s2">"SESSION"</span><span class="p">,</span> -</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="s2">"GLOBAL"</span><span class="p">,</span> -</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="s2">"KEEP"</span><span class="p">,</span> -</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="s2">"NOKEEP"</span><span class="p">,</span> -</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="s2">"ORDER"</span><span class="p">,</span> -</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="s2">"NOORDER"</span><span class="p">,</span> -</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="s2">"NOCACHE"</span><span class="p">,</span> -</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="s2">"CYCLE"</span><span class="p">,</span> -</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="s2">"NOCYCLE"</span><span class="p">,</span> -</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="s2">"NOMINVALUE"</span><span class="p">,</span> -</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="s2">"NOMAXVALUE"</span><span class="p">,</span> -</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="s2">"NOSCALE"</span><span class="p">,</span> -</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="s2">"NOSHARD"</span><span class="p">,</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="p">),</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="nb">tuple</span><span class="p">(),</span> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="p">),</span> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="p">}</span> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> -</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOR"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)}</span> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="n">USABLES</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">())</span> -</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> -</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="n">CAST_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,))</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">TYPE_CONVERTER</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> +</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">DDL_SELECT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">}</span> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">PRE_VOLATILE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">}</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> +</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="s2">"ISOLATION"</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">),</span> +</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"COMMITTED"</span><span class="p">),</span> +</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"UNCOMITTED"</span><span class="p">),</span> +</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"SERIALIZABLE"</span><span class="p">),</span> +</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="p">),</span> +</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="s2">"READ"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"WRITE"</span><span class="p">,</span> <span class="s2">"ONLY"</span><span class="p">),</span> +</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="p">}</span> +</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> +</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> +</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="p">(</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">()</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="p">)</span> +</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">[</span><span class="s2">"DO"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"NOTHING"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">)</span> +</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> +</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="n">CREATE_SEQUENCE</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="s2">"SCALE"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> +</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="s2">"SHARD"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> +</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">,</span> <span class="s2">"CACHE"</span><span class="p">,</span> <span class="s2">"MAXVALUE"</span><span class="p">,</span> <span class="s2">"MINVALUE"</span><span class="p">),</span> +</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="o">**</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> +</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="p">(</span> +</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="s2">"SESSION"</span><span class="p">,</span> +</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="s2">"GLOBAL"</span><span class="p">,</span> +</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="s2">"KEEP"</span><span class="p">,</span> +</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="s2">"NOKEEP"</span><span class="p">,</span> +</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="s2">"ORDER"</span><span class="p">,</span> +</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="s2">"NOORDER"</span><span class="p">,</span> +</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="s2">"NOCACHE"</span><span class="p">,</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="s2">"CYCLE"</span><span class="p">,</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="s2">"NOCYCLE"</span><span class="p">,</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="s2">"NOMINVALUE"</span><span class="p">,</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="s2">"NOMAXVALUE"</span><span class="p">,</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="s2">"NOSCALE"</span><span class="p">,</span> +</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="s2">"NOSHARD"</span><span class="p">,</span> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="p">),</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="nb">tuple</span><span class="p">(),</span> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="p">),</span> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="p">}</span> </span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> -</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOR"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)}</span> </span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> -</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="n">CLONE_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CLONE"</span><span class="p">,</span> <span class="s2">"COPY"</span><span class="p">}</span> -</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="n">HISTORICAL_DATA_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"OFFSET"</span><span class="p">,</span> <span class="s2">"STATEMENT"</span><span class="p">,</span> <span class="s2">"STREAM"</span><span class="p">}</span> -</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> -</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="n">OPCLASS_FOLLOW_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ASC"</span><span class="p">,</span> <span class="s2">"DESC"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">}</span> -</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> -</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">OPTYPE_FOLLOW_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">}</span> -</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> -</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">TABLE_INDEX_HINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORCE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">}</span> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="n">USABLES</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">())</span> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> +</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="n">CAST_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,))</span> +</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> +</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> +</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> +</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="n">CLONE_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CLONE"</span><span class="p">,</span> <span class="s2">"COPY"</span><span class="p">}</span> +</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">HISTORICAL_DATA_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"OFFSET"</span><span class="p">,</span> <span class="s2">"STATEMENT"</span><span class="p">,</span> <span class="s2">"STREAM"</span><span class="p">}</span> </span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> -</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="n">VIEW_ATTRIBUTES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ENCRYPTION"</span><span class="p">,</span> <span class="s2">"SCHEMABINDING"</span><span class="p">,</span> <span class="s2">"VIEW_METADATA"</span><span class="p">}</span> +</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="n">OPCLASS_FOLLOW_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ASC"</span><span class="p">,</span> <span class="s2">"DESC"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">}</span> </span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> -</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> -</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="n">WINDOW_BEFORE_PAREN_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">}</span> -</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="n">WINDOW_SIDES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOLLOWING"</span><span class="p">,</span> <span class="s2">"PRECEDING"</span><span class="p">}</span> +</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="n">OPTYPE_FOLLOW_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">}</span> +</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> +</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="n">TABLE_INDEX_HINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORCE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">}</span> </span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> -</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> +</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="n">VIEW_ATTRIBUTES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ENCRYPTION"</span><span class="p">,</span> <span class="s2">"SCHEMABINDING"</span><span class="p">,</span> <span class="s2">"VIEW_METADATA"</span><span class="p">}</span> </span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> -</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="n">FETCH_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">}</span> -</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> -</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> +</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> +</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="n">WINDOW_BEFORE_PAREN_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">}</span> +</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="n">WINDOW_SIDES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOLLOWING"</span><span class="p">,</span> <span class="s2">"PRECEDING"</span><span class="p">}</span> </span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> -</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="n">DISTINCT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">}</span> +</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> </span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> -</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="n">NULL_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">}</span> +</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="n">FETCH_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">}</span> </span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> -</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="n">SET_OPERATIONS</span> +</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> </span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> -</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> <span class="n">SELECT_START_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> +</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> <span class="n">DISTINCT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">}</span> </span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> -</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FILE_FORMAT"</span><span class="p">,</span> <span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">,</span> <span class="s2">"CREDENTIAL"</span><span class="p">}</span> +</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="n">NULL_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">}</span> </span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> -</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="n">SET_OPERATIONS</span> </span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> -</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="n">PREFIXED_PIVOT_COLUMNS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> -</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> -</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="c1"># Whether ADD is present for each column added by ALTER TABLE</span> -</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> -</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="c1"># Whether the table sample clause expects CSV syntax</span> -</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="n">TABLESAMPLE_CSV</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="n">SELECT_START_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> +</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> +</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FILE_FORMAT"</span><span class="p">,</span> <span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">,</span> <span class="s2">"CREDENTIAL"</span><span class="p">}</span> +</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> +</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> +</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="n">PREFIXED_PIVOT_COLUMNS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> +</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> -</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="c1"># The default method used for table sampling</span> -</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="c1"># Whether ADD is present for each column added by ALTER TABLE</span> +</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> -</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="c1"># Whether the SET command needs a delimiter (e.g. "=") for assignments</span> -</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="c1"># Whether the table sample clause expects CSV syntax</span> +</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">TABLESAMPLE_CSV</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> -</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="c1"># Whether the TRIM function expects the characters to trim as its first argument</span> -</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="n">TRIM_PATTERN_FIRST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="c1"># The default method used for table sampling</span> +</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> -</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="c1"># Whether string aliases are supported `SELECT COUNT(*) 'count'`</span> -</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="n">STRING_ALIASES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="c1"># Whether the SET command needs a delimiter (e.g. "=") for assignments</span> +</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> -</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="c1"># Whether query modifiers such as LIMIT are attached to the UNION node (vs its right operand)</span> -</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="n">MODIFIERS_ATTACHED_TO_UNION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="n">UNION_MODIFIERS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"order"</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">}</span> -</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> -</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="c1"># Whether to parse IF statements that aren't followed by a left parenthesis as commands</span> -</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="n">NO_PAREN_IF_COMMANDS</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> -</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="c1"># Whether the -> and ->> operators expect documents of type JSON (e.g. Postgres)</span> -</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="c1"># Whether the TRIM function expects the characters to trim as its first argument</span> +</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="n">TRIM_PATTERN_FIRST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> +</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="c1"># Whether string aliases are supported `SELECT COUNT(*) 'count'`</span> +</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="n">STRING_ALIASES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> +</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="c1"># Whether query modifiers such as LIMIT are attached to the UNION node (vs its right operand)</span> +</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="n">MODIFIERS_ATTACHED_TO_UNION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="n">UNION_MODIFIERS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"order"</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">}</span> </span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> -</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="c1"># Whether the `:` operator is used to extract a value from a JSON document</span> -</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="n">COLON_IS_JSON_EXTRACT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="c1"># Whether to parse IF statements that aren't followed by a left parenthesis as commands</span> +</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="n">NO_PAREN_IF_COMMANDS</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> -</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="c1"># Whether or not a VALUES keyword needs to be followed by '(' to form a VALUES clause.</span> -</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="c1"># If this is True and '(' is not found, the keyword will be treated as an identifier</span> -</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> -</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="c1"># Whether implicit unnesting is supported, e.g. SELECT 1 FROM y.z AS z, z.a (Redshift)</span> -</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> -</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="c1"># Whether or not interval spans are supported, INTERVAL 1 YEAR TO MONTHS</span> -</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="c1"># Whether the -> and ->> operators expect documents of type JSON (e.g. Postgres)</span> +</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> +</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="c1"># Whether the `:` operator is used to extract a value from a JSON document</span> +</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="n">COLON_IS_JSON_EXTRACT</span> <span class="o">=</span> <span class="kc">False</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="c1"># Whether or not a VALUES keyword needs to be followed by '(' to form a VALUES clause.</span> +</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="c1"># If this is True and '(' is not found, the keyword will be treated as an identifier</span> +</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> -</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="c1"># Whether a PARTITION clause can follow a table reference</span> -</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="n">SUPPORTS_PARTITION_SELECTION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="c1"># Whether implicit unnesting is supported, e.g. SELECT 1 FROM y.z AS z, z.a (Redshift)</span> +</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="o">=</span> <span class="kc">False</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="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="s2">"error_level"</span><span class="p">,</span> -</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> -</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> -</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="s2">"dialect"</span><span class="p">,</span> -</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="s2">"errors"</span><span class="p">,</span> -</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> -</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="s2">"_index"</span><span class="p">,</span> -</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="s2">"_curr"</span><span class="p">,</span> -</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="s2">"_next"</span><span class="p">,</span> -</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="s2">"_prev"</span><span class="p">,</span> -</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> -</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="p">)</span> -</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> -</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="c1"># Autofilled</span> -</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="n">SHOW_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="n">SET_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> -</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> -</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> -</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</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-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="p">):</span> -</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> -</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> -</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> -</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="c1"># Whether or not interval spans are supported, INTERVAL 1 YEAR TO MONTHS</span> +</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> +</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="c1"># Whether a PARTITION clause can follow a table reference</span> +</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="n">SUPPORTS_PARTITION_SELECTION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> +</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="s2">"error_level"</span><span class="p">,</span> +</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> +</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> +</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="s2">"dialect"</span><span class="p">,</span> +</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="s2">"errors"</span><span class="p">,</span> +</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> +</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="s2">"_index"</span><span class="p">,</span> +</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="s2">"_curr"</span><span class="p">,</span> +</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="s2">"_next"</span><span class="p">,</span> +</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="s2">"_prev"</span><span class="p">,</span> +</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> +</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="p">)</span> +</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> +</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="c1"># Autofilled</span> +</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="n">SHOW_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="n">SET_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> +</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> +</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> +</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</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-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="p">):</span> +</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> </span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> -</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> -</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> -</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> -</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a><span class="sd"> per parsed SQL statement.</span> -</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> -</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a><span class="sd"> Args:</span> -</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a><span class="sd"> raw_tokens: The list of tokens.</span> -</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> -</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> -</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a><span class="sd"> Returns:</span> -</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a><span class="sd"> The list of the produced syntax trees.</span> -</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a><span class="sd"> """</span> -</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> -</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> -</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="p">)</span> -</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> -</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> -</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> -</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> -</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> -</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> -</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a><span class="sd"> Args:</span> -</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a><span class="sd"> expression_types: The expression type(s) to try and parse the token list into.</span> -</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a><span class="sd"> raw_tokens: The list of tokens.</span> -</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> -</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> -</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a><span class="sd"> Returns:</span> -</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a><span class="sd"> The target Expression.</span> -</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a><span class="sd"> """</span> -</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> -</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> -</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> -</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> +</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> +</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> +</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> +</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> +</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> +</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a><span class="sd"> per parsed SQL statement.</span> +</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> +</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a><span class="sd"> Args:</span> +</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a><span class="sd"> raw_tokens: The list of tokens.</span> +</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> +</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> +</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a><span class="sd"> Returns:</span> +</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a><span class="sd"> The list of the produced syntax trees.</span> +</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a><span class="sd"> """</span> +</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> +</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> +</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="p">)</span> +</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> +</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> +</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> +</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> +</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> +</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> +</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a><span class="sd"> Args:</span> +</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a><span class="sd"> expression_types: The expression type(s) to try and parse the token list into.</span> +</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a><span class="sd"> raw_tokens: The list of tokens.</span> +</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> +</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> +</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a><span class="sd"> Returns:</span> +</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a><span class="sd"> The target Expression.</span> +</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a><span class="sd"> """</span> +</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> +</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> -</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="sa">f</span><span class="s2">"Failed to parse '</span><span class="si">{</span><span class="n">sql</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">raw_tokens</span><span class="si">}</span><span class="s2">' into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> -</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> -</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> -</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> -</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> -</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> -</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> -</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> -</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> -</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> -</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> -</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">token</span><span class="p">])</span> -</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> -</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> -</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">chunks</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">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> -</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> -</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> -</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> -</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> -</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> -</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> -</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> -</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> -</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> -</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> -</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="k">return</span> <span class="n">expressions</span> -</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> -</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a><span class="w"> </span><span class="sd">"""Logs or raises any found errors, depending on the chosen error level setting."""</span> -</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> -</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> -</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> -</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="p">)</span> -</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> -</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</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">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> -</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a><span class="sd"> error level setting.</span> -</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a><span class="sd"> """</span> -</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> -</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">start</span> -</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> -</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> -</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> -</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> -</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> -</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> -</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> -</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> -</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> -</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> -</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="p">)</span> -</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> -</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="k">raise</span> <span class="n">error</span> -</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> -</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> -</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> -</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> -</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">comments</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 class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> +</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> +</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="sa">f</span><span class="s2">"Failed to parse '</span><span class="si">{</span><span class="n">sql</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">raw_tokens</span><span class="si">}</span><span class="s2">' into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> +</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> +</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> +</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> +</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> +</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> +</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> +</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> +</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> +</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> +</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> +</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">token</span><span class="p">])</span> +</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> +</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> +</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="n">chunks</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">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> +</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> +</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> +</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> +</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> +</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> +</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> +</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> +</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> +</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> +</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> +</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> +</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="k">return</span> <span class="n">expressions</span> +</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> +</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a><span class="w"> </span><span class="sd">"""Logs or raises any found errors, depending on the chosen error level setting."""</span> +</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> +</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> +</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> +</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="p">)</span> +</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> +</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</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">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> +</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a><span class="sd"> error level setting.</span> +</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a><span class="sd"> """</span> +</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> +</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">start</span> +</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> +</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> +</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> +</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> +</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> +</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> +</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> +</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> +</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> +</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="p">)</span> +</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> +</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="k">raise</span> <span class="n">error</span> +</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> +</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> </span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> -</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a><span class="sd"> Args:</span> -</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a><span class="sd"> exp_class: The expression class to instantiate.</span> -</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a><span class="sd"> comments: An optional list of comments to attach to the expression.</span> -</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a><span class="sd"> kwargs: The arguments to set for the expression along with their respective values.</span> -</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> -</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a><span class="sd"> Returns:</span> -</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a><span class="sd"> The target expression.</span> -</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a><span class="sd"> """</span> -</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> <span class="k">if</span> <span class="n">comments</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> -</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="k">def</span> <span class="nf">_add_comments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> -</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> -</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">args</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a><span class="sd"> Validates an Expression, making sure that all its mandatory arguments are set.</span> -</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> -</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a><span class="sd"> Args:</span> -</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a><span class="sd"> expression: The expression to validate.</span> -</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a><span class="sd"> args: An optional list of items that was used to instantiate the expression, if it's a Func.</span> -</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> -</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a><span class="sd"> Returns:</span> -</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a><span class="sd"> The validated expression.</span> -</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a><span class="sd"> """</span> -</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">!=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> -</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> -</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="o">.</span><span class="n">start</span> <span class="p">:</span> <span class="n">end</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> -</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="k">def</span> <span class="nf">_is_connected</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">start</span> +</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> +</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">comments</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 class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> +</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a><span class="sd"> Args:</span> +</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a><span class="sd"> exp_class: The expression class to instantiate.</span> +</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a><span class="sd"> comments: An optional list of comments to attach to the expression.</span> +</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a><span class="sd"> kwargs: The arguments to set for the expression along with their respective values.</span> +</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> +</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a><span class="sd"> Returns:</span> +</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a><span class="sd"> The target expression.</span> +</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a><span class="sd"> """</span> +</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> <span class="k">if</span> <span class="n">comments</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> +</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> <span class="k">def</span> <span class="nf">_add_comments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> +</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> +</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">args</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a><span class="sd"> Validates an Expression, making sure that all its mandatory arguments are set.</span> +</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> +</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a><span class="sd"> Args:</span> +</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a><span class="sd"> expression: The expression to validate.</span> +</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a><span class="sd"> args: An optional list of items that was used to instantiate the expression, if it's a Func.</span> +</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> +</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a><span class="sd"> Returns:</span> +</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a><span class="sd"> The validated expression.</span> +</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a><span class="sd"> """</span> +</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">!=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> +</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="n">expression</span> </span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> -</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> -</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> -</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> -</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">:</span> -</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> -</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="k">def</span> <span class="nf">_warn_unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="k">return</span> -</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> -</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="c1"># We use _find_sql because self.sql may comprise multiple chunks, and we're only</span> -</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> <span class="c1"># interested in emitting a warning for the one being currently processed.</span> -</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> -</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> -</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> -</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">' contains unsupported syntax. Falling back to parsing as a 'Command'."</span> -</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="p">)</span> -</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> -</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> -</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="o">.</span><span class="n">start</span> <span class="p">:</span> <span class="n">end</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> +</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> <span class="k">def</span> <span class="nf">_is_connected</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">start</span> +</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> +</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> +</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> +</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> +</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> +</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">:</span> +</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> +</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="k">def</span> <span class="nf">_warn_unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="k">return</span> +</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> +</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="c1"># We use _find_sql because self.sql may comprise multiple chunks, and we're only</span> +</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> <span class="c1"># interested in emitting a warning for the one being currently processed.</span> +</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> +</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> +</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">' contains unsupported syntax. Falling back to parsing as a 'Command'."</span> </span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> <span class="p">)</span> </span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a> -</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="k">def</span> <span class="nf">_try_parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[],</span> <span class="n">T</span><span class="p">],</span> <span class="n">retreat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="p">]:</span> -</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a><span class="sd"> Attemps to backtrack if a parse function that contains a try/catch internally raises an error. This behavior can</span> -</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a><span class="sd"> be different depending on the uset-set ErrorLevel, so _try_parse aims to solve this by setting & resetting</span> -</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a><span class="sd"> the parser state accordingly</span> -</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a><span class="sd"> """</span> -</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a> <span class="n">error_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> -</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> -</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="k">finally</span><span class="p">:</span> -</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">retreat</span><span class="p">:</span> -</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> -</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> -</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> -</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> <span class="k">def</span> <span class="nf">_parse_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">allow_exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> <span class="k">if</span> <span class="n">allow_exists</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> +</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> <span class="p">)</span> +</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a> +</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> <span class="k">def</span> <span class="nf">_try_parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[],</span> <span class="n">T</span><span class="p">],</span> <span class="n">retreat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="p">]:</span> +</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a><span class="sd"> Attemps to backtrack if a parse function that contains a try/catch internally raises an error. This behavior can</span> +</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a><span class="sd"> be different depending on the uset-set ErrorLevel, so _try_parse aims to solve this by setting & resetting</span> +</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a><span class="sd"> the parser state accordingly</span> +</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a><span class="sd"> """</span> +</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> <span class="n">error_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> +</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> +</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="k">finally</span><span class="p">:</span> +</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">retreat</span><span class="p">:</span> +</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> </span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> -</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> -</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> -</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> -</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> -</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> -</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COMMENT_TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">:</span> -</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> -</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">)</span> -</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> -</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comment</span><span class="p">,</span> -</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="p">)</span> -</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> -</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="k">def</span> <span class="nf">_parse_to_table</span><span class="p">(</span> -</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> -</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">)</span> +</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="k">def</span> <span class="nf">_parse_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">allow_exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> <span class="k">if</span> <span class="n">allow_exists</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> +</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> +</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> +</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> +</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> +</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> +</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COMMENT_TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">:</span> +</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> +</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">)</span> +</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> +</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comment</span><span class="p">,</span> +</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="p">)</span> </span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> -</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="c1"># https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-table-ttl</span> -</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="k">def</span> <span class="nf">_parse_ttl</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="k">def</span> <span class="nf">_parse_ttl_action</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> -</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELETE"</span><span class="p">):</span> -</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RECOMPRESS"</span><span class="p">):</span> -</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">recompress</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> <span class="p">)</span> -</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"DISK"</span><span class="p">):</span> -</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_disk</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="p">)</span> -</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"VOLUME"</span><span class="p">):</span> -</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_volume</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="p">)</span> -</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> -</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> -</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_ttl_action</span><span class="p">)</span> -</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> -</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> +</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">def</span> <span class="nf">_parse_to_table</span><span class="p">(</span> +</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> +</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">)</span> +</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> +</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="c1"># https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-table-ttl</span> +</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="k">def</span> <span class="nf">_parse_ttl</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="k">def</span> <span class="nf">_parse_ttl_action</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> +</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELETE"</span><span class="p">):</span> +</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RECOMPRESS"</span><span class="p">):</span> +</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">recompress</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> <span class="p">)</span> +</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"DISK"</span><span class="p">):</span> +</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_disk</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="p">)</span> +</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"VOLUME"</span><span class="p">):</span> +</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_volume</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="p">)</span> </span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> -</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="k">if</span> <span class="n">group</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> -</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> -</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> -</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> -</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> -</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="n">group</span><span class="o">=</span><span class="n">group</span><span class="p">,</span> -</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="n">aggregates</span><span class="o">=</span><span class="n">aggregates</span><span class="p">,</span> -</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="p">)</span> -</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> -</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> -</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> -</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> -</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> -</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> +</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> +</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_ttl_action</span><span class="p">)</span> +</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> +</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> +</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> +</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="k">if</span> <span class="n">group</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> +</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> +</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> +</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> +</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> +</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="n">group</span><span class="o">=</span><span class="n">group</span><span class="p">,</span> +</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> <span class="n">aggregates</span><span class="o">=</span><span class="n">aggregates</span><span class="p">,</span> +</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="p">)</span> +</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> +</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> -</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> -</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> -</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> -</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> -</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="n">if_exists</span> <span class="o">=</span> <span class="n">exists</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> -</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> -</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="p">)</span> -</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> -</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> -</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> -</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> -</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">start</span><span class="o">.</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">if_exists</span><span class="p">,</span> -</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> -</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> -</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">),</span> -</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONSTRAINTS"</span><span class="p">),</span> -</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> <span class="n">purge</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PURGE"</span><span class="p">),</span> -</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> -</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="p">)</span> -</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> -</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="nb">bool</span><span class="p">]:</span> -</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> -</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> -</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> -</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> <span class="p">)</span> -</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> -</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="c1"># Note: this can't be None because we've matched a statement parser</span> -</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> -</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="n">start</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> -</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">)</span> -</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">)</span> -</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="p">)</span> +</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> +</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> +</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> +</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> +</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> +</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> +</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> +</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> +</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> +</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> <span class="n">if_exists</span> <span class="o">=</span> <span class="n">exists</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> +</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> +</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="p">)</span> +</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> +</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> +</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> +</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> +</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">start</span><span class="o">.</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">if_exists</span><span class="p">,</span> +</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> +</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> +</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">),</span> +</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> <span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONSTRAINTS"</span><span class="p">),</span> +</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> <span class="n">purge</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PURGE"</span><span class="p">),</span> +</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> +</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> <span class="p">)</span> +</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> +</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="nb">bool</span><span class="p">]:</span> +</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> +</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> +</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> +</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="p">)</span> +</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> +</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="c1"># Note: this can't be None because we've matched a statement parser</span> +</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> </span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> -</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> -</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> -</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="n">start</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> +</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">)</span> +</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">)</span> +</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> <span class="p">)</span> +</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> +</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> </span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a> -</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> <span class="c1"># exp.Properties.Location.POST_CREATE</span> -</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> -</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a> -</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="n">end</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> -</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="k">def</span> <span class="nf">extend_props</span><span class="p">(</span><span class="n">temp_props</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="k">nonlocal</span> <span class="n">properties</span> -</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_props</span><span class="p">:</span> -</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">temp_props</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="k">elif</span> <span class="n">temp_props</span><span class="p">:</span> -</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_props</span> -</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> -</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> -</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> -</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA ("schema" here is the UDF's type signature)</span> -</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a> +</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> +</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a> <span class="c1"># exp.Properties.Location.POST_CREATE</span> +</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> +</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> +</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> <span class="n">end</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> +</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> <span class="k">def</span> <span class="nf">extend_props</span><span class="p">(</span><span class="n">temp_props</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="k">nonlocal</span> <span class="n">properties</span> +</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_props</span><span class="p">:</span> +</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">temp_props</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="k">elif</span> <span class="n">temp_props</span><span class="p">:</span> +</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_props</span> </span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> -</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_heredoc</span><span class="p">()</span> -</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> +</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> </span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> -</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">):</span> -</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> -</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> -</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> -</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="c1"># Takes care of BigQuery's JavaScript UDF definitions that end in an OPTIONS property</span> -</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="c1"># # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_function_statement</span> -</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> -</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> -</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> -</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> -</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> -</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> -</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> <span class="c1"># Postgres allows anonymous indexes, eg. CREATE INDEX IF NOT EXISTS ON t(c)</span> -</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> <span class="n">index</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a> -</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">)</span> -</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">DB_CREATABLES</span><span class="p">:</span> -</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> -</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> -</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="p">)</span> +</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA ("schema" here is the UDF's type signature)</span> +</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> +</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_heredoc</span><span class="p">()</span> +</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> +</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">):</span> +</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> +</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> +</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> +</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> <span class="c1"># Takes care of BigQuery's JavaScript UDF definitions that end in an OPTIONS property</span> +</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="c1"># # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_function_statement</span> +</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> +</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> +</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> +</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> +</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> +</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> <span class="c1"># Postgres allows anonymous indexes, eg. CREATE INDEX IF NOT EXISTS ON t(c)</span> +</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="n">index</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a> -</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> -</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> -</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> +</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">)</span> +</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">DB_CREATABLES</span><span class="p">:</span> +</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> +</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> +</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="p">)</span> </span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> -</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> -</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> -</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DDL_SELECT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> -</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> -</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">:</span> -</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> +</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> +</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> +</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> +</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> +</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> +</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> +</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DDL_SELECT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> +</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> </span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> -</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> -</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="c1"># exp.Properties.Location.POST_EXPRESSION</span> +</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">:</span> +</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> </span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> -</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> -</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> -</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="c1"># exp.Properties.Location.POST_INDEX</span> -</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> -</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index</span><span class="p">:</span> -</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="k">break</span> -</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">:</span> -</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">,</span> <span class="s2">"BINDING"</span><span class="p">):</span> -</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</span></a> -</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="n">shallow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHALLOW"</span><span class="p">)</span> -</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> -</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CLONE_KEYWORDS</span><span class="p">):</span> -</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"copy"</span> -</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Clone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">shallow</span><span class="o">=</span><span class="n">shallow</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span> -</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> <span class="p">)</span> +</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> +</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> +</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> +</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> <span class="c1"># exp.Properties.Location.POST_EXPRESSION</span> +</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> +</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> +</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> +</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="c1"># exp.Properties.Location.POST_INDEX</span> +</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> +</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index</span><span class="p">:</span> +</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> <span class="k">break</span> +</span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">:</span> +</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">,</span> <span class="s2">"BINDING"</span><span class="p">):</span> +</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> +</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> <span class="n">shallow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHALLOW"</span><span class="p">)</span> </span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a> -</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> -</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> -</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> -</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> -</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> -</span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> -</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> -</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> -</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">,</span> -</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="n">clone</span><span class="o">=</span><span class="n">clone</span><span class="p">,</span> -</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="p">)</span> -</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> -</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="k">def</span> <span class="nf">_parse_sequence_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">]:</span> -</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> <span class="n">seq</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">()</span> -</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> -</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CLONE_KEYWORDS</span><span class="p">):</span> +</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"copy"</span> +</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Clone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">shallow</span><span class="o">=</span><span class="n">shallow</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span> +</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> <span class="p">)</span> +</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> +</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> +</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> +</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> +</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> +</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> +</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> +</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> +</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> +</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">,</span> +</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> <span class="n">clone</span><span class="o">=</span><span class="n">clone</span><span class="p">,</span> +</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> <span class="p">)</span> </span><span id="L-1765"><a href="#L-1765"><span class="linenos">1765</span></a> -</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">):</span> -</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> -</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> -</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> -</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> -</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CACHE"</span><span class="p">):</span> -</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a> <span class="c1"># T-SQL allows empty CACHE which is initialized dynamically</span> -</span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OWNED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="c1"># "OWNED BY NONE" is the default</span> -</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"owned"</span><span class="p">,</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NONE"</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="n">opt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATE_SEQUENCE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> <span class="k">if</span> <span class="n">opt</span><span class="p">:</span> -</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">opt</span><span class="p">)</span> -</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> <span class="k">break</span> -</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> -</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="n">options</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">==</span> <span class="n">index</span> <span class="k">else</span> <span class="n">seq</span> -</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> -</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="c1"># only used for teradata currently</span> -</span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> -</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">),</span> -</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="s2">"dual"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">),</span> -</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> <span class="s2">"before"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">),</span> -</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">),</span> -</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"NOT LOCAL"</span><span class="p">),</span> -</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">),</span> -</span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> <span class="s2">"minimum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)),</span> -</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)),</span> -</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a> <span class="p">}</span> -</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> -</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()]</span> -</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span><span class="p">})</span> -</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span> -</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse property '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> -</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> -</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> -</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> -</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a> -</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> -</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> -</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMPOUND"</span><span class="p">,</span> <span class="s2">"SORTKEY"</span><span class="p">):</span> -</span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> <span class="k">def</span> <span class="nf">_parse_sequence_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">]:</span> +</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> <span class="n">seq</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">()</span> +</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> +</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> +</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">):</span> +</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> +</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> +</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> +</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> +</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CACHE"</span><span class="p">):</span> +</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="c1"># T-SQL allows empty CACHE which is initialized dynamically</span> +</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OWNED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> <span class="c1"># "OWNED BY NONE" is the default</span> +</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"owned"</span><span class="p">,</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NONE"</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="n">opt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATE_SEQUENCE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> <span class="k">if</span> <span class="n">opt</span><span class="p">:</span> +</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">opt</span><span class="p">)</span> +</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="k">break</span> +</span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> +</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="n">options</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> <span class="k">return</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">==</span> <span class="n">index</span> <span class="k">else</span> <span class="n">seq</span> +</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> +</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> <span class="c1"># only used for teradata currently</span> +</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> +</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">),</span> +</span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> <span class="s2">"dual"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">),</span> +</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> <span class="s2">"before"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">),</span> +</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">),</span> +</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"NOT LOCAL"</span><span class="p">),</span> +</span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">),</span> +</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a> <span class="s2">"minimum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)),</span> +</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)),</span> +</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> <span class="p">}</span> +</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> +</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()]</span> +</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span><span class="p">})</span> +</span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span> +</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse property '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> +</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> +</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> +</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> +</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> </span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a> -</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> -</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> -</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMPOUND"</span><span class="p">,</span> <span class="s2">"SORTKEY"</span><span class="p">):</span> +</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> -</span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> -</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sequence_properties</span><span class="p">()</span> -</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> -</span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> <span class="c1"># Transform the key to exp.Dot if it's dotted identifiers wrapped in exp.Column or to exp.Var otherwise</span> -</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> -</span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> +</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> +</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> +</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> +</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sequence_properties</span><span class="p">()</span> </span><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a> -</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="c1"># Transform the value to exp.Var if it was parsed as exp.Column(exp.Identifier())</span> -</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="c1"># Transform the key to exp.Dot if it's dotted identifiers wrapped in exp.Column or to exp.Var otherwise</span> +</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> </span><span id="L-1852"><a href="#L-1852"><span class="linenos">1852</span></a> -</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a> -</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> <span class="k">def</span> <span class="nf">_parse_stored</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> -</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> -</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> <span class="n">output_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUTPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> <span class="c1"># Transform the value to exp.Var if it was parsed as exp.Column(exp.Identifier())</span> +</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> +</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> </span><span id="L-1860"><a href="#L-1860"><span class="linenos">1860</span></a> -</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">,</span> -</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span> -</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InputOutputFormat</span><span class="p">,</span> <span class="n">input_format</span><span class="o">=</span><span class="n">input_format</span><span class="p">,</span> <span class="n">output_format</span><span class="o">=</span><span class="n">output_format</span> -</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> <span class="p">)</span> -</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> <span class="k">if</span> <span class="n">input_format</span> <span class="ow">or</span> <span class="n">output_format</span> -</span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> <span class="p">),</span> -</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a> <span class="p">)</span> -</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> -</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> <span class="k">def</span> <span class="nf">_parse_unquoted_field</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">field</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span> -</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="n">field</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> -</span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a> -</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> <span class="k">return</span> <span class="n">field</span> -</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> -</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</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">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> <span class="k">def</span> <span class="nf">_parse_stored</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> +</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> +</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="n">output_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUTPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> +</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">,</span> +</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span> +</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InputOutputFormat</span><span class="p">,</span> <span class="n">input_format</span><span class="o">=</span><span class="n">input_format</span><span class="p">,</span> <span class="n">output_format</span><span class="o">=</span><span class="n">output_format</span> +</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> <span class="p">)</span> +</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> <span class="k">if</span> <span class="n">input_format</span> <span class="ow">or</span> <span class="n">output_format</span> +</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="p">),</span> +</span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a> <span class="p">)</span> +</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> +</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> <span class="k">def</span> <span class="nf">_parse_unquoted_field</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">field</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span> +</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> <span class="n">field</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> </span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> -</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">(),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> <span class="k">return</span> <span class="n">field</span> </span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a> -</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</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">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">]:</span> -</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> -</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> -</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> -</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">prop</span><span class="p">:</span> -</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="k">break</span> -</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">prop</span><span class="p">):</span> -</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> -</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> -</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> -</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</span></a> -</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> -</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> -</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> <span class="p">)</span> -</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> -</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> <span class="k">def</span> <span class="nf">_parse_volatile_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">:</span> -</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> -</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</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">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> +</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">(),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> +</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</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">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">]:</span> +</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> +</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> +</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> +</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">prop</span><span class="p">:</span> +</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> <span class="k">break</span> +</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">prop</span><span class="p">):</span> +</span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a> +</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> +</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> +</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> +</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> +</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> +</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> <span class="p">)</span> </span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a> -</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a> <span class="k">if</span> <span class="n">pre_volatile_token</span> <span class="ow">and</span> <span class="n">pre_volatile_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRE_VOLATILE_TOKENS</span><span class="p">:</span> -</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">()</span> -</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a> -</span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">))</span> -</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a> -</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a> <span class="k">def</span> <span class="nf">_parse_retention_period</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">:</span> -</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a> <span class="c1"># Parse TSQL's HISTORY_RETENTION_PERIOD: {INFINITE | <number> DAY | DAYS | MONTH ...}</span> -</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> <span class="n">number</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a> <span class="n">number_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">number</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number_str</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> -</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> <span class="k">def</span> <span class="nf">_parse_system_versioning_property</span><span class="p">(</span> -</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">:</span> -</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">,</span> -</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> -</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="p">},</span> -</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> <span class="p">)</span> -</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> -</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> -</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="k">return</span> <span class="n">prop</span> -</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> -</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_TABLE"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> -</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA_CONSISTENCY_CHECK"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"data_consistency"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> -</span><span id="L-1950"><a href="#L-1950"><span class="linenos">1950</span></a> -</span><span id="L-1951"><a href="#L-1951"><span class="linenos">1951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1952"><a href="#L-1952"><span class="linenos">1952</span></a> -</span><span id="L-1953"><a href="#L-1953"><span class="linenos">1953</span></a> <span class="k">return</span> <span class="n">prop</span> -</span><span id="L-1954"><a href="#L-1954"><span class="linenos">1954</span></a> -</span><span id="L-1955"><a href="#L-1955"><span class="linenos">1955</span></a> <span class="k">def</span> <span class="nf">_parse_data_deletion_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">:</span> -</span><span id="L-1956"><a href="#L-1956"><span class="linenos">1956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1957"><a href="#L-1957"><span class="linenos">1957</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">)</span> -</span><span id="L-1958"><a href="#L-1958"><span class="linenos">1958</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">)</span> -</span><span id="L-1959"><a href="#L-1959"><span class="linenos">1959</span></a> -</span><span id="L-1960"><a href="#L-1960"><span class="linenos">1960</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-1961"><a href="#L-1961"><span class="linenos">1961</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-1962"><a href="#L-1962"><span class="linenos">1962</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILTER_COLUMN"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-1963"><a href="#L-1963"><span class="linenos">1963</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"filter_column"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="L-1964"><a href="#L-1964"><span class="linenos">1964</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-1965"><a href="#L-1965"><span class="linenos">1965</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> -</span><span id="L-1966"><a href="#L-1966"><span class="linenos">1966</span></a> -</span><span id="L-1967"><a href="#L-1967"><span class="linenos">1967</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1968"><a href="#L-1968"><span class="linenos">1968</span></a> -</span><span id="L-1969"><a href="#L-1969"><span class="linenos">1969</span></a> <span class="k">return</span> <span class="n">prop</span> -</span><span id="L-1970"><a href="#L-1970"><span class="linenos">1970</span></a> -</span><span id="L-1971"><a href="#L-1971"><span class="linenos">1971</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1972"><a href="#L-1972"><span class="linenos">1972</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">):</span> -</span><span id="L-1973"><a href="#L-1973"><span class="linenos">1973</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1974"><a href="#L-1974"><span class="linenos">1974</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-1975"><a href="#L-1975"><span class="linenos">1975</span></a> <span class="k">return</span> <span class="n">prop</span> +</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a> <span class="k">def</span> <span class="nf">_parse_volatile_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">:</span> +</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> +</span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a> +</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a> <span class="k">if</span> <span class="n">pre_volatile_token</span> <span class="ow">and</span> <span class="n">pre_volatile_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRE_VOLATILE_TOKENS</span><span class="p">:</span> +</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">()</span> +</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a> +</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">))</span> +</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> +</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> <span class="k">def</span> <span class="nf">_parse_retention_period</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">:</span> +</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> <span class="c1"># Parse TSQL's HISTORY_RETENTION_PERIOD: {INFINITE | <number> DAY | DAYS | MONTH ...}</span> +</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="n">number</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> <span class="n">number_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">number</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number_str</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> +</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="k">def</span> <span class="nf">_parse_system_versioning_property</span><span class="p">(</span> +</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">:</span> +</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">,</span> +</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> +</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> <span class="p">},</span> +</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="p">)</span> +</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> +</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> +</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a> <span class="k">return</span> <span class="n">prop</span> +</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a> +</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-1950"><a href="#L-1950"><span class="linenos">1950</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_TABLE"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-1951"><a href="#L-1951"><span class="linenos">1951</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> +</span><span id="L-1952"><a href="#L-1952"><span class="linenos">1952</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA_CONSISTENCY_CHECK"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-1953"><a href="#L-1953"><span class="linenos">1953</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"data_consistency"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-1954"><a href="#L-1954"><span class="linenos">1954</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-1955"><a href="#L-1955"><span class="linenos">1955</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> +</span><span id="L-1956"><a href="#L-1956"><span class="linenos">1956</span></a> +</span><span id="L-1957"><a href="#L-1957"><span class="linenos">1957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1958"><a href="#L-1958"><span class="linenos">1958</span></a> +</span><span id="L-1959"><a href="#L-1959"><span class="linenos">1959</span></a> <span class="k">return</span> <span class="n">prop</span> +</span><span id="L-1960"><a href="#L-1960"><span class="linenos">1960</span></a> +</span><span id="L-1961"><a href="#L-1961"><span class="linenos">1961</span></a> <span class="k">def</span> <span class="nf">_parse_data_deletion_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">:</span> +</span><span id="L-1962"><a href="#L-1962"><span class="linenos">1962</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1963"><a href="#L-1963"><span class="linenos">1963</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">)</span> +</span><span id="L-1964"><a href="#L-1964"><span class="linenos">1964</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">)</span> +</span><span id="L-1965"><a href="#L-1965"><span class="linenos">1965</span></a> +</span><span id="L-1966"><a href="#L-1966"><span class="linenos">1966</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-1967"><a href="#L-1967"><span class="linenos">1967</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-1968"><a href="#L-1968"><span class="linenos">1968</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILTER_COLUMN"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-1969"><a href="#L-1969"><span class="linenos">1969</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"filter_column"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="L-1970"><a href="#L-1970"><span class="linenos">1970</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-1971"><a href="#L-1971"><span class="linenos">1971</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> +</span><span id="L-1972"><a href="#L-1972"><span class="linenos">1972</span></a> +</span><span id="L-1973"><a href="#L-1973"><span class="linenos">1973</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1974"><a href="#L-1974"><span class="linenos">1974</span></a> +</span><span id="L-1975"><a href="#L-1975"><span class="linenos">1975</span></a> <span class="k">return</span> <span class="n">prop</span> </span><span id="L-1976"><a href="#L-1976"><span class="linenos">1976</span></a> -</span><span id="L-1977"><a href="#L-1977"><span class="linenos">1977</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1978"><a href="#L-1978"><span class="linenos">1978</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> -</span><span id="L-1979"><a href="#L-1979"><span class="linenos">1979</span></a> -</span><span id="L-1980"><a href="#L-1980"><span class="linenos">1980</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">):</span> -</span><span id="L-1981"><a href="#L-1981"><span class="linenos">1981</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> +</span><span id="L-1977"><a href="#L-1977"><span class="linenos">1977</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1978"><a href="#L-1978"><span class="linenos">1978</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">):</span> +</span><span id="L-1979"><a href="#L-1979"><span class="linenos">1979</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1980"><a href="#L-1980"><span class="linenos">1980</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-1981"><a href="#L-1981"><span class="linenos">1981</span></a> <span class="k">return</span> <span class="n">prop</span> </span><span id="L-1982"><a href="#L-1982"><span class="linenos">1982</span></a> -</span><span id="L-1983"><a href="#L-1983"><span class="linenos">1983</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">VIEW_ATTRIBUTES</span><span class="p">):</span> -</span><span id="L-1984"><a href="#L-1984"><span class="linenos">1984</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ViewAttributeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-1983"><a href="#L-1983"><span class="linenos">1983</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1984"><a href="#L-1984"><span class="linenos">1984</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> </span><span id="L-1985"><a href="#L-1985"><span class="linenos">1985</span></a> -</span><span id="L-1986"><a href="#L-1986"><span class="linenos">1986</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-1987"><a href="#L-1987"><span class="linenos">1987</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1988"><a href="#L-1988"><span class="linenos">1988</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-1989"><a href="#L-1989"><span class="linenos">1989</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1990"><a href="#L-1990"><span class="linenos">1990</span></a> -</span><span id="L-1991"><a href="#L-1991"><span class="linenos">1991</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1992"><a href="#L-1992"><span class="linenos">1992</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1993"><a href="#L-1993"><span class="linenos">1993</span></a> -</span><span id="L-1994"><a href="#L-1994"><span class="linenos">1994</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="L-1995"><a href="#L-1995"><span class="linenos">1995</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1986"><a href="#L-1986"><span class="linenos">1986</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">):</span> +</span><span id="L-1987"><a href="#L-1987"><span class="linenos">1987</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> +</span><span id="L-1988"><a href="#L-1988"><span class="linenos">1988</span></a> +</span><span id="L-1989"><a href="#L-1989"><span class="linenos">1989</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">VIEW_ATTRIBUTES</span><span class="p">):</span> +</span><span id="L-1990"><a href="#L-1990"><span class="linenos">1990</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ViewAttributeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-1991"><a href="#L-1991"><span class="linenos">1991</span></a> +</span><span id="L-1992"><a href="#L-1992"><span class="linenos">1992</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-1993"><a href="#L-1993"><span class="linenos">1993</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1994"><a href="#L-1994"><span class="linenos">1994</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-1995"><a href="#L-1995"><span class="linenos">1995</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-1996"><a href="#L-1996"><span class="linenos">1996</span></a> -</span><span id="L-1997"><a href="#L-1997"><span class="linenos">1997</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> -</span><span id="L-1998"><a href="#L-1998"><span class="linenos">1998</span></a> -</span><span id="L-1999"><a href="#L-1999"><span class="linenos">1999</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> -</span><span id="L-2000"><a href="#L-2000"><span class="linenos">2000</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">]:</span> -</span><span id="L-2001"><a href="#L-2001"><span class="linenos">2001</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1997"><a href="#L-1997"><span class="linenos">1997</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1998"><a href="#L-1998"><span class="linenos">1998</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1999"><a href="#L-1999"><span class="linenos">1999</span></a> +</span><span id="L-2000"><a href="#L-2000"><span class="linenos">2000</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="L-2001"><a href="#L-2001"><span class="linenos">2001</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-2002"><a href="#L-2002"><span class="linenos">2002</span></a> -</span><span id="L-2003"><a href="#L-2003"><span class="linenos">2003</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2004"><a href="#L-2004"><span class="linenos">2004</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> -</span><span id="L-2005"><a href="#L-2005"><span class="linenos">2005</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-2006"><a href="#L-2006"><span class="linenos">2006</span></a> -</span><span id="L-2007"><a href="#L-2007"><span class="linenos">2007</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> -</span><span id="L-2008"><a href="#L-2008"><span class="linenos">2008</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2009"><a href="#L-2009"><span class="linenos">2009</span></a> -</span><span id="L-2010"><a href="#L-2010"><span class="linenos">2010</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-2011"><a href="#L-2011"><span class="linenos">2011</span></a> -</span><span id="L-2012"><a href="#L-2012"><span class="linenos">2012</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> -</span><span id="L-2013"><a href="#L-2013"><span class="linenos">2013</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-2014"><a href="#L-2014"><span class="linenos">2014</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-2015"><a href="#L-2015"><span class="linenos">2015</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> -</span><span id="L-2016"><a href="#L-2016"><span class="linenos">2016</span></a> -</span><span id="L-2017"><a href="#L-2017"><span class="linenos">2017</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> -</span><span id="L-2018"><a href="#L-2018"><span class="linenos">2018</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> -</span><span id="L-2019"><a href="#L-2019"><span class="linenos">2019</span></a> -</span><span id="L-2020"><a href="#L-2020"><span class="linenos">2020</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> -</span><span id="L-2021"><a href="#L-2021"><span class="linenos">2021</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-2003"><a href="#L-2003"><span class="linenos">2003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> +</span><span id="L-2004"><a href="#L-2004"><span class="linenos">2004</span></a> +</span><span id="L-2005"><a href="#L-2005"><span class="linenos">2005</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> +</span><span id="L-2006"><a href="#L-2006"><span class="linenos">2006</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">]:</span> +</span><span id="L-2007"><a href="#L-2007"><span class="linenos">2007</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2008"><a href="#L-2008"><span class="linenos">2008</span></a> +</span><span id="L-2009"><a href="#L-2009"><span class="linenos">2009</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2010"><a href="#L-2010"><span class="linenos">2010</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> +</span><span id="L-2011"><a href="#L-2011"><span class="linenos">2011</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2012"><a href="#L-2012"><span class="linenos">2012</span></a> +</span><span id="L-2013"><a href="#L-2013"><span class="linenos">2013</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> +</span><span id="L-2014"><a href="#L-2014"><span class="linenos">2014</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2015"><a href="#L-2015"><span class="linenos">2015</span></a> +</span><span id="L-2016"><a href="#L-2016"><span class="linenos">2016</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-2017"><a href="#L-2017"><span class="linenos">2017</span></a> +</span><span id="L-2018"><a href="#L-2018"><span class="linenos">2018</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> +</span><span id="L-2019"><a href="#L-2019"><span class="linenos">2019</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-2020"><a href="#L-2020"><span class="linenos">2020</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2021"><a href="#L-2021"><span class="linenos">2021</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> </span><span id="L-2022"><a href="#L-2022"><span class="linenos">2022</span></a> -</span><span id="L-2023"><a href="#L-2023"><span class="linenos">2023</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> -</span><span id="L-2024"><a href="#L-2024"><span class="linenos">2024</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2023"><a href="#L-2023"><span class="linenos">2023</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> +</span><span id="L-2024"><a href="#L-2024"><span class="linenos">2024</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> </span><span id="L-2025"><a href="#L-2025"><span class="linenos">2025</span></a> -</span><span id="L-2026"><a href="#L-2026"><span class="linenos">2026</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2027"><a href="#L-2027"><span class="linenos">2027</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-2028"><a href="#L-2028"><span class="linenos">2028</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2029"><a href="#L-2029"><span class="linenos">2029</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> -</span><span id="L-2030"><a href="#L-2030"><span class="linenos">2030</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2026"><a href="#L-2026"><span class="linenos">2026</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> +</span><span id="L-2027"><a href="#L-2027"><span class="linenos">2027</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-2028"><a href="#L-2028"><span class="linenos">2028</span></a> +</span><span id="L-2029"><a href="#L-2029"><span class="linenos">2029</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> +</span><span id="L-2030"><a href="#L-2030"><span class="linenos">2030</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> </span><span id="L-2031"><a href="#L-2031"><span class="linenos">2031</span></a> -</span><span id="L-2032"><a href="#L-2032"><span class="linenos">2032</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> -</span><span id="L-2033"><a href="#L-2033"><span class="linenos">2033</span></a> -</span><span id="L-2034"><a href="#L-2034"><span class="linenos">2034</span></a> <span class="k">def</span> <span class="nf">_parse_cluster</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> -</span><span id="L-2035"><a href="#L-2035"><span class="linenos">2035</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2036"><a href="#L-2036"><span class="linenos">2036</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> -</span><span id="L-2037"><a href="#L-2037"><span class="linenos">2037</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">(</span> -</span><span id="L-2038"><a href="#L-2038"><span class="linenos">2038</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-2039"><a href="#L-2039"><span class="linenos">2039</span></a> <span class="k">if</span> <span class="n">wrapped</span> -</span><span id="L-2040"><a href="#L-2040"><span class="linenos">2040</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-2041"><a href="#L-2041"><span class="linenos">2041</span></a> <span class="p">),</span> -</span><span id="L-2042"><a href="#L-2042"><span class="linenos">2042</span></a> <span class="p">)</span> -</span><span id="L-2043"><a href="#L-2043"><span class="linenos">2043</span></a> -</span><span id="L-2044"><a href="#L-2044"><span class="linenos">2044</span></a> <span class="k">def</span> <span class="nf">_parse_clustered_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">:</span> -</span><span id="L-2045"><a href="#L-2045"><span class="linenos">2045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> -</span><span id="L-2046"><a href="#L-2046"><span class="linenos">2046</span></a> -</span><span id="L-2047"><a href="#L-2047"><span class="linenos">2047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-2048"><a href="#L-2048"><span class="linenos">2048</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-2049"><a href="#L-2049"><span class="linenos">2049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2050"><a href="#L-2050"><span class="linenos">2050</span></a> -</span><span id="L-2051"><a href="#L-2051"><span class="linenos">2051</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2052"><a href="#L-2052"><span class="linenos">2052</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-2053"><a href="#L-2053"><span class="linenos">2053</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-2054"><a href="#L-2054"><span class="linenos">2054</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2055"><a href="#L-2055"><span class="linenos">2055</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2056"><a href="#L-2056"><span class="linenos">2056</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2057"><a href="#L-2057"><span class="linenos">2057</span></a> -</span><span id="L-2058"><a href="#L-2058"><span class="linenos">2058</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="L-2059"><a href="#L-2059"><span class="linenos">2059</span></a> <span class="n">buckets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2060"><a href="#L-2060"><span class="linenos">2060</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKETS"</span><span class="p">)</span> -</span><span id="L-2061"><a href="#L-2061"><span class="linenos">2061</span></a> -</span><span id="L-2062"><a href="#L-2062"><span class="linenos">2062</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2063"><a href="#L-2063"><span class="linenos">2063</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">,</span> -</span><span id="L-2064"><a href="#L-2064"><span class="linenos">2064</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2065"><a href="#L-2065"><span class="linenos">2065</span></a> <span class="n">sorted_by</span><span class="o">=</span><span class="n">sorted_by</span><span class="p">,</span> -</span><span id="L-2066"><a href="#L-2066"><span class="linenos">2066</span></a> <span class="n">buckets</span><span class="o">=</span><span class="n">buckets</span><span class="p">,</span> -</span><span id="L-2067"><a href="#L-2067"><span class="linenos">2067</span></a> <span class="p">)</span> -</span><span id="L-2068"><a href="#L-2068"><span class="linenos">2068</span></a> -</span><span id="L-2069"><a href="#L-2069"><span class="linenos">2069</span></a> <span class="k">def</span> <span class="nf">_parse_copy_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">]:</span> -</span><span id="L-2070"><a href="#L-2070"><span class="linenos">2070</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"GRANTS"</span><span class="p">):</span> -</span><span id="L-2071"><a href="#L-2071"><span class="linenos">2071</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-2072"><a href="#L-2072"><span class="linenos">2072</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2073"><a href="#L-2073"><span class="linenos">2073</span></a> -</span><span id="L-2074"><a href="#L-2074"><span class="linenos">2074</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">)</span> -</span><span id="L-2075"><a href="#L-2075"><span class="linenos">2075</span></a> -</span><span id="L-2076"><a href="#L-2076"><span class="linenos">2076</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> -</span><span id="L-2077"><a href="#L-2077"><span class="linenos">2077</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-2078"><a href="#L-2078"><span class="linenos">2078</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2079"><a href="#L-2079"><span class="linenos">2079</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> -</span><span id="L-2080"><a href="#L-2080"><span class="linenos">2080</span></a> <span class="p">)</span> +</span><span id="L-2032"><a href="#L-2032"><span class="linenos">2032</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2033"><a href="#L-2033"><span class="linenos">2033</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-2034"><a href="#L-2034"><span class="linenos">2034</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2035"><a href="#L-2035"><span class="linenos">2035</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> +</span><span id="L-2036"><a href="#L-2036"><span class="linenos">2036</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2037"><a href="#L-2037"><span class="linenos">2037</span></a> +</span><span id="L-2038"><a href="#L-2038"><span class="linenos">2038</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> +</span><span id="L-2039"><a href="#L-2039"><span class="linenos">2039</span></a> +</span><span id="L-2040"><a href="#L-2040"><span class="linenos">2040</span></a> <span class="k">def</span> <span class="nf">_parse_cluster</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> +</span><span id="L-2041"><a href="#L-2041"><span class="linenos">2041</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2042"><a href="#L-2042"><span class="linenos">2042</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> +</span><span id="L-2043"><a href="#L-2043"><span class="linenos">2043</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">(</span> +</span><span id="L-2044"><a href="#L-2044"><span class="linenos">2044</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="L-2045"><a href="#L-2045"><span class="linenos">2045</span></a> <span class="k">if</span> <span class="n">wrapped</span> +</span><span id="L-2046"><a href="#L-2046"><span class="linenos">2046</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="L-2047"><a href="#L-2047"><span class="linenos">2047</span></a> <span class="p">),</span> +</span><span id="L-2048"><a href="#L-2048"><span class="linenos">2048</span></a> <span class="p">)</span> +</span><span id="L-2049"><a href="#L-2049"><span class="linenos">2049</span></a> +</span><span id="L-2050"><a href="#L-2050"><span class="linenos">2050</span></a> <span class="k">def</span> <span class="nf">_parse_clustered_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">:</span> +</span><span id="L-2051"><a href="#L-2051"><span class="linenos">2051</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> +</span><span id="L-2052"><a href="#L-2052"><span class="linenos">2052</span></a> +</span><span id="L-2053"><a href="#L-2053"><span class="linenos">2053</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-2054"><a href="#L-2054"><span class="linenos">2054</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-2055"><a href="#L-2055"><span class="linenos">2055</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2056"><a href="#L-2056"><span class="linenos">2056</span></a> +</span><span id="L-2057"><a href="#L-2057"><span class="linenos">2057</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2058"><a href="#L-2058"><span class="linenos">2058</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-2059"><a href="#L-2059"><span class="linenos">2059</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="L-2060"><a href="#L-2060"><span class="linenos">2060</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2061"><a href="#L-2061"><span class="linenos">2061</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2062"><a href="#L-2062"><span class="linenos">2062</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2063"><a href="#L-2063"><span class="linenos">2063</span></a> +</span><span id="L-2064"><a href="#L-2064"><span class="linenos">2064</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="L-2065"><a href="#L-2065"><span class="linenos">2065</span></a> <span class="n">buckets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2066"><a href="#L-2066"><span class="linenos">2066</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKETS"</span><span class="p">)</span> +</span><span id="L-2067"><a href="#L-2067"><span class="linenos">2067</span></a> +</span><span id="L-2068"><a href="#L-2068"><span class="linenos">2068</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2069"><a href="#L-2069"><span class="linenos">2069</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">,</span> +</span><span id="L-2070"><a href="#L-2070"><span class="linenos">2070</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2071"><a href="#L-2071"><span class="linenos">2071</span></a> <span class="n">sorted_by</span><span class="o">=</span><span class="n">sorted_by</span><span class="p">,</span> +</span><span id="L-2072"><a href="#L-2072"><span class="linenos">2072</span></a> <span class="n">buckets</span><span class="o">=</span><span class="n">buckets</span><span class="p">,</span> +</span><span id="L-2073"><a href="#L-2073"><span class="linenos">2073</span></a> <span class="p">)</span> +</span><span id="L-2074"><a href="#L-2074"><span class="linenos">2074</span></a> +</span><span id="L-2075"><a href="#L-2075"><span class="linenos">2075</span></a> <span class="k">def</span> <span class="nf">_parse_copy_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">]:</span> +</span><span id="L-2076"><a href="#L-2076"><span class="linenos">2076</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"GRANTS"</span><span class="p">):</span> +</span><span id="L-2077"><a href="#L-2077"><span class="linenos">2077</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-2078"><a href="#L-2078"><span class="linenos">2078</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2079"><a href="#L-2079"><span class="linenos">2079</span></a> +</span><span id="L-2080"><a href="#L-2080"><span class="linenos">2080</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">)</span> </span><span id="L-2081"><a href="#L-2081"><span class="linenos">2081</span></a> -</span><span id="L-2082"><a href="#L-2082"><span class="linenos">2082</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span> -</span><span id="L-2083"><a href="#L-2083"><span class="linenos">2083</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2084"><a href="#L-2084"><span class="linenos">2084</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> -</span><span id="L-2085"><a href="#L-2085"><span class="linenos">2085</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> -</span><span id="L-2086"><a href="#L-2086"><span class="linenos">2086</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2087"><a href="#L-2087"><span class="linenos">2087</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> -</span><span id="L-2088"><a href="#L-2088"><span class="linenos">2088</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> -</span><span id="L-2089"><a href="#L-2089"><span class="linenos">2089</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> -</span><span id="L-2090"><a href="#L-2090"><span class="linenos">2090</span></a> <span class="p">)</span> -</span><span id="L-2091"><a href="#L-2091"><span class="linenos">2091</span></a> -</span><span id="L-2092"><a href="#L-2092"><span class="linenos">2092</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> -</span><span id="L-2093"><a href="#L-2093"><span class="linenos">2093</span></a> -</span><span id="L-2094"><a href="#L-2094"><span class="linenos">2094</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span> -</span><span id="L-2095"><a href="#L-2095"><span class="linenos">2095</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-2096"><a href="#L-2096"><span class="linenos">2096</span></a> <span class="n">default</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">None</span><span class="p">,</span> -</span><span id="L-2097"><a href="#L-2097"><span class="linenos">2097</span></a> <span class="n">minimum</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">None</span><span class="p">,</span> -</span><span id="L-2098"><a href="#L-2098"><span class="linenos">2098</span></a> <span class="n">maximum</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">None</span><span class="p">,</span> -</span><span id="L-2099"><a href="#L-2099"><span class="linenos">2099</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> -</span><span id="L-2100"><a href="#L-2100"><span class="linenos">2100</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-2101"><a href="#L-2101"><span class="linenos">2101</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2102"><a href="#L-2102"><span class="linenos">2102</span></a> -</span><span id="L-2103"><a href="#L-2103"><span class="linenos">2103</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2104"><a href="#L-2104"><span class="linenos">2104</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> -</span><span id="L-2105"><a href="#L-2105"><span class="linenos">2105</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-2106"><a href="#L-2106"><span class="linenos">2106</span></a> -</span><span id="L-2107"><a href="#L-2107"><span class="linenos">2107</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2108"><a href="#L-2108"><span class="linenos">2108</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> -</span><span id="L-2109"><a href="#L-2109"><span class="linenos">2109</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> -</span><span id="L-2110"><a href="#L-2110"><span class="linenos">2110</span></a> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">,</span> -</span><span id="L-2111"><a href="#L-2111"><span class="linenos">2111</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="L-2112"><a href="#L-2112"><span class="linenos">2112</span></a> <span class="n">minimum</span><span class="o">=</span><span class="n">minimum</span><span class="p">,</span> -</span><span id="L-2113"><a href="#L-2113"><span class="linenos">2113</span></a> <span class="n">maximum</span><span class="o">=</span><span class="n">maximum</span><span class="p">,</span> -</span><span id="L-2114"><a href="#L-2114"><span class="linenos">2114</span></a> <span class="p">)</span> -</span><span id="L-2115"><a href="#L-2115"><span class="linenos">2115</span></a> -</span><span id="L-2116"><a href="#L-2116"><span class="linenos">2116</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> -</span><span id="L-2117"><a href="#L-2117"><span class="linenos">2117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-2118"><a href="#L-2118"><span class="linenos">2118</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="L-2119"><a href="#L-2119"><span class="linenos">2119</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> -</span><span id="L-2120"><a href="#L-2120"><span class="linenos">2120</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> -</span><span id="L-2121"><a href="#L-2121"><span class="linenos">2121</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="L-2122"><a href="#L-2122"><span class="linenos">2122</span></a> -</span><span id="L-2123"><a href="#L-2123"><span class="linenos">2123</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2124"><a href="#L-2124"><span class="linenos">2124</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> -</span><span id="L-2125"><a href="#L-2125"><span class="linenos">2125</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> -</span><span id="L-2126"><a href="#L-2126"><span class="linenos">2126</span></a> -</span><span id="L-2127"><a href="#L-2127"><span class="linenos">2127</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2128"><a href="#L-2128"><span class="linenos">2128</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> -</span><span id="L-2129"><a href="#L-2129"><span class="linenos">2129</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> -</span><span id="L-2130"><a href="#L-2130"><span class="linenos">2130</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> -</span><span id="L-2131"><a href="#L-2131"><span class="linenos">2131</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> -</span><span id="L-2132"><a href="#L-2132"><span class="linenos">2132</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="L-2133"><a href="#L-2133"><span class="linenos">2133</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> -</span><span id="L-2134"><a href="#L-2134"><span class="linenos">2134</span></a> <span class="p">)</span> -</span><span id="L-2135"><a href="#L-2135"><span class="linenos">2135</span></a> -</span><span id="L-2136"><a href="#L-2136"><span class="linenos">2136</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">]:</span> -</span><span id="L-2137"><a href="#L-2137"><span class="linenos">2137</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2138"><a href="#L-2138"><span class="linenos">2138</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="L-2139"><a href="#L-2139"><span class="linenos">2139</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> -</span><span id="L-2140"><a href="#L-2140"><span class="linenos">2140</span></a> -</span><span id="L-2141"><a href="#L-2141"><span class="linenos">2141</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">):</span> -</span><span id="L-2142"><a href="#L-2142"><span class="linenos">2142</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2143"><a href="#L-2143"><span class="linenos">2143</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2144"><a href="#L-2144"><span class="linenos">2144</span></a> -</span><span id="L-2145"><a href="#L-2145"><span class="linenos">2145</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-2146"><a href="#L-2146"><span class="linenos">2146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2147"><a href="#L-2147"><span class="linenos">2147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span> -</span><span id="L-2148"><a href="#L-2148"><span class="linenos">2148</span></a> <span class="p">)</span> -</span><span id="L-2149"><a href="#L-2149"><span class="linenos">2149</span></a> -</span><span id="L-2150"><a href="#L-2150"><span class="linenos">2150</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> -</span><span id="L-2151"><a href="#L-2151"><span class="linenos">2151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="L-2152"><a href="#L-2152"><span class="linenos">2152</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> -</span><span id="L-2153"><a href="#L-2153"><span class="linenos">2153</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> -</span><span id="L-2154"><a href="#L-2154"><span class="linenos">2154</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> -</span><span id="L-2155"><a href="#L-2155"><span class="linenos">2155</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> -</span><span id="L-2156"><a href="#L-2156"><span class="linenos">2156</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> -</span><span id="L-2157"><a href="#L-2157"><span class="linenos">2157</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> -</span><span id="L-2158"><a href="#L-2158"><span class="linenos">2158</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> -</span><span id="L-2159"><a href="#L-2159"><span class="linenos">2159</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2160"><a href="#L-2160"><span class="linenos">2160</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2161"><a href="#L-2161"><span class="linenos">2161</span></a> -</span><span id="L-2162"><a href="#L-2162"><span class="linenos">2162</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> -</span><span id="L-2163"><a href="#L-2163"><span class="linenos">2163</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> -</span><span id="L-2164"><a href="#L-2164"><span class="linenos">2164</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2165"><a href="#L-2165"><span class="linenos">2165</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2166"><a href="#L-2166"><span class="linenos">2166</span></a> -</span><span id="L-2167"><a href="#L-2167"><span class="linenos">2167</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-2168"><a href="#L-2168"><span class="linenos">2168</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> -</span><span id="L-2169"><a href="#L-2169"><span class="linenos">2169</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-2170"><a href="#L-2170"><span class="linenos">2170</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> -</span><span id="L-2171"><a href="#L-2171"><span class="linenos">2171</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2172"><a href="#L-2172"><span class="linenos">2172</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2173"><a href="#L-2173"><span class="linenos">2173</span></a> -</span><span id="L-2174"><a href="#L-2174"><span class="linenos">2174</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> -</span><span id="L-2175"><a href="#L-2175"><span class="linenos">2175</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> -</span><span id="L-2176"><a href="#L-2176"><span class="linenos">2176</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> -</span><span id="L-2177"><a href="#L-2177"><span class="linenos">2177</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> -</span><span id="L-2178"><a href="#L-2178"><span class="linenos">2178</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> -</span><span id="L-2179"><a href="#L-2179"><span class="linenos">2179</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> -</span><span id="L-2180"><a href="#L-2180"><span class="linenos">2180</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> -</span><span id="L-2181"><a href="#L-2181"><span class="linenos">2181</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> -</span><span id="L-2182"><a href="#L-2182"><span class="linenos">2182</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> -</span><span id="L-2183"><a href="#L-2183"><span class="linenos">2183</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> -</span><span id="L-2184"><a href="#L-2184"><span class="linenos">2184</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> -</span><span id="L-2185"><a href="#L-2185"><span class="linenos">2185</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> -</span><span id="L-2186"><a href="#L-2186"><span class="linenos">2186</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2187"><a href="#L-2187"><span class="linenos">2187</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2188"><a href="#L-2188"><span class="linenos">2188</span></a> -</span><span id="L-2189"><a href="#L-2189"><span class="linenos">2189</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> -</span><span id="L-2190"><a href="#L-2190"><span class="linenos">2190</span></a> -</span><span id="L-2191"><a href="#L-2191"><span class="linenos">2191</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2192"><a href="#L-2192"><span class="linenos">2192</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> -</span><span id="L-2193"><a href="#L-2193"><span class="linenos">2193</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2194"><a href="#L-2194"><span class="linenos">2194</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-2195"><a href="#L-2195"><span class="linenos">2195</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> -</span><span id="L-2196"><a href="#L-2196"><span class="linenos">2196</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> -</span><span id="L-2197"><a href="#L-2197"><span class="linenos">2197</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> -</span><span id="L-2198"><a href="#L-2198"><span class="linenos">2198</span></a> <span class="p">)</span> -</span><span id="L-2199"><a href="#L-2199"><span class="linenos">2199</span></a> -</span><span id="L-2200"><a href="#L-2200"><span class="linenos">2200</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2201"><a href="#L-2201"><span class="linenos">2201</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> -</span><span id="L-2202"><a href="#L-2202"><span class="linenos">2202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="L-2203"><a href="#L-2203"><span class="linenos">2203</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="L-2204"><a href="#L-2204"><span class="linenos">2204</span></a> -</span><span id="L-2205"><a href="#L-2205"><span class="linenos">2205</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">:</span> -</span><span id="L-2206"><a href="#L-2206"><span class="linenos">2206</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_expr</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2207"><a href="#L-2207"><span class="linenos">2207</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="L-2208"><a href="#L-2208"><span class="linenos">2208</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">)</span> -</span><span id="L-2209"><a href="#L-2209"><span class="linenos">2209</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="L-2210"><a href="#L-2210"><span class="linenos">2210</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">)</span> -</span><span id="L-2211"><a href="#L-2211"><span class="linenos">2211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-2212"><a href="#L-2212"><span class="linenos">2212</span></a> -</span><span id="L-2213"><a href="#L-2213"><span class="linenos">2213</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2214"><a href="#L-2214"><span class="linenos">2214</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2215"><a href="#L-2215"><span class="linenos">2215</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2216"><a href="#L-2216"><span class="linenos">2216</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2217"><a href="#L-2217"><span class="linenos">2217</span></a> -</span><span id="L-2218"><a href="#L-2218"><span class="linenos">2218</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-2219"><a href="#L-2219"><span class="linenos">2219</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-2220"><a href="#L-2220"><span class="linenos">2220</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-2221"><a href="#L-2221"><span class="linenos">2221</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> -</span><span id="L-2222"><a href="#L-2222"><span class="linenos">2222</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="L-2223"><a href="#L-2223"><span class="linenos">2223</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> -</span><span id="L-2224"><a href="#L-2224"><span class="linenos">2224</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">,</span> <span class="s2">"MODULUS"</span><span class="p">):</span> -</span><span id="L-2225"><a href="#L-2225"><span class="linenos">2225</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2226"><a href="#L-2226"><span class="linenos">2226</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">","</span><span class="p">,</span> <span class="s2">"REMAINDER"</span><span class="p">)</span> -</span><span id="L-2227"><a href="#L-2227"><span class="linenos">2227</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2228"><a href="#L-2228"><span class="linenos">2228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2229"><a href="#L-2229"><span class="linenos">2229</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2230"><a href="#L-2230"><span class="linenos">2230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse partition bound spec."</span><span class="p">)</span> -</span><span id="L-2231"><a href="#L-2231"><span class="linenos">2231</span></a> -</span><span id="L-2232"><a href="#L-2232"><span class="linenos">2232</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2233"><a href="#L-2233"><span class="linenos">2233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">,</span> -</span><span id="L-2234"><a href="#L-2234"><span class="linenos">2234</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2235"><a href="#L-2235"><span class="linenos">2235</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-2236"><a href="#L-2236"><span class="linenos">2236</span></a> <span class="n">from_expressions</span><span class="o">=</span><span class="n">from_expressions</span><span class="p">,</span> -</span><span id="L-2237"><a href="#L-2237"><span class="linenos">2237</span></a> <span class="n">to_expressions</span><span class="o">=</span><span class="n">to_expressions</span><span class="p">,</span> -</span><span id="L-2238"><a href="#L-2238"><span class="linenos">2238</span></a> <span class="p">)</span> -</span><span id="L-2239"><a href="#L-2239"><span class="linenos">2239</span></a> -</span><span id="L-2240"><a href="#L-2240"><span class="linenos">2240</span></a> <span class="c1"># https://www.postgresql.org/docs/current/sql-createtable.html</span> -</span><span id="L-2241"><a href="#L-2241"><span class="linenos">2241</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">]:</span> -</span><span id="L-2242"><a href="#L-2242"><span class="linenos">2242</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> -</span><span id="L-2243"><a href="#L-2243"><span class="linenos">2243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-2244"><a href="#L-2244"><span class="linenos">2244</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2082"><a href="#L-2082"><span class="linenos">2082</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> +</span><span id="L-2083"><a href="#L-2083"><span class="linenos">2083</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2084"><a href="#L-2084"><span class="linenos">2084</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2085"><a href="#L-2085"><span class="linenos">2085</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> +</span><span id="L-2086"><a href="#L-2086"><span class="linenos">2086</span></a> <span class="p">)</span> +</span><span id="L-2087"><a href="#L-2087"><span class="linenos">2087</span></a> +</span><span id="L-2088"><a href="#L-2088"><span class="linenos">2088</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span> +</span><span id="L-2089"><a href="#L-2089"><span class="linenos">2089</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2090"><a href="#L-2090"><span class="linenos">2090</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> +</span><span id="L-2091"><a href="#L-2091"><span class="linenos">2091</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> +</span><span id="L-2092"><a href="#L-2092"><span class="linenos">2092</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2093"><a href="#L-2093"><span class="linenos">2093</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> +</span><span id="L-2094"><a href="#L-2094"><span class="linenos">2094</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> +</span><span id="L-2095"><a href="#L-2095"><span class="linenos">2095</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> +</span><span id="L-2096"><a href="#L-2096"><span class="linenos">2096</span></a> <span class="p">)</span> +</span><span id="L-2097"><a href="#L-2097"><span class="linenos">2097</span></a> +</span><span id="L-2098"><a href="#L-2098"><span class="linenos">2098</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> +</span><span id="L-2099"><a href="#L-2099"><span class="linenos">2099</span></a> +</span><span id="L-2100"><a href="#L-2100"><span class="linenos">2100</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span> +</span><span id="L-2101"><a href="#L-2101"><span class="linenos">2101</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-2102"><a href="#L-2102"><span class="linenos">2102</span></a> <span class="n">default</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">None</span><span class="p">,</span> +</span><span id="L-2103"><a href="#L-2103"><span class="linenos">2103</span></a> <span class="n">minimum</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">None</span><span class="p">,</span> +</span><span id="L-2104"><a href="#L-2104"><span class="linenos">2104</span></a> <span class="n">maximum</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">None</span><span class="p">,</span> +</span><span id="L-2105"><a href="#L-2105"><span class="linenos">2105</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> +</span><span id="L-2106"><a href="#L-2106"><span class="linenos">2106</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2107"><a href="#L-2107"><span class="linenos">2107</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2108"><a href="#L-2108"><span class="linenos">2108</span></a> +</span><span id="L-2109"><a href="#L-2109"><span class="linenos">2109</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2110"><a href="#L-2110"><span class="linenos">2110</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> +</span><span id="L-2111"><a href="#L-2111"><span class="linenos">2111</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-2112"><a href="#L-2112"><span class="linenos">2112</span></a> +</span><span id="L-2113"><a href="#L-2113"><span class="linenos">2113</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2114"><a href="#L-2114"><span class="linenos">2114</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> +</span><span id="L-2115"><a href="#L-2115"><span class="linenos">2115</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> +</span><span id="L-2116"><a href="#L-2116"><span class="linenos">2116</span></a> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">,</span> +</span><span id="L-2117"><a href="#L-2117"><span class="linenos">2117</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="L-2118"><a href="#L-2118"><span class="linenos">2118</span></a> <span class="n">minimum</span><span class="o">=</span><span class="n">minimum</span><span class="p">,</span> +</span><span id="L-2119"><a href="#L-2119"><span class="linenos">2119</span></a> <span class="n">maximum</span><span class="o">=</span><span class="n">maximum</span><span class="p">,</span> +</span><span id="L-2120"><a href="#L-2120"><span class="linenos">2120</span></a> <span class="p">)</span> +</span><span id="L-2121"><a href="#L-2121"><span class="linenos">2121</span></a> +</span><span id="L-2122"><a href="#L-2122"><span class="linenos">2122</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> +</span><span id="L-2123"><a href="#L-2123"><span class="linenos">2123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2124"><a href="#L-2124"><span class="linenos">2124</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="L-2125"><a href="#L-2125"><span class="linenos">2125</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> +</span><span id="L-2126"><a href="#L-2126"><span class="linenos">2126</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> +</span><span id="L-2127"><a href="#L-2127"><span class="linenos">2127</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="L-2128"><a href="#L-2128"><span class="linenos">2128</span></a> +</span><span id="L-2129"><a href="#L-2129"><span class="linenos">2129</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2130"><a href="#L-2130"><span class="linenos">2130</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> +</span><span id="L-2131"><a href="#L-2131"><span class="linenos">2131</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="L-2132"><a href="#L-2132"><span class="linenos">2132</span></a> +</span><span id="L-2133"><a href="#L-2133"><span class="linenos">2133</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2134"><a href="#L-2134"><span class="linenos">2134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> +</span><span id="L-2135"><a href="#L-2135"><span class="linenos">2135</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> +</span><span id="L-2136"><a href="#L-2136"><span class="linenos">2136</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> +</span><span id="L-2137"><a href="#L-2137"><span class="linenos">2137</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> +</span><span id="L-2138"><a href="#L-2138"><span class="linenos">2138</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="L-2139"><a href="#L-2139"><span class="linenos">2139</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> +</span><span id="L-2140"><a href="#L-2140"><span class="linenos">2140</span></a> <span class="p">)</span> +</span><span id="L-2141"><a href="#L-2141"><span class="linenos">2141</span></a> +</span><span id="L-2142"><a href="#L-2142"><span class="linenos">2142</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">]:</span> +</span><span id="L-2143"><a href="#L-2143"><span class="linenos">2143</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2144"><a href="#L-2144"><span class="linenos">2144</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="L-2145"><a href="#L-2145"><span class="linenos">2145</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> +</span><span id="L-2146"><a href="#L-2146"><span class="linenos">2146</span></a> +</span><span id="L-2147"><a href="#L-2147"><span class="linenos">2147</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">):</span> +</span><span id="L-2148"><a href="#L-2148"><span class="linenos">2148</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2149"><a href="#L-2149"><span class="linenos">2149</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2150"><a href="#L-2150"><span class="linenos">2150</span></a> +</span><span id="L-2151"><a href="#L-2151"><span class="linenos">2151</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2152"><a href="#L-2152"><span class="linenos">2152</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2153"><a href="#L-2153"><span class="linenos">2153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span> +</span><span id="L-2154"><a href="#L-2154"><span class="linenos">2154</span></a> <span class="p">)</span> +</span><span id="L-2155"><a href="#L-2155"><span class="linenos">2155</span></a> +</span><span id="L-2156"><a href="#L-2156"><span class="linenos">2156</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> +</span><span id="L-2157"><a href="#L-2157"><span class="linenos">2157</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="L-2158"><a href="#L-2158"><span class="linenos">2158</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> +</span><span id="L-2159"><a href="#L-2159"><span class="linenos">2159</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> +</span><span id="L-2160"><a href="#L-2160"><span class="linenos">2160</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> +</span><span id="L-2161"><a href="#L-2161"><span class="linenos">2161</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> +</span><span id="L-2162"><a href="#L-2162"><span class="linenos">2162</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> +</span><span id="L-2163"><a href="#L-2163"><span class="linenos">2163</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> +</span><span id="L-2164"><a href="#L-2164"><span class="linenos">2164</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> +</span><span id="L-2165"><a href="#L-2165"><span class="linenos">2165</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2166"><a href="#L-2166"><span class="linenos">2166</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2167"><a href="#L-2167"><span class="linenos">2167</span></a> +</span><span id="L-2168"><a href="#L-2168"><span class="linenos">2168</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> +</span><span id="L-2169"><a href="#L-2169"><span class="linenos">2169</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="L-2170"><a href="#L-2170"><span class="linenos">2170</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2171"><a href="#L-2171"><span class="linenos">2171</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2172"><a href="#L-2172"><span class="linenos">2172</span></a> +</span><span id="L-2173"><a href="#L-2173"><span class="linenos">2173</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-2174"><a href="#L-2174"><span class="linenos">2174</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> +</span><span id="L-2175"><a href="#L-2175"><span class="linenos">2175</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-2176"><a href="#L-2176"><span class="linenos">2176</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> +</span><span id="L-2177"><a href="#L-2177"><span class="linenos">2177</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2178"><a href="#L-2178"><span class="linenos">2178</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2179"><a href="#L-2179"><span class="linenos">2179</span></a> +</span><span id="L-2180"><a href="#L-2180"><span class="linenos">2180</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> +</span><span id="L-2181"><a href="#L-2181"><span class="linenos">2181</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> +</span><span id="L-2182"><a href="#L-2182"><span class="linenos">2182</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> +</span><span id="L-2183"><a href="#L-2183"><span class="linenos">2183</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> +</span><span id="L-2184"><a href="#L-2184"><span class="linenos">2184</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> +</span><span id="L-2185"><a href="#L-2185"><span class="linenos">2185</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> +</span><span id="L-2186"><a href="#L-2186"><span class="linenos">2186</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> +</span><span id="L-2187"><a href="#L-2187"><span class="linenos">2187</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> +</span><span id="L-2188"><a href="#L-2188"><span class="linenos">2188</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> +</span><span id="L-2189"><a href="#L-2189"><span class="linenos">2189</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> +</span><span id="L-2190"><a href="#L-2190"><span class="linenos">2190</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> +</span><span id="L-2191"><a href="#L-2191"><span class="linenos">2191</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> +</span><span id="L-2192"><a href="#L-2192"><span class="linenos">2192</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2193"><a href="#L-2193"><span class="linenos">2193</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2194"><a href="#L-2194"><span class="linenos">2194</span></a> +</span><span id="L-2195"><a href="#L-2195"><span class="linenos">2195</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> +</span><span id="L-2196"><a href="#L-2196"><span class="linenos">2196</span></a> +</span><span id="L-2197"><a href="#L-2197"><span class="linenos">2197</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2198"><a href="#L-2198"><span class="linenos">2198</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> +</span><span id="L-2199"><a href="#L-2199"><span class="linenos">2199</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2200"><a href="#L-2200"><span class="linenos">2200</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-2201"><a href="#L-2201"><span class="linenos">2201</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> +</span><span id="L-2202"><a href="#L-2202"><span class="linenos">2202</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> +</span><span id="L-2203"><a href="#L-2203"><span class="linenos">2203</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> +</span><span id="L-2204"><a href="#L-2204"><span class="linenos">2204</span></a> <span class="p">)</span> +</span><span id="L-2205"><a href="#L-2205"><span class="linenos">2205</span></a> +</span><span id="L-2206"><a href="#L-2206"><span class="linenos">2206</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2207"><a href="#L-2207"><span class="linenos">2207</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> +</span><span id="L-2208"><a href="#L-2208"><span class="linenos">2208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="L-2209"><a href="#L-2209"><span class="linenos">2209</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="L-2210"><a href="#L-2210"><span class="linenos">2210</span></a> +</span><span id="L-2211"><a href="#L-2211"><span class="linenos">2211</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">:</span> +</span><span id="L-2212"><a href="#L-2212"><span class="linenos">2212</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_expr</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2213"><a href="#L-2213"><span class="linenos">2213</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="L-2214"><a href="#L-2214"><span class="linenos">2214</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">)</span> +</span><span id="L-2215"><a href="#L-2215"><span class="linenos">2215</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="L-2216"><a href="#L-2216"><span class="linenos">2216</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">)</span> +</span><span id="L-2217"><a href="#L-2217"><span class="linenos">2217</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-2218"><a href="#L-2218"><span class="linenos">2218</span></a> +</span><span id="L-2219"><a href="#L-2219"><span class="linenos">2219</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2220"><a href="#L-2220"><span class="linenos">2220</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2221"><a href="#L-2221"><span class="linenos">2221</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2222"><a href="#L-2222"><span class="linenos">2222</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2223"><a href="#L-2223"><span class="linenos">2223</span></a> +</span><span id="L-2224"><a href="#L-2224"><span class="linenos">2224</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-2225"><a href="#L-2225"><span class="linenos">2225</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-2226"><a href="#L-2226"><span class="linenos">2226</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-2227"><a href="#L-2227"><span class="linenos">2227</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> +</span><span id="L-2228"><a href="#L-2228"><span class="linenos">2228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="L-2229"><a href="#L-2229"><span class="linenos">2229</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> +</span><span id="L-2230"><a href="#L-2230"><span class="linenos">2230</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">,</span> <span class="s2">"MODULUS"</span><span class="p">):</span> +</span><span id="L-2231"><a href="#L-2231"><span class="linenos">2231</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2232"><a href="#L-2232"><span class="linenos">2232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">","</span><span class="p">,</span> <span class="s2">"REMAINDER"</span><span class="p">)</span> +</span><span id="L-2233"><a href="#L-2233"><span class="linenos">2233</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2234"><a href="#L-2234"><span class="linenos">2234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2235"><a href="#L-2235"><span class="linenos">2235</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2236"><a href="#L-2236"><span class="linenos">2236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse partition bound spec."</span><span class="p">)</span> +</span><span id="L-2237"><a href="#L-2237"><span class="linenos">2237</span></a> +</span><span id="L-2238"><a href="#L-2238"><span class="linenos">2238</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2239"><a href="#L-2239"><span class="linenos">2239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">,</span> +</span><span id="L-2240"><a href="#L-2240"><span class="linenos">2240</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2241"><a href="#L-2241"><span class="linenos">2241</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-2242"><a href="#L-2242"><span class="linenos">2242</span></a> <span class="n">from_expressions</span><span class="o">=</span><span class="n">from_expressions</span><span class="p">,</span> +</span><span id="L-2243"><a href="#L-2243"><span class="linenos">2243</span></a> <span class="n">to_expressions</span><span class="o">=</span><span class="n">to_expressions</span><span class="p">,</span> +</span><span id="L-2244"><a href="#L-2244"><span class="linenos">2244</span></a> <span class="p">)</span> </span><span id="L-2245"><a href="#L-2245"><span class="linenos">2245</span></a> -</span><span id="L-2246"><a href="#L-2246"><span class="linenos">2246</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2247"><a href="#L-2247"><span class="linenos">2247</span></a> -</span><span id="L-2248"><a href="#L-2248"><span class="linenos">2248</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-2249"><a href="#L-2249"><span class="linenos">2249</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="L-2250"><a href="#L-2250"><span class="linenos">2250</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"VALUES"</span><span class="p">):</span> -</span><span id="L-2251"><a href="#L-2251"><span class="linenos">2251</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_bound_spec</span><span class="p">()</span> -</span><span id="L-2252"><a href="#L-2252"><span class="linenos">2252</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2253"><a href="#L-2253"><span class="linenos">2253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting either DEFAULT or FOR VALUES clause."</span><span class="p">)</span> -</span><span id="L-2254"><a href="#L-2254"><span class="linenos">2254</span></a> -</span><span id="L-2255"><a href="#L-2255"><span class="linenos">2255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-2256"><a href="#L-2256"><span class="linenos">2256</span></a> -</span><span id="L-2257"><a href="#L-2257"><span class="linenos">2257</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> -</span><span id="L-2258"><a href="#L-2258"><span class="linenos">2258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-2259"><a href="#L-2259"><span class="linenos">2259</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2260"><a href="#L-2260"><span class="linenos">2260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> -</span><span id="L-2261"><a href="#L-2261"><span class="linenos">2261</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> -</span><span id="L-2262"><a href="#L-2262"><span class="linenos">2262</span></a> <span class="p">)</span> -</span><span id="L-2263"><a href="#L-2263"><span class="linenos">2263</span></a> -</span><span id="L-2264"><a href="#L-2264"><span class="linenos">2264</span></a> <span class="k">def</span> <span class="nf">_parse_withdata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">:</span> -</span><span id="L-2265"><a href="#L-2265"><span class="linenos">2265</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="L-2266"><a href="#L-2266"><span class="linenos">2266</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2267"><a href="#L-2267"><span class="linenos">2267</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="L-2268"><a href="#L-2268"><span class="linenos">2268</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2269"><a href="#L-2269"><span class="linenos">2269</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2270"><a href="#L-2270"><span class="linenos">2270</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2271"><a href="#L-2271"><span class="linenos">2271</span></a> -</span><span id="L-2272"><a href="#L-2272"><span class="linenos">2272</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">)</span> -</span><span id="L-2273"><a href="#L-2273"><span class="linenos">2273</span></a> -</span><span id="L-2274"><a href="#L-2274"><span class="linenos">2274</span></a> <span class="k">def</span> <span class="nf">_parse_contains_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> -</span><span id="L-2275"><a href="#L-2275"><span class="linenos">2275</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> -</span><span id="L-2276"><a href="#L-2276"><span class="linenos">2276</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"CONTAINS SQL"</span><span class="p">)</span> -</span><span id="L-2277"><a href="#L-2277"><span class="linenos">2277</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2278"><a href="#L-2278"><span class="linenos">2278</span></a> -</span><span id="L-2279"><a href="#L-2279"><span class="linenos">2279</span></a> <span class="k">def</span> <span class="nf">_parse_modifies_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> -</span><span id="L-2280"><a href="#L-2280"><span class="linenos">2280</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-2281"><a href="#L-2281"><span class="linenos">2281</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"MODIFIES SQL DATA"</span><span class="p">)</span> -</span><span id="L-2282"><a href="#L-2282"><span class="linenos">2282</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2283"><a href="#L-2283"><span class="linenos">2283</span></a> -</span><span id="L-2284"><a href="#L-2284"><span class="linenos">2284</span></a> <span class="k">def</span> <span class="nf">_parse_no_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2285"><a href="#L-2285"><span class="linenos">2285</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">):</span> -</span><span id="L-2286"><a href="#L-2286"><span class="linenos">2286</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">()</span> -</span><span id="L-2287"><a href="#L-2287"><span class="linenos">2287</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> -</span><span id="L-2288"><a href="#L-2288"><span class="linenos">2288</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"NO SQL"</span><span class="p">)</span> -</span><span id="L-2289"><a href="#L-2289"><span class="linenos">2289</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2290"><a href="#L-2290"><span class="linenos">2290</span></a> -</span><span id="L-2291"><a href="#L-2291"><span class="linenos">2291</span></a> <span class="k">def</span> <span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2292"><a href="#L-2292"><span class="linenos">2292</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"PRESERVE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="L-2293"><a href="#L-2293"><span class="linenos">2293</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">()</span> -</span><span id="L-2294"><a href="#L-2294"><span class="linenos">2294</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"DELETE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="L-2295"><a href="#L-2295"><span class="linenos">2295</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">(</span><span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2296"><a href="#L-2296"><span class="linenos">2296</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()))</span> -</span><span id="L-2297"><a href="#L-2297"><span class="linenos">2297</span></a> -</span><span id="L-2298"><a href="#L-2298"><span class="linenos">2298</span></a> <span class="k">def</span> <span class="nf">_parse_reads_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> -</span><span id="L-2299"><a href="#L-2299"><span class="linenos">2299</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-2300"><a href="#L-2300"><span class="linenos">2300</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"READS SQL DATA"</span><span class="p">)</span> -</span><span id="L-2301"><a href="#L-2301"><span class="linenos">2301</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2302"><a href="#L-2302"><span class="linenos">2302</span></a> -</span><span id="L-2303"><a href="#L-2303"><span class="linenos">2303</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> -</span><span id="L-2304"><a href="#L-2304"><span class="linenos">2304</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> -</span><span id="L-2305"><a href="#L-2305"><span class="linenos">2305</span></a> -</span><span id="L-2306"><a href="#L-2306"><span class="linenos">2306</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]:</span> -</span><span id="L-2307"><a href="#L-2307"><span class="linenos">2307</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2246"><a href="#L-2246"><span class="linenos">2246</span></a> <span class="c1"># https://www.postgresql.org/docs/current/sql-createtable.html</span> +</span><span id="L-2247"><a href="#L-2247"><span class="linenos">2247</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">]:</span> +</span><span id="L-2248"><a href="#L-2248"><span class="linenos">2248</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> +</span><span id="L-2249"><a href="#L-2249"><span class="linenos">2249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-2250"><a href="#L-2250"><span class="linenos">2250</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2251"><a href="#L-2251"><span class="linenos">2251</span></a> +</span><span id="L-2252"><a href="#L-2252"><span class="linenos">2252</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2253"><a href="#L-2253"><span class="linenos">2253</span></a> +</span><span id="L-2254"><a href="#L-2254"><span class="linenos">2254</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-2255"><a href="#L-2255"><span class="linenos">2255</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="L-2256"><a href="#L-2256"><span class="linenos">2256</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"VALUES"</span><span class="p">):</span> +</span><span id="L-2257"><a href="#L-2257"><span class="linenos">2257</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_bound_spec</span><span class="p">()</span> +</span><span id="L-2258"><a href="#L-2258"><span class="linenos">2258</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2259"><a href="#L-2259"><span class="linenos">2259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting either DEFAULT or FOR VALUES clause."</span><span class="p">)</span> +</span><span id="L-2260"><a href="#L-2260"><span class="linenos">2260</span></a> +</span><span id="L-2261"><a href="#L-2261"><span class="linenos">2261</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-2262"><a href="#L-2262"><span class="linenos">2262</span></a> +</span><span id="L-2263"><a href="#L-2263"><span class="linenos">2263</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> +</span><span id="L-2264"><a href="#L-2264"><span class="linenos">2264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2265"><a href="#L-2265"><span class="linenos">2265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2266"><a href="#L-2266"><span class="linenos">2266</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> +</span><span id="L-2267"><a href="#L-2267"><span class="linenos">2267</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> +</span><span id="L-2268"><a href="#L-2268"><span class="linenos">2268</span></a> <span class="p">)</span> +</span><span id="L-2269"><a href="#L-2269"><span class="linenos">2269</span></a> +</span><span id="L-2270"><a href="#L-2270"><span class="linenos">2270</span></a> <span class="k">def</span> <span class="nf">_parse_withdata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">:</span> +</span><span id="L-2271"><a href="#L-2271"><span class="linenos">2271</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="L-2272"><a href="#L-2272"><span class="linenos">2272</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2273"><a href="#L-2273"><span class="linenos">2273</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="L-2274"><a href="#L-2274"><span class="linenos">2274</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2275"><a href="#L-2275"><span class="linenos">2275</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2276"><a href="#L-2276"><span class="linenos">2276</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2277"><a href="#L-2277"><span class="linenos">2277</span></a> +</span><span id="L-2278"><a href="#L-2278"><span class="linenos">2278</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">)</span> +</span><span id="L-2279"><a href="#L-2279"><span class="linenos">2279</span></a> +</span><span id="L-2280"><a href="#L-2280"><span class="linenos">2280</span></a> <span class="k">def</span> <span class="nf">_parse_contains_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> +</span><span id="L-2281"><a href="#L-2281"><span class="linenos">2281</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> +</span><span id="L-2282"><a href="#L-2282"><span class="linenos">2282</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"CONTAINS SQL"</span><span class="p">)</span> +</span><span id="L-2283"><a href="#L-2283"><span class="linenos">2283</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2284"><a href="#L-2284"><span class="linenos">2284</span></a> +</span><span id="L-2285"><a href="#L-2285"><span class="linenos">2285</span></a> <span class="k">def</span> <span class="nf">_parse_modifies_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> +</span><span id="L-2286"><a href="#L-2286"><span class="linenos">2286</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-2287"><a href="#L-2287"><span class="linenos">2287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"MODIFIES SQL DATA"</span><span class="p">)</span> +</span><span id="L-2288"><a href="#L-2288"><span class="linenos">2288</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2289"><a href="#L-2289"><span class="linenos">2289</span></a> +</span><span id="L-2290"><a href="#L-2290"><span class="linenos">2290</span></a> <span class="k">def</span> <span class="nf">_parse_no_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2291"><a href="#L-2291"><span class="linenos">2291</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">):</span> +</span><span id="L-2292"><a href="#L-2292"><span class="linenos">2292</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">()</span> +</span><span id="L-2293"><a href="#L-2293"><span class="linenos">2293</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> +</span><span id="L-2294"><a href="#L-2294"><span class="linenos">2294</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"NO SQL"</span><span class="p">)</span> +</span><span id="L-2295"><a href="#L-2295"><span class="linenos">2295</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2296"><a href="#L-2296"><span class="linenos">2296</span></a> +</span><span id="L-2297"><a href="#L-2297"><span class="linenos">2297</span></a> <span class="k">def</span> <span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2298"><a href="#L-2298"><span class="linenos">2298</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"PRESERVE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="L-2299"><a href="#L-2299"><span class="linenos">2299</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">()</span> +</span><span id="L-2300"><a href="#L-2300"><span class="linenos">2300</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"DELETE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="L-2301"><a href="#L-2301"><span class="linenos">2301</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">(</span><span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2302"><a href="#L-2302"><span class="linenos">2302</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()))</span> +</span><span id="L-2303"><a href="#L-2303"><span class="linenos">2303</span></a> +</span><span id="L-2304"><a href="#L-2304"><span class="linenos">2304</span></a> <span class="k">def</span> <span class="nf">_parse_reads_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> +</span><span id="L-2305"><a href="#L-2305"><span class="linenos">2305</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-2306"><a href="#L-2306"><span class="linenos">2306</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"READS SQL DATA"</span><span class="p">)</span> +</span><span id="L-2307"><a href="#L-2307"><span class="linenos">2307</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-2308"><a href="#L-2308"><span class="linenos">2308</span></a> -</span><span id="L-2309"><a href="#L-2309"><span class="linenos">2309</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2310"><a href="#L-2310"><span class="linenos">2310</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> -</span><span id="L-2311"><a href="#L-2311"><span class="linenos">2311</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-2312"><a href="#L-2312"><span class="linenos">2312</span></a> -</span><span id="L-2313"><a href="#L-2313"><span class="linenos">2313</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2314"><a href="#L-2314"><span class="linenos">2314</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> -</span><span id="L-2315"><a href="#L-2315"><span class="linenos">2315</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2316"><a href="#L-2316"><span class="linenos">2316</span></a> -</span><span id="L-2317"><a href="#L-2317"><span class="linenos">2317</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-2318"><a href="#L-2318"><span class="linenos">2318</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">id_var</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="L-2319"><a href="#L-2319"><span class="linenos">2319</span></a> <span class="p">)</span> -</span><span id="L-2320"><a href="#L-2320"><span class="linenos">2320</span></a> -</span><span id="L-2321"><a href="#L-2321"><span class="linenos">2321</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-2309"><a href="#L-2309"><span class="linenos">2309</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> +</span><span id="L-2310"><a href="#L-2310"><span class="linenos">2310</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> +</span><span id="L-2311"><a href="#L-2311"><span class="linenos">2311</span></a> +</span><span id="L-2312"><a href="#L-2312"><span class="linenos">2312</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]:</span> +</span><span id="L-2313"><a href="#L-2313"><span class="linenos">2313</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2314"><a href="#L-2314"><span class="linenos">2314</span></a> +</span><span id="L-2315"><a href="#L-2315"><span class="linenos">2315</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2316"><a href="#L-2316"><span class="linenos">2316</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> +</span><span id="L-2317"><a href="#L-2317"><span class="linenos">2317</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-2318"><a href="#L-2318"><span class="linenos">2318</span></a> +</span><span id="L-2319"><a href="#L-2319"><span class="linenos">2319</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2320"><a href="#L-2320"><span class="linenos">2320</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> +</span><span id="L-2321"><a href="#L-2321"><span class="linenos">2321</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-2322"><a href="#L-2322"><span class="linenos">2322</span></a> -</span><span id="L-2323"><a href="#L-2323"><span class="linenos">2323</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> -</span><span id="L-2324"><a href="#L-2324"><span class="linenos">2324</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2325"><a href="#L-2325"><span class="linenos">2325</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="L-2326"><a href="#L-2326"><span class="linenos">2326</span></a> <span class="p">)</span> -</span><span id="L-2327"><a href="#L-2327"><span class="linenos">2327</span></a> -</span><span id="L-2328"><a href="#L-2328"><span class="linenos">2328</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> -</span><span id="L-2329"><a href="#L-2329"><span class="linenos">2329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2323"><a href="#L-2323"><span class="linenos">2323</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-2324"><a href="#L-2324"><span class="linenos">2324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">id_var</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="L-2325"><a href="#L-2325"><span class="linenos">2325</span></a> <span class="p">)</span> +</span><span id="L-2326"><a href="#L-2326"><span class="linenos">2326</span></a> +</span><span id="L-2327"><a href="#L-2327"><span class="linenos">2327</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-2328"><a href="#L-2328"><span class="linenos">2328</span></a> +</span><span id="L-2329"><a href="#L-2329"><span class="linenos">2329</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> </span><span id="L-2330"><a href="#L-2330"><span class="linenos">2330</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2331"><a href="#L-2331"><span class="linenos">2331</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> +</span><span id="L-2331"><a href="#L-2331"><span class="linenos">2331</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> </span><span id="L-2332"><a href="#L-2332"><span class="linenos">2332</span></a> <span class="p">)</span> </span><span id="L-2333"><a href="#L-2333"><span class="linenos">2333</span></a> -</span><span id="L-2334"><a href="#L-2334"><span class="linenos">2334</span></a> <span class="k">def</span> <span class="nf">_parse_remote_with_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">:</span> -</span><span id="L-2335"><a href="#L-2335"><span class="linenos">2335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"CONNECTION"</span><span class="p">)</span> +</span><span id="L-2334"><a href="#L-2334"><span class="linenos">2334</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> +</span><span id="L-2335"><a href="#L-2335"><span class="linenos">2335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> </span><span id="L-2336"><a href="#L-2336"><span class="linenos">2336</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2337"><a href="#L-2337"><span class="linenos">2337</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="L-2337"><a href="#L-2337"><span class="linenos">2337</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> </span><span id="L-2338"><a href="#L-2338"><span class="linenos">2338</span></a> <span class="p">)</span> </span><span id="L-2339"><a href="#L-2339"><span class="linenos">2339</span></a> -</span><span id="L-2340"><a href="#L-2340"><span class="linenos">2340</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> -</span><span id="L-2341"><a href="#L-2341"><span class="linenos">2341</span></a> <span class="n">value</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-2342"><a href="#L-2342"><span class="linenos">2342</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2343"><a href="#L-2343"><span class="linenos">2343</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-2344"><a href="#L-2344"><span class="linenos">2344</span></a> -</span><span id="L-2345"><a href="#L-2345"><span class="linenos">2345</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> -</span><span id="L-2346"><a href="#L-2346"><span class="linenos">2346</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="L-2347"><a href="#L-2347"><span class="linenos">2347</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2348"><a href="#L-2348"><span class="linenos">2348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> -</span><span id="L-2349"><a href="#L-2349"><span class="linenos">2349</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> -</span><span id="L-2350"><a href="#L-2350"><span class="linenos">2350</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">),</span> -</span><span id="L-2351"><a href="#L-2351"><span class="linenos">2351</span></a> <span class="p">)</span> -</span><span id="L-2352"><a href="#L-2352"><span class="linenos">2352</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="L-2353"><a href="#L-2353"><span class="linenos">2353</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="L-2354"><a href="#L-2354"><span class="linenos">2354</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2355"><a href="#L-2355"><span class="linenos">2355</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">))</span> -</span><span id="L-2356"><a href="#L-2356"><span class="linenos">2356</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"INPUT"</span><span class="p">):</span> -</span><span id="L-2357"><a href="#L-2357"><span class="linenos">2357</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2358"><a href="#L-2358"><span class="linenos">2358</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2359"><a href="#L-2359"><span class="linenos">2359</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2360"><a href="#L-2360"><span class="linenos">2360</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-2361"><a href="#L-2361"><span class="linenos">2361</span></a> -</span><span id="L-2362"><a href="#L-2362"><span class="linenos">2362</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="n">null</span><span class="p">)</span> -</span><span id="L-2363"><a href="#L-2363"><span class="linenos">2363</span></a> -</span><span id="L-2364"><a href="#L-2364"><span class="linenos">2364</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">:</span> -</span><span id="L-2365"><a href="#L-2365"><span class="linenos">2365</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-2366"><a href="#L-2366"><span class="linenos">2366</span></a> <span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXTENDED"</span><span class="p">,</span> <span class="s2">"FORMATTED"</span><span class="p">,</span> <span class="s2">"HISTORY"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-2367"><a href="#L-2367"><span class="linenos">2367</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-2368"><a href="#L-2368"><span class="linenos">2368</span></a> <span class="n">style</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2369"><a href="#L-2369"><span class="linenos">2369</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="L-2370"><a href="#L-2370"><span class="linenos">2370</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2371"><a href="#L-2371"><span class="linenos">2371</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="L-2372"><a href="#L-2372"><span class="linenos">2372</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-2373"><a href="#L-2373"><span class="linenos">2373</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2374"><a href="#L-2374"><span class="linenos">2374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="n">style</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span> -</span><span id="L-2375"><a href="#L-2375"><span class="linenos">2375</span></a> <span class="p">)</span> -</span><span id="L-2376"><a href="#L-2376"><span class="linenos">2376</span></a> -</span><span id="L-2377"><a href="#L-2377"><span class="linenos">2377</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> -</span><span id="L-2378"><a href="#L-2378"><span class="linenos">2378</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> -</span><span id="L-2379"><a href="#L-2379"><span class="linenos">2379</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> -</span><span id="L-2380"><a href="#L-2380"><span class="linenos">2380</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="L-2381"><a href="#L-2381"><span class="linenos">2381</span></a> <span class="n">ignore</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">)</span> -</span><span id="L-2382"><a href="#L-2382"><span class="linenos">2382</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="L-2383"><a href="#L-2383"><span class="linenos">2383</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2384"><a href="#L-2384"><span class="linenos">2384</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2385"><a href="#L-2385"><span class="linenos">2385</span></a> -</span><span id="L-2386"><a href="#L-2386"><span class="linenos">2386</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> -</span><span id="L-2387"><a href="#L-2387"><span class="linenos">2387</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2388"><a href="#L-2388"><span class="linenos">2388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> -</span><span id="L-2389"><a href="#L-2389"><span class="linenos">2389</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> -</span><span id="L-2390"><a href="#L-2390"><span class="linenos">2390</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="L-2391"><a href="#L-2391"><span class="linenos">2391</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-2392"><a href="#L-2392"><span class="linenos">2392</span></a> <span class="p">)</span> -</span><span id="L-2393"><a href="#L-2393"><span class="linenos">2393</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2394"><a href="#L-2394"><span class="linenos">2394</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> -</span><span id="L-2395"><a href="#L-2395"><span class="linenos">2395</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-2396"><a href="#L-2396"><span class="linenos">2396</span></a> -</span><span id="L-2397"><a href="#L-2397"><span class="linenos">2397</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="L-2398"><a href="#L-2398"><span class="linenos">2398</span></a> <span class="n">comments</span> <span class="o">+=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> -</span><span id="L-2399"><a href="#L-2399"><span class="linenos">2399</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-2400"><a href="#L-2400"><span class="linenos">2400</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">)</span> -</span><span id="L-2401"><a href="#L-2401"><span class="linenos">2401</span></a> -</span><span id="L-2402"><a href="#L-2402"><span class="linenos">2402</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-2403"><a href="#L-2403"><span class="linenos">2403</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_partition</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2404"><a href="#L-2404"><span class="linenos">2404</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_function</span> -</span><span id="L-2405"><a href="#L-2405"><span class="linenos">2405</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="L-2406"><a href="#L-2406"><span class="linenos">2406</span></a> <span class="p">)</span> +</span><span id="L-2340"><a href="#L-2340"><span class="linenos">2340</span></a> <span class="k">def</span> <span class="nf">_parse_remote_with_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">:</span> +</span><span id="L-2341"><a href="#L-2341"><span class="linenos">2341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"CONNECTION"</span><span class="p">)</span> +</span><span id="L-2342"><a href="#L-2342"><span class="linenos">2342</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2343"><a href="#L-2343"><span class="linenos">2343</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="L-2344"><a href="#L-2344"><span class="linenos">2344</span></a> <span class="p">)</span> +</span><span id="L-2345"><a href="#L-2345"><span class="linenos">2345</span></a> +</span><span id="L-2346"><a href="#L-2346"><span class="linenos">2346</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> +</span><span id="L-2347"><a href="#L-2347"><span class="linenos">2347</span></a> <span class="n">value</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-2348"><a href="#L-2348"><span class="linenos">2348</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2349"><a href="#L-2349"><span class="linenos">2349</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-2350"><a href="#L-2350"><span class="linenos">2350</span></a> +</span><span id="L-2351"><a href="#L-2351"><span class="linenos">2351</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> +</span><span id="L-2352"><a href="#L-2352"><span class="linenos">2352</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="L-2353"><a href="#L-2353"><span class="linenos">2353</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2354"><a href="#L-2354"><span class="linenos">2354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> +</span><span id="L-2355"><a href="#L-2355"><span class="linenos">2355</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> +</span><span id="L-2356"><a href="#L-2356"><span class="linenos">2356</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">),</span> +</span><span id="L-2357"><a href="#L-2357"><span class="linenos">2357</span></a> <span class="p">)</span> +</span><span id="L-2358"><a href="#L-2358"><span class="linenos">2358</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="L-2359"><a href="#L-2359"><span class="linenos">2359</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="L-2360"><a href="#L-2360"><span class="linenos">2360</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2361"><a href="#L-2361"><span class="linenos">2361</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">))</span> +</span><span id="L-2362"><a href="#L-2362"><span class="linenos">2362</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"INPUT"</span><span class="p">):</span> +</span><span id="L-2363"><a href="#L-2363"><span class="linenos">2363</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2364"><a href="#L-2364"><span class="linenos">2364</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2365"><a href="#L-2365"><span class="linenos">2365</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2366"><a href="#L-2366"><span class="linenos">2366</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-2367"><a href="#L-2367"><span class="linenos">2367</span></a> +</span><span id="L-2368"><a href="#L-2368"><span class="linenos">2368</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="n">null</span><span class="p">)</span> +</span><span id="L-2369"><a href="#L-2369"><span class="linenos">2369</span></a> +</span><span id="L-2370"><a href="#L-2370"><span class="linenos">2370</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">:</span> +</span><span id="L-2371"><a href="#L-2371"><span class="linenos">2371</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-2372"><a href="#L-2372"><span class="linenos">2372</span></a> <span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXTENDED"</span><span class="p">,</span> <span class="s2">"FORMATTED"</span><span class="p">,</span> <span class="s2">"HISTORY"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-2373"><a href="#L-2373"><span class="linenos">2373</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-2374"><a href="#L-2374"><span class="linenos">2374</span></a> <span class="n">style</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2375"><a href="#L-2375"><span class="linenos">2375</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-2376"><a href="#L-2376"><span class="linenos">2376</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2377"><a href="#L-2377"><span class="linenos">2377</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="L-2378"><a href="#L-2378"><span class="linenos">2378</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-2379"><a href="#L-2379"><span class="linenos">2379</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2380"><a href="#L-2380"><span class="linenos">2380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="n">style</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span> +</span><span id="L-2381"><a href="#L-2381"><span class="linenos">2381</span></a> <span class="p">)</span> +</span><span id="L-2382"><a href="#L-2382"><span class="linenos">2382</span></a> +</span><span id="L-2383"><a href="#L-2383"><span class="linenos">2383</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> +</span><span id="L-2384"><a href="#L-2384"><span class="linenos">2384</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> +</span><span id="L-2385"><a href="#L-2385"><span class="linenos">2385</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> +</span><span id="L-2386"><a href="#L-2386"><span class="linenos">2386</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="L-2387"><a href="#L-2387"><span class="linenos">2387</span></a> <span class="n">ignore</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">)</span> +</span><span id="L-2388"><a href="#L-2388"><span class="linenos">2388</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="L-2389"><a href="#L-2389"><span class="linenos">2389</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2390"><a href="#L-2390"><span class="linenos">2390</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2391"><a href="#L-2391"><span class="linenos">2391</span></a> +</span><span id="L-2392"><a href="#L-2392"><span class="linenos">2392</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> +</span><span id="L-2393"><a href="#L-2393"><span class="linenos">2393</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2394"><a href="#L-2394"><span class="linenos">2394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> +</span><span id="L-2395"><a href="#L-2395"><span class="linenos">2395</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> +</span><span id="L-2396"><a href="#L-2396"><span class="linenos">2396</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="L-2397"><a href="#L-2397"><span class="linenos">2397</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-2398"><a href="#L-2398"><span class="linenos">2398</span></a> <span class="p">)</span> +</span><span id="L-2399"><a href="#L-2399"><span class="linenos">2399</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2400"><a href="#L-2400"><span class="linenos">2400</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> +</span><span id="L-2401"><a href="#L-2401"><span class="linenos">2401</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-2402"><a href="#L-2402"><span class="linenos">2402</span></a> +</span><span id="L-2403"><a href="#L-2403"><span class="linenos">2403</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="L-2404"><a href="#L-2404"><span class="linenos">2404</span></a> <span class="n">comments</span> <span class="o">+=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> +</span><span id="L-2405"><a href="#L-2405"><span class="linenos">2405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-2406"><a href="#L-2406"><span class="linenos">2406</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">)</span> </span><span id="L-2407"><a href="#L-2407"><span class="linenos">2407</span></a> -</span><span id="L-2408"><a href="#L-2408"><span class="linenos">2408</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> -</span><span id="L-2409"><a href="#L-2409"><span class="linenos">2409</span></a> -</span><span id="L-2410"><a href="#L-2410"><span class="linenos">2410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2411"><a href="#L-2411"><span class="linenos">2411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="L-2412"><a href="#L-2412"><span class="linenos">2412</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-2413"><a href="#L-2413"><span class="linenos">2413</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> -</span><span id="L-2414"><a href="#L-2414"><span class="linenos">2414</span></a> <span class="n">is_function</span><span class="o">=</span><span class="n">is_function</span><span class="p">,</span> -</span><span id="L-2415"><a href="#L-2415"><span class="linenos">2415</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2416"><a href="#L-2416"><span class="linenos">2416</span></a> <span class="n">stored</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORED"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> -</span><span id="L-2417"><a href="#L-2417"><span class="linenos">2417</span></a> <span class="n">by_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">),</span> -</span><span id="L-2418"><a href="#L-2418"><span class="linenos">2418</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="L-2419"><a href="#L-2419"><span class="linenos">2419</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-2420"><a href="#L-2420"><span class="linenos">2420</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> -</span><span id="L-2421"><a href="#L-2421"><span class="linenos">2421</span></a> <span class="n">conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> -</span><span id="L-2422"><a href="#L-2422"><span class="linenos">2422</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="L-2423"><a href="#L-2423"><span class="linenos">2423</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="L-2424"><a href="#L-2424"><span class="linenos">2424</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> -</span><span id="L-2425"><a href="#L-2425"><span class="linenos">2425</span></a> <span class="n">ignore</span><span class="o">=</span><span class="n">ignore</span><span class="p">,</span> -</span><span id="L-2426"><a href="#L-2426"><span class="linenos">2426</span></a> <span class="p">)</span> -</span><span id="L-2427"><a href="#L-2427"><span class="linenos">2427</span></a> -</span><span id="L-2428"><a href="#L-2428"><span class="linenos">2428</span></a> <span class="k">def</span> <span class="nf">_parse_kill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">:</span> -</span><span id="L-2429"><a href="#L-2429"><span class="linenos">2429</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CONNECTION"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">))</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-2430"><a href="#L-2430"><span class="linenos">2430</span></a> -</span><span id="L-2431"><a href="#L-2431"><span class="linenos">2431</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2432"><a href="#L-2432"><span class="linenos">2432</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">,</span> -</span><span id="L-2433"><a href="#L-2433"><span class="linenos">2433</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">(),</span> -</span><span id="L-2434"><a href="#L-2434"><span class="linenos">2434</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-2435"><a href="#L-2435"><span class="linenos">2435</span></a> <span class="p">)</span> +</span><span id="L-2408"><a href="#L-2408"><span class="linenos">2408</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-2409"><a href="#L-2409"><span class="linenos">2409</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_partition</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2410"><a href="#L-2410"><span class="linenos">2410</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_function</span> +</span><span id="L-2411"><a href="#L-2411"><span class="linenos">2411</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="L-2412"><a href="#L-2412"><span class="linenos">2412</span></a> <span class="p">)</span> +</span><span id="L-2413"><a href="#L-2413"><span class="linenos">2413</span></a> +</span><span id="L-2414"><a href="#L-2414"><span class="linenos">2414</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> +</span><span id="L-2415"><a href="#L-2415"><span class="linenos">2415</span></a> +</span><span id="L-2416"><a href="#L-2416"><span class="linenos">2416</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2417"><a href="#L-2417"><span class="linenos">2417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="L-2418"><a href="#L-2418"><span class="linenos">2418</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-2419"><a href="#L-2419"><span class="linenos">2419</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> +</span><span id="L-2420"><a href="#L-2420"><span class="linenos">2420</span></a> <span class="n">is_function</span><span class="o">=</span><span class="n">is_function</span><span class="p">,</span> +</span><span id="L-2421"><a href="#L-2421"><span class="linenos">2421</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2422"><a href="#L-2422"><span class="linenos">2422</span></a> <span class="n">stored</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORED"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> +</span><span id="L-2423"><a href="#L-2423"><span class="linenos">2423</span></a> <span class="n">by_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">),</span> +</span><span id="L-2424"><a href="#L-2424"><span class="linenos">2424</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="L-2425"><a href="#L-2425"><span class="linenos">2425</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-2426"><a href="#L-2426"><span class="linenos">2426</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> +</span><span id="L-2427"><a href="#L-2427"><span class="linenos">2427</span></a> <span class="n">conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> +</span><span id="L-2428"><a href="#L-2428"><span class="linenos">2428</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="L-2429"><a href="#L-2429"><span class="linenos">2429</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="L-2430"><a href="#L-2430"><span class="linenos">2430</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> +</span><span id="L-2431"><a href="#L-2431"><span class="linenos">2431</span></a> <span class="n">ignore</span><span class="o">=</span><span class="n">ignore</span><span class="p">,</span> +</span><span id="L-2432"><a href="#L-2432"><span class="linenos">2432</span></a> <span class="p">)</span> +</span><span id="L-2433"><a href="#L-2433"><span class="linenos">2433</span></a> +</span><span id="L-2434"><a href="#L-2434"><span class="linenos">2434</span></a> <span class="k">def</span> <span class="nf">_parse_kill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">:</span> +</span><span id="L-2435"><a href="#L-2435"><span class="linenos">2435</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CONNECTION"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">))</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="L-2436"><a href="#L-2436"><span class="linenos">2436</span></a> -</span><span id="L-2437"><a href="#L-2437"><span class="linenos">2437</span></a> <span class="k">def</span> <span class="nf">_parse_on_conflict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">]:</span> -</span><span id="L-2438"><a href="#L-2438"><span class="linenos">2438</span></a> <span class="n">conflict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONFLICT"</span><span class="p">)</span> -</span><span id="L-2439"><a href="#L-2439"><span class="linenos">2439</span></a> <span class="n">duplicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"DUPLICATE"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">)</span> -</span><span id="L-2440"><a href="#L-2440"><span class="linenos">2440</span></a> -</span><span id="L-2441"><a href="#L-2441"><span class="linenos">2441</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">conflict</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">duplicate</span><span class="p">:</span> -</span><span id="L-2442"><a href="#L-2442"><span class="linenos">2442</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2443"><a href="#L-2443"><span class="linenos">2443</span></a> -</span><span id="L-2444"><a href="#L-2444"><span class="linenos">2444</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2445"><a href="#L-2445"><span class="linenos">2445</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2437"><a href="#L-2437"><span class="linenos">2437</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2438"><a href="#L-2438"><span class="linenos">2438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">,</span> +</span><span id="L-2439"><a href="#L-2439"><span class="linenos">2439</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">(),</span> +</span><span id="L-2440"><a href="#L-2440"><span class="linenos">2440</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-2441"><a href="#L-2441"><span class="linenos">2441</span></a> <span class="p">)</span> +</span><span id="L-2442"><a href="#L-2442"><span class="linenos">2442</span></a> +</span><span id="L-2443"><a href="#L-2443"><span class="linenos">2443</span></a> <span class="k">def</span> <span class="nf">_parse_on_conflict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">]:</span> +</span><span id="L-2444"><a href="#L-2444"><span class="linenos">2444</span></a> <span class="n">conflict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONFLICT"</span><span class="p">)</span> +</span><span id="L-2445"><a href="#L-2445"><span class="linenos">2445</span></a> <span class="n">duplicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"DUPLICATE"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">)</span> </span><span id="L-2446"><a href="#L-2446"><span class="linenos">2446</span></a> -</span><span id="L-2447"><a href="#L-2447"><span class="linenos">2447</span></a> <span class="k">if</span> <span class="n">conflict</span><span class="p">:</span> -</span><span id="L-2448"><a href="#L-2448"><span class="linenos">2448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONSTRAINT"</span><span class="p">):</span> -</span><span id="L-2449"><a href="#L-2449"><span class="linenos">2449</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2450"><a href="#L-2450"><span class="linenos">2450</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2451"><a href="#L-2451"><span class="linenos">2451</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> -</span><span id="L-2452"><a href="#L-2452"><span class="linenos">2452</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2453"><a href="#L-2453"><span class="linenos">2453</span></a> -</span><span id="L-2454"><a href="#L-2454"><span class="linenos">2454</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONFLICT_ACTIONS</span><span class="p">)</span> -</span><span id="L-2455"><a href="#L-2455"><span class="linenos">2455</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> -</span><span id="L-2456"><a href="#L-2456"><span class="linenos">2456</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> -</span><span id="L-2457"><a href="#L-2457"><span class="linenos">2457</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="L-2458"><a href="#L-2458"><span class="linenos">2458</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2459"><a href="#L-2459"><span class="linenos">2459</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2460"><a href="#L-2460"><span class="linenos">2460</span></a> -</span><span id="L-2461"><a href="#L-2461"><span class="linenos">2461</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2462"><a href="#L-2462"><span class="linenos">2462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">,</span> -</span><span id="L-2463"><a href="#L-2463"><span class="linenos">2463</span></a> <span class="n">duplicate</span><span class="o">=</span><span class="n">duplicate</span><span class="p">,</span> -</span><span id="L-2464"><a href="#L-2464"><span class="linenos">2464</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2465"><a href="#L-2465"><span class="linenos">2465</span></a> <span class="n">action</span><span class="o">=</span><span class="n">action</span><span class="p">,</span> -</span><span id="L-2466"><a href="#L-2466"><span class="linenos">2466</span></a> <span class="n">conflict_keys</span><span class="o">=</span><span class="n">conflict_keys</span><span class="p">,</span> -</span><span id="L-2467"><a href="#L-2467"><span class="linenos">2467</span></a> <span class="n">constraint</span><span class="o">=</span><span class="n">constraint</span><span class="p">,</span> -</span><span id="L-2468"><a href="#L-2468"><span class="linenos">2468</span></a> <span class="p">)</span> -</span><span id="L-2469"><a href="#L-2469"><span class="linenos">2469</span></a> -</span><span id="L-2470"><a href="#L-2470"><span class="linenos">2470</span></a> <span class="k">def</span> <span class="nf">_parse_returning</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">]:</span> -</span><span id="L-2471"><a href="#L-2471"><span class="linenos">2471</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">):</span> -</span><span id="L-2472"><a href="#L-2472"><span class="linenos">2472</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2473"><a href="#L-2473"><span class="linenos">2473</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2474"><a href="#L-2474"><span class="linenos">2474</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">,</span> -</span><span id="L-2475"><a href="#L-2475"><span class="linenos">2475</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">),</span> -</span><span id="L-2476"><a href="#L-2476"><span class="linenos">2476</span></a> <span class="n">into</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(),</span> -</span><span id="L-2477"><a href="#L-2477"><span class="linenos">2477</span></a> <span class="p">)</span> -</span><span id="L-2478"><a href="#L-2478"><span class="linenos">2478</span></a> -</span><span id="L-2479"><a href="#L-2479"><span class="linenos">2479</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> -</span><span id="L-2480"><a href="#L-2480"><span class="linenos">2480</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="L-2481"><a href="#L-2481"><span class="linenos">2481</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2482"><a href="#L-2482"><span class="linenos">2482</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> -</span><span id="L-2483"><a href="#L-2483"><span class="linenos">2483</span></a> -</span><span id="L-2484"><a href="#L-2484"><span class="linenos">2484</span></a> <span class="k">def</span> <span class="nf">_parse_serde_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">]:</span> -</span><span id="L-2485"><a href="#L-2485"><span class="linenos">2485</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2486"><a href="#L-2486"><span class="linenos">2486</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> -</span><span id="L-2487"><a href="#L-2487"><span class="linenos">2487</span></a> -</span><span id="L-2488"><a href="#L-2488"><span class="linenos">2488</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">):</span> -</span><span id="L-2489"><a href="#L-2489"><span class="linenos">2489</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2490"><a href="#L-2490"><span class="linenos">2490</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2491"><a href="#L-2491"><span class="linenos">2491</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2492"><a href="#L-2492"><span class="linenos">2492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">,</span> -</span><span id="L-2493"><a href="#L-2493"><span class="linenos">2493</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="L-2494"><a href="#L-2494"><span class="linenos">2494</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> -</span><span id="L-2495"><a href="#L-2495"><span class="linenos">2495</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> -</span><span id="L-2496"><a href="#L-2496"><span class="linenos">2496</span></a> <span class="p">},</span> -</span><span id="L-2497"><a href="#L-2497"><span class="linenos">2497</span></a> <span class="p">)</span> -</span><span id="L-2498"><a href="#L-2498"><span class="linenos">2498</span></a> -</span><span id="L-2499"><a href="#L-2499"><span class="linenos">2499</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span> -</span><span id="L-2500"><a href="#L-2500"><span class="linenos">2500</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2501"><a href="#L-2501"><span class="linenos">2501</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> -</span><span id="L-2502"><a href="#L-2502"><span class="linenos">2502</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="L-2503"><a href="#L-2503"><span class="linenos">2503</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2447"><a href="#L-2447"><span class="linenos">2447</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">conflict</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">duplicate</span><span class="p">:</span> +</span><span id="L-2448"><a href="#L-2448"><span class="linenos">2448</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2449"><a href="#L-2449"><span class="linenos">2449</span></a> +</span><span id="L-2450"><a href="#L-2450"><span class="linenos">2450</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2451"><a href="#L-2451"><span class="linenos">2451</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2452"><a href="#L-2452"><span class="linenos">2452</span></a> +</span><span id="L-2453"><a href="#L-2453"><span class="linenos">2453</span></a> <span class="k">if</span> <span class="n">conflict</span><span class="p">:</span> +</span><span id="L-2454"><a href="#L-2454"><span class="linenos">2454</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONSTRAINT"</span><span class="p">):</span> +</span><span id="L-2455"><a href="#L-2455"><span class="linenos">2455</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2456"><a href="#L-2456"><span class="linenos">2456</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2457"><a href="#L-2457"><span class="linenos">2457</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> +</span><span id="L-2458"><a href="#L-2458"><span class="linenos">2458</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2459"><a href="#L-2459"><span class="linenos">2459</span></a> +</span><span id="L-2460"><a href="#L-2460"><span class="linenos">2460</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONFLICT_ACTIONS</span><span class="p">)</span> +</span><span id="L-2461"><a href="#L-2461"><span class="linenos">2461</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> +</span><span id="L-2462"><a href="#L-2462"><span class="linenos">2462</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> +</span><span id="L-2463"><a href="#L-2463"><span class="linenos">2463</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="L-2464"><a href="#L-2464"><span class="linenos">2464</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2465"><a href="#L-2465"><span class="linenos">2465</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2466"><a href="#L-2466"><span class="linenos">2466</span></a> +</span><span id="L-2467"><a href="#L-2467"><span class="linenos">2467</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2468"><a href="#L-2468"><span class="linenos">2468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">,</span> +</span><span id="L-2469"><a href="#L-2469"><span class="linenos">2469</span></a> <span class="n">duplicate</span><span class="o">=</span><span class="n">duplicate</span><span class="p">,</span> +</span><span id="L-2470"><a href="#L-2470"><span class="linenos">2470</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2471"><a href="#L-2471"><span class="linenos">2471</span></a> <span class="n">action</span><span class="o">=</span><span class="n">action</span><span class="p">,</span> +</span><span id="L-2472"><a href="#L-2472"><span class="linenos">2472</span></a> <span class="n">conflict_keys</span><span class="o">=</span><span class="n">conflict_keys</span><span class="p">,</span> +</span><span id="L-2473"><a href="#L-2473"><span class="linenos">2473</span></a> <span class="n">constraint</span><span class="o">=</span><span class="n">constraint</span><span class="p">,</span> +</span><span id="L-2474"><a href="#L-2474"><span class="linenos">2474</span></a> <span class="p">)</span> +</span><span id="L-2475"><a href="#L-2475"><span class="linenos">2475</span></a> +</span><span id="L-2476"><a href="#L-2476"><span class="linenos">2476</span></a> <span class="k">def</span> <span class="nf">_parse_returning</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">]:</span> +</span><span id="L-2477"><a href="#L-2477"><span class="linenos">2477</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">):</span> +</span><span id="L-2478"><a href="#L-2478"><span class="linenos">2478</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2479"><a href="#L-2479"><span class="linenos">2479</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2480"><a href="#L-2480"><span class="linenos">2480</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">,</span> +</span><span id="L-2481"><a href="#L-2481"><span class="linenos">2481</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">),</span> +</span><span id="L-2482"><a href="#L-2482"><span class="linenos">2482</span></a> <span class="n">into</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(),</span> +</span><span id="L-2483"><a href="#L-2483"><span class="linenos">2483</span></a> <span class="p">)</span> +</span><span id="L-2484"><a href="#L-2484"><span class="linenos">2484</span></a> +</span><span id="L-2485"><a href="#L-2485"><span class="linenos">2485</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> +</span><span id="L-2486"><a href="#L-2486"><span class="linenos">2486</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="L-2487"><a href="#L-2487"><span class="linenos">2487</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2488"><a href="#L-2488"><span class="linenos">2488</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> +</span><span id="L-2489"><a href="#L-2489"><span class="linenos">2489</span></a> +</span><span id="L-2490"><a href="#L-2490"><span class="linenos">2490</span></a> <span class="k">def</span> <span class="nf">_parse_serde_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">]:</span> +</span><span id="L-2491"><a href="#L-2491"><span class="linenos">2491</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2492"><a href="#L-2492"><span class="linenos">2492</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> +</span><span id="L-2493"><a href="#L-2493"><span class="linenos">2493</span></a> +</span><span id="L-2494"><a href="#L-2494"><span class="linenos">2494</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">):</span> +</span><span id="L-2495"><a href="#L-2495"><span class="linenos">2495</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2496"><a href="#L-2496"><span class="linenos">2496</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2497"><a href="#L-2497"><span class="linenos">2497</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2498"><a href="#L-2498"><span class="linenos">2498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">,</span> +</span><span id="L-2499"><a href="#L-2499"><span class="linenos">2499</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="L-2500"><a href="#L-2500"><span class="linenos">2500</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> +</span><span id="L-2501"><a href="#L-2501"><span class="linenos">2501</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> +</span><span id="L-2502"><a href="#L-2502"><span class="linenos">2502</span></a> <span class="p">},</span> +</span><span id="L-2503"><a href="#L-2503"><span class="linenos">2503</span></a> <span class="p">)</span> </span><span id="L-2504"><a href="#L-2504"><span class="linenos">2504</span></a> -</span><span id="L-2505"><a href="#L-2505"><span class="linenos">2505</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> -</span><span id="L-2506"><a href="#L-2506"><span class="linenos">2506</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2507"><a href="#L-2507"><span class="linenos">2507</span></a> -</span><span id="L-2508"><a href="#L-2508"><span class="linenos">2508</span></a> <span class="n">serde_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">()</span> -</span><span id="L-2509"><a href="#L-2509"><span class="linenos">2509</span></a> -</span><span id="L-2510"><a href="#L-2510"><span class="linenos">2510</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2511"><a href="#L-2511"><span class="linenos">2511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">serde_properties</span><span class="o">=</span><span class="n">serde_properties</span> -</span><span id="L-2512"><a href="#L-2512"><span class="linenos">2512</span></a> <span class="p">)</span> +</span><span id="L-2505"><a href="#L-2505"><span class="linenos">2505</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span> +</span><span id="L-2506"><a href="#L-2506"><span class="linenos">2506</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2507"><a href="#L-2507"><span class="linenos">2507</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> +</span><span id="L-2508"><a href="#L-2508"><span class="linenos">2508</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="L-2509"><a href="#L-2509"><span class="linenos">2509</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2510"><a href="#L-2510"><span class="linenos">2510</span></a> +</span><span id="L-2511"><a href="#L-2511"><span class="linenos">2511</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> +</span><span id="L-2512"><a href="#L-2512"><span class="linenos">2512</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> </span><span id="L-2513"><a href="#L-2513"><span class="linenos">2513</span></a> -</span><span id="L-2514"><a href="#L-2514"><span class="linenos">2514</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> +</span><span id="L-2514"><a href="#L-2514"><span class="linenos">2514</span></a> <span class="n">serde_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">()</span> </span><span id="L-2515"><a href="#L-2515"><span class="linenos">2515</span></a> -</span><span id="L-2516"><a href="#L-2516"><span class="linenos">2516</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-2517"><a href="#L-2517"><span class="linenos">2517</span></a> -</span><span id="L-2518"><a href="#L-2518"><span class="linenos">2518</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2519"><a href="#L-2519"><span class="linenos">2519</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2520"><a href="#L-2520"><span class="linenos">2520</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2521"><a href="#L-2521"><span class="linenos">2521</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2522"><a href="#L-2522"><span class="linenos">2522</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2523"><a href="#L-2523"><span class="linenos">2523</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2524"><a href="#L-2524"><span class="linenos">2524</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2525"><a href="#L-2525"><span class="linenos">2525</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2526"><a href="#L-2526"><span class="linenos">2526</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2527"><a href="#L-2527"><span class="linenos">2527</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2528"><a href="#L-2528"><span class="linenos">2528</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> -</span><span id="L-2529"><a href="#L-2529"><span class="linenos">2529</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2530"><a href="#L-2530"><span class="linenos">2530</span></a> -</span><span id="L-2531"><a href="#L-2531"><span class="linenos">2531</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-2532"><a href="#L-2532"><span class="linenos">2532</span></a> -</span><span id="L-2533"><a href="#L-2533"><span class="linenos">2533</span></a> <span class="k">def</span> <span class="nf">_parse_load</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-2534"><a href="#L-2534"><span class="linenos">2534</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-2535"><a href="#L-2535"><span class="linenos">2535</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="L-2536"><a href="#L-2536"><span class="linenos">2536</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> -</span><span id="L-2537"><a href="#L-2537"><span class="linenos">2537</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2538"><a href="#L-2538"><span class="linenos">2538</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="L-2539"><a href="#L-2539"><span class="linenos">2539</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-2540"><a href="#L-2540"><span class="linenos">2540</span></a> -</span><span id="L-2541"><a href="#L-2541"><span class="linenos">2541</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2542"><a href="#L-2542"><span class="linenos">2542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> -</span><span id="L-2543"><a href="#L-2543"><span class="linenos">2543</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-2544"><a href="#L-2544"><span class="linenos">2544</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="L-2545"><a href="#L-2545"><span class="linenos">2545</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="L-2546"><a href="#L-2546"><span class="linenos">2546</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> -</span><span id="L-2547"><a href="#L-2547"><span class="linenos">2547</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> -</span><span id="L-2548"><a href="#L-2548"><span class="linenos">2548</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="L-2549"><a href="#L-2549"><span class="linenos">2549</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="L-2550"><a href="#L-2550"><span class="linenos">2550</span></a> <span class="p">)</span> -</span><span id="L-2551"><a href="#L-2551"><span class="linenos">2551</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-2552"><a href="#L-2552"><span class="linenos">2552</span></a> -</span><span id="L-2553"><a href="#L-2553"><span class="linenos">2553</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">:</span> -</span><span id="L-2554"><a href="#L-2554"><span class="linenos">2554</span></a> <span class="c1"># This handles MySQL's "Multiple-Table Syntax"</span> -</span><span id="L-2555"><a href="#L-2555"><span class="linenos">2555</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/delete.html</span> -</span><span id="L-2556"><a href="#L-2556"><span class="linenos">2556</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2557"><a href="#L-2557"><span class="linenos">2557</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-2558"><a href="#L-2558"><span class="linenos">2558</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-2559"><a href="#L-2559"><span class="linenos">2559</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="L-2560"><a href="#L-2560"><span class="linenos">2560</span></a> -</span><span id="L-2561"><a href="#L-2561"><span class="linenos">2561</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> -</span><span id="L-2562"><a href="#L-2562"><span class="linenos">2562</span></a> -</span><span id="L-2563"><a href="#L-2563"><span class="linenos">2563</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2564"><a href="#L-2564"><span class="linenos">2564</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> -</span><span id="L-2565"><a href="#L-2565"><span class="linenos">2565</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-2566"><a href="#L-2566"><span class="linenos">2566</span></a> <span class="n">tables</span><span class="o">=</span><span class="n">tables</span><span class="p">,</span> -</span><span id="L-2567"><a href="#L-2567"><span class="linenos">2567</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-2568"><a href="#L-2568"><span class="linenos">2568</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-2569"><a href="#L-2569"><span class="linenos">2569</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="L-2570"><a href="#L-2570"><span class="linenos">2570</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="L-2571"><a href="#L-2571"><span class="linenos">2571</span></a> <span class="n">limit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="L-2572"><a href="#L-2572"><span class="linenos">2572</span></a> <span class="p">)</span> -</span><span id="L-2573"><a href="#L-2573"><span class="linenos">2573</span></a> -</span><span id="L-2574"><a href="#L-2574"><span class="linenos">2574</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">:</span> -</span><span id="L-2575"><a href="#L-2575"><span class="linenos">2575</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-2576"><a href="#L-2576"><span class="linenos">2576</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-2577"><a href="#L-2577"><span class="linenos">2577</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="L-2578"><a href="#L-2578"><span class="linenos">2578</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> -</span><span id="L-2579"><a href="#L-2579"><span class="linenos">2579</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2580"><a href="#L-2580"><span class="linenos">2580</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="L-2581"><a href="#L-2581"><span class="linenos">2581</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-2582"><a href="#L-2582"><span class="linenos">2582</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="L-2583"><a href="#L-2583"><span class="linenos">2583</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="n">this</span><span class="p">,</span> -</span><span id="L-2584"><a href="#L-2584"><span class="linenos">2584</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2585"><a href="#L-2585"><span class="linenos">2585</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-2586"><a href="#L-2586"><span class="linenos">2586</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="L-2587"><a href="#L-2587"><span class="linenos">2587</span></a> <span class="s2">"returning"</span><span class="p">:</span> <span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="L-2588"><a href="#L-2588"><span class="linenos">2588</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="L-2589"><a href="#L-2589"><span class="linenos">2589</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="L-2590"><a href="#L-2590"><span class="linenos">2590</span></a> <span class="p">},</span> -</span><span id="L-2591"><a href="#L-2591"><span class="linenos">2591</span></a> <span class="p">)</span> -</span><span id="L-2592"><a href="#L-2592"><span class="linenos">2592</span></a> -</span><span id="L-2593"><a href="#L-2593"><span class="linenos">2593</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">:</span> -</span><span id="L-2594"><a href="#L-2594"><span class="linenos">2594</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="L-2595"><a href="#L-2595"><span class="linenos">2595</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> -</span><span id="L-2596"><a href="#L-2596"><span class="linenos">2596</span></a> -</span><span id="L-2597"><a href="#L-2597"><span class="linenos">2597</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2598"><a href="#L-2598"><span class="linenos">2598</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2599"><a href="#L-2599"><span class="linenos">2599</span></a> <span class="p">)</span> -</span><span id="L-2600"><a href="#L-2600"><span class="linenos">2600</span></a> -</span><span id="L-2601"><a href="#L-2601"><span class="linenos">2601</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> -</span><span id="L-2602"><a href="#L-2602"><span class="linenos">2602</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAZY"</span><span class="p">)</span> -</span><span id="L-2603"><a href="#L-2603"><span class="linenos">2603</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-2604"><a href="#L-2604"><span class="linenos">2604</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2605"><a href="#L-2605"><span class="linenos">2605</span></a> -</span><span id="L-2606"><a href="#L-2606"><span class="linenos">2606</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2607"><a href="#L-2607"><span class="linenos">2607</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OPTIONS"</span><span class="p">):</span> -</span><span id="L-2608"><a href="#L-2608"><span class="linenos">2608</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-2609"><a href="#L-2609"><span class="linenos">2609</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2610"><a href="#L-2610"><span class="linenos">2610</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-2611"><a href="#L-2611"><span class="linenos">2611</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2612"><a href="#L-2612"><span class="linenos">2612</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> -</span><span id="L-2613"><a href="#L-2613"><span class="linenos">2613</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2614"><a href="#L-2614"><span class="linenos">2614</span></a> -</span><span id="L-2615"><a href="#L-2615"><span class="linenos">2615</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-2616"><a href="#L-2616"><span class="linenos">2616</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2617"><a href="#L-2617"><span class="linenos">2617</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> -</span><span id="L-2618"><a href="#L-2618"><span class="linenos">2618</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="L-2619"><a href="#L-2619"><span class="linenos">2619</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> -</span><span id="L-2620"><a href="#L-2620"><span class="linenos">2620</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> -</span><span id="L-2621"><a href="#L-2621"><span class="linenos">2621</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-2622"><a href="#L-2622"><span class="linenos">2622</span></a> <span class="p">)</span> -</span><span id="L-2623"><a href="#L-2623"><span class="linenos">2623</span></a> -</span><span id="L-2624"><a href="#L-2624"><span class="linenos">2624</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span> -</span><span id="L-2625"><a href="#L-2625"><span class="linenos">2625</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> -</span><span id="L-2626"><a href="#L-2626"><span class="linenos">2626</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2627"><a href="#L-2627"><span class="linenos">2627</span></a> -</span><span id="L-2628"><a href="#L-2628"><span class="linenos">2628</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2629"><a href="#L-2629"><span class="linenos">2629</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="L-2630"><a href="#L-2630"><span class="linenos">2630</span></a> <span class="p">)</span> -</span><span id="L-2631"><a href="#L-2631"><span class="linenos">2631</span></a> -</span><span id="L-2632"><a href="#L-2632"><span class="linenos">2632</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span> -</span><span id="L-2633"><a href="#L-2633"><span class="linenos">2633</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2634"><a href="#L-2634"><span class="linenos">2634</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="L-2635"><a href="#L-2635"><span class="linenos">2635</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2636"><a href="#L-2636"><span class="linenos">2636</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2516"><a href="#L-2516"><span class="linenos">2516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2517"><a href="#L-2517"><span class="linenos">2517</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">serde_properties</span><span class="o">=</span><span class="n">serde_properties</span> +</span><span id="L-2518"><a href="#L-2518"><span class="linenos">2518</span></a> <span class="p">)</span> +</span><span id="L-2519"><a href="#L-2519"><span class="linenos">2519</span></a> +</span><span id="L-2520"><a href="#L-2520"><span class="linenos">2520</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> +</span><span id="L-2521"><a href="#L-2521"><span class="linenos">2521</span></a> +</span><span id="L-2522"><a href="#L-2522"><span class="linenos">2522</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-2523"><a href="#L-2523"><span class="linenos">2523</span></a> +</span><span id="L-2524"><a href="#L-2524"><span class="linenos">2524</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2525"><a href="#L-2525"><span class="linenos">2525</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2526"><a href="#L-2526"><span class="linenos">2526</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2527"><a href="#L-2527"><span class="linenos">2527</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2528"><a href="#L-2528"><span class="linenos">2528</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2529"><a href="#L-2529"><span class="linenos">2529</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2530"><a href="#L-2530"><span class="linenos">2530</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2531"><a href="#L-2531"><span class="linenos">2531</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2532"><a href="#L-2532"><span class="linenos">2532</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2533"><a href="#L-2533"><span class="linenos">2533</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2534"><a href="#L-2534"><span class="linenos">2534</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> +</span><span id="L-2535"><a href="#L-2535"><span class="linenos">2535</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2536"><a href="#L-2536"><span class="linenos">2536</span></a> +</span><span id="L-2537"><a href="#L-2537"><span class="linenos">2537</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-2538"><a href="#L-2538"><span class="linenos">2538</span></a> +</span><span id="L-2539"><a href="#L-2539"><span class="linenos">2539</span></a> <span class="k">def</span> <span class="nf">_parse_load</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-2540"><a href="#L-2540"><span class="linenos">2540</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-2541"><a href="#L-2541"><span class="linenos">2541</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="L-2542"><a href="#L-2542"><span class="linenos">2542</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> +</span><span id="L-2543"><a href="#L-2543"><span class="linenos">2543</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2544"><a href="#L-2544"><span class="linenos">2544</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="L-2545"><a href="#L-2545"><span class="linenos">2545</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-2546"><a href="#L-2546"><span class="linenos">2546</span></a> +</span><span id="L-2547"><a href="#L-2547"><span class="linenos">2547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2548"><a href="#L-2548"><span class="linenos">2548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> +</span><span id="L-2549"><a href="#L-2549"><span class="linenos">2549</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-2550"><a href="#L-2550"><span class="linenos">2550</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="L-2551"><a href="#L-2551"><span class="linenos">2551</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="L-2552"><a href="#L-2552"><span class="linenos">2552</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> +</span><span id="L-2553"><a href="#L-2553"><span class="linenos">2553</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> +</span><span id="L-2554"><a href="#L-2554"><span class="linenos">2554</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="L-2555"><a href="#L-2555"><span class="linenos">2555</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="L-2556"><a href="#L-2556"><span class="linenos">2556</span></a> <span class="p">)</span> +</span><span id="L-2557"><a href="#L-2557"><span class="linenos">2557</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-2558"><a href="#L-2558"><span class="linenos">2558</span></a> +</span><span id="L-2559"><a href="#L-2559"><span class="linenos">2559</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">:</span> +</span><span id="L-2560"><a href="#L-2560"><span class="linenos">2560</span></a> <span class="c1"># This handles MySQL's "Multiple-Table Syntax"</span> +</span><span id="L-2561"><a href="#L-2561"><span class="linenos">2561</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/delete.html</span> +</span><span id="L-2562"><a href="#L-2562"><span class="linenos">2562</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2563"><a href="#L-2563"><span class="linenos">2563</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-2564"><a href="#L-2564"><span class="linenos">2564</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-2565"><a href="#L-2565"><span class="linenos">2565</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="L-2566"><a href="#L-2566"><span class="linenos">2566</span></a> +</span><span id="L-2567"><a href="#L-2567"><span class="linenos">2567</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> +</span><span id="L-2568"><a href="#L-2568"><span class="linenos">2568</span></a> +</span><span id="L-2569"><a href="#L-2569"><span class="linenos">2569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2570"><a href="#L-2570"><span class="linenos">2570</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> +</span><span id="L-2571"><a href="#L-2571"><span class="linenos">2571</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-2572"><a href="#L-2572"><span class="linenos">2572</span></a> <span class="n">tables</span><span class="o">=</span><span class="n">tables</span><span class="p">,</span> +</span><span id="L-2573"><a href="#L-2573"><span class="linenos">2573</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-2574"><a href="#L-2574"><span class="linenos">2574</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-2575"><a href="#L-2575"><span class="linenos">2575</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="L-2576"><a href="#L-2576"><span class="linenos">2576</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="L-2577"><a href="#L-2577"><span class="linenos">2577</span></a> <span class="n">limit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="L-2578"><a href="#L-2578"><span class="linenos">2578</span></a> <span class="p">)</span> +</span><span id="L-2579"><a href="#L-2579"><span class="linenos">2579</span></a> +</span><span id="L-2580"><a href="#L-2580"><span class="linenos">2580</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">:</span> +</span><span id="L-2581"><a href="#L-2581"><span class="linenos">2581</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-2582"><a href="#L-2582"><span class="linenos">2582</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-2583"><a href="#L-2583"><span class="linenos">2583</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="L-2584"><a href="#L-2584"><span class="linenos">2584</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> +</span><span id="L-2585"><a href="#L-2585"><span class="linenos">2585</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2586"><a href="#L-2586"><span class="linenos">2586</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="L-2587"><a href="#L-2587"><span class="linenos">2587</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-2588"><a href="#L-2588"><span class="linenos">2588</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="L-2589"><a href="#L-2589"><span class="linenos">2589</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="n">this</span><span class="p">,</span> +</span><span id="L-2590"><a href="#L-2590"><span class="linenos">2590</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2591"><a href="#L-2591"><span class="linenos">2591</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-2592"><a href="#L-2592"><span class="linenos">2592</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="L-2593"><a href="#L-2593"><span class="linenos">2593</span></a> <span class="s2">"returning"</span><span class="p">:</span> <span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="L-2594"><a href="#L-2594"><span class="linenos">2594</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="L-2595"><a href="#L-2595"><span class="linenos">2595</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="L-2596"><a href="#L-2596"><span class="linenos">2596</span></a> <span class="p">},</span> +</span><span id="L-2597"><a href="#L-2597"><span class="linenos">2597</span></a> <span class="p">)</span> +</span><span id="L-2598"><a href="#L-2598"><span class="linenos">2598</span></a> +</span><span id="L-2599"><a href="#L-2599"><span class="linenos">2599</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">:</span> +</span><span id="L-2600"><a href="#L-2600"><span class="linenos">2600</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="L-2601"><a href="#L-2601"><span class="linenos">2601</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> +</span><span id="L-2602"><a href="#L-2602"><span class="linenos">2602</span></a> +</span><span id="L-2603"><a href="#L-2603"><span class="linenos">2603</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2604"><a href="#L-2604"><span class="linenos">2604</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2605"><a href="#L-2605"><span class="linenos">2605</span></a> <span class="p">)</span> +</span><span id="L-2606"><a href="#L-2606"><span class="linenos">2606</span></a> +</span><span id="L-2607"><a href="#L-2607"><span class="linenos">2607</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> +</span><span id="L-2608"><a href="#L-2608"><span class="linenos">2608</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAZY"</span><span class="p">)</span> +</span><span id="L-2609"><a href="#L-2609"><span class="linenos">2609</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-2610"><a href="#L-2610"><span class="linenos">2610</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2611"><a href="#L-2611"><span class="linenos">2611</span></a> +</span><span id="L-2612"><a href="#L-2612"><span class="linenos">2612</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2613"><a href="#L-2613"><span class="linenos">2613</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OPTIONS"</span><span class="p">):</span> +</span><span id="L-2614"><a href="#L-2614"><span class="linenos">2614</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-2615"><a href="#L-2615"><span class="linenos">2615</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2616"><a href="#L-2616"><span class="linenos">2616</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-2617"><a href="#L-2617"><span class="linenos">2617</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2618"><a href="#L-2618"><span class="linenos">2618</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> +</span><span id="L-2619"><a href="#L-2619"><span class="linenos">2619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2620"><a href="#L-2620"><span class="linenos">2620</span></a> +</span><span id="L-2621"><a href="#L-2621"><span class="linenos">2621</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-2622"><a href="#L-2622"><span class="linenos">2622</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2623"><a href="#L-2623"><span class="linenos">2623</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> +</span><span id="L-2624"><a href="#L-2624"><span class="linenos">2624</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="L-2625"><a href="#L-2625"><span class="linenos">2625</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> +</span><span id="L-2626"><a href="#L-2626"><span class="linenos">2626</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> +</span><span id="L-2627"><a href="#L-2627"><span class="linenos">2627</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-2628"><a href="#L-2628"><span class="linenos">2628</span></a> <span class="p">)</span> +</span><span id="L-2629"><a href="#L-2629"><span class="linenos">2629</span></a> +</span><span id="L-2630"><a href="#L-2630"><span class="linenos">2630</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span> +</span><span id="L-2631"><a href="#L-2631"><span class="linenos">2631</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> +</span><span id="L-2632"><a href="#L-2632"><span class="linenos">2632</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2633"><a href="#L-2633"><span class="linenos">2633</span></a> +</span><span id="L-2634"><a href="#L-2634"><span class="linenos">2634</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2635"><a href="#L-2635"><span class="linenos">2635</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="L-2636"><a href="#L-2636"><span class="linenos">2636</span></a> <span class="p">)</span> </span><span id="L-2637"><a href="#L-2637"><span class="linenos">2637</span></a> -</span><span id="L-2638"><a href="#L-2638"><span class="linenos">2638</span></a> <span class="c1"># In some dialects we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> -</span><span id="L-2639"><a href="#L-2639"><span class="linenos">2639</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="L-2640"><a href="#L-2640"><span class="linenos">2640</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-2641"><a href="#L-2641"><span class="linenos">2641</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> -</span><span id="L-2642"><a href="#L-2642"><span class="linenos">2642</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2638"><a href="#L-2638"><span class="linenos">2638</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span> +</span><span id="L-2639"><a href="#L-2639"><span class="linenos">2639</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2640"><a href="#L-2640"><span class="linenos">2640</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-2641"><a href="#L-2641"><span class="linenos">2641</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2642"><a href="#L-2642"><span class="linenos">2642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="L-2643"><a href="#L-2643"><span class="linenos">2643</span></a> -</span><span id="L-2644"><a href="#L-2644"><span class="linenos">2644</span></a> <span class="k">def</span> <span class="nf">_parse_projections</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2645"><a href="#L-2645"><span class="linenos">2645</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> -</span><span id="L-2646"><a href="#L-2646"><span class="linenos">2646</span></a> -</span><span id="L-2647"><a href="#L-2647"><span class="linenos">2647</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> -</span><span id="L-2648"><a href="#L-2648"><span class="linenos">2648</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-2649"><a href="#L-2649"><span class="linenos">2649</span></a> <span class="n">nested</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-2650"><a href="#L-2650"><span class="linenos">2650</span></a> <span class="n">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-2651"><a href="#L-2651"><span class="linenos">2651</span></a> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2652"><a href="#L-2652"><span class="linenos">2652</span></a> <span class="n">parse_set_operation</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2653"><a href="#L-2653"><span class="linenos">2653</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2654"><a href="#L-2654"><span class="linenos">2654</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> -</span><span id="L-2655"><a href="#L-2655"><span class="linenos">2655</span></a> -</span><span id="L-2656"><a href="#L-2656"><span class="linenos">2656</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> -</span><span id="L-2657"><a href="#L-2657"><span class="linenos">2657</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> -</span><span id="L-2658"><a href="#L-2658"><span class="linenos">2658</span></a> -</span><span id="L-2659"><a href="#L-2659"><span class="linenos">2659</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-2660"><a href="#L-2660"><span class="linenos">2660</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> -</span><span id="L-2661"><a href="#L-2661"><span class="linenos">2661</span></a> <span class="k">return</span> <span class="n">cte</span> -</span><span id="L-2662"><a href="#L-2662"><span class="linenos">2662</span></a> -</span><span id="L-2663"><a href="#L-2663"><span class="linenos">2663</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="L-2664"><a href="#L-2664"><span class="linenos">2664</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> -</span><span id="L-2665"><a href="#L-2665"><span class="linenos">2665</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2666"><a href="#L-2666"><span class="linenos">2666</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> -</span><span id="L-2667"><a href="#L-2667"><span class="linenos">2667</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> +</span><span id="L-2644"><a href="#L-2644"><span class="linenos">2644</span></a> <span class="c1"># In some dialects we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> +</span><span id="L-2645"><a href="#L-2645"><span class="linenos">2645</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="L-2646"><a href="#L-2646"><span class="linenos">2646</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-2647"><a href="#L-2647"><span class="linenos">2647</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> +</span><span id="L-2648"><a href="#L-2648"><span class="linenos">2648</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2649"><a href="#L-2649"><span class="linenos">2649</span></a> +</span><span id="L-2650"><a href="#L-2650"><span class="linenos">2650</span></a> <span class="k">def</span> <span class="nf">_parse_projections</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2651"><a href="#L-2651"><span class="linenos">2651</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> +</span><span id="L-2652"><a href="#L-2652"><span class="linenos">2652</span></a> +</span><span id="L-2653"><a href="#L-2653"><span class="linenos">2653</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> +</span><span id="L-2654"><a href="#L-2654"><span class="linenos">2654</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-2655"><a href="#L-2655"><span class="linenos">2655</span></a> <span class="n">nested</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-2656"><a href="#L-2656"><span class="linenos">2656</span></a> <span class="n">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-2657"><a href="#L-2657"><span class="linenos">2657</span></a> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2658"><a href="#L-2658"><span class="linenos">2658</span></a> <span class="n">parse_set_operation</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2659"><a href="#L-2659"><span class="linenos">2659</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2660"><a href="#L-2660"><span class="linenos">2660</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> +</span><span id="L-2661"><a href="#L-2661"><span class="linenos">2661</span></a> +</span><span id="L-2662"><a href="#L-2662"><span class="linenos">2662</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> +</span><span id="L-2663"><a href="#L-2663"><span class="linenos">2663</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="L-2664"><a href="#L-2664"><span class="linenos">2664</span></a> +</span><span id="L-2665"><a href="#L-2665"><span class="linenos">2665</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-2666"><a href="#L-2666"><span class="linenos">2666</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> +</span><span id="L-2667"><a href="#L-2667"><span class="linenos">2667</span></a> <span class="k">return</span> <span class="n">cte</span> </span><span id="L-2668"><a href="#L-2668"><span class="linenos">2668</span></a> -</span><span id="L-2669"><a href="#L-2669"><span class="linenos">2669</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2670"><a href="#L-2670"><span class="linenos">2670</span></a> -</span><span id="L-2671"><a href="#L-2671"><span class="linenos">2671</span></a> <span class="c1"># duckdb supports leading with FROM x</span> -</span><span id="L-2672"><a href="#L-2672"><span class="linenos">2672</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-2673"><a href="#L-2673"><span class="linenos">2673</span></a> -</span><span id="L-2674"><a href="#L-2674"><span class="linenos">2674</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> -</span><span id="L-2675"><a href="#L-2675"><span class="linenos">2675</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-2669"><a href="#L-2669"><span class="linenos">2669</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="L-2670"><a href="#L-2670"><span class="linenos">2670</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> +</span><span id="L-2671"><a href="#L-2671"><span class="linenos">2671</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2672"><a href="#L-2672"><span class="linenos">2672</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> +</span><span id="L-2673"><a href="#L-2673"><span class="linenos">2673</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> +</span><span id="L-2674"><a href="#L-2674"><span class="linenos">2674</span></a> +</span><span id="L-2675"><a href="#L-2675"><span class="linenos">2675</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-2676"><a href="#L-2676"><span class="linenos">2676</span></a> -</span><span id="L-2677"><a href="#L-2677"><span class="linenos">2677</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> -</span><span id="L-2678"><a href="#L-2678"><span class="linenos">2678</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> -</span><span id="L-2679"><a href="#L-2679"><span class="linenos">2679</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DISTINCT_TOKENS</span><span class="p">)</span> -</span><span id="L-2680"><a href="#L-2680"><span class="linenos">2680</span></a> -</span><span id="L-2681"><a href="#L-2681"><span class="linenos">2681</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-2682"><a href="#L-2682"><span class="linenos">2682</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-2683"><a href="#L-2683"><span class="linenos">2683</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"STRUCT"</span><span class="p">,</span> <span class="s2">"VALUE"</span><span class="p">))</span> -</span><span id="L-2684"><a href="#L-2684"><span class="linenos">2684</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-2685"><a href="#L-2685"><span class="linenos">2685</span></a> <span class="p">)</span> +</span><span id="L-2677"><a href="#L-2677"><span class="linenos">2677</span></a> <span class="c1"># duckdb supports leading with FROM x</span> +</span><span id="L-2678"><a href="#L-2678"><span class="linenos">2678</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-2679"><a href="#L-2679"><span class="linenos">2679</span></a> +</span><span id="L-2680"><a href="#L-2680"><span class="linenos">2680</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> +</span><span id="L-2681"><a href="#L-2681"><span class="linenos">2681</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-2682"><a href="#L-2682"><span class="linenos">2682</span></a> +</span><span id="L-2683"><a href="#L-2683"><span class="linenos">2683</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> +</span><span id="L-2684"><a href="#L-2684"><span class="linenos">2684</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> +</span><span id="L-2685"><a href="#L-2685"><span class="linenos">2685</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DISTINCT_TOKENS</span><span class="p">)</span> </span><span id="L-2686"><a href="#L-2686"><span class="linenos">2686</span></a> -</span><span id="L-2687"><a href="#L-2687"><span class="linenos">2687</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="L-2688"><a href="#L-2688"><span class="linenos">2688</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2689"><a href="#L-2689"><span class="linenos">2689</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> -</span><span id="L-2690"><a href="#L-2690"><span class="linenos">2690</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-2691"><a href="#L-2691"><span class="linenos">2691</span></a> <span class="p">)</span> +</span><span id="L-2687"><a href="#L-2687"><span class="linenos">2687</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-2688"><a href="#L-2688"><span class="linenos">2688</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-2689"><a href="#L-2689"><span class="linenos">2689</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"STRUCT"</span><span class="p">,</span> <span class="s2">"VALUE"</span><span class="p">))</span> +</span><span id="L-2690"><a href="#L-2690"><span class="linenos">2690</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-2691"><a href="#L-2691"><span class="linenos">2691</span></a> <span class="p">)</span> </span><span id="L-2692"><a href="#L-2692"><span class="linenos">2692</span></a> -</span><span id="L-2693"><a href="#L-2693"><span class="linenos">2693</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="L-2694"><a href="#L-2694"><span class="linenos">2694</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> -</span><span id="L-2695"><a href="#L-2695"><span class="linenos">2695</span></a> -</span><span id="L-2696"><a href="#L-2696"><span class="linenos">2696</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2697"><a href="#L-2697"><span class="linenos">2697</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projections</span><span class="p">()</span> +</span><span id="L-2693"><a href="#L-2693"><span class="linenos">2693</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="L-2694"><a href="#L-2694"><span class="linenos">2694</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2695"><a href="#L-2695"><span class="linenos">2695</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> +</span><span id="L-2696"><a href="#L-2696"><span class="linenos">2696</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-2697"><a href="#L-2697"><span class="linenos">2697</span></a> <span class="p">)</span> </span><span id="L-2698"><a href="#L-2698"><span class="linenos">2698</span></a> -</span><span id="L-2699"><a href="#L-2699"><span class="linenos">2699</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2700"><a href="#L-2700"><span class="linenos">2700</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> -</span><span id="L-2701"><a href="#L-2701"><span class="linenos">2701</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-2702"><a href="#L-2702"><span class="linenos">2702</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> -</span><span id="L-2703"><a href="#L-2703"><span class="linenos">2703</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> -</span><span id="L-2704"><a href="#L-2704"><span class="linenos">2704</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">projections</span><span class="p">,</span> -</span><span id="L-2705"><a href="#L-2705"><span class="linenos">2705</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> -</span><span id="L-2706"><a href="#L-2706"><span class="linenos">2706</span></a> <span class="p">)</span> -</span><span id="L-2707"><a href="#L-2707"><span class="linenos">2707</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="L-2708"><a href="#L-2708"><span class="linenos">2708</span></a> -</span><span id="L-2709"><a href="#L-2709"><span class="linenos">2709</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> -</span><span id="L-2710"><a href="#L-2710"><span class="linenos">2710</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> -</span><span id="L-2711"><a href="#L-2711"><span class="linenos">2711</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> -</span><span id="L-2712"><a href="#L-2712"><span class="linenos">2712</span></a> -</span><span id="L-2713"><a href="#L-2713"><span class="linenos">2713</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="L-2714"><a href="#L-2714"><span class="linenos">2714</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> -</span><span id="L-2715"><a href="#L-2715"><span class="linenos">2715</span></a> -</span><span id="L-2716"><a href="#L-2716"><span class="linenos">2716</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="L-2717"><a href="#L-2717"><span class="linenos">2717</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> +</span><span id="L-2699"><a href="#L-2699"><span class="linenos">2699</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="L-2700"><a href="#L-2700"><span class="linenos">2700</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> +</span><span id="L-2701"><a href="#L-2701"><span class="linenos">2701</span></a> +</span><span id="L-2702"><a href="#L-2702"><span class="linenos">2702</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2703"><a href="#L-2703"><span class="linenos">2703</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projections</span><span class="p">()</span> +</span><span id="L-2704"><a href="#L-2704"><span class="linenos">2704</span></a> +</span><span id="L-2705"><a href="#L-2705"><span class="linenos">2705</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2706"><a href="#L-2706"><span class="linenos">2706</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> +</span><span id="L-2707"><a href="#L-2707"><span class="linenos">2707</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-2708"><a href="#L-2708"><span class="linenos">2708</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> +</span><span id="L-2709"><a href="#L-2709"><span class="linenos">2709</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> +</span><span id="L-2710"><a href="#L-2710"><span class="linenos">2710</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">projections</span><span class="p">,</span> +</span><span id="L-2711"><a href="#L-2711"><span class="linenos">2711</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> +</span><span id="L-2712"><a href="#L-2712"><span class="linenos">2712</span></a> <span class="p">)</span> +</span><span id="L-2713"><a href="#L-2713"><span class="linenos">2713</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="L-2714"><a href="#L-2714"><span class="linenos">2714</span></a> +</span><span id="L-2715"><a href="#L-2715"><span class="linenos">2715</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> +</span><span id="L-2716"><a href="#L-2716"><span class="linenos">2716</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> +</span><span id="L-2717"><a href="#L-2717"><span class="linenos">2717</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> </span><span id="L-2718"><a href="#L-2718"><span class="linenos">2718</span></a> -</span><span id="L-2719"><a href="#L-2719"><span class="linenos">2719</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2720"><a href="#L-2720"><span class="linenos">2720</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2721"><a href="#L-2721"><span class="linenos">2721</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> -</span><span id="L-2722"><a href="#L-2722"><span class="linenos">2722</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">()</span> -</span><span id="L-2723"><a href="#L-2723"><span class="linenos">2723</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-2724"><a href="#L-2724"><span class="linenos">2724</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span> -</span><span id="L-2725"><a href="#L-2725"><span class="linenos">2725</span></a> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">skip_from_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-2726"><a href="#L-2726"><span class="linenos">2726</span></a> <span class="p">)</span> -</span><span id="L-2727"><a href="#L-2727"><span class="linenos">2727</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2728"><a href="#L-2728"><span class="linenos">2728</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-2729"><a href="#L-2729"><span class="linenos">2729</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-2730"><a href="#L-2730"><span class="linenos">2730</span></a> <span class="k">if</span> <span class="n">table</span> -</span><span id="L-2731"><a href="#L-2731"><span class="linenos">2731</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2719"><a href="#L-2719"><span class="linenos">2719</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="L-2720"><a href="#L-2720"><span class="linenos">2720</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> +</span><span id="L-2721"><a href="#L-2721"><span class="linenos">2721</span></a> +</span><span id="L-2722"><a href="#L-2722"><span class="linenos">2722</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="L-2723"><a href="#L-2723"><span class="linenos">2723</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> +</span><span id="L-2724"><a href="#L-2724"><span class="linenos">2724</span></a> +</span><span id="L-2725"><a href="#L-2725"><span class="linenos">2725</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2726"><a href="#L-2726"><span class="linenos">2726</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2727"><a href="#L-2727"><span class="linenos">2727</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> +</span><span id="L-2728"><a href="#L-2728"><span class="linenos">2728</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">()</span> +</span><span id="L-2729"><a href="#L-2729"><span class="linenos">2729</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-2730"><a href="#L-2730"><span class="linenos">2730</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span> +</span><span id="L-2731"><a href="#L-2731"><span class="linenos">2731</span></a> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">skip_from_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> </span><span id="L-2732"><a href="#L-2732"><span class="linenos">2732</span></a> <span class="p">)</span> -</span><span id="L-2733"><a href="#L-2733"><span class="linenos">2733</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> -</span><span id="L-2734"><a href="#L-2734"><span class="linenos">2734</span></a> -</span><span id="L-2735"><a href="#L-2735"><span class="linenos">2735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2736"><a href="#L-2736"><span class="linenos">2736</span></a> -</span><span id="L-2737"><a href="#L-2737"><span class="linenos">2737</span></a> <span class="c1"># We return early here so that the UNION isn't attached to the subquery by the</span> -</span><span id="L-2738"><a href="#L-2738"><span class="linenos">2738</span></a> <span class="c1"># following call to _parse_set_operations, but instead becomes the parent node</span> -</span><span id="L-2739"><a href="#L-2739"><span class="linenos">2739</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> -</span><span id="L-2740"><a href="#L-2740"><span class="linenos">2740</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-2741"><a href="#L-2741"><span class="linenos">2741</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> -</span><span id="L-2742"><a href="#L-2742"><span class="linenos">2742</span></a> <span class="k">elif</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="L-2743"><a href="#L-2743"><span class="linenos">2743</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-2744"><a href="#L-2744"><span class="linenos">2744</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2745"><a href="#L-2745"><span class="linenos">2745</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2746"><a href="#L-2746"><span class="linenos">2746</span></a> -</span><span id="L-2747"><a href="#L-2747"><span class="linenos">2747</span></a> <span class="k">if</span> <span class="n">parse_set_operation</span><span class="p">:</span> -</span><span id="L-2748"><a href="#L-2748"><span class="linenos">2748</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2749"><a href="#L-2749"><span class="linenos">2749</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2750"><a href="#L-2750"><span class="linenos">2750</span></a> -</span><span id="L-2751"><a href="#L-2751"><span class="linenos">2751</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">With</span><span class="p">]:</span> -</span><span id="L-2752"><a href="#L-2752"><span class="linenos">2752</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-2753"><a href="#L-2753"><span class="linenos">2753</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2754"><a href="#L-2754"><span class="linenos">2754</span></a> -</span><span id="L-2755"><a href="#L-2755"><span class="linenos">2755</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-2756"><a href="#L-2756"><span class="linenos">2756</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> -</span><span id="L-2757"><a href="#L-2757"><span class="linenos">2757</span></a> -</span><span id="L-2758"><a href="#L-2758"><span class="linenos">2758</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2759"><a href="#L-2759"><span class="linenos">2759</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2760"><a href="#L-2760"><span class="linenos">2760</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">())</span> -</span><span id="L-2761"><a href="#L-2761"><span class="linenos">2761</span></a> -</span><span id="L-2762"><a href="#L-2762"><span class="linenos">2762</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-2763"><a href="#L-2763"><span class="linenos">2763</span></a> <span class="k">break</span> -</span><span id="L-2764"><a href="#L-2764"><span class="linenos">2764</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2765"><a href="#L-2765"><span class="linenos">2765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="L-2766"><a href="#L-2766"><span class="linenos">2766</span></a> -</span><span id="L-2767"><a href="#L-2767"><span class="linenos">2767</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2768"><a href="#L-2768"><span class="linenos">2768</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span> -</span><span id="L-2769"><a href="#L-2769"><span class="linenos">2769</span></a> <span class="p">)</span> -</span><span id="L-2770"><a href="#L-2770"><span class="linenos">2770</span></a> -</span><span id="L-2771"><a href="#L-2771"><span class="linenos">2771</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">:</span> -</span><span id="L-2772"><a href="#L-2772"><span class="linenos">2772</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> -</span><span id="L-2773"><a href="#L-2773"><span class="linenos">2773</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> -</span><span id="L-2774"><a href="#L-2774"><span class="linenos">2774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> -</span><span id="L-2775"><a href="#L-2775"><span class="linenos">2775</span></a> -</span><span id="L-2776"><a href="#L-2776"><span class="linenos">2776</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-2777"><a href="#L-2777"><span class="linenos">2777</span></a> -</span><span id="L-2778"><a href="#L-2778"><span class="linenos">2778</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">):</span> -</span><span id="L-2779"><a href="#L-2779"><span class="linenos">2779</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2780"><a href="#L-2780"><span class="linenos">2780</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">):</span> -</span><span id="L-2781"><a href="#L-2781"><span class="linenos">2781</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2782"><a href="#L-2782"><span class="linenos">2782</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2783"><a href="#L-2783"><span class="linenos">2783</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2784"><a href="#L-2784"><span class="linenos">2784</span></a> -</span><span id="L-2785"><a href="#L-2785"><span class="linenos">2785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2786"><a href="#L-2786"><span class="linenos">2786</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> -</span><span id="L-2787"><a href="#L-2787"><span class="linenos">2787</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> -</span><span id="L-2788"><a href="#L-2788"><span class="linenos">2788</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> -</span><span id="L-2789"><a href="#L-2789"><span class="linenos">2789</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="L-2790"><a href="#L-2790"><span class="linenos">2790</span></a> <span class="p">)</span> -</span><span id="L-2791"><a href="#L-2791"><span class="linenos">2791</span></a> -</span><span id="L-2792"><a href="#L-2792"><span class="linenos">2792</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> -</span><span id="L-2793"><a href="#L-2793"><span class="linenos">2793</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2794"><a href="#L-2794"><span class="linenos">2794</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]:</span> -</span><span id="L-2795"><a href="#L-2795"><span class="linenos">2795</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-2796"><a href="#L-2796"><span class="linenos">2796</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-2797"><a href="#L-2797"><span class="linenos">2797</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-2798"><a href="#L-2798"><span class="linenos">2798</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> -</span><span id="L-2799"><a href="#L-2799"><span class="linenos">2799</span></a> <span class="p">)</span> -</span><span id="L-2800"><a href="#L-2800"><span class="linenos">2800</span></a> -</span><span id="L-2801"><a href="#L-2801"><span class="linenos">2801</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2802"><a href="#L-2802"><span class="linenos">2802</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2803"><a href="#L-2803"><span class="linenos">2803</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="L-2804"><a href="#L-2804"><span class="linenos">2804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2805"><a href="#L-2805"><span class="linenos">2805</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2806"><a href="#L-2806"><span class="linenos">2806</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2807"><a href="#L-2807"><span class="linenos">2807</span></a> -</span><span id="L-2808"><a href="#L-2808"><span class="linenos">2808</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="L-2809"><a href="#L-2809"><span class="linenos">2809</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2810"><a href="#L-2810"><span class="linenos">2810</span></a> -</span><span id="L-2811"><a href="#L-2811"><span class="linenos">2811</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> -</span><span id="L-2812"><a href="#L-2812"><span class="linenos">2812</span></a> -</span><span id="L-2813"><a href="#L-2813"><span class="linenos">2813</span></a> <span class="c1"># We bubble up comments from the Identifier to the TableAlias</span> -</span><span id="L-2814"><a href="#L-2814"><span class="linenos">2814</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-2815"><a href="#L-2815"><span class="linenos">2815</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> +</span><span id="L-2733"><a href="#L-2733"><span class="linenos">2733</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2734"><a href="#L-2734"><span class="linenos">2734</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-2735"><a href="#L-2735"><span class="linenos">2735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="L-2736"><a href="#L-2736"><span class="linenos">2736</span></a> <span class="k">if</span> <span class="n">table</span> +</span><span id="L-2737"><a href="#L-2737"><span class="linenos">2737</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2738"><a href="#L-2738"><span class="linenos">2738</span></a> <span class="p">)</span> +</span><span id="L-2739"><a href="#L-2739"><span class="linenos">2739</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> +</span><span id="L-2740"><a href="#L-2740"><span class="linenos">2740</span></a> +</span><span id="L-2741"><a href="#L-2741"><span class="linenos">2741</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2742"><a href="#L-2742"><span class="linenos">2742</span></a> +</span><span id="L-2743"><a href="#L-2743"><span class="linenos">2743</span></a> <span class="c1"># We return early here so that the UNION isn't attached to the subquery by the</span> +</span><span id="L-2744"><a href="#L-2744"><span class="linenos">2744</span></a> <span class="c1"># following call to _parse_set_operations, but instead becomes the parent node</span> +</span><span id="L-2745"><a href="#L-2745"><span class="linenos">2745</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> +</span><span id="L-2746"><a href="#L-2746"><span class="linenos">2746</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-2747"><a href="#L-2747"><span class="linenos">2747</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> +</span><span id="L-2748"><a href="#L-2748"><span class="linenos">2748</span></a> <span class="k">elif</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="L-2749"><a href="#L-2749"><span class="linenos">2749</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2750"><a href="#L-2750"><span class="linenos">2750</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2751"><a href="#L-2751"><span class="linenos">2751</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2752"><a href="#L-2752"><span class="linenos">2752</span></a> +</span><span id="L-2753"><a href="#L-2753"><span class="linenos">2753</span></a> <span class="k">if</span> <span class="n">parse_set_operation</span><span class="p">:</span> +</span><span id="L-2754"><a href="#L-2754"><span class="linenos">2754</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2755"><a href="#L-2755"><span class="linenos">2755</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2756"><a href="#L-2756"><span class="linenos">2756</span></a> +</span><span id="L-2757"><a href="#L-2757"><span class="linenos">2757</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">With</span><span class="p">]:</span> +</span><span id="L-2758"><a href="#L-2758"><span class="linenos">2758</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-2759"><a href="#L-2759"><span class="linenos">2759</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2760"><a href="#L-2760"><span class="linenos">2760</span></a> +</span><span id="L-2761"><a href="#L-2761"><span class="linenos">2761</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-2762"><a href="#L-2762"><span class="linenos">2762</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> +</span><span id="L-2763"><a href="#L-2763"><span class="linenos">2763</span></a> +</span><span id="L-2764"><a href="#L-2764"><span class="linenos">2764</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2765"><a href="#L-2765"><span class="linenos">2765</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-2766"><a href="#L-2766"><span class="linenos">2766</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">())</span> +</span><span id="L-2767"><a href="#L-2767"><span class="linenos">2767</span></a> +</span><span id="L-2768"><a href="#L-2768"><span class="linenos">2768</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-2769"><a href="#L-2769"><span class="linenos">2769</span></a> <span class="k">break</span> +</span><span id="L-2770"><a href="#L-2770"><span class="linenos">2770</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2771"><a href="#L-2771"><span class="linenos">2771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="L-2772"><a href="#L-2772"><span class="linenos">2772</span></a> +</span><span id="L-2773"><a href="#L-2773"><span class="linenos">2773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2774"><a href="#L-2774"><span class="linenos">2774</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span> +</span><span id="L-2775"><a href="#L-2775"><span class="linenos">2775</span></a> <span class="p">)</span> +</span><span id="L-2776"><a href="#L-2776"><span class="linenos">2776</span></a> +</span><span id="L-2777"><a href="#L-2777"><span class="linenos">2777</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">:</span> +</span><span id="L-2778"><a href="#L-2778"><span class="linenos">2778</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> +</span><span id="L-2779"><a href="#L-2779"><span class="linenos">2779</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> +</span><span id="L-2780"><a href="#L-2780"><span class="linenos">2780</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> +</span><span id="L-2781"><a href="#L-2781"><span class="linenos">2781</span></a> +</span><span id="L-2782"><a href="#L-2782"><span class="linenos">2782</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-2783"><a href="#L-2783"><span class="linenos">2783</span></a> +</span><span id="L-2784"><a href="#L-2784"><span class="linenos">2784</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">):</span> +</span><span id="L-2785"><a href="#L-2785"><span class="linenos">2785</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2786"><a href="#L-2786"><span class="linenos">2786</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">):</span> +</span><span id="L-2787"><a href="#L-2787"><span class="linenos">2787</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2788"><a href="#L-2788"><span class="linenos">2788</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2789"><a href="#L-2789"><span class="linenos">2789</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2790"><a href="#L-2790"><span class="linenos">2790</span></a> +</span><span id="L-2791"><a href="#L-2791"><span class="linenos">2791</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2792"><a href="#L-2792"><span class="linenos">2792</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> +</span><span id="L-2793"><a href="#L-2793"><span class="linenos">2793</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> +</span><span id="L-2794"><a href="#L-2794"><span class="linenos">2794</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> +</span><span id="L-2795"><a href="#L-2795"><span class="linenos">2795</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="L-2796"><a href="#L-2796"><span class="linenos">2796</span></a> <span class="p">)</span> +</span><span id="L-2797"><a href="#L-2797"><span class="linenos">2797</span></a> +</span><span id="L-2798"><a href="#L-2798"><span class="linenos">2798</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> +</span><span id="L-2799"><a href="#L-2799"><span class="linenos">2799</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2800"><a href="#L-2800"><span class="linenos">2800</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]:</span> +</span><span id="L-2801"><a href="#L-2801"><span class="linenos">2801</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-2802"><a href="#L-2802"><span class="linenos">2802</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-2803"><a href="#L-2803"><span class="linenos">2803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-2804"><a href="#L-2804"><span class="linenos">2804</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> +</span><span id="L-2805"><a href="#L-2805"><span class="linenos">2805</span></a> <span class="p">)</span> +</span><span id="L-2806"><a href="#L-2806"><span class="linenos">2806</span></a> +</span><span id="L-2807"><a href="#L-2807"><span class="linenos">2807</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2808"><a href="#L-2808"><span class="linenos">2808</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2809"><a href="#L-2809"><span class="linenos">2809</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="L-2810"><a href="#L-2810"><span class="linenos">2810</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2811"><a href="#L-2811"><span class="linenos">2811</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2812"><a href="#L-2812"><span class="linenos">2812</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2813"><a href="#L-2813"><span class="linenos">2813</span></a> +</span><span id="L-2814"><a href="#L-2814"><span class="linenos">2814</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="L-2815"><a href="#L-2815"><span class="linenos">2815</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-2816"><a href="#L-2816"><span class="linenos">2816</span></a> -</span><span id="L-2817"><a href="#L-2817"><span class="linenos">2817</span></a> <span class="k">return</span> <span class="n">table_alias</span> +</span><span id="L-2817"><a href="#L-2817"><span class="linenos">2817</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> </span><span id="L-2818"><a href="#L-2818"><span class="linenos">2818</span></a> -</span><span id="L-2819"><a href="#L-2819"><span class="linenos">2819</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> -</span><span id="L-2820"><a href="#L-2820"><span class="linenos">2820</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2821"><a href="#L-2821"><span class="linenos">2821</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">]:</span> -</span><span id="L-2822"><a href="#L-2822"><span class="linenos">2822</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-2823"><a href="#L-2823"><span class="linenos">2823</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2819"><a href="#L-2819"><span class="linenos">2819</span></a> <span class="c1"># We bubble up comments from the Identifier to the TableAlias</span> +</span><span id="L-2820"><a href="#L-2820"><span class="linenos">2820</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-2821"><a href="#L-2821"><span class="linenos">2821</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> +</span><span id="L-2822"><a href="#L-2822"><span class="linenos">2822</span></a> +</span><span id="L-2823"><a href="#L-2823"><span class="linenos">2823</span></a> <span class="k">return</span> <span class="n">table_alias</span> </span><span id="L-2824"><a href="#L-2824"><span class="linenos">2824</span></a> -</span><span id="L-2825"><a href="#L-2825"><span class="linenos">2825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2826"><a href="#L-2826"><span class="linenos">2826</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> -</span><span id="L-2827"><a href="#L-2827"><span class="linenos">2827</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2828"><a href="#L-2828"><span class="linenos">2828</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> -</span><span id="L-2829"><a href="#L-2829"><span class="linenos">2829</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-2830"><a href="#L-2830"><span class="linenos">2830</span></a> <span class="p">)</span> -</span><span id="L-2831"><a href="#L-2831"><span class="linenos">2831</span></a> -</span><span id="L-2832"><a href="#L-2832"><span class="linenos">2832</span></a> <span class="k">def</span> <span class="nf">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="L-2833"><a href="#L-2833"><span class="linenos">2833</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> <span class="k">as</span> <span class="n">_norm</span> -</span><span id="L-2834"><a href="#L-2834"><span class="linenos">2834</span></a> -</span><span id="L-2835"><a href="#L-2835"><span class="linenos">2835</span></a> <span class="n">refs</span> <span class="o">=</span> <span class="p">{</span><span class="n">_norm</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">}</span> -</span><span id="L-2836"><a href="#L-2836"><span class="linenos">2836</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">join</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]):</span> -</span><span id="L-2837"><a href="#L-2837"><span class="linenos">2837</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">join</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-2838"><a href="#L-2838"><span class="linenos">2838</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-2839"><a href="#L-2839"><span class="linenos">2839</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"maybe_column"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2840"><a href="#L-2840"><span class="linenos">2840</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">_norm</span><span class="p">(</span><span class="n">normalized_table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-2841"><a href="#L-2841"><span class="linenos">2841</span></a> -</span><span id="L-2842"><a href="#L-2842"><span class="linenos">2842</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"on"</span><span class="p">):</span> -</span><span id="L-2843"><a href="#L-2843"><span class="linenos">2843</span></a> <span class="k">if</span> <span class="n">normalized_table</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">refs</span><span class="p">:</span> -</span><span id="L-2844"><a href="#L-2844"><span class="linenos">2844</span></a> <span class="n">table_as_column</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">()</span> -</span><span id="L-2845"><a href="#L-2845"><span class="linenos">2845</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">table_as_column</span><span class="p">])</span> -</span><span id="L-2846"><a href="#L-2846"><span class="linenos">2846</span></a> -</span><span id="L-2847"><a href="#L-2847"><span class="linenos">2847</span></a> <span class="c1"># Table.to_column creates a parent Alias node that we want to convert to</span> -</span><span id="L-2848"><a href="#L-2848"><span class="linenos">2848</span></a> <span class="c1"># a TableAlias and attach to the Unnest, so it matches the parser's output</span> -</span><span id="L-2849"><a href="#L-2849"><span class="linenos">2849</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">):</span> -</span><span id="L-2850"><a href="#L-2850"><span class="linenos">2850</span></a> <span class="n">table_as_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table_as_column</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2851"><a href="#L-2851"><span class="linenos">2851</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2825"><a href="#L-2825"><span class="linenos">2825</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> +</span><span id="L-2826"><a href="#L-2826"><span class="linenos">2826</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2827"><a href="#L-2827"><span class="linenos">2827</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">]:</span> +</span><span id="L-2828"><a href="#L-2828"><span class="linenos">2828</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-2829"><a href="#L-2829"><span class="linenos">2829</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2830"><a href="#L-2830"><span class="linenos">2830</span></a> +</span><span id="L-2831"><a href="#L-2831"><span class="linenos">2831</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2832"><a href="#L-2832"><span class="linenos">2832</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> +</span><span id="L-2833"><a href="#L-2833"><span class="linenos">2833</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2834"><a href="#L-2834"><span class="linenos">2834</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> +</span><span id="L-2835"><a href="#L-2835"><span class="linenos">2835</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-2836"><a href="#L-2836"><span class="linenos">2836</span></a> <span class="p">)</span> +</span><span id="L-2837"><a href="#L-2837"><span class="linenos">2837</span></a> +</span><span id="L-2838"><a href="#L-2838"><span class="linenos">2838</span></a> <span class="k">def</span> <span class="nf">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="L-2839"><a href="#L-2839"><span class="linenos">2839</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> <span class="k">as</span> <span class="n">_norm</span> +</span><span id="L-2840"><a href="#L-2840"><span class="linenos">2840</span></a> +</span><span id="L-2841"><a href="#L-2841"><span class="linenos">2841</span></a> <span class="n">refs</span> <span class="o">=</span> <span class="p">{</span><span class="n">_norm</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">}</span> +</span><span id="L-2842"><a href="#L-2842"><span class="linenos">2842</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">join</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]):</span> +</span><span id="L-2843"><a href="#L-2843"><span class="linenos">2843</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">join</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-2844"><a href="#L-2844"><span class="linenos">2844</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-2845"><a href="#L-2845"><span class="linenos">2845</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"maybe_column"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2846"><a href="#L-2846"><span class="linenos">2846</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">_norm</span><span class="p">(</span><span class="n">normalized_table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-2847"><a href="#L-2847"><span class="linenos">2847</span></a> +</span><span id="L-2848"><a href="#L-2848"><span class="linenos">2848</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"on"</span><span class="p">):</span> +</span><span id="L-2849"><a href="#L-2849"><span class="linenos">2849</span></a> <span class="k">if</span> <span class="n">normalized_table</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">refs</span><span class="p">:</span> +</span><span id="L-2850"><a href="#L-2850"><span class="linenos">2850</span></a> <span class="n">table_as_column</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">()</span> +</span><span id="L-2851"><a href="#L-2851"><span class="linenos">2851</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">table_as_column</span><span class="p">])</span> </span><span id="L-2852"><a href="#L-2852"><span class="linenos">2852</span></a> -</span><span id="L-2853"><a href="#L-2853"><span class="linenos">2853</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="L-2854"><a href="#L-2854"><span class="linenos">2854</span></a> -</span><span id="L-2855"><a href="#L-2855"><span class="linenos">2855</span></a> <span class="n">refs</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalized_table</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> -</span><span id="L-2856"><a href="#L-2856"><span class="linenos">2856</span></a> -</span><span id="L-2857"><a href="#L-2857"><span class="linenos">2857</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2853"><a href="#L-2853"><span class="linenos">2853</span></a> <span class="c1"># Table.to_column creates a parent Alias node that we want to convert to</span> +</span><span id="L-2854"><a href="#L-2854"><span class="linenos">2854</span></a> <span class="c1"># a TableAlias and attach to the Unnest, so it matches the parser's output</span> +</span><span id="L-2855"><a href="#L-2855"><span class="linenos">2855</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">):</span> +</span><span id="L-2856"><a href="#L-2856"><span class="linenos">2856</span></a> <span class="n">table_as_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table_as_column</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2857"><a href="#L-2857"><span class="linenos">2857</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span><span id="L-2858"><a href="#L-2858"><span class="linenos">2858</span></a> -</span><span id="L-2859"><a href="#L-2859"><span class="linenos">2859</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span> -</span><span id="L-2860"><a href="#L-2860"><span class="linenos">2860</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-2861"><a href="#L-2861"><span class="linenos">2861</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2862"><a href="#L-2862"><span class="linenos">2862</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)):</span> -</span><span id="L-2863"><a href="#L-2863"><span class="linenos">2863</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> -</span><span id="L-2864"><a href="#L-2864"><span class="linenos">2864</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> -</span><span id="L-2865"><a href="#L-2865"><span class="linenos">2865</span></a> <span class="k">for</span> <span class="n">lateral</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span> -</span><span id="L-2866"><a href="#L-2866"><span class="linenos">2866</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> -</span><span id="L-2867"><a href="#L-2867"><span class="linenos">2867</span></a> -</span><span id="L-2868"><a href="#L-2868"><span class="linenos">2868</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2869"><a href="#L-2869"><span class="linenos">2869</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-2870"><a href="#L-2870"><span class="linenos">2870</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> -</span><span id="L-2871"><a href="#L-2871"><span class="linenos">2871</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-2872"><a href="#L-2872"><span class="linenos">2872</span></a> -</span><span id="L-2873"><a href="#L-2873"><span class="linenos">2873</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-2874"><a href="#L-2874"><span class="linenos">2874</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-2875"><a href="#L-2875"><span class="linenos">2875</span></a> <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"limit"</span><span class="p">:</span> -</span><span id="L-2876"><a href="#L-2876"><span class="linenos">2876</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-2877"><a href="#L-2877"><span class="linenos">2877</span></a> -</span><span id="L-2878"><a href="#L-2878"><span class="linenos">2878</span></a> <span class="k">if</span> <span class="n">offset</span><span class="p">:</span> -</span><span id="L-2879"><a href="#L-2879"><span class="linenos">2879</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> -</span><span id="L-2880"><a href="#L-2880"><span class="linenos">2880</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span> -</span><span id="L-2881"><a href="#L-2881"><span class="linenos">2881</span></a> -</span><span id="L-2882"><a href="#L-2882"><span class="linenos">2882</span></a> <span class="n">limit_by_expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-2883"><a href="#L-2883"><span class="linenos">2883</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-2884"><a href="#L-2884"><span class="linenos">2884</span></a> <span class="n">offset</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">limit_by_expressions</span><span class="p">)</span> -</span><span id="L-2885"><a href="#L-2885"><span class="linenos">2885</span></a> <span class="k">continue</span> -</span><span id="L-2886"><a href="#L-2886"><span class="linenos">2886</span></a> <span class="k">break</span> +</span><span id="L-2859"><a href="#L-2859"><span class="linenos">2859</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="L-2860"><a href="#L-2860"><span class="linenos">2860</span></a> +</span><span id="L-2861"><a href="#L-2861"><span class="linenos">2861</span></a> <span class="n">refs</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalized_table</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> +</span><span id="L-2862"><a href="#L-2862"><span class="linenos">2862</span></a> +</span><span id="L-2863"><a href="#L-2863"><span class="linenos">2863</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2864"><a href="#L-2864"><span class="linenos">2864</span></a> +</span><span id="L-2865"><a href="#L-2865"><span class="linenos">2865</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span> +</span><span id="L-2866"><a href="#L-2866"><span class="linenos">2866</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-2867"><a href="#L-2867"><span class="linenos">2867</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2868"><a href="#L-2868"><span class="linenos">2868</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)):</span> +</span><span id="L-2869"><a href="#L-2869"><span class="linenos">2869</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> +</span><span id="L-2870"><a href="#L-2870"><span class="linenos">2870</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> +</span><span id="L-2871"><a href="#L-2871"><span class="linenos">2871</span></a> <span class="k">for</span> <span class="n">lateral</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span> +</span><span id="L-2872"><a href="#L-2872"><span class="linenos">2872</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> +</span><span id="L-2873"><a href="#L-2873"><span class="linenos">2873</span></a> +</span><span id="L-2874"><a href="#L-2874"><span class="linenos">2874</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-2875"><a href="#L-2875"><span class="linenos">2875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-2876"><a href="#L-2876"><span class="linenos">2876</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> +</span><span id="L-2877"><a href="#L-2877"><span class="linenos">2877</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-2878"><a href="#L-2878"><span class="linenos">2878</span></a> +</span><span id="L-2879"><a href="#L-2879"><span class="linenos">2879</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-2880"><a href="#L-2880"><span class="linenos">2880</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-2881"><a href="#L-2881"><span class="linenos">2881</span></a> <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"limit"</span><span class="p">:</span> +</span><span id="L-2882"><a href="#L-2882"><span class="linenos">2882</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-2883"><a href="#L-2883"><span class="linenos">2883</span></a> +</span><span id="L-2884"><a href="#L-2884"><span class="linenos">2884</span></a> <span class="k">if</span> <span class="n">offset</span><span class="p">:</span> +</span><span id="L-2885"><a href="#L-2885"><span class="linenos">2885</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> +</span><span id="L-2886"><a href="#L-2886"><span class="linenos">2886</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span> </span><span id="L-2887"><a href="#L-2887"><span class="linenos">2887</span></a> -</span><span id="L-2888"><a href="#L-2888"><span class="linenos">2888</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="s2">"from"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="L-2889"><a href="#L-2889"><span class="linenos">2889</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2890"><a href="#L-2890"><span class="linenos">2890</span></a> -</span><span id="L-2891"><a href="#L-2891"><span class="linenos">2891</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2892"><a href="#L-2892"><span class="linenos">2892</span></a> -</span><span id="L-2893"><a href="#L-2893"><span class="linenos">2893</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">]:</span> -</span><span id="L-2894"><a href="#L-2894"><span class="linenos">2894</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> -</span><span id="L-2895"><a href="#L-2895"><span class="linenos">2895</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2896"><a href="#L-2896"><span class="linenos">2896</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span> -</span><span id="L-2897"><a href="#L-2897"><span class="linenos">2897</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-2898"><a href="#L-2898"><span class="linenos">2898</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2899"><a href="#L-2899"><span class="linenos">2899</span></a> <span class="p">),</span> -</span><span id="L-2900"><a href="#L-2900"><span class="linenos">2900</span></a> <span class="p">[],</span> -</span><span id="L-2901"><a href="#L-2901"><span class="linenos">2901</span></a> <span class="p">):</span> -</span><span id="L-2902"><a href="#L-2902"><span class="linenos">2902</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> -</span><span id="L-2903"><a href="#L-2903"><span class="linenos">2903</span></a> -</span><span id="L-2904"><a href="#L-2904"><span class="linenos">2904</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> -</span><span id="L-2905"><a href="#L-2905"><span class="linenos">2905</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> -</span><span id="L-2906"><a href="#L-2906"><span class="linenos">2906</span></a> -</span><span id="L-2907"><a href="#L-2907"><span class="linenos">2907</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> -</span><span id="L-2908"><a href="#L-2908"><span class="linenos">2908</span></a> -</span><span id="L-2909"><a href="#L-2909"><span class="linenos">2909</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2910"><a href="#L-2910"><span class="linenos">2910</span></a> -</span><span id="L-2911"><a href="#L-2911"><span class="linenos">2911</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">]:</span> -</span><span id="L-2912"><a href="#L-2912"><span class="linenos">2912</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> -</span><span id="L-2913"><a href="#L-2913"><span class="linenos">2913</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2888"><a href="#L-2888"><span class="linenos">2888</span></a> <span class="n">limit_by_expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-2889"><a href="#L-2889"><span class="linenos">2889</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-2890"><a href="#L-2890"><span class="linenos">2890</span></a> <span class="n">offset</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">limit_by_expressions</span><span class="p">)</span> +</span><span id="L-2891"><a href="#L-2891"><span class="linenos">2891</span></a> <span class="k">continue</span> +</span><span id="L-2892"><a href="#L-2892"><span class="linenos">2892</span></a> <span class="k">break</span> +</span><span id="L-2893"><a href="#L-2893"><span class="linenos">2893</span></a> +</span><span id="L-2894"><a href="#L-2894"><span class="linenos">2894</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="s2">"from"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="L-2895"><a href="#L-2895"><span class="linenos">2895</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2896"><a href="#L-2896"><span class="linenos">2896</span></a> +</span><span id="L-2897"><a href="#L-2897"><span class="linenos">2897</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2898"><a href="#L-2898"><span class="linenos">2898</span></a> +</span><span id="L-2899"><a href="#L-2899"><span class="linenos">2899</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">]:</span> +</span><span id="L-2900"><a href="#L-2900"><span class="linenos">2900</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> +</span><span id="L-2901"><a href="#L-2901"><span class="linenos">2901</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2902"><a href="#L-2902"><span class="linenos">2902</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span> +</span><span id="L-2903"><a href="#L-2903"><span class="linenos">2903</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-2904"><a href="#L-2904"><span class="linenos">2904</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2905"><a href="#L-2905"><span class="linenos">2905</span></a> <span class="p">),</span> +</span><span id="L-2906"><a href="#L-2906"><span class="linenos">2906</span></a> <span class="p">[],</span> +</span><span id="L-2907"><a href="#L-2907"><span class="linenos">2907</span></a> <span class="p">):</span> +</span><span id="L-2908"><a href="#L-2908"><span class="linenos">2908</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> +</span><span id="L-2909"><a href="#L-2909"><span class="linenos">2909</span></a> +</span><span id="L-2910"><a href="#L-2910"><span class="linenos">2910</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> +</span><span id="L-2911"><a href="#L-2911"><span class="linenos">2911</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> +</span><span id="L-2912"><a href="#L-2912"><span class="linenos">2912</span></a> +</span><span id="L-2913"><a href="#L-2913"><span class="linenos">2913</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> </span><span id="L-2914"><a href="#L-2914"><span class="linenos">2914</span></a> -</span><span id="L-2915"><a href="#L-2915"><span class="linenos">2915</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="L-2916"><a href="#L-2916"><span class="linenos">2916</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNLOGGED"</span><span class="p">)</span> -</span><span id="L-2917"><a href="#L-2917"><span class="linenos">2917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-2918"><a href="#L-2918"><span class="linenos">2918</span></a> -</span><span id="L-2919"><a href="#L-2919"><span class="linenos">2919</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2920"><a href="#L-2920"><span class="linenos">2920</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> -</span><span id="L-2921"><a href="#L-2921"><span class="linenos">2921</span></a> <span class="p">)</span> -</span><span id="L-2922"><a href="#L-2922"><span class="linenos">2922</span></a> -</span><span id="L-2923"><a href="#L-2923"><span class="linenos">2923</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span> -</span><span id="L-2924"><a href="#L-2924"><span class="linenos">2924</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">skip_from_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2925"><a href="#L-2925"><span class="linenos">2925</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">From</span><span class="p">]:</span> -</span><span id="L-2926"><a href="#L-2926"><span class="linenos">2926</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_from_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-2927"><a href="#L-2927"><span class="linenos">2927</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2915"><a href="#L-2915"><span class="linenos">2915</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2916"><a href="#L-2916"><span class="linenos">2916</span></a> +</span><span id="L-2917"><a href="#L-2917"><span class="linenos">2917</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">]:</span> +</span><span id="L-2918"><a href="#L-2918"><span class="linenos">2918</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> +</span><span id="L-2919"><a href="#L-2919"><span class="linenos">2919</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2920"><a href="#L-2920"><span class="linenos">2920</span></a> +</span><span id="L-2921"><a href="#L-2921"><span class="linenos">2921</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="L-2922"><a href="#L-2922"><span class="linenos">2922</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNLOGGED"</span><span class="p">)</span> +</span><span id="L-2923"><a href="#L-2923"><span class="linenos">2923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-2924"><a href="#L-2924"><span class="linenos">2924</span></a> +</span><span id="L-2925"><a href="#L-2925"><span class="linenos">2925</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2926"><a href="#L-2926"><span class="linenos">2926</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> +</span><span id="L-2927"><a href="#L-2927"><span class="linenos">2927</span></a> <span class="p">)</span> </span><span id="L-2928"><a href="#L-2928"><span class="linenos">2928</span></a> -</span><span id="L-2929"><a href="#L-2929"><span class="linenos">2929</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2930"><a href="#L-2930"><span class="linenos">2930</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">)</span> -</span><span id="L-2931"><a href="#L-2931"><span class="linenos">2931</span></a> <span class="p">)</span> -</span><span id="L-2932"><a href="#L-2932"><span class="linenos">2932</span></a> -</span><span id="L-2933"><a href="#L-2933"><span class="linenos">2933</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize_measure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">:</span> -</span><span id="L-2934"><a href="#L-2934"><span class="linenos">2934</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2935"><a href="#L-2935"><span class="linenos">2935</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">,</span> -</span><span id="L-2936"><a href="#L-2936"><span class="linenos">2936</span></a> <span class="n">window_frame</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FINAL"</span><span class="p">,</span> <span class="s2">"RUNNING"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> -</span><span id="L-2937"><a href="#L-2937"><span class="linenos">2937</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> -</span><span id="L-2938"><a href="#L-2938"><span class="linenos">2938</span></a> <span class="p">)</span> -</span><span id="L-2939"><a href="#L-2939"><span class="linenos">2939</span></a> -</span><span id="L-2940"><a href="#L-2940"><span class="linenos">2940</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">]:</span> -</span><span id="L-2941"><a href="#L-2941"><span class="linenos">2941</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> -</span><span id="L-2942"><a href="#L-2942"><span class="linenos">2942</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2943"><a href="#L-2943"><span class="linenos">2943</span></a> -</span><span id="L-2944"><a href="#L-2944"><span class="linenos">2944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-2929"><a href="#L-2929"><span class="linenos">2929</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span> +</span><span id="L-2930"><a href="#L-2930"><span class="linenos">2930</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">skip_from_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2931"><a href="#L-2931"><span class="linenos">2931</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">From</span><span class="p">]:</span> +</span><span id="L-2932"><a href="#L-2932"><span class="linenos">2932</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_from_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-2933"><a href="#L-2933"><span class="linenos">2933</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2934"><a href="#L-2934"><span class="linenos">2934</span></a> +</span><span id="L-2935"><a href="#L-2935"><span class="linenos">2935</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2936"><a href="#L-2936"><span class="linenos">2936</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">)</span> +</span><span id="L-2937"><a href="#L-2937"><span class="linenos">2937</span></a> <span class="p">)</span> +</span><span id="L-2938"><a href="#L-2938"><span class="linenos">2938</span></a> +</span><span id="L-2939"><a href="#L-2939"><span class="linenos">2939</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize_measure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">:</span> +</span><span id="L-2940"><a href="#L-2940"><span class="linenos">2940</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2941"><a href="#L-2941"><span class="linenos">2941</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">,</span> +</span><span id="L-2942"><a href="#L-2942"><span class="linenos">2942</span></a> <span class="n">window_frame</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FINAL"</span><span class="p">,</span> <span class="s2">"RUNNING"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> +</span><span id="L-2943"><a href="#L-2943"><span class="linenos">2943</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> +</span><span id="L-2944"><a href="#L-2944"><span class="linenos">2944</span></a> <span class="p">)</span> </span><span id="L-2945"><a href="#L-2945"><span class="linenos">2945</span></a> -</span><span id="L-2946"><a href="#L-2946"><span class="linenos">2946</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="L-2947"><a href="#L-2947"><span class="linenos">2947</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="L-2948"><a href="#L-2948"><span class="linenos">2948</span></a> -</span><span id="L-2949"><a href="#L-2949"><span class="linenos">2949</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-2950"><a href="#L-2950"><span class="linenos">2950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize_measure</span><span class="p">)</span> -</span><span id="L-2951"><a href="#L-2951"><span class="linenos">2951</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> -</span><span id="L-2952"><a href="#L-2952"><span class="linenos">2952</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-2953"><a href="#L-2953"><span class="linenos">2953</span></a> <span class="p">)</span> +</span><span id="L-2946"><a href="#L-2946"><span class="linenos">2946</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">]:</span> +</span><span id="L-2947"><a href="#L-2947"><span class="linenos">2947</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> +</span><span id="L-2948"><a href="#L-2948"><span class="linenos">2948</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2949"><a href="#L-2949"><span class="linenos">2949</span></a> +</span><span id="L-2950"><a href="#L-2950"><span class="linenos">2950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-2951"><a href="#L-2951"><span class="linenos">2951</span></a> +</span><span id="L-2952"><a href="#L-2952"><span class="linenos">2952</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="L-2953"><a href="#L-2953"><span class="linenos">2953</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> </span><span id="L-2954"><a href="#L-2954"><span class="linenos">2954</span></a> -</span><span id="L-2955"><a href="#L-2955"><span class="linenos">2955</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="L-2956"><a href="#L-2956"><span class="linenos">2956</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> -</span><span id="L-2957"><a href="#L-2957"><span class="linenos">2957</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="L-2958"><a href="#L-2958"><span class="linenos">2958</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> -</span><span id="L-2959"><a href="#L-2959"><span class="linenos">2959</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="L-2960"><a href="#L-2960"><span class="linenos">2960</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" SHOW EMPTY MATCHES"</span> -</span><span id="L-2961"><a href="#L-2961"><span class="linenos">2961</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="L-2962"><a href="#L-2962"><span class="linenos">2962</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" OMIT EMPTY MATCHES"</span> -</span><span id="L-2963"><a href="#L-2963"><span class="linenos">2963</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="L-2964"><a href="#L-2964"><span class="linenos">2964</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" WITH UNMATCHED ROWS"</span> -</span><span id="L-2965"><a href="#L-2965"><span class="linenos">2965</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-2966"><a href="#L-2966"><span class="linenos">2966</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2967"><a href="#L-2967"><span class="linenos">2967</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2968"><a href="#L-2968"><span class="linenos">2968</span></a> -</span><span id="L-2969"><a href="#L-2969"><span class="linenos">2969</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> -</span><span id="L-2970"><a href="#L-2970"><span class="linenos">2970</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> -</span><span id="L-2971"><a href="#L-2971"><span class="linenos">2971</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="L-2972"><a href="#L-2972"><span class="linenos">2972</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" PAST LAST ROW"</span> -</span><span id="L-2973"><a href="#L-2973"><span class="linenos">2973</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="L-2974"><a href="#L-2974"><span class="linenos">2974</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" TO NEXT ROW"</span> -</span><span id="L-2975"><a href="#L-2975"><span class="linenos">2975</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> -</span><span id="L-2976"><a href="#L-2976"><span class="linenos">2976</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="L-2977"><a href="#L-2977"><span class="linenos">2977</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> -</span><span id="L-2978"><a href="#L-2978"><span class="linenos">2978</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="L-2979"><a href="#L-2979"><span class="linenos">2979</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-2980"><a href="#L-2980"><span class="linenos">2980</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2981"><a href="#L-2981"><span class="linenos">2981</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2982"><a href="#L-2982"><span class="linenos">2982</span></a> -</span><span id="L-2983"><a href="#L-2983"><span class="linenos">2983</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> -</span><span id="L-2984"><a href="#L-2984"><span class="linenos">2984</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-2985"><a href="#L-2985"><span class="linenos">2985</span></a> -</span><span id="L-2986"><a href="#L-2986"><span class="linenos">2986</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-2987"><a href="#L-2987"><span class="linenos">2987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="L-2955"><a href="#L-2955"><span class="linenos">2955</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-2956"><a href="#L-2956"><span class="linenos">2956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize_measure</span><span class="p">)</span> +</span><span id="L-2957"><a href="#L-2957"><span class="linenos">2957</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> +</span><span id="L-2958"><a href="#L-2958"><span class="linenos">2958</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-2959"><a href="#L-2959"><span class="linenos">2959</span></a> <span class="p">)</span> +</span><span id="L-2960"><a href="#L-2960"><span class="linenos">2960</span></a> +</span><span id="L-2961"><a href="#L-2961"><span class="linenos">2961</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="L-2962"><a href="#L-2962"><span class="linenos">2962</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> +</span><span id="L-2963"><a href="#L-2963"><span class="linenos">2963</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="L-2964"><a href="#L-2964"><span class="linenos">2964</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> +</span><span id="L-2965"><a href="#L-2965"><span class="linenos">2965</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="L-2966"><a href="#L-2966"><span class="linenos">2966</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" SHOW EMPTY MATCHES"</span> +</span><span id="L-2967"><a href="#L-2967"><span class="linenos">2967</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="L-2968"><a href="#L-2968"><span class="linenos">2968</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" OMIT EMPTY MATCHES"</span> +</span><span id="L-2969"><a href="#L-2969"><span class="linenos">2969</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="L-2970"><a href="#L-2970"><span class="linenos">2970</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" WITH UNMATCHED ROWS"</span> +</span><span id="L-2971"><a href="#L-2971"><span class="linenos">2971</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2972"><a href="#L-2972"><span class="linenos">2972</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2973"><a href="#L-2973"><span class="linenos">2973</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2974"><a href="#L-2974"><span class="linenos">2974</span></a> +</span><span id="L-2975"><a href="#L-2975"><span class="linenos">2975</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> +</span><span id="L-2976"><a href="#L-2976"><span class="linenos">2976</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> +</span><span id="L-2977"><a href="#L-2977"><span class="linenos">2977</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="L-2978"><a href="#L-2978"><span class="linenos">2978</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" PAST LAST ROW"</span> +</span><span id="L-2979"><a href="#L-2979"><span class="linenos">2979</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="L-2980"><a href="#L-2980"><span class="linenos">2980</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" TO NEXT ROW"</span> +</span><span id="L-2981"><a href="#L-2981"><span class="linenos">2981</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> +</span><span id="L-2982"><a href="#L-2982"><span class="linenos">2982</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="L-2983"><a href="#L-2983"><span class="linenos">2983</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> +</span><span id="L-2984"><a href="#L-2984"><span class="linenos">2984</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="L-2985"><a href="#L-2985"><span class="linenos">2985</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2986"><a href="#L-2986"><span class="linenos">2986</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2987"><a href="#L-2987"><span class="linenos">2987</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-2988"><a href="#L-2988"><span class="linenos">2988</span></a> -</span><span id="L-2989"><a href="#L-2989"><span class="linenos">2989</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-2990"><a href="#L-2990"><span class="linenos">2990</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> +</span><span id="L-2989"><a href="#L-2989"><span class="linenos">2989</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> +</span><span id="L-2990"><a href="#L-2990"><span class="linenos">2990</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> </span><span id="L-2991"><a href="#L-2991"><span class="linenos">2991</span></a> -</span><span id="L-2992"><a href="#L-2992"><span class="linenos">2992</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-2993"><a href="#L-2993"><span class="linenos">2993</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="L-2994"><a href="#L-2994"><span class="linenos">2994</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-2995"><a href="#L-2995"><span class="linenos">2995</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> -</span><span id="L-2996"><a href="#L-2996"><span class="linenos">2996</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> +</span><span id="L-2992"><a href="#L-2992"><span class="linenos">2992</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-2993"><a href="#L-2993"><span class="linenos">2993</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="L-2994"><a href="#L-2994"><span class="linenos">2994</span></a> +</span><span id="L-2995"><a href="#L-2995"><span class="linenos">2995</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-2996"><a href="#L-2996"><span class="linenos">2996</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> </span><span id="L-2997"><a href="#L-2997"><span class="linenos">2997</span></a> -</span><span id="L-2998"><a href="#L-2998"><span class="linenos">2998</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-2999"><a href="#L-2999"><span class="linenos">2999</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3000"><a href="#L-3000"><span class="linenos">3000</span></a> -</span><span id="L-3001"><a href="#L-3001"><span class="linenos">3001</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-3002"><a href="#L-3002"><span class="linenos">3002</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="L-2998"><a href="#L-2998"><span class="linenos">2998</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-2999"><a href="#L-2999"><span class="linenos">2999</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="L-3000"><a href="#L-3000"><span class="linenos">3000</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-3001"><a href="#L-3001"><span class="linenos">3001</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> +</span><span id="L-3002"><a href="#L-3002"><span class="linenos">3002</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> </span><span id="L-3003"><a href="#L-3003"><span class="linenos">3003</span></a> -</span><span id="L-3004"><a href="#L-3004"><span class="linenos">3004</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> -</span><span id="L-3005"><a href="#L-3005"><span class="linenos">3005</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3006"><a href="#L-3006"><span class="linenos">3006</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3007"><a href="#L-3007"><span class="linenos">3007</span></a> -</span><span id="L-3008"><a href="#L-3008"><span class="linenos">3008</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-3009"><a href="#L-3009"><span class="linenos">3009</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> -</span><span id="L-3010"><a href="#L-3010"><span class="linenos">3010</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> -</span><span id="L-3011"><a href="#L-3011"><span class="linenos">3011</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3012"><a href="#L-3012"><span class="linenos">3012</span></a> <span class="p">)</span> +</span><span id="L-3004"><a href="#L-3004"><span class="linenos">3004</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-3005"><a href="#L-3005"><span class="linenos">3005</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3006"><a href="#L-3006"><span class="linenos">3006</span></a> +</span><span id="L-3007"><a href="#L-3007"><span class="linenos">3007</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-3008"><a href="#L-3008"><span class="linenos">3008</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="L-3009"><a href="#L-3009"><span class="linenos">3009</span></a> +</span><span id="L-3010"><a href="#L-3010"><span class="linenos">3010</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> +</span><span id="L-3011"><a href="#L-3011"><span class="linenos">3011</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3012"><a href="#L-3012"><span class="linenos">3012</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-3013"><a href="#L-3013"><span class="linenos">3013</span></a> -</span><span id="L-3014"><a href="#L-3014"><span class="linenos">3014</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3015"><a href="#L-3015"><span class="linenos">3015</span></a> -</span><span id="L-3016"><a href="#L-3016"><span class="linenos">3016</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3017"><a href="#L-3017"><span class="linenos">3017</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> -</span><span id="L-3018"><a href="#L-3018"><span class="linenos">3018</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="L-3019"><a href="#L-3019"><span class="linenos">3019</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="L-3020"><a href="#L-3020"><span class="linenos">3020</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> -</span><span id="L-3021"><a href="#L-3021"><span class="linenos">3021</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> -</span><span id="L-3022"><a href="#L-3022"><span class="linenos">3022</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> -</span><span id="L-3023"><a href="#L-3023"><span class="linenos">3023</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> -</span><span id="L-3024"><a href="#L-3024"><span class="linenos">3024</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> -</span><span id="L-3025"><a href="#L-3025"><span class="linenos">3025</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="L-3026"><a href="#L-3026"><span class="linenos">3026</span></a> <span class="p">)</span> -</span><span id="L-3027"><a href="#L-3027"><span class="linenos">3027</span></a> -</span><span id="L-3028"><a href="#L-3028"><span class="linenos">3028</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">]:</span> -</span><span id="L-3029"><a href="#L-3029"><span class="linenos">3029</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> -</span><span id="L-3030"><a href="#L-3030"><span class="linenos">3030</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cross_apply</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">):</span> -</span><span id="L-3031"><a href="#L-3031"><span class="linenos">3031</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3032"><a href="#L-3032"><span class="linenos">3032</span></a> -</span><span id="L-3033"><a href="#L-3033"><span class="linenos">3033</span></a> <span class="k">if</span> <span class="n">cross_apply</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-3034"><a href="#L-3034"><span class="linenos">3034</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3035"><a href="#L-3035"><span class="linenos">3035</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3036"><a href="#L-3036"><span class="linenos">3036</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3037"><a href="#L-3037"><span class="linenos">3037</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> -</span><span id="L-3038"><a href="#L-3038"><span class="linenos">3038</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3039"><a href="#L-3039"><span class="linenos">3039</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> -</span><span id="L-3040"><a href="#L-3040"><span class="linenos">3040</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> -</span><span id="L-3041"><a href="#L-3041"><span class="linenos">3041</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3042"><a href="#L-3042"><span class="linenos">3042</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3043"><a href="#L-3043"><span class="linenos">3043</span></a> -</span><span id="L-3044"><a href="#L-3044"><span class="linenos">3044</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-3045"><a href="#L-3045"><span class="linenos">3045</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-3046"><a href="#L-3046"><span class="linenos">3046</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="L-3047"><a href="#L-3047"><span class="linenos">3047</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="L-3048"><a href="#L-3048"><span class="linenos">3048</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3049"><a href="#L-3049"><span class="linenos">3049</span></a> <span class="p">)</span> -</span><span id="L-3050"><a href="#L-3050"><span class="linenos">3050</span></a> -</span><span id="L-3051"><a href="#L-3051"><span class="linenos">3051</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-3052"><a href="#L-3052"><span class="linenos">3052</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> -</span><span id="L-3053"><a href="#L-3053"><span class="linenos">3053</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3054"><a href="#L-3054"><span class="linenos">3054</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-3055"><a href="#L-3055"><span class="linenos">3055</span></a> <span class="p">)</span> +</span><span id="L-3014"><a href="#L-3014"><span class="linenos">3014</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-3015"><a href="#L-3015"><span class="linenos">3015</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> +</span><span id="L-3016"><a href="#L-3016"><span class="linenos">3016</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> +</span><span id="L-3017"><a href="#L-3017"><span class="linenos">3017</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3018"><a href="#L-3018"><span class="linenos">3018</span></a> <span class="p">)</span> +</span><span id="L-3019"><a href="#L-3019"><span class="linenos">3019</span></a> +</span><span id="L-3020"><a href="#L-3020"><span class="linenos">3020</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3021"><a href="#L-3021"><span class="linenos">3021</span></a> +</span><span id="L-3022"><a href="#L-3022"><span class="linenos">3022</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3023"><a href="#L-3023"><span class="linenos">3023</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> +</span><span id="L-3024"><a href="#L-3024"><span class="linenos">3024</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="L-3025"><a href="#L-3025"><span class="linenos">3025</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="L-3026"><a href="#L-3026"><span class="linenos">3026</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> +</span><span id="L-3027"><a href="#L-3027"><span class="linenos">3027</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> +</span><span id="L-3028"><a href="#L-3028"><span class="linenos">3028</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> +</span><span id="L-3029"><a href="#L-3029"><span class="linenos">3029</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> +</span><span id="L-3030"><a href="#L-3030"><span class="linenos">3030</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> +</span><span id="L-3031"><a href="#L-3031"><span class="linenos">3031</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="L-3032"><a href="#L-3032"><span class="linenos">3032</span></a> <span class="p">)</span> +</span><span id="L-3033"><a href="#L-3033"><span class="linenos">3033</span></a> +</span><span id="L-3034"><a href="#L-3034"><span class="linenos">3034</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">]:</span> +</span><span id="L-3035"><a href="#L-3035"><span class="linenos">3035</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> +</span><span id="L-3036"><a href="#L-3036"><span class="linenos">3036</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cross_apply</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">):</span> +</span><span id="L-3037"><a href="#L-3037"><span class="linenos">3037</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3038"><a href="#L-3038"><span class="linenos">3038</span></a> +</span><span id="L-3039"><a href="#L-3039"><span class="linenos">3039</span></a> <span class="k">if</span> <span class="n">cross_apply</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-3040"><a href="#L-3040"><span class="linenos">3040</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3041"><a href="#L-3041"><span class="linenos">3041</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3042"><a href="#L-3042"><span class="linenos">3042</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3043"><a href="#L-3043"><span class="linenos">3043</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> +</span><span id="L-3044"><a href="#L-3044"><span class="linenos">3044</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3045"><a href="#L-3045"><span class="linenos">3045</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> +</span><span id="L-3046"><a href="#L-3046"><span class="linenos">3046</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> +</span><span id="L-3047"><a href="#L-3047"><span class="linenos">3047</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3048"><a href="#L-3048"><span class="linenos">3048</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3049"><a href="#L-3049"><span class="linenos">3049</span></a> +</span><span id="L-3050"><a href="#L-3050"><span class="linenos">3050</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-3051"><a href="#L-3051"><span class="linenos">3051</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-3052"><a href="#L-3052"><span class="linenos">3052</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="L-3053"><a href="#L-3053"><span class="linenos">3053</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="L-3054"><a href="#L-3054"><span class="linenos">3054</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3055"><a href="#L-3055"><span class="linenos">3055</span></a> <span class="p">)</span> </span><span id="L-3056"><a href="#L-3056"><span class="linenos">3056</span></a> -</span><span id="L-3057"><a href="#L-3057"><span class="linenos">3057</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> -</span><span id="L-3058"><a href="#L-3058"><span class="linenos">3058</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3059"><a href="#L-3059"><span class="linenos">3059</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="L-3060"><a href="#L-3060"><span class="linenos">3060</span></a> <span class="n">table_alias</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3061"><a href="#L-3061"><span class="linenos">3061</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span> -</span><span id="L-3062"><a href="#L-3062"><span class="linenos">3062</span></a> <span class="p">)</span> -</span><span id="L-3063"><a href="#L-3063"><span class="linenos">3063</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">))</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> -</span><span id="L-3064"><a href="#L-3064"><span class="linenos">3064</span></a> <span class="c1"># We move the alias from the lateral's child node to the lateral itself</span> -</span><span id="L-3065"><a href="#L-3065"><span class="linenos">3065</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> -</span><span id="L-3066"><a href="#L-3066"><span class="linenos">3066</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3067"><a href="#L-3067"><span class="linenos">3067</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="L-3068"><a href="#L-3068"><span class="linenos">3068</span></a> -</span><span id="L-3069"><a href="#L-3069"><span class="linenos">3069</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3070"><a href="#L-3070"><span class="linenos">3070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="L-3071"><a href="#L-3071"><span class="linenos">3071</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3072"><a href="#L-3072"><span class="linenos">3072</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> -</span><span id="L-3073"><a href="#L-3073"><span class="linenos">3073</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> -</span><span id="L-3074"><a href="#L-3074"><span class="linenos">3074</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> -</span><span id="L-3075"><a href="#L-3075"><span class="linenos">3075</span></a> <span class="n">cross_apply</span><span class="o">=</span><span class="n">cross_apply</span><span class="p">,</span> -</span><span id="L-3076"><a href="#L-3076"><span class="linenos">3076</span></a> <span class="p">)</span> -</span><span id="L-3077"><a href="#L-3077"><span class="linenos">3077</span></a> -</span><span id="L-3078"><a href="#L-3078"><span class="linenos">3078</span></a> <span class="k">def</span> <span class="nf">_parse_join_parts</span><span class="p">(</span> -</span><span id="L-3079"><a href="#L-3079"><span class="linenos">3079</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-3080"><a href="#L-3080"><span class="linenos">3080</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">Token</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">Token</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">Token</span><span class="p">]]:</span> -</span><span id="L-3081"><a href="#L-3081"><span class="linenos">3081</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-3082"><a href="#L-3082"><span class="linenos">3082</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_METHODS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="L-3083"><a href="#L-3083"><span class="linenos">3083</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="L-3084"><a href="#L-3084"><span class="linenos">3084</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="L-3085"><a href="#L-3085"><span class="linenos">3085</span></a> <span class="p">)</span> -</span><span id="L-3086"><a href="#L-3086"><span class="linenos">3086</span></a> -</span><span id="L-3087"><a href="#L-3087"><span class="linenos">3087</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span> -</span><span id="L-3088"><a href="#L-3088"><span class="linenos">3088</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3089"><a href="#L-3089"><span class="linenos">3089</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> -</span><span id="L-3090"><a href="#L-3090"><span class="linenos">3090</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-3091"><a href="#L-3091"><span class="linenos">3091</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="L-3057"><a href="#L-3057"><span class="linenos">3057</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-3058"><a href="#L-3058"><span class="linenos">3058</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> +</span><span id="L-3059"><a href="#L-3059"><span class="linenos">3059</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3060"><a href="#L-3060"><span class="linenos">3060</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-3061"><a href="#L-3061"><span class="linenos">3061</span></a> <span class="p">)</span> +</span><span id="L-3062"><a href="#L-3062"><span class="linenos">3062</span></a> +</span><span id="L-3063"><a href="#L-3063"><span class="linenos">3063</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> +</span><span id="L-3064"><a href="#L-3064"><span class="linenos">3064</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3065"><a href="#L-3065"><span class="linenos">3065</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="L-3066"><a href="#L-3066"><span class="linenos">3066</span></a> <span class="n">table_alias</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3067"><a href="#L-3067"><span class="linenos">3067</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span> +</span><span id="L-3068"><a href="#L-3068"><span class="linenos">3068</span></a> <span class="p">)</span> +</span><span id="L-3069"><a href="#L-3069"><span class="linenos">3069</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">))</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> +</span><span id="L-3070"><a href="#L-3070"><span class="linenos">3070</span></a> <span class="c1"># We move the alias from the lateral's child node to the lateral itself</span> +</span><span id="L-3071"><a href="#L-3071"><span class="linenos">3071</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> +</span><span id="L-3072"><a href="#L-3072"><span class="linenos">3072</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3073"><a href="#L-3073"><span class="linenos">3073</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="L-3074"><a href="#L-3074"><span class="linenos">3074</span></a> +</span><span id="L-3075"><a href="#L-3075"><span class="linenos">3075</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3076"><a href="#L-3076"><span class="linenos">3076</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="L-3077"><a href="#L-3077"><span class="linenos">3077</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3078"><a href="#L-3078"><span class="linenos">3078</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> +</span><span id="L-3079"><a href="#L-3079"><span class="linenos">3079</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> +</span><span id="L-3080"><a href="#L-3080"><span class="linenos">3080</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> +</span><span id="L-3081"><a href="#L-3081"><span class="linenos">3081</span></a> <span class="n">cross_apply</span><span class="o">=</span><span class="n">cross_apply</span><span class="p">,</span> +</span><span id="L-3082"><a href="#L-3082"><span class="linenos">3082</span></a> <span class="p">)</span> +</span><span id="L-3083"><a href="#L-3083"><span class="linenos">3083</span></a> +</span><span id="L-3084"><a href="#L-3084"><span class="linenos">3084</span></a> <span class="k">def</span> <span class="nf">_parse_join_parts</span><span class="p">(</span> +</span><span id="L-3085"><a href="#L-3085"><span class="linenos">3085</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-3086"><a href="#L-3086"><span class="linenos">3086</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">Token</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">Token</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">Token</span><span class="p">]]:</span> +</span><span id="L-3087"><a href="#L-3087"><span class="linenos">3087</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-3088"><a href="#L-3088"><span class="linenos">3088</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_METHODS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="L-3089"><a href="#L-3089"><span class="linenos">3089</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="L-3090"><a href="#L-3090"><span class="linenos">3090</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="L-3091"><a href="#L-3091"><span class="linenos">3091</span></a> <span class="p">)</span> </span><span id="L-3092"><a href="#L-3092"><span class="linenos">3092</span></a> -</span><span id="L-3093"><a href="#L-3093"><span class="linenos">3093</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3094"><a href="#L-3094"><span class="linenos">3094</span></a> <span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">()</span> -</span><span id="L-3095"><a href="#L-3095"><span class="linenos">3095</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_HINTS</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3096"><a href="#L-3096"><span class="linenos">3096</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">)</span> -</span><span id="L-3097"><a href="#L-3097"><span class="linenos">3097</span></a> -</span><span id="L-3098"><a href="#L-3098"><span class="linenos">3098</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="p">:</span> -</span><span id="L-3099"><a href="#L-3099"><span class="linenos">3099</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3100"><a href="#L-3100"><span class="linenos">3100</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3101"><a href="#L-3101"><span class="linenos">3101</span></a> <span class="n">method</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3102"><a href="#L-3102"><span class="linenos">3102</span></a> <span class="n">side</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3093"><a href="#L-3093"><span class="linenos">3093</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span> +</span><span id="L-3094"><a href="#L-3094"><span class="linenos">3094</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3095"><a href="#L-3095"><span class="linenos">3095</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> +</span><span id="L-3096"><a href="#L-3096"><span class="linenos">3096</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-3097"><a href="#L-3097"><span class="linenos">3097</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="L-3098"><a href="#L-3098"><span class="linenos">3098</span></a> +</span><span id="L-3099"><a href="#L-3099"><span class="linenos">3099</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3100"><a href="#L-3100"><span class="linenos">3100</span></a> <span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">()</span> +</span><span id="L-3101"><a href="#L-3101"><span class="linenos">3101</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_HINTS</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3102"><a href="#L-3102"><span class="linenos">3102</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">)</span> </span><span id="L-3103"><a href="#L-3103"><span class="linenos">3103</span></a> -</span><span id="L-3104"><a href="#L-3104"><span class="linenos">3104</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-3105"><a href="#L-3105"><span class="linenos">3105</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-3106"><a href="#L-3106"><span class="linenos">3106</span></a> -</span><span id="L-3107"><a href="#L-3107"><span class="linenos">3107</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">outer_apply</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cross_apply</span><span class="p">:</span> -</span><span id="L-3108"><a href="#L-3108"><span class="linenos">3108</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3104"><a href="#L-3104"><span class="linenos">3104</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="p">:</span> +</span><span id="L-3105"><a href="#L-3105"><span class="linenos">3105</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3106"><a href="#L-3106"><span class="linenos">3106</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3107"><a href="#L-3107"><span class="linenos">3107</span></a> <span class="n">method</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3108"><a href="#L-3108"><span class="linenos">3108</span></a> <span class="n">side</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-3109"><a href="#L-3109"><span class="linenos">3109</span></a> -</span><span id="L-3110"><a href="#L-3110"><span class="linenos">3110</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">)}</span> -</span><span id="L-3111"><a href="#L-3111"><span class="linenos">3111</span></a> -</span><span id="L-3112"><a href="#L-3112"><span class="linenos">3112</span></a> <span class="k">if</span> <span class="n">method</span><span class="p">:</span> -</span><span id="L-3113"><a href="#L-3113"><span class="linenos">3113</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"method"</span><span class="p">]</span> <span class="o">=</span> <span class="n">method</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-3114"><a href="#L-3114"><span class="linenos">3114</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="L-3115"><a href="#L-3115"><span class="linenos">3115</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-3116"><a href="#L-3116"><span class="linenos">3116</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-3117"><a href="#L-3117"><span class="linenos">3117</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-3118"><a href="#L-3118"><span class="linenos">3118</span></a> <span class="k">if</span> <span class="n">hint</span><span class="p">:</span> -</span><span id="L-3119"><a href="#L-3119"><span class="linenos">3119</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"hint"</span><span class="p">]</span> <span class="o">=</span> <span class="n">hint</span> -</span><span id="L-3120"><a href="#L-3120"><span class="linenos">3120</span></a> -</span><span id="L-3121"><a href="#L-3121"><span class="linenos">3121</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_CONDITION</span><span class="p">):</span> -</span><span id="L-3122"><a href="#L-3122"><span class="linenos">3122</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"match_condition"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">)</span> -</span><span id="L-3123"><a href="#L-3123"><span class="linenos">3123</span></a> -</span><span id="L-3124"><a href="#L-3124"><span class="linenos">3124</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-3125"><a href="#L-3125"><span class="linenos">3125</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3126"><a href="#L-3126"><span class="linenos">3126</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="L-3127"><a href="#L-3127"><span class="linenos">3127</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-3128"><a href="#L-3128"><span class="linenos">3128</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> -</span><span id="L-3129"><a href="#L-3129"><span class="linenos">3129</span></a> <span class="n">kind</span> <span class="ow">and</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span> -</span><span id="L-3130"><a href="#L-3130"><span class="linenos">3130</span></a> <span class="p">):</span> -</span><span id="L-3131"><a href="#L-3131"><span class="linenos">3131</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3132"><a href="#L-3132"><span class="linenos">3132</span></a> <span class="n">joins</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">list</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">())</span> -</span><span id="L-3133"><a href="#L-3133"><span class="linenos">3133</span></a> -</span><span id="L-3134"><a href="#L-3134"><span class="linenos">3134</span></a> <span class="k">if</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-3135"><a href="#L-3135"><span class="linenos">3135</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3136"><a href="#L-3136"><span class="linenos">3136</span></a> <span class="k">elif</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="L-3137"><a href="#L-3137"><span class="linenos">3137</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-3138"><a href="#L-3138"><span class="linenos">3138</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3139"><a href="#L-3139"><span class="linenos">3139</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3140"><a href="#L-3140"><span class="linenos">3140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3141"><a href="#L-3141"><span class="linenos">3141</span></a> -</span><span id="L-3142"><a href="#L-3142"><span class="linenos">3142</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">joins</span> <span class="k">if</span> <span class="n">joins</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-3143"><a href="#L-3143"><span class="linenos">3143</span></a> -</span><span id="L-3144"><a href="#L-3144"><span class="linenos">3144</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span> <span class="k">if</span> <span class="n">token</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">]</span> -</span><span id="L-3145"><a href="#L-3145"><span class="linenos">3145</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-3146"><a href="#L-3146"><span class="linenos">3146</span></a> -</span><span id="L-3147"><a href="#L-3147"><span class="linenos">3147</span></a> <span class="k">def</span> <span class="nf">_parse_opclass</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3148"><a href="#L-3148"><span class="linenos">3148</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3110"><a href="#L-3110"><span class="linenos">3110</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="L-3111"><a href="#L-3111"><span class="linenos">3111</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="L-3112"><a href="#L-3112"><span class="linenos">3112</span></a> +</span><span id="L-3113"><a href="#L-3113"><span class="linenos">3113</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">outer_apply</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cross_apply</span><span class="p">:</span> +</span><span id="L-3114"><a href="#L-3114"><span class="linenos">3114</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3115"><a href="#L-3115"><span class="linenos">3115</span></a> +</span><span id="L-3116"><a href="#L-3116"><span class="linenos">3116</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">)}</span> +</span><span id="L-3117"><a href="#L-3117"><span class="linenos">3117</span></a> +</span><span id="L-3118"><a href="#L-3118"><span class="linenos">3118</span></a> <span class="k">if</span> <span class="n">method</span><span class="p">:</span> +</span><span id="L-3119"><a href="#L-3119"><span class="linenos">3119</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"method"</span><span class="p">]</span> <span class="o">=</span> <span class="n">method</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3120"><a href="#L-3120"><span class="linenos">3120</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="L-3121"><a href="#L-3121"><span class="linenos">3121</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3122"><a href="#L-3122"><span class="linenos">3122</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-3123"><a href="#L-3123"><span class="linenos">3123</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3124"><a href="#L-3124"><span class="linenos">3124</span></a> <span class="k">if</span> <span class="n">hint</span><span class="p">:</span> +</span><span id="L-3125"><a href="#L-3125"><span class="linenos">3125</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"hint"</span><span class="p">]</span> <span class="o">=</span> <span class="n">hint</span> +</span><span id="L-3126"><a href="#L-3126"><span class="linenos">3126</span></a> +</span><span id="L-3127"><a href="#L-3127"><span class="linenos">3127</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_CONDITION</span><span class="p">):</span> +</span><span id="L-3128"><a href="#L-3128"><span class="linenos">3128</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"match_condition"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">)</span> +</span><span id="L-3129"><a href="#L-3129"><span class="linenos">3129</span></a> +</span><span id="L-3130"><a href="#L-3130"><span class="linenos">3130</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-3131"><a href="#L-3131"><span class="linenos">3131</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3132"><a href="#L-3132"><span class="linenos">3132</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="L-3133"><a href="#L-3133"><span class="linenos">3133</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-3134"><a href="#L-3134"><span class="linenos">3134</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> +</span><span id="L-3135"><a href="#L-3135"><span class="linenos">3135</span></a> <span class="n">kind</span> <span class="ow">and</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span> +</span><span id="L-3136"><a href="#L-3136"><span class="linenos">3136</span></a> <span class="p">):</span> +</span><span id="L-3137"><a href="#L-3137"><span class="linenos">3137</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3138"><a href="#L-3138"><span class="linenos">3138</span></a> <span class="n">joins</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">list</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">())</span> +</span><span id="L-3139"><a href="#L-3139"><span class="linenos">3139</span></a> +</span><span id="L-3140"><a href="#L-3140"><span class="linenos">3140</span></a> <span class="k">if</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-3141"><a href="#L-3141"><span class="linenos">3141</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3142"><a href="#L-3142"><span class="linenos">3142</span></a> <span class="k">elif</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="L-3143"><a href="#L-3143"><span class="linenos">3143</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-3144"><a href="#L-3144"><span class="linenos">3144</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3145"><a href="#L-3145"><span class="linenos">3145</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3146"><a href="#L-3146"><span class="linenos">3146</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3147"><a href="#L-3147"><span class="linenos">3147</span></a> +</span><span id="L-3148"><a href="#L-3148"><span class="linenos">3148</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">joins</span> <span class="k">if</span> <span class="n">joins</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> </span><span id="L-3149"><a href="#L-3149"><span class="linenos">3149</span></a> -</span><span id="L-3150"><a href="#L-3150"><span class="linenos">3150</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPCLASS_FOLLOW_KEYWORDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3151"><a href="#L-3151"><span class="linenos">3151</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3150"><a href="#L-3150"><span class="linenos">3150</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span> <span class="k">if</span> <span class="n">token</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">]</span> +</span><span id="L-3151"><a href="#L-3151"><span class="linenos">3151</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-3152"><a href="#L-3152"><span class="linenos">3152</span></a> -</span><span id="L-3153"><a href="#L-3153"><span class="linenos">3153</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPTYPE_FOLLOW_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3154"><a href="#L-3154"><span class="linenos">3154</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Opclass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> +</span><span id="L-3153"><a href="#L-3153"><span class="linenos">3153</span></a> <span class="k">def</span> <span class="nf">_parse_opclass</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3154"><a href="#L-3154"><span class="linenos">3154</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> </span><span id="L-3155"><a href="#L-3155"><span class="linenos">3155</span></a> -</span><span id="L-3156"><a href="#L-3156"><span class="linenos">3156</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3157"><a href="#L-3157"><span class="linenos">3157</span></a> -</span><span id="L-3158"><a href="#L-3158"><span class="linenos">3158</span></a> <span class="k">def</span> <span class="nf">_parse_index_params</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">:</span> -</span><span id="L-3159"><a href="#L-3159"><span class="linenos">3159</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3160"><a href="#L-3160"><span class="linenos">3160</span></a> -</span><span id="L-3161"><a href="#L-3161"><span class="linenos">3161</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3162"><a href="#L-3162"><span class="linenos">3162</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_operator</span><span class="p">)</span> -</span><span id="L-3163"><a href="#L-3163"><span class="linenos">3163</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3164"><a href="#L-3164"><span class="linenos">3164</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3165"><a href="#L-3165"><span class="linenos">3165</span></a> -</span><span id="L-3166"><a href="#L-3166"><span class="linenos">3166</span></a> <span class="n">include</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3167"><a href="#L-3167"><span class="linenos">3167</span></a> <span class="n">partition_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="L-3168"><a href="#L-3168"><span class="linenos">3168</span></a> <span class="n">with_storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> -</span><span id="L-3169"><a href="#L-3169"><span class="linenos">3169</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-3170"><a href="#L-3170"><span class="linenos">3170</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3171"><a href="#L-3171"><span class="linenos">3171</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"TABLESPACE"</span><span class="p">)</span> -</span><span id="L-3172"><a href="#L-3172"><span class="linenos">3172</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3173"><a href="#L-3173"><span class="linenos">3173</span></a> <span class="p">)</span> -</span><span id="L-3174"><a href="#L-3174"><span class="linenos">3174</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> -</span><span id="L-3175"><a href="#L-3175"><span class="linenos">3175</span></a> -</span><span id="L-3176"><a href="#L-3176"><span class="linenos">3176</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3177"><a href="#L-3177"><span class="linenos">3177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">,</span> -</span><span id="L-3178"><a href="#L-3178"><span class="linenos">3178</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> -</span><span id="L-3179"><a href="#L-3179"><span class="linenos">3179</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> -</span><span id="L-3180"><a href="#L-3180"><span class="linenos">3180</span></a> <span class="n">include</span><span class="o">=</span><span class="n">include</span><span class="p">,</span> -</span><span id="L-3181"><a href="#L-3181"><span class="linenos">3181</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition_by</span><span class="p">,</span> -</span><span id="L-3182"><a href="#L-3182"><span class="linenos">3182</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> -</span><span id="L-3183"><a href="#L-3183"><span class="linenos">3183</span></a> <span class="n">with_storage</span><span class="o">=</span><span class="n">with_storage</span><span class="p">,</span> -</span><span id="L-3184"><a href="#L-3184"><span class="linenos">3184</span></a> <span class="n">tablespace</span><span class="o">=</span><span class="n">tablespace</span><span class="p">,</span> -</span><span id="L-3185"><a href="#L-3185"><span class="linenos">3185</span></a> <span class="p">)</span> -</span><span id="L-3186"><a href="#L-3186"><span class="linenos">3186</span></a> -</span><span id="L-3187"><a href="#L-3187"><span class="linenos">3187</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span> -</span><span id="L-3188"><a href="#L-3188"><span class="linenos">3188</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">index</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3189"><a href="#L-3189"><span class="linenos">3189</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">]:</span> -</span><span id="L-3190"><a href="#L-3190"><span class="linenos">3190</span></a> <span class="k">if</span> <span class="n">index</span> <span class="ow">or</span> <span class="n">anonymous</span><span class="p">:</span> -</span><span id="L-3191"><a href="#L-3191"><span class="linenos">3191</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3192"><a href="#L-3192"><span class="linenos">3192</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3193"><a href="#L-3193"><span class="linenos">3193</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3194"><a href="#L-3194"><span class="linenos">3194</span></a> -</span><span id="L-3195"><a href="#L-3195"><span class="linenos">3195</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-3196"><a href="#L-3196"><span class="linenos">3196</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> -</span><span id="L-3197"><a href="#L-3197"><span class="linenos">3197</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3198"><a href="#L-3198"><span class="linenos">3198</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3199"><a href="#L-3199"><span class="linenos">3199</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="L-3200"><a href="#L-3200"><span class="linenos">3200</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> -</span><span id="L-3201"><a href="#L-3201"><span class="linenos">3201</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> -</span><span id="L-3202"><a href="#L-3202"><span class="linenos">3202</span></a> -</span><span id="L-3203"><a href="#L-3203"><span class="linenos">3203</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> -</span><span id="L-3204"><a href="#L-3204"><span class="linenos">3204</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3205"><a href="#L-3205"><span class="linenos">3205</span></a> -</span><span id="L-3206"><a href="#L-3206"><span class="linenos">3206</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-3207"><a href="#L-3207"><span class="linenos">3207</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3156"><a href="#L-3156"><span class="linenos">3156</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPCLASS_FOLLOW_KEYWORDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3157"><a href="#L-3157"><span class="linenos">3157</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3158"><a href="#L-3158"><span class="linenos">3158</span></a> +</span><span id="L-3159"><a href="#L-3159"><span class="linenos">3159</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPTYPE_FOLLOW_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3160"><a href="#L-3160"><span class="linenos">3160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Opclass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> +</span><span id="L-3161"><a href="#L-3161"><span class="linenos">3161</span></a> +</span><span id="L-3162"><a href="#L-3162"><span class="linenos">3162</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3163"><a href="#L-3163"><span class="linenos">3163</span></a> +</span><span id="L-3164"><a href="#L-3164"><span class="linenos">3164</span></a> <span class="k">def</span> <span class="nf">_parse_index_params</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">:</span> +</span><span id="L-3165"><a href="#L-3165"><span class="linenos">3165</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3166"><a href="#L-3166"><span class="linenos">3166</span></a> +</span><span id="L-3167"><a href="#L-3167"><span class="linenos">3167</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3168"><a href="#L-3168"><span class="linenos">3168</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_operator</span><span class="p">)</span> +</span><span id="L-3169"><a href="#L-3169"><span class="linenos">3169</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3170"><a href="#L-3170"><span class="linenos">3170</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3171"><a href="#L-3171"><span class="linenos">3171</span></a> +</span><span id="L-3172"><a href="#L-3172"><span class="linenos">3172</span></a> <span class="n">include</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3173"><a href="#L-3173"><span class="linenos">3173</span></a> <span class="n">partition_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="L-3174"><a href="#L-3174"><span class="linenos">3174</span></a> <span class="n">with_storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> +</span><span id="L-3175"><a href="#L-3175"><span class="linenos">3175</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-3176"><a href="#L-3176"><span class="linenos">3176</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3177"><a href="#L-3177"><span class="linenos">3177</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"TABLESPACE"</span><span class="p">)</span> +</span><span id="L-3178"><a href="#L-3178"><span class="linenos">3178</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3179"><a href="#L-3179"><span class="linenos">3179</span></a> <span class="p">)</span> +</span><span id="L-3180"><a href="#L-3180"><span class="linenos">3180</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> +</span><span id="L-3181"><a href="#L-3181"><span class="linenos">3181</span></a> +</span><span id="L-3182"><a href="#L-3182"><span class="linenos">3182</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3183"><a href="#L-3183"><span class="linenos">3183</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">,</span> +</span><span id="L-3184"><a href="#L-3184"><span class="linenos">3184</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> +</span><span id="L-3185"><a href="#L-3185"><span class="linenos">3185</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> +</span><span id="L-3186"><a href="#L-3186"><span class="linenos">3186</span></a> <span class="n">include</span><span class="o">=</span><span class="n">include</span><span class="p">,</span> +</span><span id="L-3187"><a href="#L-3187"><span class="linenos">3187</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition_by</span><span class="p">,</span> +</span><span id="L-3188"><a href="#L-3188"><span class="linenos">3188</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> +</span><span id="L-3189"><a href="#L-3189"><span class="linenos">3189</span></a> <span class="n">with_storage</span><span class="o">=</span><span class="n">with_storage</span><span class="p">,</span> +</span><span id="L-3190"><a href="#L-3190"><span class="linenos">3190</span></a> <span class="n">tablespace</span><span class="o">=</span><span class="n">tablespace</span><span class="p">,</span> +</span><span id="L-3191"><a href="#L-3191"><span class="linenos">3191</span></a> <span class="p">)</span> +</span><span id="L-3192"><a href="#L-3192"><span class="linenos">3192</span></a> +</span><span id="L-3193"><a href="#L-3193"><span class="linenos">3193</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span> +</span><span id="L-3194"><a href="#L-3194"><span class="linenos">3194</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">index</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3195"><a href="#L-3195"><span class="linenos">3195</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">]:</span> +</span><span id="L-3196"><a href="#L-3196"><span class="linenos">3196</span></a> <span class="k">if</span> <span class="n">index</span> <span class="ow">or</span> <span class="n">anonymous</span><span class="p">:</span> +</span><span id="L-3197"><a href="#L-3197"><span class="linenos">3197</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3198"><a href="#L-3198"><span class="linenos">3198</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3199"><a href="#L-3199"><span class="linenos">3199</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3200"><a href="#L-3200"><span class="linenos">3200</span></a> +</span><span id="L-3201"><a href="#L-3201"><span class="linenos">3201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-3202"><a href="#L-3202"><span class="linenos">3202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> +</span><span id="L-3203"><a href="#L-3203"><span class="linenos">3203</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3204"><a href="#L-3204"><span class="linenos">3204</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3205"><a href="#L-3205"><span class="linenos">3205</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> +</span><span id="L-3206"><a href="#L-3206"><span class="linenos">3206</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> +</span><span id="L-3207"><a href="#L-3207"><span class="linenos">3207</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> </span><span id="L-3208"><a href="#L-3208"><span class="linenos">3208</span></a> -</span><span id="L-3209"><a href="#L-3209"><span class="linenos">3209</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> -</span><span id="L-3210"><a href="#L-3210"><span class="linenos">3210</span></a> -</span><span id="L-3211"><a href="#L-3211"><span class="linenos">3211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3212"><a href="#L-3212"><span class="linenos">3212</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> -</span><span id="L-3213"><a href="#L-3213"><span class="linenos">3213</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> -</span><span id="L-3214"><a href="#L-3214"><span class="linenos">3214</span></a> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="L-3215"><a href="#L-3215"><span class="linenos">3215</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="L-3216"><a href="#L-3216"><span class="linenos">3216</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> -</span><span id="L-3217"><a href="#L-3217"><span class="linenos">3217</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> -</span><span id="L-3218"><a href="#L-3218"><span class="linenos">3218</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> -</span><span id="L-3219"><a href="#L-3219"><span class="linenos">3219</span></a> <span class="p">)</span> -</span><span id="L-3220"><a href="#L-3220"><span class="linenos">3220</span></a> -</span><span id="L-3221"><a href="#L-3221"><span class="linenos">3221</span></a> <span class="k">def</span> <span class="nf">_parse_table_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3222"><a href="#L-3222"><span class="linenos">3222</span></a> <span class="n">hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3223"><a href="#L-3223"><span class="linenos">3223</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3224"><a href="#L-3224"><span class="linenos">3224</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver16</span> -</span><span id="L-3225"><a href="#L-3225"><span class="linenos">3225</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-3226"><a href="#L-3226"><span class="linenos">3226</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3227"><a href="#L-3227"><span class="linenos">3227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithTableHint</span><span class="p">,</span> -</span><span id="L-3228"><a href="#L-3228"><span class="linenos">3228</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-3229"><a href="#L-3229"><span class="linenos">3229</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3230"><a href="#L-3230"><span class="linenos">3230</span></a> <span class="p">),</span> -</span><span id="L-3231"><a href="#L-3231"><span class="linenos">3231</span></a> <span class="p">)</span> -</span><span id="L-3232"><a href="#L-3232"><span class="linenos">3232</span></a> <span class="p">)</span> -</span><span id="L-3233"><a href="#L-3233"><span class="linenos">3233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3234"><a href="#L-3234"><span class="linenos">3234</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3235"><a href="#L-3235"><span class="linenos">3235</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/index-hints.html</span> -</span><span id="L-3236"><a href="#L-3236"><span class="linenos">3236</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TABLE_INDEX_HINT_TOKENS</span><span class="p">):</span> -</span><span id="L-3237"><a href="#L-3237"><span class="linenos">3237</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexTableHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-3238"><a href="#L-3238"><span class="linenos">3238</span></a> -</span><span id="L-3239"><a href="#L-3239"><span class="linenos">3239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">))</span> -</span><span id="L-3240"><a href="#L-3240"><span class="linenos">3240</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-3241"><a href="#L-3241"><span class="linenos">3241</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"target"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-3242"><a href="#L-3242"><span class="linenos">3242</span></a> -</span><span id="L-3243"><a href="#L-3243"><span class="linenos">3243</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> -</span><span id="L-3244"><a href="#L-3244"><span class="linenos">3244</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> -</span><span id="L-3245"><a href="#L-3245"><span class="linenos">3245</span></a> -</span><span id="L-3246"><a href="#L-3246"><span class="linenos">3246</span></a> <span class="k">return</span> <span class="n">hints</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="L-3247"><a href="#L-3247"><span class="linenos">3247</span></a> -</span><span id="L-3248"><a href="#L-3248"><span class="linenos">3248</span></a> <span class="k">def</span> <span class="nf">_parse_table_part</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3249"><a href="#L-3249"><span class="linenos">3249</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-3250"><a href="#L-3250"><span class="linenos">3250</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">optional_parens</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-3251"><a href="#L-3251"><span class="linenos">3251</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3252"><a href="#L-3252"><span class="linenos">3252</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> -</span><span id="L-3253"><a href="#L-3253"><span class="linenos">3253</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-3254"><a href="#L-3254"><span class="linenos">3254</span></a> <span class="p">)</span> -</span><span id="L-3255"><a href="#L-3255"><span class="linenos">3255</span></a> -</span><span id="L-3256"><a href="#L-3256"><span class="linenos">3256</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span> -</span><span id="L-3257"><a href="#L-3257"><span class="linenos">3257</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">wildcard</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3258"><a href="#L-3258"><span class="linenos">3258</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> -</span><span id="L-3259"><a href="#L-3259"><span class="linenos">3259</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3260"><a href="#L-3260"><span class="linenos">3260</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3261"><a href="#L-3261"><span class="linenos">3261</span></a> <span class="n">table</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> -</span><span id="L-3262"><a href="#L-3262"><span class="linenos">3262</span></a> -</span><span id="L-3263"><a href="#L-3263"><span class="linenos">3263</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-3264"><a href="#L-3264"><span class="linenos">3264</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> -</span><span id="L-3265"><a href="#L-3265"><span class="linenos">3265</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> -</span><span id="L-3266"><a href="#L-3266"><span class="linenos">3266</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3267"><a href="#L-3267"><span class="linenos">3267</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> -</span><span id="L-3268"><a href="#L-3268"><span class="linenos">3268</span></a> <span class="p">)</span> -</span><span id="L-3269"><a href="#L-3269"><span class="linenos">3269</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3270"><a href="#L-3270"><span class="linenos">3270</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> -</span><span id="L-3271"><a href="#L-3271"><span class="linenos">3271</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="L-3272"><a href="#L-3272"><span class="linenos">3272</span></a> <span class="c1"># "" used for tsql FROM a..b case</span> -</span><span id="L-3273"><a href="#L-3273"><span class="linenos">3273</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="L-3274"><a href="#L-3274"><span class="linenos">3274</span></a> -</span><span id="L-3275"><a href="#L-3275"><span class="linenos">3275</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-3276"><a href="#L-3276"><span class="linenos">3276</span></a> <span class="n">wildcard</span> -</span><span id="L-3277"><a href="#L-3277"><span class="linenos">3277</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> -</span><span id="L-3278"><a href="#L-3278"><span class="linenos">3278</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">table</span><span class="p">)</span> -</span><span id="L-3279"><a href="#L-3279"><span class="linenos">3279</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">)</span> -</span><span id="L-3280"><a href="#L-3280"><span class="linenos">3280</span></a> <span class="p">):</span> -</span><span id="L-3281"><a href="#L-3281"><span class="linenos">3281</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-3282"><a href="#L-3282"><span class="linenos">3282</span></a> <span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span> <span class="o">+=</span> <span class="s2">"*"</span> -</span><span id="L-3283"><a href="#L-3283"><span class="linenos">3283</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3284"><a href="#L-3284"><span class="linenos">3284</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"*"</span><span class="p">)</span> -</span><span id="L-3285"><a href="#L-3285"><span class="linenos">3285</span></a> -</span><span id="L-3286"><a href="#L-3286"><span class="linenos">3286</span></a> <span class="c1"># We bubble up comments from the Identifier to the Table</span> -</span><span id="L-3287"><a href="#L-3287"><span class="linenos">3287</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3288"><a href="#L-3288"><span class="linenos">3288</span></a> -</span><span id="L-3289"><a href="#L-3289"><span class="linenos">3289</span></a> <span class="k">if</span> <span class="n">is_db_reference</span><span class="p">:</span> -</span><span id="L-3290"><a href="#L-3290"><span class="linenos">3290</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> -</span><span id="L-3291"><a href="#L-3291"><span class="linenos">3291</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="L-3292"><a href="#L-3292"><span class="linenos">3292</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3293"><a href="#L-3293"><span class="linenos">3293</span></a> -</span><span id="L-3294"><a href="#L-3294"><span class="linenos">3294</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_db_reference</span><span class="p">:</span> -</span><span id="L-3295"><a href="#L-3295"><span class="linenos">3295</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-3296"><a href="#L-3296"><span class="linenos">3296</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">db</span> <span class="ow">and</span> <span class="n">is_db_reference</span><span class="p">:</span> -</span><span id="L-3297"><a href="#L-3297"><span class="linenos">3297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected database name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-3298"><a href="#L-3298"><span class="linenos">3298</span></a> -</span><span id="L-3299"><a href="#L-3299"><span class="linenos">3299</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3300"><a href="#L-3300"><span class="linenos">3300</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> -</span><span id="L-3301"><a href="#L-3301"><span class="linenos">3301</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-3302"><a href="#L-3302"><span class="linenos">3302</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="L-3303"><a href="#L-3303"><span class="linenos">3303</span></a> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> -</span><span id="L-3304"><a href="#L-3304"><span class="linenos">3304</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> -</span><span id="L-3305"><a href="#L-3305"><span class="linenos">3305</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> -</span><span id="L-3306"><a href="#L-3306"><span class="linenos">3306</span></a> <span class="p">)</span> -</span><span id="L-3307"><a href="#L-3307"><span class="linenos">3307</span></a> -</span><span id="L-3308"><a href="#L-3308"><span class="linenos">3308</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> -</span><span id="L-3309"><a href="#L-3309"><span class="linenos">3309</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-3310"><a href="#L-3310"><span class="linenos">3310</span></a> <span class="n">schema</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-3311"><a href="#L-3311"><span class="linenos">3311</span></a> <span class="n">joins</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-3312"><a href="#L-3312"><span class="linenos">3312</span></a> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3313"><a href="#L-3313"><span class="linenos">3313</span></a> <span class="n">parse_bracket</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-3314"><a href="#L-3314"><span class="linenos">3314</span></a> <span class="n">is_db_reference</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-3315"><a href="#L-3315"><span class="linenos">3315</span></a> <span class="n">parse_partition</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-3316"><a href="#L-3316"><span class="linenos">3316</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3317"><a href="#L-3317"><span class="linenos">3317</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> -</span><span id="L-3318"><a href="#L-3318"><span class="linenos">3318</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> -</span><span id="L-3319"><a href="#L-3319"><span class="linenos">3319</span></a> <span class="k">return</span> <span class="n">lateral</span> -</span><span id="L-3320"><a href="#L-3320"><span class="linenos">3320</span></a> -</span><span id="L-3321"><a href="#L-3321"><span class="linenos">3321</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="L-3322"><a href="#L-3322"><span class="linenos">3322</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="L-3323"><a href="#L-3323"><span class="linenos">3323</span></a> <span class="k">return</span> <span class="n">unnest</span> -</span><span id="L-3324"><a href="#L-3324"><span class="linenos">3324</span></a> -</span><span id="L-3325"><a href="#L-3325"><span class="linenos">3325</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> -</span><span id="L-3326"><a href="#L-3326"><span class="linenos">3326</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> -</span><span id="L-3327"><a href="#L-3327"><span class="linenos">3327</span></a> <span class="k">return</span> <span class="n">values</span> -</span><span id="L-3328"><a href="#L-3328"><span class="linenos">3328</span></a> -</span><span id="L-3329"><a href="#L-3329"><span class="linenos">3329</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3330"><a href="#L-3330"><span class="linenos">3330</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> -</span><span id="L-3331"><a href="#L-3331"><span class="linenos">3331</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> -</span><span id="L-3332"><a href="#L-3332"><span class="linenos">3332</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> -</span><span id="L-3333"><a href="#L-3333"><span class="linenos">3333</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="L-3209"><a href="#L-3209"><span class="linenos">3209</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> +</span><span id="L-3210"><a href="#L-3210"><span class="linenos">3210</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3211"><a href="#L-3211"><span class="linenos">3211</span></a> +</span><span id="L-3212"><a href="#L-3212"><span class="linenos">3212</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-3213"><a href="#L-3213"><span class="linenos">3213</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3214"><a href="#L-3214"><span class="linenos">3214</span></a> +</span><span id="L-3215"><a href="#L-3215"><span class="linenos">3215</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> +</span><span id="L-3216"><a href="#L-3216"><span class="linenos">3216</span></a> +</span><span id="L-3217"><a href="#L-3217"><span class="linenos">3217</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3218"><a href="#L-3218"><span class="linenos">3218</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> +</span><span id="L-3219"><a href="#L-3219"><span class="linenos">3219</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> +</span><span id="L-3220"><a href="#L-3220"><span class="linenos">3220</span></a> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="L-3221"><a href="#L-3221"><span class="linenos">3221</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="L-3222"><a href="#L-3222"><span class="linenos">3222</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> +</span><span id="L-3223"><a href="#L-3223"><span class="linenos">3223</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> +</span><span id="L-3224"><a href="#L-3224"><span class="linenos">3224</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> +</span><span id="L-3225"><a href="#L-3225"><span class="linenos">3225</span></a> <span class="p">)</span> +</span><span id="L-3226"><a href="#L-3226"><span class="linenos">3226</span></a> +</span><span id="L-3227"><a href="#L-3227"><span class="linenos">3227</span></a> <span class="k">def</span> <span class="nf">_parse_table_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3228"><a href="#L-3228"><span class="linenos">3228</span></a> <span class="n">hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3229"><a href="#L-3229"><span class="linenos">3229</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3230"><a href="#L-3230"><span class="linenos">3230</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver16</span> +</span><span id="L-3231"><a href="#L-3231"><span class="linenos">3231</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-3232"><a href="#L-3232"><span class="linenos">3232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3233"><a href="#L-3233"><span class="linenos">3233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithTableHint</span><span class="p">,</span> +</span><span id="L-3234"><a href="#L-3234"><span class="linenos">3234</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-3235"><a href="#L-3235"><span class="linenos">3235</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3236"><a href="#L-3236"><span class="linenos">3236</span></a> <span class="p">),</span> +</span><span id="L-3237"><a href="#L-3237"><span class="linenos">3237</span></a> <span class="p">)</span> +</span><span id="L-3238"><a href="#L-3238"><span class="linenos">3238</span></a> <span class="p">)</span> +</span><span id="L-3239"><a href="#L-3239"><span class="linenos">3239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3240"><a href="#L-3240"><span class="linenos">3240</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3241"><a href="#L-3241"><span class="linenos">3241</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/index-hints.html</span> +</span><span id="L-3242"><a href="#L-3242"><span class="linenos">3242</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TABLE_INDEX_HINT_TOKENS</span><span class="p">):</span> +</span><span id="L-3243"><a href="#L-3243"><span class="linenos">3243</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexTableHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-3244"><a href="#L-3244"><span class="linenos">3244</span></a> +</span><span id="L-3245"><a href="#L-3245"><span class="linenos">3245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">))</span> +</span><span id="L-3246"><a href="#L-3246"><span class="linenos">3246</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-3247"><a href="#L-3247"><span class="linenos">3247</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"target"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-3248"><a href="#L-3248"><span class="linenos">3248</span></a> +</span><span id="L-3249"><a href="#L-3249"><span class="linenos">3249</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> +</span><span id="L-3250"><a href="#L-3250"><span class="linenos">3250</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> +</span><span id="L-3251"><a href="#L-3251"><span class="linenos">3251</span></a> +</span><span id="L-3252"><a href="#L-3252"><span class="linenos">3252</span></a> <span class="k">return</span> <span class="n">hints</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="L-3253"><a href="#L-3253"><span class="linenos">3253</span></a> +</span><span id="L-3254"><a href="#L-3254"><span class="linenos">3254</span></a> <span class="k">def</span> <span class="nf">_parse_table_part</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3255"><a href="#L-3255"><span class="linenos">3255</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-3256"><a href="#L-3256"><span class="linenos">3256</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">optional_parens</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="L-3257"><a href="#L-3257"><span class="linenos">3257</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3258"><a href="#L-3258"><span class="linenos">3258</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> +</span><span id="L-3259"><a href="#L-3259"><span class="linenos">3259</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-3260"><a href="#L-3260"><span class="linenos">3260</span></a> <span class="p">)</span> +</span><span id="L-3261"><a href="#L-3261"><span class="linenos">3261</span></a> +</span><span id="L-3262"><a href="#L-3262"><span class="linenos">3262</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span> +</span><span id="L-3263"><a href="#L-3263"><span class="linenos">3263</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">wildcard</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3264"><a href="#L-3264"><span class="linenos">3264</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> +</span><span id="L-3265"><a href="#L-3265"><span class="linenos">3265</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3266"><a href="#L-3266"><span class="linenos">3266</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3267"><a href="#L-3267"><span class="linenos">3267</span></a> <span class="n">table</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> +</span><span id="L-3268"><a href="#L-3268"><span class="linenos">3268</span></a> +</span><span id="L-3269"><a href="#L-3269"><span class="linenos">3269</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-3270"><a href="#L-3270"><span class="linenos">3270</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> +</span><span id="L-3271"><a href="#L-3271"><span class="linenos">3271</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> +</span><span id="L-3272"><a href="#L-3272"><span class="linenos">3272</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3273"><a href="#L-3273"><span class="linenos">3273</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> +</span><span id="L-3274"><a href="#L-3274"><span class="linenos">3274</span></a> <span class="p">)</span> +</span><span id="L-3275"><a href="#L-3275"><span class="linenos">3275</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3276"><a href="#L-3276"><span class="linenos">3276</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> +</span><span id="L-3277"><a href="#L-3277"><span class="linenos">3277</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> +</span><span id="L-3278"><a href="#L-3278"><span class="linenos">3278</span></a> <span class="c1"># "" used for tsql FROM a..b case</span> +</span><span id="L-3279"><a href="#L-3279"><span class="linenos">3279</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="L-3280"><a href="#L-3280"><span class="linenos">3280</span></a> +</span><span id="L-3281"><a href="#L-3281"><span class="linenos">3281</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-3282"><a href="#L-3282"><span class="linenos">3282</span></a> <span class="n">wildcard</span> +</span><span id="L-3283"><a href="#L-3283"><span class="linenos">3283</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> +</span><span id="L-3284"><a href="#L-3284"><span class="linenos">3284</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">table</span><span class="p">)</span> +</span><span id="L-3285"><a href="#L-3285"><span class="linenos">3285</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">)</span> +</span><span id="L-3286"><a href="#L-3286"><span class="linenos">3286</span></a> <span class="p">):</span> +</span><span id="L-3287"><a href="#L-3287"><span class="linenos">3287</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-3288"><a href="#L-3288"><span class="linenos">3288</span></a> <span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span> <span class="o">+=</span> <span class="s2">"*"</span> +</span><span id="L-3289"><a href="#L-3289"><span class="linenos">3289</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3290"><a href="#L-3290"><span class="linenos">3290</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="L-3291"><a href="#L-3291"><span class="linenos">3291</span></a> +</span><span id="L-3292"><a href="#L-3292"><span class="linenos">3292</span></a> <span class="c1"># We bubble up comments from the Identifier to the Table</span> +</span><span id="L-3293"><a href="#L-3293"><span class="linenos">3293</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3294"><a href="#L-3294"><span class="linenos">3294</span></a> +</span><span id="L-3295"><a href="#L-3295"><span class="linenos">3295</span></a> <span class="k">if</span> <span class="n">is_db_reference</span><span class="p">:</span> +</span><span id="L-3296"><a href="#L-3296"><span class="linenos">3296</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> +</span><span id="L-3297"><a href="#L-3297"><span class="linenos">3297</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> +</span><span id="L-3298"><a href="#L-3298"><span class="linenos">3298</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3299"><a href="#L-3299"><span class="linenos">3299</span></a> +</span><span id="L-3300"><a href="#L-3300"><span class="linenos">3300</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_db_reference</span><span class="p">:</span> +</span><span id="L-3301"><a href="#L-3301"><span class="linenos">3301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-3302"><a href="#L-3302"><span class="linenos">3302</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">db</span> <span class="ow">and</span> <span class="n">is_db_reference</span><span class="p">:</span> +</span><span id="L-3303"><a href="#L-3303"><span class="linenos">3303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected database name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-3304"><a href="#L-3304"><span class="linenos">3304</span></a> +</span><span id="L-3305"><a href="#L-3305"><span class="linenos">3305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3306"><a href="#L-3306"><span class="linenos">3306</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> +</span><span id="L-3307"><a href="#L-3307"><span class="linenos">3307</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-3308"><a href="#L-3308"><span class="linenos">3308</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="L-3309"><a href="#L-3309"><span class="linenos">3309</span></a> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> +</span><span id="L-3310"><a href="#L-3310"><span class="linenos">3310</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> +</span><span id="L-3311"><a href="#L-3311"><span class="linenos">3311</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> +</span><span id="L-3312"><a href="#L-3312"><span class="linenos">3312</span></a> <span class="p">)</span> +</span><span id="L-3313"><a href="#L-3313"><span class="linenos">3313</span></a> +</span><span id="L-3314"><a href="#L-3314"><span class="linenos">3314</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> +</span><span id="L-3315"><a href="#L-3315"><span class="linenos">3315</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-3316"><a href="#L-3316"><span class="linenos">3316</span></a> <span class="n">schema</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-3317"><a href="#L-3317"><span class="linenos">3317</span></a> <span class="n">joins</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-3318"><a href="#L-3318"><span class="linenos">3318</span></a> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3319"><a href="#L-3319"><span class="linenos">3319</span></a> <span class="n">parse_bracket</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-3320"><a href="#L-3320"><span class="linenos">3320</span></a> <span class="n">is_db_reference</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-3321"><a href="#L-3321"><span class="linenos">3321</span></a> <span class="n">parse_partition</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-3322"><a href="#L-3322"><span class="linenos">3322</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3323"><a href="#L-3323"><span class="linenos">3323</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> +</span><span id="L-3324"><a href="#L-3324"><span class="linenos">3324</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> +</span><span id="L-3325"><a href="#L-3325"><span class="linenos">3325</span></a> <span class="k">return</span> <span class="n">lateral</span> +</span><span id="L-3326"><a href="#L-3326"><span class="linenos">3326</span></a> +</span><span id="L-3327"><a href="#L-3327"><span class="linenos">3327</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="L-3328"><a href="#L-3328"><span class="linenos">3328</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="L-3329"><a href="#L-3329"><span class="linenos">3329</span></a> <span class="k">return</span> <span class="n">unnest</span> +</span><span id="L-3330"><a href="#L-3330"><span class="linenos">3330</span></a> +</span><span id="L-3331"><a href="#L-3331"><span class="linenos">3331</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> +</span><span id="L-3332"><a href="#L-3332"><span class="linenos">3332</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> +</span><span id="L-3333"><a href="#L-3333"><span class="linenos">3333</span></a> <span class="k">return</span> <span class="n">values</span> </span><span id="L-3334"><a href="#L-3334"><span class="linenos">3334</span></a> -</span><span id="L-3335"><a href="#L-3335"><span class="linenos">3335</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="n">parse_bracket</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> -</span><span id="L-3336"><a href="#L-3336"><span class="linenos">3336</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">bracket</span><span class="p">)</span> <span class="k">if</span> <span class="n">bracket</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3337"><a href="#L-3337"><span class="linenos">3337</span></a> -</span><span id="L-3338"><a href="#L-3338"><span class="linenos">3338</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> -</span><span id="L-3339"><a href="#L-3339"><span class="linenos">3339</span></a> -</span><span id="L-3340"><a href="#L-3340"><span class="linenos">3340</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> -</span><span id="L-3341"><a href="#L-3341"><span class="linenos">3341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> -</span><span id="L-3342"><a href="#L-3342"><span class="linenos">3342</span></a> <span class="n">bracket</span> -</span><span id="L-3343"><a href="#L-3343"><span class="linenos">3343</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span> -</span><span id="L-3344"><a href="#L-3344"><span class="linenos">3344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">)</span> -</span><span id="L-3345"><a href="#L-3345"><span class="linenos">3345</span></a> <span class="p">),</span> -</span><span id="L-3346"><a href="#L-3346"><span class="linenos">3346</span></a> <span class="p">)</span> -</span><span id="L-3347"><a href="#L-3347"><span class="linenos">3347</span></a> -</span><span id="L-3348"><a href="#L-3348"><span class="linenos">3348</span></a> <span class="k">if</span> <span class="n">only</span><span class="p">:</span> -</span><span id="L-3349"><a href="#L-3349"><span class="linenos">3349</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"only"</span><span class="p">,</span> <span class="n">only</span><span class="p">)</span> -</span><span id="L-3350"><a href="#L-3350"><span class="linenos">3350</span></a> -</span><span id="L-3351"><a href="#L-3351"><span class="linenos">3351</span></a> <span class="c1"># Postgres supports a wildcard (table) suffix operator, which is a no-op in this context</span> -</span><span id="L-3352"><a href="#L-3352"><span class="linenos">3352</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="L-3335"><a href="#L-3335"><span class="linenos">3335</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3336"><a href="#L-3336"><span class="linenos">3336</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> +</span><span id="L-3337"><a href="#L-3337"><span class="linenos">3337</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> +</span><span id="L-3338"><a href="#L-3338"><span class="linenos">3338</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> +</span><span id="L-3339"><a href="#L-3339"><span class="linenos">3339</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="L-3340"><a href="#L-3340"><span class="linenos">3340</span></a> +</span><span id="L-3341"><a href="#L-3341"><span class="linenos">3341</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="n">parse_bracket</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> +</span><span id="L-3342"><a href="#L-3342"><span class="linenos">3342</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">bracket</span><span class="p">)</span> <span class="k">if</span> <span class="n">bracket</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3343"><a href="#L-3343"><span class="linenos">3343</span></a> +</span><span id="L-3344"><a href="#L-3344"><span class="linenos">3344</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> +</span><span id="L-3345"><a href="#L-3345"><span class="linenos">3345</span></a> +</span><span id="L-3346"><a href="#L-3346"><span class="linenos">3346</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> +</span><span id="L-3347"><a href="#L-3347"><span class="linenos">3347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="L-3348"><a href="#L-3348"><span class="linenos">3348</span></a> <span class="n">bracket</span> +</span><span id="L-3349"><a href="#L-3349"><span class="linenos">3349</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span> +</span><span id="L-3350"><a href="#L-3350"><span class="linenos">3350</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">)</span> +</span><span id="L-3351"><a href="#L-3351"><span class="linenos">3351</span></a> <span class="p">),</span> +</span><span id="L-3352"><a href="#L-3352"><span class="linenos">3352</span></a> <span class="p">)</span> </span><span id="L-3353"><a href="#L-3353"><span class="linenos">3353</span></a> -</span><span id="L-3354"><a href="#L-3354"><span class="linenos">3354</span></a> <span class="n">parse_partition</span> <span class="o">=</span> <span class="n">parse_partition</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_PARTITION_SELECTION</span> -</span><span id="L-3355"><a href="#L-3355"><span class="linenos">3355</span></a> <span class="k">if</span> <span class="n">parse_partition</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3356"><a href="#L-3356"><span class="linenos">3356</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"partition"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">())</span> -</span><span id="L-3357"><a href="#L-3357"><span class="linenos">3357</span></a> -</span><span id="L-3358"><a href="#L-3358"><span class="linenos">3358</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> -</span><span id="L-3359"><a href="#L-3359"><span class="linenos">3359</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-3360"><a href="#L-3360"><span class="linenos">3360</span></a> -</span><span id="L-3361"><a href="#L-3361"><span class="linenos">3361</span></a> <span class="n">version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_version</span><span class="p">()</span> -</span><span id="L-3362"><a href="#L-3362"><span class="linenos">3362</span></a> -</span><span id="L-3363"><a href="#L-3363"><span class="linenos">3363</span></a> <span class="k">if</span> <span class="n">version</span><span class="p">:</span> -</span><span id="L-3364"><a href="#L-3364"><span class="linenos">3364</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"version"</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span> -</span><span id="L-3365"><a href="#L-3365"><span class="linenos">3365</span></a> -</span><span id="L-3366"><a href="#L-3366"><span class="linenos">3366</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> -</span><span id="L-3367"><a href="#L-3367"><span class="linenos">3367</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-3354"><a href="#L-3354"><span class="linenos">3354</span></a> <span class="k">if</span> <span class="n">only</span><span class="p">:</span> +</span><span id="L-3355"><a href="#L-3355"><span class="linenos">3355</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"only"</span><span class="p">,</span> <span class="n">only</span><span class="p">)</span> +</span><span id="L-3356"><a href="#L-3356"><span class="linenos">3356</span></a> +</span><span id="L-3357"><a href="#L-3357"><span class="linenos">3357</span></a> <span class="c1"># Postgres supports a wildcard (table) suffix operator, which is a no-op in this context</span> +</span><span id="L-3358"><a href="#L-3358"><span class="linenos">3358</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="L-3359"><a href="#L-3359"><span class="linenos">3359</span></a> +</span><span id="L-3360"><a href="#L-3360"><span class="linenos">3360</span></a> <span class="n">parse_partition</span> <span class="o">=</span> <span class="n">parse_partition</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_PARTITION_SELECTION</span> +</span><span id="L-3361"><a href="#L-3361"><span class="linenos">3361</span></a> <span class="k">if</span> <span class="n">parse_partition</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3362"><a href="#L-3362"><span class="linenos">3362</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"partition"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">())</span> +</span><span id="L-3363"><a href="#L-3363"><span class="linenos">3363</span></a> +</span><span id="L-3364"><a href="#L-3364"><span class="linenos">3364</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> +</span><span id="L-3365"><a href="#L-3365"><span class="linenos">3365</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-3366"><a href="#L-3366"><span class="linenos">3366</span></a> +</span><span id="L-3367"><a href="#L-3367"><span class="linenos">3367</span></a> <span class="n">version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_version</span><span class="p">()</span> </span><span id="L-3368"><a href="#L-3368"><span class="linenos">3368</span></a> -</span><span id="L-3369"><a href="#L-3369"><span class="linenos">3369</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-3370"><a href="#L-3370"><span class="linenos">3370</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-3371"><a href="#L-3371"><span class="linenos">3371</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> -</span><span id="L-3372"><a href="#L-3372"><span class="linenos">3372</span></a> -</span><span id="L-3373"><a href="#L-3373"><span class="linenos">3373</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">):</span> -</span><span id="L-3374"><a href="#L-3374"><span class="linenos">3374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3375"><a href="#L-3375"><span class="linenos">3375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtIndex</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">to_column</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-3376"><a href="#L-3376"><span class="linenos">3376</span></a> <span class="p">)</span> -</span><span id="L-3377"><a href="#L-3377"><span class="linenos">3377</span></a> -</span><span id="L-3378"><a href="#L-3378"><span class="linenos">3378</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hints"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_hints</span><span class="p">())</span> -</span><span id="L-3379"><a href="#L-3379"><span class="linenos">3379</span></a> -</span><span id="L-3380"><a href="#L-3380"><span class="linenos">3380</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> -</span><span id="L-3381"><a href="#L-3381"><span class="linenos">3381</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> -</span><span id="L-3382"><a href="#L-3382"><span class="linenos">3382</span></a> -</span><span id="L-3383"><a href="#L-3383"><span class="linenos">3383</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> -</span><span id="L-3384"><a href="#L-3384"><span class="linenos">3384</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-3369"><a href="#L-3369"><span class="linenos">3369</span></a> <span class="k">if</span> <span class="n">version</span><span class="p">:</span> +</span><span id="L-3370"><a href="#L-3370"><span class="linenos">3370</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"version"</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span> +</span><span id="L-3371"><a href="#L-3371"><span class="linenos">3371</span></a> +</span><span id="L-3372"><a href="#L-3372"><span class="linenos">3372</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> +</span><span id="L-3373"><a href="#L-3373"><span class="linenos">3373</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-3374"><a href="#L-3374"><span class="linenos">3374</span></a> +</span><span id="L-3375"><a href="#L-3375"><span class="linenos">3375</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-3376"><a href="#L-3376"><span class="linenos">3376</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-3377"><a href="#L-3377"><span class="linenos">3377</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="L-3378"><a href="#L-3378"><span class="linenos">3378</span></a> +</span><span id="L-3379"><a href="#L-3379"><span class="linenos">3379</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">):</span> +</span><span id="L-3380"><a href="#L-3380"><span class="linenos">3380</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3381"><a href="#L-3381"><span class="linenos">3381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtIndex</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">to_column</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-3382"><a href="#L-3382"><span class="linenos">3382</span></a> <span class="p">)</span> +</span><span id="L-3383"><a href="#L-3383"><span class="linenos">3383</span></a> +</span><span id="L-3384"><a href="#L-3384"><span class="linenos">3384</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hints"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_hints</span><span class="p">())</span> </span><span id="L-3385"><a href="#L-3385"><span class="linenos">3385</span></a> -</span><span id="L-3386"><a href="#L-3386"><span class="linenos">3386</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> -</span><span id="L-3387"><a href="#L-3387"><span class="linenos">3387</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="L-3388"><a href="#L-3388"><span class="linenos">3388</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> -</span><span id="L-3389"><a href="#L-3389"><span class="linenos">3389</span></a> -</span><span id="L-3390"><a href="#L-3390"><span class="linenos">3390</span></a> <span class="k">if</span> <span class="n">joins</span><span class="p">:</span> -</span><span id="L-3391"><a href="#L-3391"><span class="linenos">3391</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> -</span><span id="L-3392"><a href="#L-3392"><span class="linenos">3392</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> -</span><span id="L-3393"><a href="#L-3393"><span class="linenos">3393</span></a> -</span><span id="L-3394"><a href="#L-3394"><span class="linenos">3394</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">):</span> -</span><span id="L-3395"><a href="#L-3395"><span class="linenos">3395</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"ordinality"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="L-3396"><a href="#L-3396"><span class="linenos">3396</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="L-3397"><a href="#L-3397"><span class="linenos">3397</span></a> -</span><span id="L-3398"><a href="#L-3398"><span class="linenos">3398</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3386"><a href="#L-3386"><span class="linenos">3386</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> +</span><span id="L-3387"><a href="#L-3387"><span class="linenos">3387</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> +</span><span id="L-3388"><a href="#L-3388"><span class="linenos">3388</span></a> +</span><span id="L-3389"><a href="#L-3389"><span class="linenos">3389</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> +</span><span id="L-3390"><a href="#L-3390"><span class="linenos">3390</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-3391"><a href="#L-3391"><span class="linenos">3391</span></a> +</span><span id="L-3392"><a href="#L-3392"><span class="linenos">3392</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> +</span><span id="L-3393"><a href="#L-3393"><span class="linenos">3393</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="L-3394"><a href="#L-3394"><span class="linenos">3394</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> +</span><span id="L-3395"><a href="#L-3395"><span class="linenos">3395</span></a> +</span><span id="L-3396"><a href="#L-3396"><span class="linenos">3396</span></a> <span class="k">if</span> <span class="n">joins</span><span class="p">:</span> +</span><span id="L-3397"><a href="#L-3397"><span class="linenos">3397</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> +</span><span id="L-3398"><a href="#L-3398"><span class="linenos">3398</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> </span><span id="L-3399"><a href="#L-3399"><span class="linenos">3399</span></a> -</span><span id="L-3400"><a href="#L-3400"><span class="linenos">3400</span></a> <span class="k">def</span> <span class="nf">_parse_version</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">]:</span> -</span><span id="L-3401"><a href="#L-3401"><span class="linenos">3401</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> -</span><span id="L-3402"><a href="#L-3402"><span class="linenos">3402</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"TIMESTAMP"</span> -</span><span id="L-3403"><a href="#L-3403"><span class="linenos">3403</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">):</span> -</span><span id="L-3404"><a href="#L-3404"><span class="linenos">3404</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"VERSION"</span> -</span><span id="L-3405"><a href="#L-3405"><span class="linenos">3405</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3406"><a href="#L-3406"><span class="linenos">3406</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3407"><a href="#L-3407"><span class="linenos">3407</span></a> -</span><span id="L-3408"><a href="#L-3408"><span class="linenos">3408</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)):</span> -</span><span id="L-3409"><a href="#L-3409"><span class="linenos">3409</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-3410"><a href="#L-3410"><span class="linenos">3410</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-3411"><a href="#L-3411"><span class="linenos">3411</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">))</span> -</span><span id="L-3412"><a href="#L-3412"><span class="linenos">3412</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-3413"><a href="#L-3413"><span class="linenos">3413</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3414"><a href="#L-3414"><span class="linenos">3414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">]</span> -</span><span id="L-3415"><a href="#L-3415"><span class="linenos">3415</span></a> <span class="p">)</span> -</span><span id="L-3416"><a href="#L-3416"><span class="linenos">3416</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTAINED"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">):</span> -</span><span id="L-3417"><a href="#L-3417"><span class="linenos">3417</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"CONTAINED IN"</span> -</span><span id="L-3418"><a href="#L-3418"><span class="linenos">3418</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3419"><a href="#L-3419"><span class="linenos">3419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-3420"><a href="#L-3420"><span class="linenos">3420</span></a> <span class="p">)</span> -</span><span id="L-3421"><a href="#L-3421"><span class="linenos">3421</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> -</span><span id="L-3422"><a href="#L-3422"><span class="linenos">3422</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ALL"</span> -</span><span id="L-3423"><a href="#L-3423"><span class="linenos">3423</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3424"><a href="#L-3424"><span class="linenos">3424</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3425"><a href="#L-3425"><span class="linenos">3425</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> -</span><span id="L-3426"><a href="#L-3426"><span class="linenos">3426</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"AS OF"</span> -</span><span id="L-3427"><a href="#L-3427"><span class="linenos">3427</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-3428"><a href="#L-3428"><span class="linenos">3428</span></a> -</span><span id="L-3429"><a href="#L-3429"><span class="linenos">3429</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="L-3430"><a href="#L-3430"><span class="linenos">3430</span></a> -</span><span id="L-3431"><a href="#L-3431"><span class="linenos">3431</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">]:</span> -</span><span id="L-3432"><a href="#L-3432"><span class="linenos">3432</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> -</span><span id="L-3433"><a href="#L-3433"><span class="linenos">3433</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3400"><a href="#L-3400"><span class="linenos">3400</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">):</span> +</span><span id="L-3401"><a href="#L-3401"><span class="linenos">3401</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"ordinality"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-3402"><a href="#L-3402"><span class="linenos">3402</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="L-3403"><a href="#L-3403"><span class="linenos">3403</span></a> +</span><span id="L-3404"><a href="#L-3404"><span class="linenos">3404</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3405"><a href="#L-3405"><span class="linenos">3405</span></a> +</span><span id="L-3406"><a href="#L-3406"><span class="linenos">3406</span></a> <span class="k">def</span> <span class="nf">_parse_version</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">]:</span> +</span><span id="L-3407"><a href="#L-3407"><span class="linenos">3407</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> +</span><span id="L-3408"><a href="#L-3408"><span class="linenos">3408</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"TIMESTAMP"</span> +</span><span id="L-3409"><a href="#L-3409"><span class="linenos">3409</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">):</span> +</span><span id="L-3410"><a href="#L-3410"><span class="linenos">3410</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"VERSION"</span> +</span><span id="L-3411"><a href="#L-3411"><span class="linenos">3411</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3412"><a href="#L-3412"><span class="linenos">3412</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3413"><a href="#L-3413"><span class="linenos">3413</span></a> +</span><span id="L-3414"><a href="#L-3414"><span class="linenos">3414</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)):</span> +</span><span id="L-3415"><a href="#L-3415"><span class="linenos">3415</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-3416"><a href="#L-3416"><span class="linenos">3416</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-3417"><a href="#L-3417"><span class="linenos">3417</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">))</span> +</span><span id="L-3418"><a href="#L-3418"><span class="linenos">3418</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-3419"><a href="#L-3419"><span class="linenos">3419</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3420"><a href="#L-3420"><span class="linenos">3420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">]</span> +</span><span id="L-3421"><a href="#L-3421"><span class="linenos">3421</span></a> <span class="p">)</span> +</span><span id="L-3422"><a href="#L-3422"><span class="linenos">3422</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTAINED"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">):</span> +</span><span id="L-3423"><a href="#L-3423"><span class="linenos">3423</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"CONTAINED IN"</span> +</span><span id="L-3424"><a href="#L-3424"><span class="linenos">3424</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3425"><a href="#L-3425"><span class="linenos">3425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-3426"><a href="#L-3426"><span class="linenos">3426</span></a> <span class="p">)</span> +</span><span id="L-3427"><a href="#L-3427"><span class="linenos">3427</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> +</span><span id="L-3428"><a href="#L-3428"><span class="linenos">3428</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ALL"</span> +</span><span id="L-3429"><a href="#L-3429"><span class="linenos">3429</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3430"><a href="#L-3430"><span class="linenos">3430</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3431"><a href="#L-3431"><span class="linenos">3431</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> +</span><span id="L-3432"><a href="#L-3432"><span class="linenos">3432</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"AS OF"</span> +</span><span id="L-3433"><a href="#L-3433"><span class="linenos">3433</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> </span><span id="L-3434"><a href="#L-3434"><span class="linenos">3434</span></a> -</span><span id="L-3435"><a href="#L-3435"><span class="linenos">3435</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="L-3436"><a href="#L-3436"><span class="linenos">3436</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">)</span> -</span><span id="L-3437"><a href="#L-3437"><span class="linenos">3437</span></a> -</span><span id="L-3438"><a href="#L-3438"><span class="linenos">3438</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">with_alias</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3439"><a href="#L-3439"><span class="linenos">3439</span></a> -</span><span id="L-3440"><a href="#L-3440"><span class="linenos">3440</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-3441"><a href="#L-3441"><span class="linenos">3441</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNNEST_COLUMN_ONLY</span><span class="p">:</span> -</span><span id="L-3442"><a href="#L-3442"><span class="linenos">3442</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="L-3443"><a href="#L-3443"><span class="linenos">3443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> -</span><span id="L-3444"><a href="#L-3444"><span class="linenos">3444</span></a> -</span><span id="L-3445"><a href="#L-3445"><span class="linenos">3445</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> -</span><span id="L-3446"><a href="#L-3446"><span class="linenos">3446</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-3447"><a href="#L-3447"><span class="linenos">3447</span></a> -</span><span id="L-3448"><a href="#L-3448"><span class="linenos">3448</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="L-3449"><a href="#L-3449"><span class="linenos">3449</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> -</span><span id="L-3450"><a href="#L-3450"><span class="linenos">3450</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">columns</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> -</span><span id="L-3451"><a href="#L-3451"><span class="linenos">3451</span></a> -</span><span id="L-3452"><a href="#L-3452"><span class="linenos">3452</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">offset</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> -</span><span id="L-3453"><a href="#L-3453"><span class="linenos">3453</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-3454"><a href="#L-3454"><span class="linenos">3454</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="L-3455"><a href="#L-3455"><span class="linenos">3455</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> -</span><span id="L-3456"><a href="#L-3456"><span class="linenos">3456</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="L-3435"><a href="#L-3435"><span class="linenos">3435</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="L-3436"><a href="#L-3436"><span class="linenos">3436</span></a> +</span><span id="L-3437"><a href="#L-3437"><span class="linenos">3437</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">]:</span> +</span><span id="L-3438"><a href="#L-3438"><span class="linenos">3438</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> +</span><span id="L-3439"><a href="#L-3439"><span class="linenos">3439</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3440"><a href="#L-3440"><span class="linenos">3440</span></a> +</span><span id="L-3441"><a href="#L-3441"><span class="linenos">3441</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="L-3442"><a href="#L-3442"><span class="linenos">3442</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">)</span> +</span><span id="L-3443"><a href="#L-3443"><span class="linenos">3443</span></a> +</span><span id="L-3444"><a href="#L-3444"><span class="linenos">3444</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">with_alias</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3445"><a href="#L-3445"><span class="linenos">3445</span></a> +</span><span id="L-3446"><a href="#L-3446"><span class="linenos">3446</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-3447"><a href="#L-3447"><span class="linenos">3447</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNNEST_COLUMN_ONLY</span><span class="p">:</span> +</span><span id="L-3448"><a href="#L-3448"><span class="linenos">3448</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="L-3449"><a href="#L-3449"><span class="linenos">3449</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> +</span><span id="L-3450"><a href="#L-3450"><span class="linenos">3450</span></a> +</span><span id="L-3451"><a href="#L-3451"><span class="linenos">3451</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> +</span><span id="L-3452"><a href="#L-3452"><span class="linenos">3452</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-3453"><a href="#L-3453"><span class="linenos">3453</span></a> +</span><span id="L-3454"><a href="#L-3454"><span class="linenos">3454</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-3455"><a href="#L-3455"><span class="linenos">3455</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> +</span><span id="L-3456"><a href="#L-3456"><span class="linenos">3456</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">columns</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> </span><span id="L-3457"><a href="#L-3457"><span class="linenos">3457</span></a> -</span><span id="L-3458"><a href="#L-3458"><span class="linenos">3458</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> -</span><span id="L-3459"><a href="#L-3459"><span class="linenos">3459</span></a> -</span><span id="L-3460"><a href="#L-3460"><span class="linenos">3460</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">]:</span> -</span><span id="L-3461"><a href="#L-3461"><span class="linenos">3461</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> -</span><span id="L-3462"><a href="#L-3462"><span class="linenos">3462</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">):</span> -</span><span id="L-3463"><a href="#L-3463"><span class="linenos">3463</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3464"><a href="#L-3464"><span class="linenos">3464</span></a> -</span><span id="L-3465"><a href="#L-3465"><span class="linenos">3465</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> -</span><span id="L-3466"><a href="#L-3466"><span class="linenos">3466</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="L-3467"><a href="#L-3467"><span class="linenos">3467</span></a> -</span><span id="L-3468"><a href="#L-3468"><span class="linenos">3468</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> -</span><span id="L-3469"><a href="#L-3469"><span class="linenos">3469</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3458"><a href="#L-3458"><span class="linenos">3458</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">offset</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> +</span><span id="L-3459"><a href="#L-3459"><span class="linenos">3459</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-3460"><a href="#L-3460"><span class="linenos">3460</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="L-3461"><a href="#L-3461"><span class="linenos">3461</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> +</span><span id="L-3462"><a href="#L-3462"><span class="linenos">3462</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="L-3463"><a href="#L-3463"><span class="linenos">3463</span></a> +</span><span id="L-3464"><a href="#L-3464"><span class="linenos">3464</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> +</span><span id="L-3465"><a href="#L-3465"><span class="linenos">3465</span></a> +</span><span id="L-3466"><a href="#L-3466"><span class="linenos">3466</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">]:</span> +</span><span id="L-3467"><a href="#L-3467"><span class="linenos">3467</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> +</span><span id="L-3468"><a href="#L-3468"><span class="linenos">3468</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">):</span> +</span><span id="L-3469"><a href="#L-3469"><span class="linenos">3469</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-3470"><a href="#L-3470"><span class="linenos">3470</span></a> -</span><span id="L-3471"><a href="#L-3471"><span class="linenos">3471</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3472"><a href="#L-3472"><span class="linenos">3472</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="L-3473"><a href="#L-3473"><span class="linenos">3473</span></a> <span class="p">)</span> -</span><span id="L-3474"><a href="#L-3474"><span class="linenos">3474</span></a> -</span><span id="L-3475"><a href="#L-3475"><span class="linenos">3475</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">as_modifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">]:</span> -</span><span id="L-3476"><a href="#L-3476"><span class="linenos">3476</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> -</span><span id="L-3477"><a href="#L-3477"><span class="linenos">3477</span></a> <span class="n">as_modifier</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"SAMPLE"</span><span class="p">)</span> -</span><span id="L-3478"><a href="#L-3478"><span class="linenos">3478</span></a> <span class="p">):</span> -</span><span id="L-3479"><a href="#L-3479"><span class="linenos">3479</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3471"><a href="#L-3471"><span class="linenos">3471</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> +</span><span id="L-3472"><a href="#L-3472"><span class="linenos">3472</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="L-3473"><a href="#L-3473"><span class="linenos">3473</span></a> +</span><span id="L-3474"><a href="#L-3474"><span class="linenos">3474</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> +</span><span id="L-3475"><a href="#L-3475"><span class="linenos">3475</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3476"><a href="#L-3476"><span class="linenos">3476</span></a> +</span><span id="L-3477"><a href="#L-3477"><span class="linenos">3477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3478"><a href="#L-3478"><span class="linenos">3478</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="L-3479"><a href="#L-3479"><span class="linenos">3479</span></a> <span class="p">)</span> </span><span id="L-3480"><a href="#L-3480"><span class="linenos">3480</span></a> -</span><span id="L-3481"><a href="#L-3481"><span class="linenos">3481</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3482"><a href="#L-3482"><span class="linenos">3482</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3483"><a href="#L-3483"><span class="linenos">3483</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3484"><a href="#L-3484"><span class="linenos">3484</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3485"><a href="#L-3485"><span class="linenos">3485</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3486"><a href="#L-3486"><span class="linenos">3486</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3487"><a href="#L-3487"><span class="linenos">3487</span></a> -</span><span id="L-3488"><a href="#L-3488"><span class="linenos">3488</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,),</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3489"><a href="#L-3489"><span class="linenos">3489</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="L-3490"><a href="#L-3490"><span class="linenos">3490</span></a> -</span><span id="L-3491"><a href="#L-3491"><span class="linenos">3491</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLESAMPLE_CSV</span><span class="p">:</span> -</span><span id="L-3492"><a href="#L-3492"><span class="linenos">3492</span></a> <span class="n">num</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3493"><a href="#L-3493"><span class="linenos">3493</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> -</span><span id="L-3494"><a href="#L-3494"><span class="linenos">3494</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3495"><a href="#L-3495"><span class="linenos">3495</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3496"><a href="#L-3496"><span class="linenos">3496</span></a> <span class="n">num</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-3497"><a href="#L-3497"><span class="linenos">3497</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">()</span> -</span><span id="L-3498"><a href="#L-3498"><span class="linenos">3498</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3499"><a href="#L-3499"><span class="linenos">3499</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-3500"><a href="#L-3500"><span class="linenos">3500</span></a> <span class="p">)</span> -</span><span id="L-3501"><a href="#L-3501"><span class="linenos">3501</span></a> -</span><span id="L-3502"><a href="#L-3502"><span class="linenos">3502</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKET"</span><span class="p">):</span> -</span><span id="L-3503"><a href="#L-3503"><span class="linenos">3503</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-3504"><a href="#L-3504"><span class="linenos">3504</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUT"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> -</span><span id="L-3505"><a href="#L-3505"><span class="linenos">3505</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-3506"><a href="#L-3506"><span class="linenos">3506</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-3507"><a href="#L-3507"><span class="linenos">3507</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-3508"><a href="#L-3508"><span class="linenos">3508</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)):</span> -</span><span id="L-3509"><a href="#L-3509"><span class="linenos">3509</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="L-3510"><a href="#L-3510"><span class="linenos">3510</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span><span class="p">:</span> -</span><span id="L-3511"><a href="#L-3511"><span class="linenos">3511</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="L-3512"><a href="#L-3512"><span class="linenos">3512</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3513"><a href="#L-3513"><span class="linenos">3513</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="L-3514"><a href="#L-3514"><span class="linenos">3514</span></a> -</span><span id="L-3515"><a href="#L-3515"><span class="linenos">3515</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> -</span><span id="L-3516"><a href="#L-3516"><span class="linenos">3516</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3517"><a href="#L-3517"><span class="linenos">3517</span></a> -</span><span id="L-3518"><a href="#L-3518"><span class="linenos">3518</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3519"><a href="#L-3519"><span class="linenos">3519</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3520"><a href="#L-3520"><span class="linenos">3520</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-3521"><a href="#L-3521"><span class="linenos">3521</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3522"><a href="#L-3522"><span class="linenos">3522</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"SEED"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">)):</span> -</span><span id="L-3523"><a href="#L-3523"><span class="linenos">3523</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> -</span><span id="L-3524"><a href="#L-3524"><span class="linenos">3524</span></a> -</span><span id="L-3525"><a href="#L-3525"><span class="linenos">3525</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">method</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> -</span><span id="L-3526"><a href="#L-3526"><span class="linenos">3526</span></a> <span class="n">method</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">)</span> -</span><span id="L-3527"><a href="#L-3527"><span class="linenos">3527</span></a> -</span><span id="L-3528"><a href="#L-3528"><span class="linenos">3528</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3529"><a href="#L-3529"><span class="linenos">3529</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> -</span><span id="L-3530"><a href="#L-3530"><span class="linenos">3530</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-3531"><a href="#L-3531"><span class="linenos">3531</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> -</span><span id="L-3532"><a href="#L-3532"><span class="linenos">3532</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> -</span><span id="L-3533"><a href="#L-3533"><span class="linenos">3533</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> -</span><span id="L-3534"><a href="#L-3534"><span class="linenos">3534</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> -</span><span id="L-3535"><a href="#L-3535"><span class="linenos">3535</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> -</span><span id="L-3536"><a href="#L-3536"><span class="linenos">3536</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> -</span><span id="L-3537"><a href="#L-3537"><span class="linenos">3537</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> -</span><span id="L-3538"><a href="#L-3538"><span class="linenos">3538</span></a> <span class="p">)</span> -</span><span id="L-3539"><a href="#L-3539"><span class="linenos">3539</span></a> -</span><span id="L-3540"><a href="#L-3540"><span class="linenos">3540</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]]:</span> -</span><span id="L-3541"><a href="#L-3541"><span class="linenos">3541</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="L-3542"><a href="#L-3542"><span class="linenos">3542</span></a> -</span><span id="L-3543"><a href="#L-3543"><span class="linenos">3543</span></a> <span class="k">def</span> <span class="nf">_parse_joins</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Iterator</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> -</span><span id="L-3544"><a href="#L-3544"><span class="linenos">3544</span></a> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-3481"><a href="#L-3481"><span class="linenos">3481</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">as_modifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">]:</span> +</span><span id="L-3482"><a href="#L-3482"><span class="linenos">3482</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> +</span><span id="L-3483"><a href="#L-3483"><span class="linenos">3483</span></a> <span class="n">as_modifier</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"SAMPLE"</span><span class="p">)</span> +</span><span id="L-3484"><a href="#L-3484"><span class="linenos">3484</span></a> <span class="p">):</span> +</span><span id="L-3485"><a href="#L-3485"><span class="linenos">3485</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3486"><a href="#L-3486"><span class="linenos">3486</span></a> +</span><span id="L-3487"><a href="#L-3487"><span class="linenos">3487</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3488"><a href="#L-3488"><span class="linenos">3488</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3489"><a href="#L-3489"><span class="linenos">3489</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3490"><a href="#L-3490"><span class="linenos">3490</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3491"><a href="#L-3491"><span class="linenos">3491</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3492"><a href="#L-3492"><span class="linenos">3492</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3493"><a href="#L-3493"><span class="linenos">3493</span></a> +</span><span id="L-3494"><a href="#L-3494"><span class="linenos">3494</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,),</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3495"><a href="#L-3495"><span class="linenos">3495</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="L-3496"><a href="#L-3496"><span class="linenos">3496</span></a> +</span><span id="L-3497"><a href="#L-3497"><span class="linenos">3497</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLESAMPLE_CSV</span><span class="p">:</span> +</span><span id="L-3498"><a href="#L-3498"><span class="linenos">3498</span></a> <span class="n">num</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3499"><a href="#L-3499"><span class="linenos">3499</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> +</span><span id="L-3500"><a href="#L-3500"><span class="linenos">3500</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3501"><a href="#L-3501"><span class="linenos">3501</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3502"><a href="#L-3502"><span class="linenos">3502</span></a> <span class="n">num</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-3503"><a href="#L-3503"><span class="linenos">3503</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">()</span> +</span><span id="L-3504"><a href="#L-3504"><span class="linenos">3504</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3505"><a href="#L-3505"><span class="linenos">3505</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-3506"><a href="#L-3506"><span class="linenos">3506</span></a> <span class="p">)</span> +</span><span id="L-3507"><a href="#L-3507"><span class="linenos">3507</span></a> +</span><span id="L-3508"><a href="#L-3508"><span class="linenos">3508</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKET"</span><span class="p">):</span> +</span><span id="L-3509"><a href="#L-3509"><span class="linenos">3509</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-3510"><a href="#L-3510"><span class="linenos">3510</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUT"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> +</span><span id="L-3511"><a href="#L-3511"><span class="linenos">3511</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-3512"><a href="#L-3512"><span class="linenos">3512</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-3513"><a href="#L-3513"><span class="linenos">3513</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-3514"><a href="#L-3514"><span class="linenos">3514</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)):</span> +</span><span id="L-3515"><a href="#L-3515"><span class="linenos">3515</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="L-3516"><a href="#L-3516"><span class="linenos">3516</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span><span class="p">:</span> +</span><span id="L-3517"><a href="#L-3517"><span class="linenos">3517</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="L-3518"><a href="#L-3518"><span class="linenos">3518</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3519"><a href="#L-3519"><span class="linenos">3519</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="L-3520"><a href="#L-3520"><span class="linenos">3520</span></a> +</span><span id="L-3521"><a href="#L-3521"><span class="linenos">3521</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> +</span><span id="L-3522"><a href="#L-3522"><span class="linenos">3522</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3523"><a href="#L-3523"><span class="linenos">3523</span></a> +</span><span id="L-3524"><a href="#L-3524"><span class="linenos">3524</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3525"><a href="#L-3525"><span class="linenos">3525</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3526"><a href="#L-3526"><span class="linenos">3526</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-3527"><a href="#L-3527"><span class="linenos">3527</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3528"><a href="#L-3528"><span class="linenos">3528</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"SEED"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">)):</span> +</span><span id="L-3529"><a href="#L-3529"><span class="linenos">3529</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> +</span><span id="L-3530"><a href="#L-3530"><span class="linenos">3530</span></a> +</span><span id="L-3531"><a href="#L-3531"><span class="linenos">3531</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">method</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> +</span><span id="L-3532"><a href="#L-3532"><span class="linenos">3532</span></a> <span class="n">method</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">)</span> +</span><span id="L-3533"><a href="#L-3533"><span class="linenos">3533</span></a> +</span><span id="L-3534"><a href="#L-3534"><span class="linenos">3534</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3535"><a href="#L-3535"><span class="linenos">3535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> +</span><span id="L-3536"><a href="#L-3536"><span class="linenos">3536</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-3537"><a href="#L-3537"><span class="linenos">3537</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> +</span><span id="L-3538"><a href="#L-3538"><span class="linenos">3538</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> +</span><span id="L-3539"><a href="#L-3539"><span class="linenos">3539</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> +</span><span id="L-3540"><a href="#L-3540"><span class="linenos">3540</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> +</span><span id="L-3541"><a href="#L-3541"><span class="linenos">3541</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> +</span><span id="L-3542"><a href="#L-3542"><span class="linenos">3542</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> +</span><span id="L-3543"><a href="#L-3543"><span class="linenos">3543</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> +</span><span id="L-3544"><a href="#L-3544"><span class="linenos">3544</span></a> <span class="p">)</span> </span><span id="L-3545"><a href="#L-3545"><span class="linenos">3545</span></a> -</span><span id="L-3546"><a href="#L-3546"><span class="linenos">3546</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/pivot</span> -</span><span id="L-3547"><a href="#L-3547"><span class="linenos">3547</span></a> <span class="k">def</span> <span class="nf">_parse_simplified_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> -</span><span id="L-3548"><a href="#L-3548"><span class="linenos">3548</span></a> <span class="k">def</span> <span class="nf">_parse_on</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3549"><a href="#L-3549"><span class="linenos">3549</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-3550"><a href="#L-3550"><span class="linenos">3550</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="L-3546"><a href="#L-3546"><span class="linenos">3546</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]]:</span> +</span><span id="L-3547"><a href="#L-3547"><span class="linenos">3547</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="L-3548"><a href="#L-3548"><span class="linenos">3548</span></a> +</span><span id="L-3549"><a href="#L-3549"><span class="linenos">3549</span></a> <span class="k">def</span> <span class="nf">_parse_joins</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Iterator</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> +</span><span id="L-3550"><a href="#L-3550"><span class="linenos">3550</span></a> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> </span><span id="L-3551"><a href="#L-3551"><span class="linenos">3551</span></a> -</span><span id="L-3552"><a href="#L-3552"><span class="linenos">3552</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-3553"><a href="#L-3553"><span class="linenos">3553</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_on</span><span class="p">)</span> -</span><span id="L-3554"><a href="#L-3554"><span class="linenos">3554</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-3555"><a href="#L-3555"><span class="linenos">3555</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> -</span><span id="L-3556"><a href="#L-3556"><span class="linenos">3556</span></a> <span class="p">)</span> -</span><span id="L-3557"><a href="#L-3557"><span class="linenos">3557</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> -</span><span id="L-3558"><a href="#L-3558"><span class="linenos">3558</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3559"><a href="#L-3559"><span class="linenos">3559</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> <span class="n">group</span><span class="o">=</span><span class="n">group</span> -</span><span id="L-3560"><a href="#L-3560"><span class="linenos">3560</span></a> <span class="p">)</span> -</span><span id="L-3561"><a href="#L-3561"><span class="linenos">3561</span></a> -</span><span id="L-3562"><a href="#L-3562"><span class="linenos">3562</span></a> <span class="k">def</span> <span class="nf">_parse_pivot_in</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> -</span><span id="L-3563"><a href="#L-3563"><span class="linenos">3563</span></a> <span class="k">def</span> <span class="nf">_parse_aliased_expression</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3564"><a href="#L-3564"><span class="linenos">3564</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3565"><a href="#L-3565"><span class="linenos">3565</span></a> -</span><span id="L-3566"><a href="#L-3566"><span class="linenos">3566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-3567"><a href="#L-3567"><span class="linenos">3567</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-3568"><a href="#L-3568"><span class="linenos">3568</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-3569"><a href="#L-3569"><span class="linenos">3569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PivotAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-3570"><a href="#L-3570"><span class="linenos">3570</span></a> -</span><span id="L-3571"><a href="#L-3571"><span class="linenos">3571</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3572"><a href="#L-3572"><span class="linenos">3572</span></a> -</span><span id="L-3573"><a href="#L-3573"><span class="linenos">3573</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-3574"><a href="#L-3574"><span class="linenos">3574</span></a> -</span><span id="L-3575"><a href="#L-3575"><span class="linenos">3575</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3576"><a href="#L-3576"><span class="linenos">3576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN ("</span><span class="p">)</span> -</span><span id="L-3577"><a href="#L-3577"><span class="linenos">3577</span></a> -</span><span id="L-3578"><a href="#L-3578"><span class="linenos">3578</span></a> <span class="n">aliased_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_aliased_expression</span><span class="p">)</span> -</span><span id="L-3579"><a href="#L-3579"><span class="linenos">3579</span></a> -</span><span id="L-3580"><a href="#L-3580"><span class="linenos">3580</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3581"><a href="#L-3581"><span class="linenos">3581</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">aliased_expressions</span><span class="p">)</span> -</span><span id="L-3582"><a href="#L-3582"><span class="linenos">3582</span></a> -</span><span id="L-3583"><a href="#L-3583"><span class="linenos">3583</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]:</span> -</span><span id="L-3584"><a href="#L-3584"><span class="linenos">3584</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3585"><a href="#L-3585"><span class="linenos">3585</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3586"><a href="#L-3586"><span class="linenos">3586</span></a> -</span><span id="L-3587"><a href="#L-3587"><span class="linenos">3587</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> -</span><span id="L-3588"><a href="#L-3588"><span class="linenos">3588</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3589"><a href="#L-3589"><span class="linenos">3589</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> -</span><span id="L-3590"><a href="#L-3590"><span class="linenos">3590</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3591"><a href="#L-3591"><span class="linenos">3591</span></a> -</span><span id="L-3592"><a href="#L-3592"><span class="linenos">3592</span></a> <span class="c1"># https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-qry-select-unpivot.html#syntax</span> -</span><span id="L-3593"><a href="#L-3593"><span class="linenos">3593</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="L-3594"><a href="#L-3594"><span class="linenos">3594</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3595"><a href="#L-3595"><span class="linenos">3595</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"EXCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="L-3596"><a href="#L-3596"><span class="linenos">3596</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3597"><a href="#L-3597"><span class="linenos">3597</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3598"><a href="#L-3598"><span class="linenos">3598</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3599"><a href="#L-3599"><span class="linenos">3599</span></a> -</span><span id="L-3600"><a href="#L-3600"><span class="linenos">3600</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3601"><a href="#L-3601"><span class="linenos">3601</span></a> -</span><span id="L-3602"><a href="#L-3602"><span class="linenos">3602</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3603"><a href="#L-3603"><span class="linenos">3603</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3552"><a href="#L-3552"><span class="linenos">3552</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/pivot</span> +</span><span id="L-3553"><a href="#L-3553"><span class="linenos">3553</span></a> <span class="k">def</span> <span class="nf">_parse_simplified_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> +</span><span id="L-3554"><a href="#L-3554"><span class="linenos">3554</span></a> <span class="k">def</span> <span class="nf">_parse_on</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3555"><a href="#L-3555"><span class="linenos">3555</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-3556"><a href="#L-3556"><span class="linenos">3556</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="L-3557"><a href="#L-3557"><span class="linenos">3557</span></a> +</span><span id="L-3558"><a href="#L-3558"><span class="linenos">3558</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="L-3559"><a href="#L-3559"><span class="linenos">3559</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_on</span><span class="p">)</span> +</span><span id="L-3560"><a href="#L-3560"><span class="linenos">3560</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-3561"><a href="#L-3561"><span class="linenos">3561</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> +</span><span id="L-3562"><a href="#L-3562"><span class="linenos">3562</span></a> <span class="p">)</span> +</span><span id="L-3563"><a href="#L-3563"><span class="linenos">3563</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> +</span><span id="L-3564"><a href="#L-3564"><span class="linenos">3564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3565"><a href="#L-3565"><span class="linenos">3565</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> <span class="n">group</span><span class="o">=</span><span class="n">group</span> +</span><span id="L-3566"><a href="#L-3566"><span class="linenos">3566</span></a> <span class="p">)</span> +</span><span id="L-3567"><a href="#L-3567"><span class="linenos">3567</span></a> +</span><span id="L-3568"><a href="#L-3568"><span class="linenos">3568</span></a> <span class="k">def</span> <span class="nf">_parse_pivot_in</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> +</span><span id="L-3569"><a href="#L-3569"><span class="linenos">3569</span></a> <span class="k">def</span> <span class="nf">_parse_aliased_expression</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3570"><a href="#L-3570"><span class="linenos">3570</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3571"><a href="#L-3571"><span class="linenos">3571</span></a> +</span><span id="L-3572"><a href="#L-3572"><span class="linenos">3572</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-3573"><a href="#L-3573"><span class="linenos">3573</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-3574"><a href="#L-3574"><span class="linenos">3574</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-3575"><a href="#L-3575"><span class="linenos">3575</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PivotAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-3576"><a href="#L-3576"><span class="linenos">3576</span></a> +</span><span id="L-3577"><a href="#L-3577"><span class="linenos">3577</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3578"><a href="#L-3578"><span class="linenos">3578</span></a> +</span><span id="L-3579"><a href="#L-3579"><span class="linenos">3579</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-3580"><a href="#L-3580"><span class="linenos">3580</span></a> +</span><span id="L-3581"><a href="#L-3581"><span class="linenos">3581</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3582"><a href="#L-3582"><span class="linenos">3582</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN ("</span><span class="p">)</span> +</span><span id="L-3583"><a href="#L-3583"><span class="linenos">3583</span></a> +</span><span id="L-3584"><a href="#L-3584"><span class="linenos">3584</span></a> <span class="n">aliased_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_aliased_expression</span><span class="p">)</span> +</span><span id="L-3585"><a href="#L-3585"><span class="linenos">3585</span></a> +</span><span id="L-3586"><a href="#L-3586"><span class="linenos">3586</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3587"><a href="#L-3587"><span class="linenos">3587</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">aliased_expressions</span><span class="p">)</span> +</span><span id="L-3588"><a href="#L-3588"><span class="linenos">3588</span></a> +</span><span id="L-3589"><a href="#L-3589"><span class="linenos">3589</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]:</span> +</span><span id="L-3590"><a href="#L-3590"><span class="linenos">3590</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3591"><a href="#L-3591"><span class="linenos">3591</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3592"><a href="#L-3592"><span class="linenos">3592</span></a> +</span><span id="L-3593"><a href="#L-3593"><span class="linenos">3593</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> +</span><span id="L-3594"><a href="#L-3594"><span class="linenos">3594</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3595"><a href="#L-3595"><span class="linenos">3595</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> +</span><span id="L-3596"><a href="#L-3596"><span class="linenos">3596</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3597"><a href="#L-3597"><span class="linenos">3597</span></a> +</span><span id="L-3598"><a href="#L-3598"><span class="linenos">3598</span></a> <span class="c1"># https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-qry-select-unpivot.html#syntax</span> +</span><span id="L-3599"><a href="#L-3599"><span class="linenos">3599</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="L-3600"><a href="#L-3600"><span class="linenos">3600</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3601"><a href="#L-3601"><span class="linenos">3601</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"EXCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="L-3602"><a href="#L-3602"><span class="linenos">3602</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3603"><a href="#L-3603"><span class="linenos">3603</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-3604"><a href="#L-3604"><span class="linenos">3604</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-3605"><a href="#L-3605"><span class="linenos">3605</span></a> -</span><span id="L-3606"><a href="#L-3606"><span class="linenos">3606</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> -</span><span id="L-3607"><a href="#L-3607"><span class="linenos">3607</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-3608"><a href="#L-3608"><span class="linenos">3608</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3609"><a href="#L-3609"><span class="linenos">3609</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> -</span><span id="L-3610"><a href="#L-3610"><span class="linenos">3610</span></a> -</span><span id="L-3611"><a href="#L-3611"><span class="linenos">3611</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-3612"><a href="#L-3612"><span class="linenos">3612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse PIVOT's aggregation list"</span><span class="p">)</span> -</span><span id="L-3613"><a href="#L-3613"><span class="linenos">3613</span></a> -</span><span id="L-3614"><a href="#L-3614"><span class="linenos">3614</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-3615"><a href="#L-3615"><span class="linenos">3615</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> +</span><span id="L-3606"><a href="#L-3606"><span class="linenos">3606</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3607"><a href="#L-3607"><span class="linenos">3607</span></a> +</span><span id="L-3608"><a href="#L-3608"><span class="linenos">3608</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3609"><a href="#L-3609"><span class="linenos">3609</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3610"><a href="#L-3610"><span class="linenos">3610</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3611"><a href="#L-3611"><span class="linenos">3611</span></a> +</span><span id="L-3612"><a href="#L-3612"><span class="linenos">3612</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> +</span><span id="L-3613"><a href="#L-3613"><span class="linenos">3613</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-3614"><a href="#L-3614"><span class="linenos">3614</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3615"><a href="#L-3615"><span class="linenos">3615</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> </span><span id="L-3616"><a href="#L-3616"><span class="linenos">3616</span></a> -</span><span id="L-3617"><a href="#L-3617"><span class="linenos">3617</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot_in</span><span class="p">()</span> -</span><span id="L-3618"><a href="#L-3618"><span class="linenos">3618</span></a> -</span><span id="L-3619"><a href="#L-3619"><span class="linenos">3619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3620"><a href="#L-3620"><span class="linenos">3620</span></a> -</span><span id="L-3621"><a href="#L-3621"><span class="linenos">3621</span></a> <span class="n">pivot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3622"><a href="#L-3622"><span class="linenos">3622</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> -</span><span id="L-3623"><a href="#L-3623"><span class="linenos">3623</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-3624"><a href="#L-3624"><span class="linenos">3624</span></a> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> -</span><span id="L-3625"><a href="#L-3625"><span class="linenos">3625</span></a> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">,</span> -</span><span id="L-3626"><a href="#L-3626"><span class="linenos">3626</span></a> <span class="n">include_nulls</span><span class="o">=</span><span class="n">include_nulls</span><span class="p">,</span> -</span><span id="L-3627"><a href="#L-3627"><span class="linenos">3627</span></a> <span class="p">)</span> -</span><span id="L-3628"><a href="#L-3628"><span class="linenos">3628</span></a> -</span><span id="L-3629"><a href="#L-3629"><span class="linenos">3629</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3630"><a href="#L-3630"><span class="linenos">3630</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="L-3631"><a href="#L-3631"><span class="linenos">3631</span></a> -</span><span id="L-3632"><a href="#L-3632"><span class="linenos">3632</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unpivot</span><span class="p">:</span> -</span><span id="L-3633"><a href="#L-3633"><span class="linenos">3633</span></a> <span class="n">names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivot_column_names</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">))</span> +</span><span id="L-3617"><a href="#L-3617"><span class="linenos">3617</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-3618"><a href="#L-3618"><span class="linenos">3618</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse PIVOT's aggregation list"</span><span class="p">)</span> +</span><span id="L-3619"><a href="#L-3619"><span class="linenos">3619</span></a> +</span><span id="L-3620"><a href="#L-3620"><span class="linenos">3620</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-3621"><a href="#L-3621"><span class="linenos">3621</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> +</span><span id="L-3622"><a href="#L-3622"><span class="linenos">3622</span></a> +</span><span id="L-3623"><a href="#L-3623"><span class="linenos">3623</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot_in</span><span class="p">()</span> +</span><span id="L-3624"><a href="#L-3624"><span class="linenos">3624</span></a> +</span><span id="L-3625"><a href="#L-3625"><span class="linenos">3625</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3626"><a href="#L-3626"><span class="linenos">3626</span></a> +</span><span id="L-3627"><a href="#L-3627"><span class="linenos">3627</span></a> <span class="n">pivot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3628"><a href="#L-3628"><span class="linenos">3628</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> +</span><span id="L-3629"><a href="#L-3629"><span class="linenos">3629</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-3630"><a href="#L-3630"><span class="linenos">3630</span></a> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> +</span><span id="L-3631"><a href="#L-3631"><span class="linenos">3631</span></a> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">,</span> +</span><span id="L-3632"><a href="#L-3632"><span class="linenos">3632</span></a> <span class="n">include_nulls</span><span class="o">=</span><span class="n">include_nulls</span><span class="p">,</span> +</span><span id="L-3633"><a href="#L-3633"><span class="linenos">3633</span></a> <span class="p">)</span> </span><span id="L-3634"><a href="#L-3634"><span class="linenos">3634</span></a> -</span><span id="L-3635"><a href="#L-3635"><span class="linenos">3635</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3636"><a href="#L-3636"><span class="linenos">3636</span></a> <span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="n">pivot</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"field"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-3637"><a href="#L-3637"><span class="linenos">3637</span></a> <span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="k">else</span> <span class="n">fld</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="L-3638"><a href="#L-3638"><span class="linenos">3638</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span> -</span><span id="L-3639"><a href="#L-3639"><span class="linenos">3639</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PREFIXED_PIVOT_COLUMNS</span><span class="p">:</span> -</span><span id="L-3640"><a href="#L-3640"><span class="linenos">3640</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</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">field_name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> -</span><span id="L-3641"><a href="#L-3641"><span class="linenos">3641</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3642"><a href="#L-3642"><span class="linenos">3642</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> -</span><span id="L-3643"><a href="#L-3643"><span class="linenos">3643</span></a> -</span><span id="L-3644"><a href="#L-3644"><span class="linenos">3644</span></a> <span class="n">columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">))</span> -</span><span id="L-3645"><a href="#L-3645"><span class="linenos">3645</span></a> -</span><span id="L-3646"><a href="#L-3646"><span class="linenos">3646</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">columns</span><span class="p">)</span> -</span><span id="L-3647"><a href="#L-3647"><span class="linenos">3647</span></a> -</span><span id="L-3648"><a href="#L-3648"><span class="linenos">3648</span></a> <span class="k">return</span> <span class="n">pivot</span> +</span><span id="L-3635"><a href="#L-3635"><span class="linenos">3635</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3636"><a href="#L-3636"><span class="linenos">3636</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="L-3637"><a href="#L-3637"><span class="linenos">3637</span></a> +</span><span id="L-3638"><a href="#L-3638"><span class="linenos">3638</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unpivot</span><span class="p">:</span> +</span><span id="L-3639"><a href="#L-3639"><span class="linenos">3639</span></a> <span class="n">names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivot_column_names</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">))</span> +</span><span id="L-3640"><a href="#L-3640"><span class="linenos">3640</span></a> +</span><span id="L-3641"><a href="#L-3641"><span class="linenos">3641</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3642"><a href="#L-3642"><span class="linenos">3642</span></a> <span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="n">pivot</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"field"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-3643"><a href="#L-3643"><span class="linenos">3643</span></a> <span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="k">else</span> <span class="n">fld</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="L-3644"><a href="#L-3644"><span class="linenos">3644</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span> +</span><span id="L-3645"><a href="#L-3645"><span class="linenos">3645</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PREFIXED_PIVOT_COLUMNS</span><span class="p">:</span> +</span><span id="L-3646"><a href="#L-3646"><span class="linenos">3646</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</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">field_name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> +</span><span id="L-3647"><a href="#L-3647"><span class="linenos">3647</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3648"><a href="#L-3648"><span class="linenos">3648</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> </span><span id="L-3649"><a href="#L-3649"><span class="linenos">3649</span></a> -</span><span id="L-3650"><a href="#L-3650"><span class="linenos">3650</span></a> <span class="k">def</span> <span class="nf">_pivot_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></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-3651"><a href="#L-3651"><span class="linenos">3651</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">]</span> -</span><span id="L-3652"><a href="#L-3652"><span class="linenos">3652</span></a> -</span><span id="L-3653"><a href="#L-3653"><span class="linenos">3653</span></a> <span class="k">def</span> <span class="nf">_parse_prewhere</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">]:</span> -</span><span id="L-3654"><a href="#L-3654"><span class="linenos">3654</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">):</span> -</span><span id="L-3655"><a href="#L-3655"><span class="linenos">3655</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3656"><a href="#L-3656"><span class="linenos">3656</span></a> -</span><span id="L-3657"><a href="#L-3657"><span class="linenos">3657</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3658"><a href="#L-3658"><span class="linenos">3658</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3659"><a href="#L-3659"><span class="linenos">3659</span></a> <span class="p">)</span> -</span><span id="L-3660"><a href="#L-3660"><span class="linenos">3660</span></a> -</span><span id="L-3661"><a href="#L-3661"><span class="linenos">3661</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">]:</span> -</span><span id="L-3662"><a href="#L-3662"><span class="linenos">3662</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> -</span><span id="L-3663"><a href="#L-3663"><span class="linenos">3663</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3664"><a href="#L-3664"><span class="linenos">3664</span></a> -</span><span id="L-3665"><a href="#L-3665"><span class="linenos">3665</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3666"><a href="#L-3666"><span class="linenos">3666</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3667"><a href="#L-3667"><span class="linenos">3667</span></a> <span class="p">)</span> -</span><span id="L-3668"><a href="#L-3668"><span class="linenos">3668</span></a> -</span><span id="L-3669"><a href="#L-3669"><span class="linenos">3669</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">]:</span> -</span><span id="L-3670"><a href="#L-3670"><span class="linenos">3670</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> -</span><span id="L-3671"><a href="#L-3671"><span class="linenos">3671</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3672"><a href="#L-3672"><span class="linenos">3672</span></a> -</span><span id="L-3673"><a href="#L-3673"><span class="linenos">3673</span></a> <span class="n">elements</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> +</span><span id="L-3650"><a href="#L-3650"><span class="linenos">3650</span></a> <span class="n">columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">))</span> +</span><span id="L-3651"><a href="#L-3651"><span class="linenos">3651</span></a> +</span><span id="L-3652"><a href="#L-3652"><span class="linenos">3652</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">columns</span><span class="p">)</span> +</span><span id="L-3653"><a href="#L-3653"><span class="linenos">3653</span></a> +</span><span id="L-3654"><a href="#L-3654"><span class="linenos">3654</span></a> <span class="k">return</span> <span class="n">pivot</span> +</span><span id="L-3655"><a href="#L-3655"><span class="linenos">3655</span></a> +</span><span id="L-3656"><a href="#L-3656"><span class="linenos">3656</span></a> <span class="k">def</span> <span class="nf">_pivot_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></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-3657"><a href="#L-3657"><span class="linenos">3657</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">]</span> +</span><span id="L-3658"><a href="#L-3658"><span class="linenos">3658</span></a> +</span><span id="L-3659"><a href="#L-3659"><span class="linenos">3659</span></a> <span class="k">def</span> <span class="nf">_parse_prewhere</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">]:</span> +</span><span id="L-3660"><a href="#L-3660"><span class="linenos">3660</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">):</span> +</span><span id="L-3661"><a href="#L-3661"><span class="linenos">3661</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3662"><a href="#L-3662"><span class="linenos">3662</span></a> +</span><span id="L-3663"><a href="#L-3663"><span class="linenos">3663</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3664"><a href="#L-3664"><span class="linenos">3664</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3665"><a href="#L-3665"><span class="linenos">3665</span></a> <span class="p">)</span> +</span><span id="L-3666"><a href="#L-3666"><span class="linenos">3666</span></a> +</span><span id="L-3667"><a href="#L-3667"><span class="linenos">3667</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">]:</span> +</span><span id="L-3668"><a href="#L-3668"><span class="linenos">3668</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> +</span><span id="L-3669"><a href="#L-3669"><span class="linenos">3669</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3670"><a href="#L-3670"><span class="linenos">3670</span></a> +</span><span id="L-3671"><a href="#L-3671"><span class="linenos">3671</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3672"><a href="#L-3672"><span class="linenos">3672</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3673"><a href="#L-3673"><span class="linenos">3673</span></a> <span class="p">)</span> </span><span id="L-3674"><a href="#L-3674"><span class="linenos">3674</span></a> -</span><span id="L-3675"><a href="#L-3675"><span class="linenos">3675</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> -</span><span id="L-3676"><a href="#L-3676"><span class="linenos">3676</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3677"><a href="#L-3677"><span class="linenos">3677</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="L-3678"><a href="#L-3678"><span class="linenos">3678</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3679"><a href="#L-3679"><span class="linenos">3679</span></a> -</span><span id="L-3680"><a href="#L-3680"><span class="linenos">3680</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-3681"><a href="#L-3681"><span class="linenos">3681</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-3682"><a href="#L-3682"><span class="linenos">3682</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span> -</span><span id="L-3683"><a href="#L-3683"><span class="linenos">3683</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3684"><a href="#L-3684"><span class="linenos">3684</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3685"><a href="#L-3685"><span class="linenos">3685</span></a> <span class="p">)</span> -</span><span id="L-3686"><a href="#L-3686"><span class="linenos">3686</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-3687"><a href="#L-3687"><span class="linenos">3687</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3688"><a href="#L-3688"><span class="linenos">3688</span></a> -</span><span id="L-3689"><a href="#L-3689"><span class="linenos">3689</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> -</span><span id="L-3690"><a href="#L-3690"><span class="linenos">3690</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> -</span><span id="L-3691"><a href="#L-3691"><span class="linenos">3691</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> -</span><span id="L-3692"><a href="#L-3692"><span class="linenos">3692</span></a> -</span><span id="L-3693"><a href="#L-3693"><span class="linenos">3693</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3694"><a href="#L-3694"><span class="linenos">3694</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3695"><a href="#L-3695"><span class="linenos">3695</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3696"><a href="#L-3696"><span class="linenos">3696</span></a> -</span><span id="L-3697"><a href="#L-3697"><span class="linenos">3697</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3698"><a href="#L-3698"><span class="linenos">3698</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="L-3699"><a href="#L-3699"><span class="linenos">3699</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> -</span><span id="L-3700"><a href="#L-3700"><span class="linenos">3700</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-3701"><a href="#L-3701"><span class="linenos">3701</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> +</span><span id="L-3675"><a href="#L-3675"><span class="linenos">3675</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">]:</span> +</span><span id="L-3676"><a href="#L-3676"><span class="linenos">3676</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> +</span><span id="L-3677"><a href="#L-3677"><span class="linenos">3677</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3678"><a href="#L-3678"><span class="linenos">3678</span></a> +</span><span id="L-3679"><a href="#L-3679"><span class="linenos">3679</span></a> <span class="n">elements</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> +</span><span id="L-3680"><a href="#L-3680"><span class="linenos">3680</span></a> +</span><span id="L-3681"><a href="#L-3681"><span class="linenos">3681</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> +</span><span id="L-3682"><a href="#L-3682"><span class="linenos">3682</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3683"><a href="#L-3683"><span class="linenos">3683</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="L-3684"><a href="#L-3684"><span class="linenos">3684</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3685"><a href="#L-3685"><span class="linenos">3685</span></a> +</span><span id="L-3686"><a href="#L-3686"><span class="linenos">3686</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-3687"><a href="#L-3687"><span class="linenos">3687</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-3688"><a href="#L-3688"><span class="linenos">3688</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span> +</span><span id="L-3689"><a href="#L-3689"><span class="linenos">3689</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3690"><a href="#L-3690"><span class="linenos">3690</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3691"><a href="#L-3691"><span class="linenos">3691</span></a> <span class="p">)</span> +</span><span id="L-3692"><a href="#L-3692"><span class="linenos">3692</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-3693"><a href="#L-3693"><span class="linenos">3693</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3694"><a href="#L-3694"><span class="linenos">3694</span></a> +</span><span id="L-3695"><a href="#L-3695"><span class="linenos">3695</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> +</span><span id="L-3696"><a href="#L-3696"><span class="linenos">3696</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> +</span><span id="L-3697"><a href="#L-3697"><span class="linenos">3697</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> +</span><span id="L-3698"><a href="#L-3698"><span class="linenos">3698</span></a> +</span><span id="L-3699"><a href="#L-3699"><span class="linenos">3699</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3700"><a href="#L-3700"><span class="linenos">3700</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3701"><a href="#L-3701"><span class="linenos">3701</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-3702"><a href="#L-3702"><span class="linenos">3702</span></a> -</span><span id="L-3703"><a href="#L-3703"><span class="linenos">3703</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> -</span><span id="L-3704"><a href="#L-3704"><span class="linenos">3704</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-3705"><a href="#L-3705"><span class="linenos">3705</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> -</span><span id="L-3706"><a href="#L-3706"><span class="linenos">3706</span></a> -</span><span id="L-3707"><a href="#L-3707"><span class="linenos">3707</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TOTALS"</span><span class="p">):</span> -</span><span id="L-3708"><a href="#L-3708"><span class="linenos">3708</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3709"><a href="#L-3709"><span class="linenos">3709</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"totals"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># type: ignore</span> -</span><span id="L-3710"><a href="#L-3710"><span class="linenos">3710</span></a> -</span><span id="L-3711"><a href="#L-3711"><span class="linenos">3711</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span> <span class="ow">or</span> <span class="n">totals</span><span class="p">):</span> -</span><span id="L-3712"><a href="#L-3712"><span class="linenos">3712</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="L-3713"><a href="#L-3713"><span class="linenos">3713</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3714"><a href="#L-3714"><span class="linenos">3714</span></a> <span class="k">break</span> -</span><span id="L-3715"><a href="#L-3715"><span class="linenos">3715</span></a> -</span><span id="L-3716"><a href="#L-3716"><span class="linenos">3716</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-3717"><a href="#L-3717"><span class="linenos">3717</span></a> -</span><span id="L-3718"><a href="#L-3718"><span class="linenos">3718</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3719"><a href="#L-3719"><span class="linenos">3719</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> -</span><span id="L-3720"><a href="#L-3720"><span class="linenos">3720</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3703"><a href="#L-3703"><span class="linenos">3703</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3704"><a href="#L-3704"><span class="linenos">3704</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="L-3705"><a href="#L-3705"><span class="linenos">3705</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> +</span><span id="L-3706"><a href="#L-3706"><span class="linenos">3706</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-3707"><a href="#L-3707"><span class="linenos">3707</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> +</span><span id="L-3708"><a href="#L-3708"><span class="linenos">3708</span></a> +</span><span id="L-3709"><a href="#L-3709"><span class="linenos">3709</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> +</span><span id="L-3710"><a href="#L-3710"><span class="linenos">3710</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-3711"><a href="#L-3711"><span class="linenos">3711</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> +</span><span id="L-3712"><a href="#L-3712"><span class="linenos">3712</span></a> +</span><span id="L-3713"><a href="#L-3713"><span class="linenos">3713</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TOTALS"</span><span class="p">):</span> +</span><span id="L-3714"><a href="#L-3714"><span class="linenos">3714</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3715"><a href="#L-3715"><span class="linenos">3715</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"totals"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># type: ignore</span> +</span><span id="L-3716"><a href="#L-3716"><span class="linenos">3716</span></a> +</span><span id="L-3717"><a href="#L-3717"><span class="linenos">3717</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span> <span class="ow">or</span> <span class="n">totals</span><span class="p">):</span> +</span><span id="L-3718"><a href="#L-3718"><span class="linenos">3718</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="L-3719"><a href="#L-3719"><span class="linenos">3719</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3720"><a href="#L-3720"><span class="linenos">3720</span></a> <span class="k">break</span> </span><span id="L-3721"><a href="#L-3721"><span class="linenos">3721</span></a> -</span><span id="L-3722"><a href="#L-3722"><span class="linenos">3722</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> +</span><span id="L-3722"><a href="#L-3722"><span class="linenos">3722</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="L-3723"><a href="#L-3723"><span class="linenos">3723</span></a> -</span><span id="L-3724"><a href="#L-3724"><span class="linenos">3724</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3725"><a href="#L-3725"><span class="linenos">3725</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3726"><a href="#L-3726"><span class="linenos">3726</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-3727"><a href="#L-3727"><span class="linenos">3727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3728"><a href="#L-3728"><span class="linenos">3728</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> +</span><span id="L-3724"><a href="#L-3724"><span class="linenos">3724</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3725"><a href="#L-3725"><span class="linenos">3725</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> +</span><span id="L-3726"><a href="#L-3726"><span class="linenos">3726</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3727"><a href="#L-3727"><span class="linenos">3727</span></a> +</span><span id="L-3728"><a href="#L-3728"><span class="linenos">3728</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> </span><span id="L-3729"><a href="#L-3729"><span class="linenos">3729</span></a> -</span><span id="L-3730"><a href="#L-3730"><span class="linenos">3730</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-3731"><a href="#L-3731"><span class="linenos">3731</span></a> -</span><span id="L-3732"><a href="#L-3732"><span class="linenos">3732</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">]:</span> -</span><span id="L-3733"><a href="#L-3733"><span class="linenos">3733</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> -</span><span id="L-3734"><a href="#L-3734"><span class="linenos">3734</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3735"><a href="#L-3735"><span class="linenos">3735</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="L-3736"><a href="#L-3736"><span class="linenos">3736</span></a> -</span><span id="L-3737"><a href="#L-3737"><span class="linenos">3737</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">]:</span> -</span><span id="L-3738"><a href="#L-3738"><span class="linenos">3738</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> -</span><span id="L-3739"><a href="#L-3739"><span class="linenos">3739</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3740"><a href="#L-3740"><span class="linenos">3740</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="L-3741"><a href="#L-3741"><span class="linenos">3741</span></a> -</span><span id="L-3742"><a href="#L-3742"><span class="linenos">3742</span></a> <span class="k">def</span> <span class="nf">_parse_connect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_start_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">]:</span> -</span><span id="L-3743"><a href="#L-3743"><span class="linenos">3743</span></a> <span class="k">if</span> <span class="n">skip_start_token</span><span class="p">:</span> -</span><span id="L-3744"><a href="#L-3744"><span class="linenos">3744</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3745"><a href="#L-3745"><span class="linenos">3745</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> -</span><span id="L-3746"><a href="#L-3746"><span class="linenos">3746</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3747"><a href="#L-3747"><span class="linenos">3747</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3748"><a href="#L-3748"><span class="linenos">3748</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3749"><a href="#L-3749"><span class="linenos">3749</span></a> -</span><span id="L-3750"><a href="#L-3750"><span class="linenos">3750</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">)</span> -</span><span id="L-3751"><a href="#L-3751"><span class="linenos">3751</span></a> <span class="n">nocycle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOCYCLE"</span><span class="p">)</span> -</span><span id="L-3752"><a href="#L-3752"><span class="linenos">3752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="s2">"PRIOR"</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3753"><a href="#L-3753"><span class="linenos">3753</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Prior</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-3754"><a href="#L-3754"><span class="linenos">3754</span></a> <span class="p">)</span> -</span><span id="L-3755"><a href="#L-3755"><span class="linenos">3755</span></a> <span class="n">connect</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3756"><a href="#L-3756"><span class="linenos">3756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"PRIOR"</span><span class="p">)</span> -</span><span id="L-3757"><a href="#L-3757"><span class="linenos">3757</span></a> -</span><span id="L-3758"><a href="#L-3758"><span class="linenos">3758</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> -</span><span id="L-3759"><a href="#L-3759"><span class="linenos">3759</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3760"><a href="#L-3760"><span class="linenos">3760</span></a> -</span><span id="L-3761"><a href="#L-3761"><span class="linenos">3761</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">connect</span><span class="o">=</span><span class="n">connect</span><span class="p">,</span> <span class="n">nocycle</span><span class="o">=</span><span class="n">nocycle</span><span class="p">)</span> -</span><span id="L-3762"><a href="#L-3762"><span class="linenos">3762</span></a> -</span><span id="L-3763"><a href="#L-3763"><span class="linenos">3763</span></a> <span class="k">def</span> <span class="nf">_parse_name_as_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">:</span> -</span><span id="L-3764"><a href="#L-3764"><span class="linenos">3764</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3765"><a href="#L-3765"><span class="linenos">3765</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> -</span><span id="L-3766"><a href="#L-3766"><span class="linenos">3766</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-3767"><a href="#L-3767"><span class="linenos">3767</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-3768"><a href="#L-3768"><span class="linenos">3768</span></a> <span class="p">)</span> -</span><span id="L-3769"><a href="#L-3769"><span class="linenos">3769</span></a> -</span><span id="L-3770"><a href="#L-3770"><span class="linenos">3770</span></a> <span class="k">def</span> <span class="nf">_parse_interpolate</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3771"><a href="#L-3771"><span class="linenos">3771</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INTERPOLATE"</span><span class="p">):</span> -</span><span id="L-3772"><a href="#L-3772"><span class="linenos">3772</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> -</span><span id="L-3773"><a href="#L-3773"><span class="linenos">3773</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3774"><a href="#L-3774"><span class="linenos">3774</span></a> -</span><span id="L-3775"><a href="#L-3775"><span class="linenos">3775</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> -</span><span id="L-3776"><a href="#L-3776"><span class="linenos">3776</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3777"><a href="#L-3777"><span class="linenos">3777</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3778"><a href="#L-3778"><span class="linenos">3778</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3779"><a href="#L-3779"><span class="linenos">3779</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> -</span><span id="L-3780"><a href="#L-3780"><span class="linenos">3780</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_SIBLINGS_BY</span><span class="p">):</span> -</span><span id="L-3781"><a href="#L-3781"><span class="linenos">3781</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3782"><a href="#L-3782"><span class="linenos">3782</span></a> -</span><span id="L-3783"><a href="#L-3783"><span class="linenos">3783</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3784"><a href="#L-3784"><span class="linenos">3784</span></a> -</span><span id="L-3785"><a href="#L-3785"><span class="linenos">3785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3786"><a href="#L-3786"><span class="linenos">3786</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">,</span> -</span><span id="L-3787"><a href="#L-3787"><span class="linenos">3787</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3788"><a href="#L-3788"><span class="linenos">3788</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">),</span> -</span><span id="L-3789"><a href="#L-3789"><span class="linenos">3789</span></a> <span class="n">interpolate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interpolate</span><span class="p">(),</span> -</span><span id="L-3790"><a href="#L-3790"><span class="linenos">3790</span></a> <span class="n">siblings</span><span class="o">=</span><span class="n">siblings</span><span class="p">,</span> -</span><span id="L-3791"><a href="#L-3791"><span class="linenos">3791</span></a> <span class="p">)</span> -</span><span id="L-3792"><a href="#L-3792"><span class="linenos">3792</span></a> -</span><span id="L-3793"><a href="#L-3793"><span class="linenos">3793</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">token</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</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">E</span><span class="p">]:</span> -</span><span id="L-3794"><a href="#L-3794"><span class="linenos">3794</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token</span><span class="p">):</span> -</span><span id="L-3795"><a href="#L-3795"><span class="linenos">3795</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3796"><a href="#L-3796"><span class="linenos">3796</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> -</span><span id="L-3797"><a href="#L-3797"><span class="linenos">3797</span></a> -</span><span id="L-3798"><a href="#L-3798"><span class="linenos">3798</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span> -</span><span id="L-3799"><a href="#L-3799"><span class="linenos">3799</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3800"><a href="#L-3800"><span class="linenos">3800</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">]:</span> -</span><span id="L-3801"><a href="#L-3801"><span class="linenos">3801</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_method</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-3802"><a href="#L-3802"><span class="linenos">3802</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-3803"><a href="#L-3803"><span class="linenos">3803</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3804"><a href="#L-3804"><span class="linenos">3804</span></a> -</span><span id="L-3805"><a href="#L-3805"><span class="linenos">3805</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> -</span><span id="L-3806"><a href="#L-3806"><span class="linenos">3806</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-3807"><a href="#L-3807"><span class="linenos">3807</span></a> -</span><span id="L-3808"><a href="#L-3808"><span class="linenos">3808</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">)</span> -</span><span id="L-3809"><a href="#L-3809"><span class="linenos">3809</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">)</span> +</span><span id="L-3730"><a href="#L-3730"><span class="linenos">3730</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3731"><a href="#L-3731"><span class="linenos">3731</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3732"><a href="#L-3732"><span class="linenos">3732</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-3733"><a href="#L-3733"><span class="linenos">3733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3734"><a href="#L-3734"><span class="linenos">3734</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> +</span><span id="L-3735"><a href="#L-3735"><span class="linenos">3735</span></a> +</span><span id="L-3736"><a href="#L-3736"><span class="linenos">3736</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-3737"><a href="#L-3737"><span class="linenos">3737</span></a> +</span><span id="L-3738"><a href="#L-3738"><span class="linenos">3738</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">]:</span> +</span><span id="L-3739"><a href="#L-3739"><span class="linenos">3739</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> +</span><span id="L-3740"><a href="#L-3740"><span class="linenos">3740</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3741"><a href="#L-3741"><span class="linenos">3741</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="L-3742"><a href="#L-3742"><span class="linenos">3742</span></a> +</span><span id="L-3743"><a href="#L-3743"><span class="linenos">3743</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">]:</span> +</span><span id="L-3744"><a href="#L-3744"><span class="linenos">3744</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> +</span><span id="L-3745"><a href="#L-3745"><span class="linenos">3745</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3746"><a href="#L-3746"><span class="linenos">3746</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="L-3747"><a href="#L-3747"><span class="linenos">3747</span></a> +</span><span id="L-3748"><a href="#L-3748"><span class="linenos">3748</span></a> <span class="k">def</span> <span class="nf">_parse_connect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_start_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">]:</span> +</span><span id="L-3749"><a href="#L-3749"><span class="linenos">3749</span></a> <span class="k">if</span> <span class="n">skip_start_token</span><span class="p">:</span> +</span><span id="L-3750"><a href="#L-3750"><span class="linenos">3750</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3751"><a href="#L-3751"><span class="linenos">3751</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> +</span><span id="L-3752"><a href="#L-3752"><span class="linenos">3752</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3753"><a href="#L-3753"><span class="linenos">3753</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3754"><a href="#L-3754"><span class="linenos">3754</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3755"><a href="#L-3755"><span class="linenos">3755</span></a> +</span><span id="L-3756"><a href="#L-3756"><span class="linenos">3756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">)</span> +</span><span id="L-3757"><a href="#L-3757"><span class="linenos">3757</span></a> <span class="n">nocycle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOCYCLE"</span><span class="p">)</span> +</span><span id="L-3758"><a href="#L-3758"><span class="linenos">3758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="s2">"PRIOR"</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3759"><a href="#L-3759"><span class="linenos">3759</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Prior</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-3760"><a href="#L-3760"><span class="linenos">3760</span></a> <span class="p">)</span> +</span><span id="L-3761"><a href="#L-3761"><span class="linenos">3761</span></a> <span class="n">connect</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3762"><a href="#L-3762"><span class="linenos">3762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"PRIOR"</span><span class="p">)</span> +</span><span id="L-3763"><a href="#L-3763"><span class="linenos">3763</span></a> +</span><span id="L-3764"><a href="#L-3764"><span class="linenos">3764</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> +</span><span id="L-3765"><a href="#L-3765"><span class="linenos">3765</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3766"><a href="#L-3766"><span class="linenos">3766</span></a> +</span><span id="L-3767"><a href="#L-3767"><span class="linenos">3767</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">connect</span><span class="o">=</span><span class="n">connect</span><span class="p">,</span> <span class="n">nocycle</span><span class="o">=</span><span class="n">nocycle</span><span class="p">)</span> +</span><span id="L-3768"><a href="#L-3768"><span class="linenos">3768</span></a> +</span><span id="L-3769"><a href="#L-3769"><span class="linenos">3769</span></a> <span class="k">def</span> <span class="nf">_parse_name_as_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">:</span> +</span><span id="L-3770"><a href="#L-3770"><span class="linenos">3770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3771"><a href="#L-3771"><span class="linenos">3771</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> +</span><span id="L-3772"><a href="#L-3772"><span class="linenos">3772</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-3773"><a href="#L-3773"><span class="linenos">3773</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-3774"><a href="#L-3774"><span class="linenos">3774</span></a> <span class="p">)</span> +</span><span id="L-3775"><a href="#L-3775"><span class="linenos">3775</span></a> +</span><span id="L-3776"><a href="#L-3776"><span class="linenos">3776</span></a> <span class="k">def</span> <span class="nf">_parse_interpolate</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3777"><a href="#L-3777"><span class="linenos">3777</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INTERPOLATE"</span><span class="p">):</span> +</span><span id="L-3778"><a href="#L-3778"><span class="linenos">3778</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> +</span><span id="L-3779"><a href="#L-3779"><span class="linenos">3779</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3780"><a href="#L-3780"><span class="linenos">3780</span></a> +</span><span id="L-3781"><a href="#L-3781"><span class="linenos">3781</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> +</span><span id="L-3782"><a href="#L-3782"><span class="linenos">3782</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3783"><a href="#L-3783"><span class="linenos">3783</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3784"><a href="#L-3784"><span class="linenos">3784</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3785"><a href="#L-3785"><span class="linenos">3785</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> +</span><span id="L-3786"><a href="#L-3786"><span class="linenos">3786</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_SIBLINGS_BY</span><span class="p">):</span> +</span><span id="L-3787"><a href="#L-3787"><span class="linenos">3787</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3788"><a href="#L-3788"><span class="linenos">3788</span></a> +</span><span id="L-3789"><a href="#L-3789"><span class="linenos">3789</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3790"><a href="#L-3790"><span class="linenos">3790</span></a> +</span><span id="L-3791"><a href="#L-3791"><span class="linenos">3791</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3792"><a href="#L-3792"><span class="linenos">3792</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">,</span> +</span><span id="L-3793"><a href="#L-3793"><span class="linenos">3793</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3794"><a href="#L-3794"><span class="linenos">3794</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">),</span> +</span><span id="L-3795"><a href="#L-3795"><span class="linenos">3795</span></a> <span class="n">interpolate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interpolate</span><span class="p">(),</span> +</span><span id="L-3796"><a href="#L-3796"><span class="linenos">3796</span></a> <span class="n">siblings</span><span class="o">=</span><span class="n">siblings</span><span class="p">,</span> +</span><span id="L-3797"><a href="#L-3797"><span class="linenos">3797</span></a> <span class="p">)</span> +</span><span id="L-3798"><a href="#L-3798"><span class="linenos">3798</span></a> +</span><span id="L-3799"><a href="#L-3799"><span class="linenos">3799</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">token</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</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">E</span><span class="p">]:</span> +</span><span id="L-3800"><a href="#L-3800"><span class="linenos">3800</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token</span><span class="p">):</span> +</span><span id="L-3801"><a href="#L-3801"><span class="linenos">3801</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3802"><a href="#L-3802"><span class="linenos">3802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> +</span><span id="L-3803"><a href="#L-3803"><span class="linenos">3803</span></a> +</span><span id="L-3804"><a href="#L-3804"><span class="linenos">3804</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span> +</span><span id="L-3805"><a href="#L-3805"><span class="linenos">3805</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3806"><a href="#L-3806"><span class="linenos">3806</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">]:</span> +</span><span id="L-3807"><a href="#L-3807"><span class="linenos">3807</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_method</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-3808"><a href="#L-3808"><span class="linenos">3808</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-3809"><a href="#L-3809"><span class="linenos">3809</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-3810"><a href="#L-3810"><span class="linenos">3810</span></a> -</span><span id="L-3811"><a href="#L-3811"><span class="linenos">3811</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> -</span><span id="L-3812"><a href="#L-3812"><span class="linenos">3812</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> +</span><span id="L-3811"><a href="#L-3811"><span class="linenos">3811</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> +</span><span id="L-3812"><a href="#L-3812"><span class="linenos">3812</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="kc">False</span><span class="p">)</span> </span><span id="L-3813"><a href="#L-3813"><span class="linenos">3813</span></a> -</span><span id="L-3814"><a href="#L-3814"><span class="linenos">3814</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-3815"><a href="#L-3815"><span class="linenos">3815</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> -</span><span id="L-3816"><a href="#L-3816"><span class="linenos">3816</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-3817"><a href="#L-3817"><span class="linenos">3817</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="L-3818"><a href="#L-3818"><span class="linenos">3818</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="L-3819"><a href="#L-3819"><span class="linenos">3819</span></a> <span class="p">)</span> -</span><span id="L-3820"><a href="#L-3820"><span class="linenos">3820</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> -</span><span id="L-3821"><a href="#L-3821"><span class="linenos">3821</span></a> <span class="p">):</span> -</span><span id="L-3822"><a href="#L-3822"><span class="linenos">3822</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3823"><a href="#L-3823"><span class="linenos">3823</span></a> -</span><span id="L-3824"><a href="#L-3824"><span class="linenos">3824</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"FILL"</span><span class="p">):</span> -</span><span id="L-3825"><a href="#L-3825"><span class="linenos">3825</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3826"><a href="#L-3826"><span class="linenos">3826</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithFill</span><span class="p">,</span> -</span><span id="L-3827"><a href="#L-3827"><span class="linenos">3827</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="L-3828"><a href="#L-3828"><span class="linenos">3828</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="L-3829"><a href="#L-3829"><span class="linenos">3829</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="L-3830"><a href="#L-3830"><span class="linenos">3830</span></a> <span class="s2">"step"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STEP"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="L-3831"><a href="#L-3831"><span class="linenos">3831</span></a> <span class="p">},</span> -</span><span id="L-3832"><a href="#L-3832"><span class="linenos">3832</span></a> <span class="p">)</span> -</span><span id="L-3833"><a href="#L-3833"><span class="linenos">3833</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3834"><a href="#L-3834"><span class="linenos">3834</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3835"><a href="#L-3835"><span class="linenos">3835</span></a> -</span><span id="L-3836"><a href="#L-3836"><span class="linenos">3836</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3837"><a href="#L-3837"><span class="linenos">3837</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">,</span> <span class="n">with_fill</span><span class="o">=</span><span class="n">with_fill</span> -</span><span id="L-3838"><a href="#L-3838"><span class="linenos">3838</span></a> <span class="p">)</span> -</span><span id="L-3839"><a href="#L-3839"><span class="linenos">3839</span></a> -</span><span id="L-3840"><a href="#L-3840"><span class="linenos">3840</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> -</span><span id="L-3841"><a href="#L-3841"><span class="linenos">3841</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-3842"><a href="#L-3842"><span class="linenos">3842</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3843"><a href="#L-3843"><span class="linenos">3843</span></a> <span class="n">top</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-3844"><a href="#L-3844"><span class="linenos">3844</span></a> <span class="n">skip_limit_token</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-3845"><a href="#L-3845"><span class="linenos">3845</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3846"><a href="#L-3846"><span class="linenos">3846</span></a> <span class="k">if</span> <span class="n">skip_limit_token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> -</span><span id="L-3847"><a href="#L-3847"><span class="linenos">3847</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-3848"><a href="#L-3848"><span class="linenos">3848</span></a> <span class="k">if</span> <span class="n">top</span><span class="p">:</span> -</span><span id="L-3849"><a href="#L-3849"><span class="linenos">3849</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="L-3850"><a href="#L-3850"><span class="linenos">3850</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> <span class="k">if</span> <span class="n">limit_paren</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-3851"><a href="#L-3851"><span class="linenos">3851</span></a> -</span><span id="L-3852"><a href="#L-3852"><span class="linenos">3852</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> -</span><span id="L-3853"><a href="#L-3853"><span class="linenos">3853</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3854"><a href="#L-3854"><span class="linenos">3854</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3855"><a href="#L-3855"><span class="linenos">3855</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-3856"><a href="#L-3856"><span class="linenos">3856</span></a> -</span><span id="L-3857"><a href="#L-3857"><span class="linenos">3857</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-3858"><a href="#L-3858"><span class="linenos">3858</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="L-3859"><a href="#L-3859"><span class="linenos">3859</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3814"><a href="#L-3814"><span class="linenos">3814</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">)</span> +</span><span id="L-3815"><a href="#L-3815"><span class="linenos">3815</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">)</span> +</span><span id="L-3816"><a href="#L-3816"><span class="linenos">3816</span></a> +</span><span id="L-3817"><a href="#L-3817"><span class="linenos">3817</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> +</span><span id="L-3818"><a href="#L-3818"><span class="linenos">3818</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> +</span><span id="L-3819"><a href="#L-3819"><span class="linenos">3819</span></a> +</span><span id="L-3820"><a href="#L-3820"><span class="linenos">3820</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-3821"><a href="#L-3821"><span class="linenos">3821</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> +</span><span id="L-3822"><a href="#L-3822"><span class="linenos">3822</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-3823"><a href="#L-3823"><span class="linenos">3823</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="L-3824"><a href="#L-3824"><span class="linenos">3824</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="L-3825"><a href="#L-3825"><span class="linenos">3825</span></a> <span class="p">)</span> +</span><span id="L-3826"><a href="#L-3826"><span class="linenos">3826</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> +</span><span id="L-3827"><a href="#L-3827"><span class="linenos">3827</span></a> <span class="p">):</span> +</span><span id="L-3828"><a href="#L-3828"><span class="linenos">3828</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3829"><a href="#L-3829"><span class="linenos">3829</span></a> +</span><span id="L-3830"><a href="#L-3830"><span class="linenos">3830</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"FILL"</span><span class="p">):</span> +</span><span id="L-3831"><a href="#L-3831"><span class="linenos">3831</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3832"><a href="#L-3832"><span class="linenos">3832</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithFill</span><span class="p">,</span> +</span><span id="L-3833"><a href="#L-3833"><span class="linenos">3833</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="L-3834"><a href="#L-3834"><span class="linenos">3834</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="L-3835"><a href="#L-3835"><span class="linenos">3835</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="L-3836"><a href="#L-3836"><span class="linenos">3836</span></a> <span class="s2">"step"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STEP"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="L-3837"><a href="#L-3837"><span class="linenos">3837</span></a> <span class="p">},</span> +</span><span id="L-3838"><a href="#L-3838"><span class="linenos">3838</span></a> <span class="p">)</span> +</span><span id="L-3839"><a href="#L-3839"><span class="linenos">3839</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3840"><a href="#L-3840"><span class="linenos">3840</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3841"><a href="#L-3841"><span class="linenos">3841</span></a> +</span><span id="L-3842"><a href="#L-3842"><span class="linenos">3842</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3843"><a href="#L-3843"><span class="linenos">3843</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">,</span> <span class="n">with_fill</span><span class="o">=</span><span class="n">with_fill</span> +</span><span id="L-3844"><a href="#L-3844"><span class="linenos">3844</span></a> <span class="p">)</span> +</span><span id="L-3845"><a href="#L-3845"><span class="linenos">3845</span></a> +</span><span id="L-3846"><a href="#L-3846"><span class="linenos">3846</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> +</span><span id="L-3847"><a href="#L-3847"><span class="linenos">3847</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-3848"><a href="#L-3848"><span class="linenos">3848</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3849"><a href="#L-3849"><span class="linenos">3849</span></a> <span class="n">top</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-3850"><a href="#L-3850"><span class="linenos">3850</span></a> <span class="n">skip_limit_token</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-3851"><a href="#L-3851"><span class="linenos">3851</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3852"><a href="#L-3852"><span class="linenos">3852</span></a> <span class="k">if</span> <span class="n">skip_limit_token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> +</span><span id="L-3853"><a href="#L-3853"><span class="linenos">3853</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-3854"><a href="#L-3854"><span class="linenos">3854</span></a> <span class="k">if</span> <span class="n">top</span><span class="p">:</span> +</span><span id="L-3855"><a href="#L-3855"><span class="linenos">3855</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="L-3856"><a href="#L-3856"><span class="linenos">3856</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> <span class="k">if</span> <span class="n">limit_paren</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-3857"><a href="#L-3857"><span class="linenos">3857</span></a> +</span><span id="L-3858"><a href="#L-3858"><span class="linenos">3858</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> +</span><span id="L-3859"><a href="#L-3859"><span class="linenos">3859</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> </span><span id="L-3860"><a href="#L-3860"><span class="linenos">3860</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3861"><a href="#L-3861"><span class="linenos">3861</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3861"><a href="#L-3861"><span class="linenos">3861</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> </span><span id="L-3862"><a href="#L-3862"><span class="linenos">3862</span></a> -</span><span id="L-3863"><a href="#L-3863"><span class="linenos">3863</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3864"><a href="#L-3864"><span class="linenos">3864</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> -</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3866"><a href="#L-3866"><span class="linenos">3866</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-3867"><a href="#L-3867"><span class="linenos">3867</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> -</span><span id="L-3868"><a href="#L-3868"><span class="linenos">3868</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-3869"><a href="#L-3869"><span class="linenos">3869</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">(),</span> -</span><span id="L-3870"><a href="#L-3870"><span class="linenos">3870</span></a> <span class="p">)</span> -</span><span id="L-3871"><a href="#L-3871"><span class="linenos">3871</span></a> -</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="k">return</span> <span class="n">limit_exp</span> -</span><span id="L-3873"><a href="#L-3873"><span class="linenos">3873</span></a> -</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> -</span><span id="L-3875"><a href="#L-3875"><span class="linenos">3875</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> -</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> +</span><span id="L-3863"><a href="#L-3863"><span class="linenos">3863</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-3864"><a href="#L-3864"><span class="linenos">3864</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3866"><a href="#L-3866"><span class="linenos">3866</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3867"><a href="#L-3867"><span class="linenos">3867</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3868"><a href="#L-3868"><span class="linenos">3868</span></a> +</span><span id="L-3869"><a href="#L-3869"><span class="linenos">3869</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3870"><a href="#L-3870"><span class="linenos">3870</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> +</span><span id="L-3871"><a href="#L-3871"><span class="linenos">3871</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-3873"><a href="#L-3873"><span class="linenos">3873</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> +</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-3875"><a href="#L-3875"><span class="linenos">3875</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">(),</span> +</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="p">)</span> </span><span id="L-3877"><a href="#L-3877"><span class="linenos">3877</span></a> -</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">FETCH_TOKENS</span><span class="p">)</span> -</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> -</span><span id="L-3880"><a href="#L-3880"><span class="linenos">3880</span></a> -</span><span id="L-3881"><a href="#L-3881"><span class="linenos">3881</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a> -</span><span id="L-3883"><a href="#L-3883"><span class="linenos">3883</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> -</span><span id="L-3884"><a href="#L-3884"><span class="linenos">3884</span></a> <span class="n">with_ties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIES"</span><span class="p">)</span> -</span><span id="L-3885"><a href="#L-3885"><span class="linenos">3885</span></a> -</span><span id="L-3886"><a href="#L-3886"><span class="linenos">3886</span></a> <span class="k">if</span> <span class="n">only</span> <span class="ow">and</span> <span class="n">with_ties</span><span class="p">:</span> -</span><span id="L-3887"><a href="#L-3887"><span class="linenos">3887</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ONLY and WITH TIES in FETCH clause"</span><span class="p">)</span> +</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a> <span class="k">return</span> <span class="n">limit_exp</span> +</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> +</span><span id="L-3880"><a href="#L-3880"><span class="linenos">3880</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> +</span><span id="L-3881"><a href="#L-3881"><span class="linenos">3881</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> +</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> +</span><span id="L-3883"><a href="#L-3883"><span class="linenos">3883</span></a> +</span><span id="L-3884"><a href="#L-3884"><span class="linenos">3884</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">FETCH_TOKENS</span><span class="p">)</span> +</span><span id="L-3885"><a href="#L-3885"><span class="linenos">3885</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> +</span><span id="L-3886"><a href="#L-3886"><span class="linenos">3886</span></a> +</span><span id="L-3887"><a href="#L-3887"><span class="linenos">3887</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> </span><span id="L-3888"><a href="#L-3888"><span class="linenos">3888</span></a> -</span><span id="L-3889"><a href="#L-3889"><span class="linenos">3889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3890"><a href="#L-3890"><span class="linenos">3890</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> -</span><span id="L-3891"><a href="#L-3891"><span class="linenos">3891</span></a> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> -</span><span id="L-3892"><a href="#L-3892"><span class="linenos">3892</span></a> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> -</span><span id="L-3893"><a href="#L-3893"><span class="linenos">3893</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> -</span><span id="L-3894"><a href="#L-3894"><span class="linenos">3894</span></a> <span class="n">with_ties</span><span class="o">=</span><span class="n">with_ties</span><span class="p">,</span> -</span><span id="L-3895"><a href="#L-3895"><span class="linenos">3895</span></a> <span class="p">)</span> -</span><span id="L-3896"><a href="#L-3896"><span class="linenos">3896</span></a> -</span><span id="L-3897"><a href="#L-3897"><span class="linenos">3897</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3898"><a href="#L-3898"><span class="linenos">3898</span></a> -</span><span id="L-3899"><a href="#L-3899"><span class="linenos">3899</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3900"><a href="#L-3900"><span class="linenos">3900</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> -</span><span id="L-3901"><a href="#L-3901"><span class="linenos">3901</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3889"><a href="#L-3889"><span class="linenos">3889</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> +</span><span id="L-3890"><a href="#L-3890"><span class="linenos">3890</span></a> <span class="n">with_ties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIES"</span><span class="p">)</span> +</span><span id="L-3891"><a href="#L-3891"><span class="linenos">3891</span></a> +</span><span id="L-3892"><a href="#L-3892"><span class="linenos">3892</span></a> <span class="k">if</span> <span class="n">only</span> <span class="ow">and</span> <span class="n">with_ties</span><span class="p">:</span> +</span><span id="L-3893"><a href="#L-3893"><span class="linenos">3893</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ONLY and WITH TIES in FETCH clause"</span><span class="p">)</span> +</span><span id="L-3894"><a href="#L-3894"><span class="linenos">3894</span></a> +</span><span id="L-3895"><a href="#L-3895"><span class="linenos">3895</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3896"><a href="#L-3896"><span class="linenos">3896</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> +</span><span id="L-3897"><a href="#L-3897"><span class="linenos">3897</span></a> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> +</span><span id="L-3898"><a href="#L-3898"><span class="linenos">3898</span></a> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> +</span><span id="L-3899"><a href="#L-3899"><span class="linenos">3899</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> +</span><span id="L-3900"><a href="#L-3900"><span class="linenos">3900</span></a> <span class="n">with_ties</span><span class="o">=</span><span class="n">with_ties</span><span class="p">,</span> +</span><span id="L-3901"><a href="#L-3901"><span class="linenos">3901</span></a> <span class="p">)</span> </span><span id="L-3902"><a href="#L-3902"><span class="linenos">3902</span></a> -</span><span id="L-3903"><a href="#L-3903"><span class="linenos">3903</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-3904"><a href="#L-3904"><span class="linenos">3904</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="L-3905"><a href="#L-3905"><span class="linenos">3905</span></a> -</span><span id="L-3906"><a href="#L-3906"><span class="linenos">3906</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3907"><a href="#L-3907"><span class="linenos">3907</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">()</span> -</span><span id="L-3908"><a href="#L-3908"><span class="linenos">3908</span></a> <span class="p">)</span> -</span><span id="L-3909"><a href="#L-3909"><span class="linenos">3909</span></a> -</span><span id="L-3910"><a href="#L-3910"><span class="linenos">3910</span></a> <span class="k">def</span> <span class="nf">_parse_limit_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3911"><a href="#L-3911"><span class="linenos">3911</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-3912"><a href="#L-3912"><span class="linenos">3912</span></a> -</span><span id="L-3913"><a href="#L-3913"><span class="linenos">3913</span></a> <span class="k">def</span> <span class="nf">_parse_locks</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">]:</span> -</span><span id="L-3914"><a href="#L-3914"><span class="linenos">3914</span></a> <span class="n">locks</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3915"><a href="#L-3915"><span class="linenos">3915</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-3916"><a href="#L-3916"><span class="linenos">3916</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> -</span><span id="L-3917"><a href="#L-3917"><span class="linenos">3917</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3918"><a href="#L-3918"><span class="linenos">3918</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> -</span><span id="L-3919"><a href="#L-3919"><span class="linenos">3919</span></a> <span class="s2">"LOCK"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">,</span> <span class="s2">"MODE"</span> -</span><span id="L-3920"><a href="#L-3920"><span class="linenos">3920</span></a> <span class="p">):</span> -</span><span id="L-3921"><a href="#L-3921"><span class="linenos">3921</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3922"><a href="#L-3922"><span class="linenos">3922</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3923"><a href="#L-3923"><span class="linenos">3923</span></a> <span class="k">break</span> -</span><span id="L-3924"><a href="#L-3924"><span class="linenos">3924</span></a> -</span><span id="L-3925"><a href="#L-3925"><span class="linenos">3925</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3926"><a href="#L-3926"><span class="linenos">3926</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> -</span><span id="L-3927"><a href="#L-3927"><span class="linenos">3927</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-3928"><a href="#L-3928"><span class="linenos">3928</span></a> -</span><span id="L-3929"><a href="#L-3929"><span class="linenos">3929</span></a> <span class="n">wait</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="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3930"><a href="#L-3930"><span class="linenos">3930</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOWAIT"</span><span class="p">):</span> -</span><span id="L-3931"><a href="#L-3931"><span class="linenos">3931</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3932"><a href="#L-3932"><span class="linenos">3932</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WAIT"</span><span class="p">):</span> -</span><span id="L-3933"><a href="#L-3933"><span class="linenos">3933</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-3934"><a href="#L-3934"><span class="linenos">3934</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SKIP"</span><span class="p">,</span> <span class="s2">"LOCKED"</span><span class="p">):</span> -</span><span id="L-3935"><a href="#L-3935"><span class="linenos">3935</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3936"><a href="#L-3936"><span class="linenos">3936</span></a> -</span><span id="L-3937"><a href="#L-3937"><span class="linenos">3937</span></a> <span class="n">locks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-3938"><a href="#L-3938"><span class="linenos">3938</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait</span><span class="p">)</span> -</span><span id="L-3939"><a href="#L-3939"><span class="linenos">3939</span></a> <span class="p">)</span> -</span><span id="L-3940"><a href="#L-3940"><span class="linenos">3940</span></a> -</span><span id="L-3941"><a href="#L-3941"><span class="linenos">3941</span></a> <span class="k">return</span> <span class="n">locks</span> +</span><span id="L-3903"><a href="#L-3903"><span class="linenos">3903</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3904"><a href="#L-3904"><span class="linenos">3904</span></a> +</span><span id="L-3905"><a href="#L-3905"><span class="linenos">3905</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3906"><a href="#L-3906"><span class="linenos">3906</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> +</span><span id="L-3907"><a href="#L-3907"><span class="linenos">3907</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3908"><a href="#L-3908"><span class="linenos">3908</span></a> +</span><span id="L-3909"><a href="#L-3909"><span class="linenos">3909</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3910"><a href="#L-3910"><span class="linenos">3910</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> +</span><span id="L-3911"><a href="#L-3911"><span class="linenos">3911</span></a> +</span><span id="L-3912"><a href="#L-3912"><span class="linenos">3912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3913"><a href="#L-3913"><span class="linenos">3913</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">()</span> +</span><span id="L-3914"><a href="#L-3914"><span class="linenos">3914</span></a> <span class="p">)</span> +</span><span id="L-3915"><a href="#L-3915"><span class="linenos">3915</span></a> +</span><span id="L-3916"><a href="#L-3916"><span class="linenos">3916</span></a> <span class="k">def</span> <span class="nf">_parse_limit_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3917"><a href="#L-3917"><span class="linenos">3917</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-3918"><a href="#L-3918"><span class="linenos">3918</span></a> +</span><span id="L-3919"><a href="#L-3919"><span class="linenos">3919</span></a> <span class="k">def</span> <span class="nf">_parse_locks</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">]:</span> +</span><span id="L-3920"><a href="#L-3920"><span class="linenos">3920</span></a> <span class="n">locks</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3921"><a href="#L-3921"><span class="linenos">3921</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-3922"><a href="#L-3922"><span class="linenos">3922</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> +</span><span id="L-3923"><a href="#L-3923"><span class="linenos">3923</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3924"><a href="#L-3924"><span class="linenos">3924</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> +</span><span id="L-3925"><a href="#L-3925"><span class="linenos">3925</span></a> <span class="s2">"LOCK"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">,</span> <span class="s2">"MODE"</span> +</span><span id="L-3926"><a href="#L-3926"><span class="linenos">3926</span></a> <span class="p">):</span> +</span><span id="L-3927"><a href="#L-3927"><span class="linenos">3927</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3928"><a href="#L-3928"><span class="linenos">3928</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3929"><a href="#L-3929"><span class="linenos">3929</span></a> <span class="k">break</span> +</span><span id="L-3930"><a href="#L-3930"><span class="linenos">3930</span></a> +</span><span id="L-3931"><a href="#L-3931"><span class="linenos">3931</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3932"><a href="#L-3932"><span class="linenos">3932</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> +</span><span id="L-3933"><a href="#L-3933"><span class="linenos">3933</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-3934"><a href="#L-3934"><span class="linenos">3934</span></a> +</span><span id="L-3935"><a href="#L-3935"><span class="linenos">3935</span></a> <span class="n">wait</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="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3936"><a href="#L-3936"><span class="linenos">3936</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOWAIT"</span><span class="p">):</span> +</span><span id="L-3937"><a href="#L-3937"><span class="linenos">3937</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3938"><a href="#L-3938"><span class="linenos">3938</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WAIT"</span><span class="p">):</span> +</span><span id="L-3939"><a href="#L-3939"><span class="linenos">3939</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-3940"><a href="#L-3940"><span class="linenos">3940</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SKIP"</span><span class="p">,</span> <span class="s2">"LOCKED"</span><span class="p">):</span> +</span><span id="L-3941"><a href="#L-3941"><span class="linenos">3941</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-3942"><a href="#L-3942"><span class="linenos">3942</span></a> -</span><span id="L-3943"><a href="#L-3943"><span class="linenos">3943</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3944"><a href="#L-3944"><span class="linenos">3944</span></a> <span class="k">while</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> -</span><span id="L-3945"><a href="#L-3945"><span class="linenos">3945</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-3943"><a href="#L-3943"><span class="linenos">3943</span></a> <span class="n">locks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-3944"><a href="#L-3944"><span class="linenos">3944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait</span><span class="p">)</span> +</span><span id="L-3945"><a href="#L-3945"><span class="linenos">3945</span></a> <span class="p">)</span> </span><span id="L-3946"><a href="#L-3946"><span class="linenos">3946</span></a> -</span><span id="L-3947"><a href="#L-3947"><span class="linenos">3947</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> -</span><span id="L-3948"><a href="#L-3948"><span class="linenos">3948</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> -</span><span id="L-3949"><a href="#L-3949"><span class="linenos">3949</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> -</span><span id="L-3950"><a href="#L-3950"><span class="linenos">3950</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> -</span><span id="L-3951"><a href="#L-3951"><span class="linenos">3951</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3952"><a href="#L-3952"><span class="linenos">3952</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> -</span><span id="L-3953"><a href="#L-3953"><span class="linenos">3953</span></a> -</span><span id="L-3954"><a href="#L-3954"><span class="linenos">3954</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-3955"><a href="#L-3955"><span class="linenos">3955</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> -</span><span id="L-3956"><a href="#L-3956"><span class="linenos">3956</span></a> <span class="n">by_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">)</span> -</span><span id="L-3957"><a href="#L-3957"><span class="linenos">3957</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3958"><a href="#L-3958"><span class="linenos">3958</span></a> -</span><span id="L-3959"><a href="#L-3959"><span class="linenos">3959</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3960"><a href="#L-3960"><span class="linenos">3960</span></a> <span class="n">operation</span><span class="p">,</span> -</span><span id="L-3961"><a href="#L-3961"><span class="linenos">3961</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-3962"><a href="#L-3962"><span class="linenos">3962</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3963"><a href="#L-3963"><span class="linenos">3963</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> -</span><span id="L-3964"><a href="#L-3964"><span class="linenos">3964</span></a> <span class="n">by_name</span><span class="o">=</span><span class="n">by_name</span><span class="p">,</span> -</span><span id="L-3965"><a href="#L-3965"><span class="linenos">3965</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-3966"><a href="#L-3966"><span class="linenos">3966</span></a> <span class="p">)</span> -</span><span id="L-3967"><a href="#L-3967"><span class="linenos">3967</span></a> -</span><span id="L-3968"><a href="#L-3968"><span class="linenos">3968</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIERS_ATTACHED_TO_UNION</span><span class="p">:</span> -</span><span id="L-3969"><a href="#L-3969"><span class="linenos">3969</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-3970"><a href="#L-3970"><span class="linenos">3970</span></a> -</span><span id="L-3971"><a href="#L-3971"><span class="linenos">3971</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-3972"><a href="#L-3972"><span class="linenos">3972</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNION_MODIFIERS</span><span class="p">:</span> -</span><span id="L-3973"><a href="#L-3973"><span class="linenos">3973</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-3974"><a href="#L-3974"><span class="linenos">3974</span></a> <span class="k">if</span> <span class="n">expr</span><span class="p">:</span> -</span><span id="L-3975"><a href="#L-3975"><span class="linenos">3975</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expr</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> +</span><span id="L-3947"><a href="#L-3947"><span class="linenos">3947</span></a> <span class="k">return</span> <span class="n">locks</span> +</span><span id="L-3948"><a href="#L-3948"><span class="linenos">3948</span></a> +</span><span id="L-3949"><a href="#L-3949"><span class="linenos">3949</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3950"><a href="#L-3950"><span class="linenos">3950</span></a> <span class="k">while</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> +</span><span id="L-3951"><a href="#L-3951"><span class="linenos">3951</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-3952"><a href="#L-3952"><span class="linenos">3952</span></a> +</span><span id="L-3953"><a href="#L-3953"><span class="linenos">3953</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> +</span><span id="L-3954"><a href="#L-3954"><span class="linenos">3954</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> +</span><span id="L-3955"><a href="#L-3955"><span class="linenos">3955</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> +</span><span id="L-3956"><a href="#L-3956"><span class="linenos">3956</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> +</span><span id="L-3957"><a href="#L-3957"><span class="linenos">3957</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3958"><a href="#L-3958"><span class="linenos">3958</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> +</span><span id="L-3959"><a href="#L-3959"><span class="linenos">3959</span></a> +</span><span id="L-3960"><a href="#L-3960"><span class="linenos">3960</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> +</span><span id="L-3961"><a href="#L-3961"><span class="linenos">3961</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> +</span><span id="L-3962"><a href="#L-3962"><span class="linenos">3962</span></a> <span class="n">by_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">)</span> +</span><span id="L-3963"><a href="#L-3963"><span class="linenos">3963</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3964"><a href="#L-3964"><span class="linenos">3964</span></a> +</span><span id="L-3965"><a href="#L-3965"><span class="linenos">3965</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3966"><a href="#L-3966"><span class="linenos">3966</span></a> <span class="n">operation</span><span class="p">,</span> +</span><span id="L-3967"><a href="#L-3967"><span class="linenos">3967</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-3968"><a href="#L-3968"><span class="linenos">3968</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3969"><a href="#L-3969"><span class="linenos">3969</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> +</span><span id="L-3970"><a href="#L-3970"><span class="linenos">3970</span></a> <span class="n">by_name</span><span class="o">=</span><span class="n">by_name</span><span class="p">,</span> +</span><span id="L-3971"><a href="#L-3971"><span class="linenos">3971</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-3972"><a href="#L-3972"><span class="linenos">3972</span></a> <span class="p">)</span> +</span><span id="L-3973"><a href="#L-3973"><span class="linenos">3973</span></a> +</span><span id="L-3974"><a href="#L-3974"><span class="linenos">3974</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIERS_ATTACHED_TO_UNION</span><span class="p">:</span> +</span><span id="L-3975"><a href="#L-3975"><span class="linenos">3975</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">expression</span> </span><span id="L-3976"><a href="#L-3976"><span class="linenos">3976</span></a> -</span><span id="L-3977"><a href="#L-3977"><span class="linenos">3977</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3978"><a href="#L-3978"><span class="linenos">3978</span></a> -</span><span id="L-3979"><a href="#L-3979"><span class="linenos">3979</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3980"><a href="#L-3980"><span class="linenos">3980</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="L-3981"><a href="#L-3981"><span class="linenos">3981</span></a> -</span><span id="L-3982"><a href="#L-3982"><span class="linenos">3982</span></a> <span class="k">def</span> <span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3983"><a href="#L-3983"><span class="linenos">3983</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_disjunction</span><span class="p">()</span> +</span><span id="L-3977"><a href="#L-3977"><span class="linenos">3977</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-3978"><a href="#L-3978"><span class="linenos">3978</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNION_MODIFIERS</span><span class="p">:</span> +</span><span id="L-3979"><a href="#L-3979"><span class="linenos">3979</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="L-3980"><a href="#L-3980"><span class="linenos">3980</span></a> <span class="k">if</span> <span class="n">expr</span><span class="p">:</span> +</span><span id="L-3981"><a href="#L-3981"><span class="linenos">3981</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expr</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> +</span><span id="L-3982"><a href="#L-3982"><span class="linenos">3982</span></a> +</span><span id="L-3983"><a href="#L-3983"><span class="linenos">3983</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-3984"><a href="#L-3984"><span class="linenos">3984</span></a> -</span><span id="L-3985"><a href="#L-3985"><span class="linenos">3985</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">):</span> -</span><span id="L-3986"><a href="#L-3986"><span class="linenos">3986</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3987"><a href="#L-3987"><span class="linenos">3987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="L-3988"><a href="#L-3988"><span class="linenos">3988</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3989"><a href="#L-3989"><span class="linenos">3989</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="L-3990"><a href="#L-3990"><span class="linenos">3990</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-3991"><a href="#L-3991"><span class="linenos">3991</span></a> <span class="p">)</span> -</span><span id="L-3992"><a href="#L-3992"><span class="linenos">3992</span></a> -</span><span id="L-3993"><a href="#L-3993"><span class="linenos">3993</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3994"><a href="#L-3994"><span class="linenos">3994</span></a> -</span><span id="L-3995"><a href="#L-3995"><span class="linenos">3995</span></a> <span class="k">def</span> <span class="nf">_parse_disjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3996"><a href="#L-3996"><span class="linenos">3996</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">DISJUNCTION</span><span class="p">)</span> -</span><span id="L-3997"><a href="#L-3997"><span class="linenos">3997</span></a> -</span><span id="L-3998"><a href="#L-3998"><span class="linenos">3998</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3999"><a href="#L-3999"><span class="linenos">3999</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> +</span><span id="L-3985"><a href="#L-3985"><span class="linenos">3985</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3986"><a href="#L-3986"><span class="linenos">3986</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="L-3987"><a href="#L-3987"><span class="linenos">3987</span></a> +</span><span id="L-3988"><a href="#L-3988"><span class="linenos">3988</span></a> <span class="k">def</span> <span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3989"><a href="#L-3989"><span class="linenos">3989</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_disjunction</span><span class="p">()</span> +</span><span id="L-3990"><a href="#L-3990"><span class="linenos">3990</span></a> +</span><span id="L-3991"><a href="#L-3991"><span class="linenos">3991</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">):</span> +</span><span id="L-3992"><a href="#L-3992"><span class="linenos">3992</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3993"><a href="#L-3993"><span class="linenos">3993</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="L-3994"><a href="#L-3994"><span class="linenos">3994</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3995"><a href="#L-3995"><span class="linenos">3995</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="L-3996"><a href="#L-3996"><span class="linenos">3996</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-3997"><a href="#L-3997"><span class="linenos">3997</span></a> <span class="p">)</span> +</span><span id="L-3998"><a href="#L-3998"><span class="linenos">3998</span></a> +</span><span id="L-3999"><a href="#L-3999"><span class="linenos">3999</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-4000"><a href="#L-4000"><span class="linenos">4000</span></a> -</span><span id="L-4001"><a href="#L-4001"><span class="linenos">4001</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4002"><a href="#L-4002"><span class="linenos">4002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> +</span><span id="L-4001"><a href="#L-4001"><span class="linenos">4001</span></a> <span class="k">def</span> <span class="nf">_parse_disjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4002"><a href="#L-4002"><span class="linenos">4002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">DISJUNCTION</span><span class="p">)</span> </span><span id="L-4003"><a href="#L-4003"><span class="linenos">4003</span></a> -</span><span id="L-4004"><a href="#L-4004"><span class="linenos">4004</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4005"><a href="#L-4005"><span class="linenos">4005</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> +</span><span id="L-4004"><a href="#L-4004"><span class="linenos">4004</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4005"><a href="#L-4005"><span class="linenos">4005</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> </span><span id="L-4006"><a href="#L-4006"><span class="linenos">4006</span></a> -</span><span id="L-4007"><a href="#L-4007"><span class="linenos">4007</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4008"><a href="#L-4008"><span class="linenos">4008</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-4009"><a href="#L-4009"><span class="linenos">4009</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="L-4010"><a href="#L-4010"><span class="linenos">4010</span></a> -</span><span id="L-4011"><a href="#L-4011"><span class="linenos">4011</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> -</span><span id="L-4012"><a href="#L-4012"><span class="linenos">4012</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="L-4013"><a href="#L-4013"><span class="linenos">4013</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-4014"><a href="#L-4014"><span class="linenos">4014</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4015"><a href="#L-4015"><span class="linenos">4015</span></a> -</span><span id="L-4016"><a href="#L-4016"><span class="linenos">4016</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="L-4017"><a href="#L-4017"><span class="linenos">4017</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> -</span><span id="L-4018"><a href="#L-4018"><span class="linenos">4018</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="L-4019"><a href="#L-4019"><span class="linenos">4019</span></a> -</span><span id="L-4020"><a href="#L-4020"><span class="linenos">4020</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> -</span><span id="L-4021"><a href="#L-4021"><span class="linenos">4021</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> -</span><span id="L-4022"><a href="#L-4022"><span class="linenos">4022</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> -</span><span id="L-4023"><a href="#L-4023"><span class="linenos">4023</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="L-4024"><a href="#L-4024"><span class="linenos">4024</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4007"><a href="#L-4007"><span class="linenos">4007</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4008"><a href="#L-4008"><span class="linenos">4008</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> +</span><span id="L-4009"><a href="#L-4009"><span class="linenos">4009</span></a> +</span><span id="L-4010"><a href="#L-4010"><span class="linenos">4010</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4011"><a href="#L-4011"><span class="linenos">4011</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> +</span><span id="L-4012"><a href="#L-4012"><span class="linenos">4012</span></a> +</span><span id="L-4013"><a href="#L-4013"><span class="linenos">4013</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4014"><a href="#L-4014"><span class="linenos">4014</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-4015"><a href="#L-4015"><span class="linenos">4015</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="L-4016"><a href="#L-4016"><span class="linenos">4016</span></a> +</span><span id="L-4017"><a href="#L-4017"><span class="linenos">4017</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> +</span><span id="L-4018"><a href="#L-4018"><span class="linenos">4018</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="L-4019"><a href="#L-4019"><span class="linenos">4019</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-4020"><a href="#L-4020"><span class="linenos">4020</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4021"><a href="#L-4021"><span class="linenos">4021</span></a> +</span><span id="L-4022"><a href="#L-4022"><span class="linenos">4022</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="L-4023"><a href="#L-4023"><span class="linenos">4023</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> +</span><span id="L-4024"><a href="#L-4024"><span class="linenos">4024</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> </span><span id="L-4025"><a href="#L-4025"><span class="linenos">4025</span></a> -</span><span id="L-4026"><a href="#L-4026"><span class="linenos">4026</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> -</span><span id="L-4027"><a href="#L-4027"><span class="linenos">4027</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4028"><a href="#L-4028"><span class="linenos">4028</span></a> -</span><span id="L-4029"><a href="#L-4029"><span class="linenos">4029</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> -</span><span id="L-4030"><a href="#L-4030"><span class="linenos">4030</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4026"><a href="#L-4026"><span class="linenos">4026</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> +</span><span id="L-4027"><a href="#L-4027"><span class="linenos">4027</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> +</span><span id="L-4028"><a href="#L-4028"><span class="linenos">4028</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> +</span><span id="L-4029"><a href="#L-4029"><span class="linenos">4029</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> +</span><span id="L-4030"><a href="#L-4030"><span class="linenos">4030</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> </span><span id="L-4031"><a href="#L-4031"><span class="linenos">4031</span></a> -</span><span id="L-4032"><a href="#L-4032"><span class="linenos">4032</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4033"><a href="#L-4033"><span class="linenos">4033</span></a> -</span><span id="L-4034"><a href="#L-4034"><span class="linenos">4034</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4035"><a href="#L-4035"><span class="linenos">4035</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="L-4036"><a href="#L-4036"><span class="linenos">4036</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="L-4032"><a href="#L-4032"><span class="linenos">4032</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> +</span><span id="L-4033"><a href="#L-4033"><span class="linenos">4033</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4034"><a href="#L-4034"><span class="linenos">4034</span></a> +</span><span id="L-4035"><a href="#L-4035"><span class="linenos">4035</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> +</span><span id="L-4036"><a href="#L-4036"><span class="linenos">4036</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> </span><span id="L-4037"><a href="#L-4037"><span class="linenos">4037</span></a> -</span><span id="L-4038"><a href="#L-4038"><span class="linenos">4038</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DISTINCT"</span><span class="p">,</span> <span class="s2">"FROM"</span><span class="p">):</span> -</span><span id="L-4039"><a href="#L-4039"><span class="linenos">4039</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> -</span><span id="L-4040"><a href="#L-4040"><span class="linenos">4040</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4041"><a href="#L-4041"><span class="linenos">4041</span></a> -</span><span id="L-4042"><a href="#L-4042"><span class="linenos">4042</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">()</span> -</span><span id="L-4043"><a href="#L-4043"><span class="linenos">4043</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-4044"><a href="#L-4044"><span class="linenos">4044</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4045"><a href="#L-4045"><span class="linenos">4045</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4046"><a href="#L-4046"><span class="linenos">4046</span></a> -</span><span id="L-4047"><a href="#L-4047"><span class="linenos">4047</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-4048"><a href="#L-4048"><span class="linenos">4048</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="L-4049"><a href="#L-4049"><span class="linenos">4049</span></a> -</span><span id="L-4050"><a href="#L-4050"><span class="linenos">4050</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> -</span><span id="L-4051"><a href="#L-4051"><span class="linenos">4051</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">(</span><span class="n">with_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4052"><a href="#L-4052"><span class="linenos">4052</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="L-4053"><a href="#L-4053"><span class="linenos">4053</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="L-4054"><a href="#L-4054"><span class="linenos">4054</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)):</span> -</span><span id="L-4055"><a href="#L-4055"><span class="linenos">4055</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span> -</span><span id="L-4056"><a href="#L-4056"><span class="linenos">4056</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> -</span><span id="L-4057"><a href="#L-4057"><span class="linenos">4057</span></a> -</span><span id="L-4058"><a href="#L-4058"><span class="linenos">4058</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> -</span><span id="L-4059"><a href="#L-4059"><span class="linenos">4059</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-4060"><a href="#L-4060"><span class="linenos">4060</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4061"><a href="#L-4061"><span class="linenos">4061</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4062"><a href="#L-4062"><span class="linenos">4062</span></a> -</span><span id="L-4063"><a href="#L-4063"><span class="linenos">4063</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> -</span><span id="L-4064"><a href="#L-4064"><span class="linenos">4064</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4065"><a href="#L-4065"><span class="linenos">4065</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">):</span> -</span><span id="L-4066"><a href="#L-4066"><span class="linenos">4066</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> -</span><span id="L-4067"><a href="#L-4067"><span class="linenos">4067</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4068"><a href="#L-4068"><span class="linenos">4068</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-4069"><a href="#L-4069"><span class="linenos">4069</span></a> -</span><span id="L-4070"><a href="#L-4070"><span class="linenos">4070</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4071"><a href="#L-4071"><span class="linenos">4071</span></a> -</span><span id="L-4072"><a href="#L-4072"><span class="linenos">4072</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">:</span> -</span><span id="L-4073"><a href="#L-4073"><span class="linenos">4073</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-4074"><a href="#L-4074"><span class="linenos">4074</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="L-4075"><a href="#L-4075"><span class="linenos">4075</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-4076"><a href="#L-4076"><span class="linenos">4076</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="L-4038"><a href="#L-4038"><span class="linenos">4038</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4039"><a href="#L-4039"><span class="linenos">4039</span></a> +</span><span id="L-4040"><a href="#L-4040"><span class="linenos">4040</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4041"><a href="#L-4041"><span class="linenos">4041</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="L-4042"><a href="#L-4042"><span class="linenos">4042</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="L-4043"><a href="#L-4043"><span class="linenos">4043</span></a> +</span><span id="L-4044"><a href="#L-4044"><span class="linenos">4044</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DISTINCT"</span><span class="p">,</span> <span class="s2">"FROM"</span><span class="p">):</span> +</span><span id="L-4045"><a href="#L-4045"><span class="linenos">4045</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> +</span><span id="L-4046"><a href="#L-4046"><span class="linenos">4046</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-4047"><a href="#L-4047"><span class="linenos">4047</span></a> +</span><span id="L-4048"><a href="#L-4048"><span class="linenos">4048</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">()</span> +</span><span id="L-4049"><a href="#L-4049"><span class="linenos">4049</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-4050"><a href="#L-4050"><span class="linenos">4050</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4051"><a href="#L-4051"><span class="linenos">4051</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4052"><a href="#L-4052"><span class="linenos">4052</span></a> +</span><span id="L-4053"><a href="#L-4053"><span class="linenos">4053</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-4054"><a href="#L-4054"><span class="linenos">4054</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="L-4055"><a href="#L-4055"><span class="linenos">4055</span></a> +</span><span id="L-4056"><a href="#L-4056"><span class="linenos">4056</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> +</span><span id="L-4057"><a href="#L-4057"><span class="linenos">4057</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">(</span><span class="n">with_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4058"><a href="#L-4058"><span class="linenos">4058</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="L-4059"><a href="#L-4059"><span class="linenos">4059</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="L-4060"><a href="#L-4060"><span class="linenos">4060</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)):</span> +</span><span id="L-4061"><a href="#L-4061"><span class="linenos">4061</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span> +</span><span id="L-4062"><a href="#L-4062"><span class="linenos">4062</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> +</span><span id="L-4063"><a href="#L-4063"><span class="linenos">4063</span></a> +</span><span id="L-4064"><a href="#L-4064"><span class="linenos">4064</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> +</span><span id="L-4065"><a href="#L-4065"><span class="linenos">4065</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="L-4066"><a href="#L-4066"><span class="linenos">4066</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4067"><a href="#L-4067"><span class="linenos">4067</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4068"><a href="#L-4068"><span class="linenos">4068</span></a> +</span><span id="L-4069"><a href="#L-4069"><span class="linenos">4069</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> +</span><span id="L-4070"><a href="#L-4070"><span class="linenos">4070</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4071"><a href="#L-4071"><span class="linenos">4071</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">):</span> +</span><span id="L-4072"><a href="#L-4072"><span class="linenos">4072</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> +</span><span id="L-4073"><a href="#L-4073"><span class="linenos">4073</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4074"><a href="#L-4074"><span class="linenos">4074</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-4075"><a href="#L-4075"><span class="linenos">4075</span></a> +</span><span id="L-4076"><a href="#L-4076"><span class="linenos">4076</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-4077"><a href="#L-4077"><span class="linenos">4077</span></a> -</span><span id="L-4078"><a href="#L-4078"><span class="linenos">4078</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4079"><a href="#L-4079"><span class="linenos">4079</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> -</span><span id="L-4080"><a href="#L-4080"><span class="linenos">4080</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4081"><a href="#L-4081"><span class="linenos">4081</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="L-4082"><a href="#L-4082"><span class="linenos">4082</span></a> -</span><span id="L-4083"><a href="#L-4083"><span class="linenos">4083</span></a> <span class="k">def</span> <span class="nf">_parse_interval</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">]:</span> -</span><span id="L-4084"><a href="#L-4084"><span class="linenos">4084</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4085"><a href="#L-4085"><span class="linenos">4085</span></a> -</span><span id="L-4086"><a href="#L-4086"><span class="linenos">4086</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> <span class="ow">and</span> <span class="n">match_interval</span><span class="p">:</span> -</span><span id="L-4087"><a href="#L-4087"><span class="linenos">4087</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4078"><a href="#L-4078"><span class="linenos">4078</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">:</span> +</span><span id="L-4079"><a href="#L-4079"><span class="linenos">4079</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-4080"><a href="#L-4080"><span class="linenos">4080</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="L-4081"><a href="#L-4081"><span class="linenos">4081</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-4082"><a href="#L-4082"><span class="linenos">4082</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="L-4083"><a href="#L-4083"><span class="linenos">4083</span></a> +</span><span id="L-4084"><a href="#L-4084"><span class="linenos">4084</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4085"><a href="#L-4085"><span class="linenos">4085</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> +</span><span id="L-4086"><a href="#L-4086"><span class="linenos">4086</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4087"><a href="#L-4087"><span class="linenos">4087</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> </span><span id="L-4088"><a href="#L-4088"><span class="linenos">4088</span></a> -</span><span id="L-4089"><a href="#L-4089"><span class="linenos">4089</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4090"><a href="#L-4090"><span class="linenos">4090</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-4091"><a href="#L-4091"><span class="linenos">4091</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4092"><a href="#L-4092"><span class="linenos">4092</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-4093"><a href="#L-4093"><span class="linenos">4093</span></a> -</span><span id="L-4094"><a href="#L-4094"><span class="linenos">4094</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="L-4095"><a href="#L-4095"><span class="linenos">4095</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> -</span><span id="L-4096"><a href="#L-4096"><span class="linenos">4096</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span> -</span><span id="L-4097"><a href="#L-4097"><span class="linenos">4097</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">quoted</span> -</span><span id="L-4098"><a href="#L-4098"><span class="linenos">4098</span></a> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"IS"</span> -</span><span id="L-4099"><a href="#L-4099"><span class="linenos">4099</span></a> <span class="p">):</span> -</span><span id="L-4100"><a href="#L-4100"><span class="linenos">4100</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4101"><a href="#L-4101"><span class="linenos">4101</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4102"><a href="#L-4102"><span class="linenos">4102</span></a> -</span><span id="L-4103"><a href="#L-4103"><span class="linenos">4103</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="L-4104"><a href="#L-4104"><span class="linenos">4104</span></a> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4105"><a href="#L-4105"><span class="linenos">4105</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4106"><a href="#L-4106"><span class="linenos">4106</span></a> <span class="p">)</span> -</span><span id="L-4107"><a href="#L-4107"><span class="linenos">4107</span></a> -</span><span id="L-4108"><a href="#L-4108"><span class="linenos">4108</span></a> <span class="c1"># Most dialects support, e.g., the form INTERVAL '5' day, thus we try to parse</span> -</span><span id="L-4109"><a href="#L-4109"><span class="linenos">4109</span></a> <span class="c1"># each INTERVAL expression into this canonical form so it's easy to transpile</span> -</span><span id="L-4110"><a href="#L-4110"><span class="linenos">4110</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="L-4111"><a href="#L-4111"><span class="linenos">4111</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-4112"><a href="#L-4112"><span class="linenos">4112</span></a> <span class="k">elif</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-4113"><a href="#L-4113"><span class="linenos">4113</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-4114"><a href="#L-4114"><span class="linenos">4114</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-4115"><a href="#L-4115"><span class="linenos">4115</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> -</span><span id="L-4116"><a href="#L-4116"><span class="linenos">4116</span></a> <span class="c1"># Unconsume the eagerly-parsed unit, since the real unit was part of the string</span> -</span><span id="L-4117"><a href="#L-4117"><span class="linenos">4117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-4118"><a href="#L-4118"><span class="linenos">4118</span></a> -</span><span id="L-4119"><a href="#L-4119"><span class="linenos">4119</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> -</span><span id="L-4120"><a href="#L-4120"><span class="linenos">4120</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-4121"><a href="#L-4121"><span class="linenos">4121</span></a> -</span><span id="L-4122"><a href="#L-4122"><span class="linenos">4122</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">INTERVAL_SPANS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="L-4123"><a href="#L-4123"><span class="linenos">4123</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4124"><a href="#L-4124"><span class="linenos">4124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4125"><a href="#L-4125"><span class="linenos">4125</span></a> <span class="p">)</span> -</span><span id="L-4126"><a href="#L-4126"><span class="linenos">4126</span></a> -</span><span id="L-4127"><a href="#L-4127"><span class="linenos">4127</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> -</span><span id="L-4128"><a href="#L-4128"><span class="linenos">4128</span></a> -</span><span id="L-4129"><a href="#L-4129"><span class="linenos">4129</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4130"><a href="#L-4130"><span class="linenos">4130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">)</span> -</span><span id="L-4131"><a href="#L-4131"><span class="linenos">4131</span></a> -</span><span id="L-4132"><a href="#L-4132"><span class="linenos">4132</span></a> <span class="c1"># Convert INTERVAL 'val_1' unit_1 [+] ... [+] 'val_n' unit_n into a sum of intervals</span> -</span><span id="L-4133"><a href="#L-4133"><span class="linenos">4133</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4134"><a href="#L-4134"><span class="linenos">4134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4135"><a href="#L-4135"><span class="linenos">4135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">(</span><span class="n">match_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4136"><a href="#L-4136"><span class="linenos">4136</span></a> <span class="p">)</span> +</span><span id="L-4089"><a href="#L-4089"><span class="linenos">4089</span></a> <span class="k">def</span> <span class="nf">_parse_interval</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">]:</span> +</span><span id="L-4090"><a href="#L-4090"><span class="linenos">4090</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4091"><a href="#L-4091"><span class="linenos">4091</span></a> +</span><span id="L-4092"><a href="#L-4092"><span class="linenos">4092</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> <span class="ow">and</span> <span class="n">match_interval</span><span class="p">:</span> +</span><span id="L-4093"><a href="#L-4093"><span class="linenos">4093</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4094"><a href="#L-4094"><span class="linenos">4094</span></a> +</span><span id="L-4095"><a href="#L-4095"><span class="linenos">4095</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-4096"><a href="#L-4096"><span class="linenos">4096</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4097"><a href="#L-4097"><span class="linenos">4097</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4098"><a href="#L-4098"><span class="linenos">4098</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-4099"><a href="#L-4099"><span class="linenos">4099</span></a> +</span><span id="L-4100"><a href="#L-4100"><span class="linenos">4100</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="L-4101"><a href="#L-4101"><span class="linenos">4101</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> +</span><span id="L-4102"><a href="#L-4102"><span class="linenos">4102</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span> +</span><span id="L-4103"><a href="#L-4103"><span class="linenos">4103</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">quoted</span> +</span><span id="L-4104"><a href="#L-4104"><span class="linenos">4104</span></a> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"IS"</span> +</span><span id="L-4105"><a href="#L-4105"><span class="linenos">4105</span></a> <span class="p">):</span> +</span><span id="L-4106"><a href="#L-4106"><span class="linenos">4106</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4107"><a href="#L-4107"><span class="linenos">4107</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4108"><a href="#L-4108"><span class="linenos">4108</span></a> +</span><span id="L-4109"><a href="#L-4109"><span class="linenos">4109</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="L-4110"><a href="#L-4110"><span class="linenos">4110</span></a> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4111"><a href="#L-4111"><span class="linenos">4111</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4112"><a href="#L-4112"><span class="linenos">4112</span></a> <span class="p">)</span> +</span><span id="L-4113"><a href="#L-4113"><span class="linenos">4113</span></a> +</span><span id="L-4114"><a href="#L-4114"><span class="linenos">4114</span></a> <span class="c1"># Most dialects support, e.g., the form INTERVAL '5' day, thus we try to parse</span> +</span><span id="L-4115"><a href="#L-4115"><span class="linenos">4115</span></a> <span class="c1"># each INTERVAL expression into this canonical form so it's easy to transpile</span> +</span><span id="L-4116"><a href="#L-4116"><span class="linenos">4116</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="L-4117"><a href="#L-4117"><span class="linenos">4117</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4118"><a href="#L-4118"><span class="linenos">4118</span></a> <span class="k">elif</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-4119"><a href="#L-4119"><span class="linenos">4119</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4120"><a href="#L-4120"><span class="linenos">4120</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-4121"><a href="#L-4121"><span class="linenos">4121</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> +</span><span id="L-4122"><a href="#L-4122"><span class="linenos">4122</span></a> <span class="c1"># Unconsume the eagerly-parsed unit, since the real unit was part of the string</span> +</span><span id="L-4123"><a href="#L-4123"><span class="linenos">4123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-4124"><a href="#L-4124"><span class="linenos">4124</span></a> +</span><span id="L-4125"><a href="#L-4125"><span class="linenos">4125</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> +</span><span id="L-4126"><a href="#L-4126"><span class="linenos">4126</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-4127"><a href="#L-4127"><span class="linenos">4127</span></a> +</span><span id="L-4128"><a href="#L-4128"><span class="linenos">4128</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">INTERVAL_SPANS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="L-4129"><a href="#L-4129"><span class="linenos">4129</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4130"><a href="#L-4130"><span class="linenos">4130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4131"><a href="#L-4131"><span class="linenos">4131</span></a> <span class="p">)</span> +</span><span id="L-4132"><a href="#L-4132"><span class="linenos">4132</span></a> +</span><span id="L-4133"><a href="#L-4133"><span class="linenos">4133</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> +</span><span id="L-4134"><a href="#L-4134"><span class="linenos">4134</span></a> +</span><span id="L-4135"><a href="#L-4135"><span class="linenos">4135</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4136"><a href="#L-4136"><span class="linenos">4136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">)</span> </span><span id="L-4137"><a href="#L-4137"><span class="linenos">4137</span></a> -</span><span id="L-4138"><a href="#L-4138"><span class="linenos">4138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4139"><a href="#L-4139"><span class="linenos">4139</span></a> <span class="k">return</span> <span class="n">interval</span> -</span><span id="L-4140"><a href="#L-4140"><span class="linenos">4140</span></a> -</span><span id="L-4141"><a href="#L-4141"><span class="linenos">4141</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4142"><a href="#L-4142"><span class="linenos">4142</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-4138"><a href="#L-4138"><span class="linenos">4138</span></a> <span class="c1"># Convert INTERVAL 'val_1' unit_1 [+] ... [+] 'val_n' unit_n into a sum of intervals</span> +</span><span id="L-4139"><a href="#L-4139"><span class="linenos">4139</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-4140"><a href="#L-4140"><span class="linenos">4140</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4141"><a href="#L-4141"><span class="linenos">4141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">(</span><span class="n">match_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4142"><a href="#L-4142"><span class="linenos">4142</span></a> <span class="p">)</span> </span><span id="L-4143"><a href="#L-4143"><span class="linenos">4143</span></a> -</span><span id="L-4144"><a href="#L-4144"><span class="linenos">4144</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-4145"><a href="#L-4145"><span class="linenos">4145</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> -</span><span id="L-4146"><a href="#L-4146"><span class="linenos">4146</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4147"><a href="#L-4147"><span class="linenos">4147</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="L-4148"><a href="#L-4148"><span class="linenos">4148</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-4149"><a href="#L-4149"><span class="linenos">4149</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="L-4150"><a href="#L-4150"><span class="linenos">4150</span></a> <span class="p">)</span> -</span><span id="L-4151"><a href="#L-4151"><span class="linenos">4151</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">):</span> +</span><span id="L-4144"><a href="#L-4144"><span class="linenos">4144</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4145"><a href="#L-4145"><span class="linenos">4145</span></a> <span class="k">return</span> <span class="n">interval</span> +</span><span id="L-4146"><a href="#L-4146"><span class="linenos">4146</span></a> +</span><span id="L-4147"><a href="#L-4147"><span class="linenos">4147</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4148"><a href="#L-4148"><span class="linenos">4148</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-4149"><a href="#L-4149"><span class="linenos">4149</span></a> +</span><span id="L-4150"><a href="#L-4150"><span class="linenos">4150</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-4151"><a href="#L-4151"><span class="linenos">4151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> </span><span id="L-4152"><a href="#L-4152"><span class="linenos">4152</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4153"><a href="#L-4153"><span class="linenos">4153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> +</span><span id="L-4153"><a href="#L-4153"><span class="linenos">4153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> </span><span id="L-4154"><a href="#L-4154"><span class="linenos">4154</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> </span><span id="L-4155"><a href="#L-4155"><span class="linenos">4155</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="L-4156"><a href="#L-4156"><span class="linenos">4156</span></a> <span class="n">safe</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">STRICT_STRING_CONCAT</span><span class="p">,</span> -</span><span id="L-4157"><a href="#L-4157"><span class="linenos">4157</span></a> <span class="p">)</span> -</span><span id="L-4158"><a href="#L-4158"><span class="linenos">4158</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">):</span> -</span><span id="L-4159"><a href="#L-4159"><span class="linenos">4159</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Coalesce</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="L-4160"><a href="#L-4160"><span class="linenos">4160</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="L-4161"><a href="#L-4161"><span class="linenos">4161</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4162"><a href="#L-4162"><span class="linenos">4162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-4156"><a href="#L-4156"><span class="linenos">4156</span></a> <span class="p">)</span> +</span><span id="L-4157"><a href="#L-4157"><span class="linenos">4157</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">):</span> +</span><span id="L-4158"><a href="#L-4158"><span class="linenos">4158</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4159"><a href="#L-4159"><span class="linenos">4159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> +</span><span id="L-4160"><a href="#L-4160"><span class="linenos">4160</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-4161"><a href="#L-4161"><span class="linenos">4161</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="L-4162"><a href="#L-4162"><span class="linenos">4162</span></a> <span class="n">safe</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">STRICT_STRING_CONCAT</span><span class="p">,</span> </span><span id="L-4163"><a href="#L-4163"><span class="linenos">4163</span></a> <span class="p">)</span> -</span><span id="L-4164"><a href="#L-4164"><span class="linenos">4164</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="L-4165"><a href="#L-4165"><span class="linenos">4165</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4166"><a href="#L-4166"><span class="linenos">4166</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-4167"><a href="#L-4167"><span class="linenos">4167</span></a> <span class="p">)</span> -</span><span id="L-4168"><a href="#L-4168"><span class="linenos">4168</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4169"><a href="#L-4169"><span class="linenos">4169</span></a> <span class="k">break</span> -</span><span id="L-4170"><a href="#L-4170"><span class="linenos">4170</span></a> -</span><span id="L-4171"><a href="#L-4171"><span class="linenos">4171</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4172"><a href="#L-4172"><span class="linenos">4172</span></a> -</span><span id="L-4173"><a href="#L-4173"><span class="linenos">4173</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4174"><a href="#L-4174"><span class="linenos">4174</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> -</span><span id="L-4175"><a href="#L-4175"><span class="linenos">4175</span></a> -</span><span id="L-4176"><a href="#L-4176"><span class="linenos">4176</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4177"><a href="#L-4177"><span class="linenos">4177</span></a> <span class="n">parse_method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span> -</span><span id="L-4178"><a href="#L-4178"><span class="linenos">4178</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-4179"><a href="#L-4179"><span class="linenos">4179</span></a> -</span><span id="L-4180"><a href="#L-4180"><span class="linenos">4180</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">):</span> -</span><span id="L-4181"><a href="#L-4181"><span class="linenos">4181</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> -</span><span id="L-4182"><a href="#L-4182"><span class="linenos">4182</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-4183"><a href="#L-4183"><span class="linenos">4183</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-4184"><a href="#L-4184"><span class="linenos">4184</span></a> -</span><span id="L-4185"><a href="#L-4185"><span class="linenos">4185</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">klass</span> <span class="ow">is</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">isalpha</span><span class="p">():</span> -</span><span id="L-4186"><a href="#L-4186"><span class="linenos">4186</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-4187"><a href="#L-4187"><span class="linenos">4187</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4188"><a href="#L-4188"><span class="linenos">4188</span></a> -</span><span id="L-4189"><a href="#L-4189"><span class="linenos">4189</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-4164"><a href="#L-4164"><span class="linenos">4164</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">):</span> +</span><span id="L-4165"><a href="#L-4165"><span class="linenos">4165</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Coalesce</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="L-4166"><a href="#L-4166"><span class="linenos">4166</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="L-4167"><a href="#L-4167"><span class="linenos">4167</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4168"><a href="#L-4168"><span class="linenos">4168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-4169"><a href="#L-4169"><span class="linenos">4169</span></a> <span class="p">)</span> +</span><span id="L-4170"><a href="#L-4170"><span class="linenos">4170</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="L-4171"><a href="#L-4171"><span class="linenos">4171</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4172"><a href="#L-4172"><span class="linenos">4172</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-4173"><a href="#L-4173"><span class="linenos">4173</span></a> <span class="p">)</span> +</span><span id="L-4174"><a href="#L-4174"><span class="linenos">4174</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4175"><a href="#L-4175"><span class="linenos">4175</span></a> <span class="k">break</span> +</span><span id="L-4176"><a href="#L-4176"><span class="linenos">4176</span></a> +</span><span id="L-4177"><a href="#L-4177"><span class="linenos">4177</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4178"><a href="#L-4178"><span class="linenos">4178</span></a> +</span><span id="L-4179"><a href="#L-4179"><span class="linenos">4179</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4180"><a href="#L-4180"><span class="linenos">4180</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> +</span><span id="L-4181"><a href="#L-4181"><span class="linenos">4181</span></a> +</span><span id="L-4182"><a href="#L-4182"><span class="linenos">4182</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4183"><a href="#L-4183"><span class="linenos">4183</span></a> <span class="n">parse_method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span> +</span><span id="L-4184"><a href="#L-4184"><span class="linenos">4184</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-4185"><a href="#L-4185"><span class="linenos">4185</span></a> +</span><span id="L-4186"><a href="#L-4186"><span class="linenos">4186</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">):</span> +</span><span id="L-4187"><a href="#L-4187"><span class="linenos">4187</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> +</span><span id="L-4188"><a href="#L-4188"><span class="linenos">4188</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-4189"><a href="#L-4189"><span class="linenos">4189</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> </span><span id="L-4190"><a href="#L-4190"><span class="linenos">4190</span></a> -</span><span id="L-4191"><a href="#L-4191"><span class="linenos">4191</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">):</span> -</span><span id="L-4192"><a href="#L-4192"><span class="linenos">4192</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"typed"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TYPED_DIVISION</span> -</span><span id="L-4193"><a href="#L-4193"><span class="linenos">4193</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"safe"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SAFE_DIVISION</span> +</span><span id="L-4191"><a href="#L-4191"><span class="linenos">4191</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">klass</span> <span class="ow">is</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">isalpha</span><span class="p">():</span> +</span><span id="L-4192"><a href="#L-4192"><span class="linenos">4192</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-4193"><a href="#L-4193"><span class="linenos">4193</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-4194"><a href="#L-4194"><span class="linenos">4194</span></a> -</span><span id="L-4195"><a href="#L-4195"><span class="linenos">4195</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4195"><a href="#L-4195"><span class="linenos">4195</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> </span><span id="L-4196"><a href="#L-4196"><span class="linenos">4196</span></a> -</span><span id="L-4197"><a href="#L-4197"><span class="linenos">4197</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4198"><a href="#L-4198"><span class="linenos">4198</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span> -</span><span id="L-4199"><a href="#L-4199"><span class="linenos">4199</span></a> -</span><span id="L-4200"><a href="#L-4200"><span class="linenos">4200</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4201"><a href="#L-4201"><span class="linenos">4201</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> -</span><span id="L-4202"><a href="#L-4202"><span class="linenos">4202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-4203"><a href="#L-4203"><span class="linenos">4203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> -</span><span id="L-4204"><a href="#L-4204"><span class="linenos">4204</span></a> -</span><span id="L-4205"><a href="#L-4205"><span class="linenos">4205</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span> -</span><span id="L-4206"><a href="#L-4206"><span class="linenos">4206</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4207"><a href="#L-4207"><span class="linenos">4207</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4208"><a href="#L-4208"><span class="linenos">4208</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">parse_interval</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">()</span> -</span><span id="L-4209"><a href="#L-4209"><span class="linenos">4209</span></a> <span class="k">if</span> <span class="n">interval</span><span class="p">:</span> -</span><span id="L-4210"><a href="#L-4210"><span class="linenos">4210</span></a> <span class="k">return</span> <span class="n">interval</span> -</span><span id="L-4211"><a href="#L-4211"><span class="linenos">4211</span></a> -</span><span id="L-4212"><a href="#L-4212"><span class="linenos">4212</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4213"><a href="#L-4213"><span class="linenos">4213</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4214"><a href="#L-4214"><span class="linenos">4214</span></a> -</span><span id="L-4215"><a href="#L-4215"><span class="linenos">4215</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="p">:</span> -</span><span id="L-4216"><a href="#L-4216"><span class="linenos">4216</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4217"><a href="#L-4217"><span class="linenos">4217</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-4218"><a href="#L-4218"><span class="linenos">4218</span></a> -</span><span id="L-4219"><a href="#L-4219"><span class="linenos">4219</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="L-4220"><a href="#L-4220"><span class="linenos">4220</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_LITERAL_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">data_type</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4221"><a href="#L-4221"><span class="linenos">4221</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-4222"><a href="#L-4222"><span class="linenos">4222</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">data_type</span><span class="p">)</span> -</span><span id="L-4223"><a href="#L-4223"><span class="linenos">4223</span></a> -</span><span id="L-4224"><a href="#L-4224"><span class="linenos">4224</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="L-4225"><a href="#L-4225"><span class="linenos">4225</span></a> -</span><span id="L-4226"><a href="#L-4226"><span class="linenos">4226</span></a> <span class="c1"># The expressions arg gets set by the parser when we have something like DECIMAL(38, 0)</span> -</span><span id="L-4227"><a href="#L-4227"><span class="linenos">4227</span></a> <span class="c1"># in the input SQL. In that case, we'll produce these tokens: DECIMAL ( 38 , 0 )</span> -</span><span id="L-4228"><a href="#L-4228"><span class="linenos">4228</span></a> <span class="c1">#</span> -</span><span id="L-4229"><a href="#L-4229"><span class="linenos">4229</span></a> <span class="c1"># If the index difference here is greater than 1, that means the parser itself must have</span> -</span><span id="L-4230"><a href="#L-4230"><span class="linenos">4230</span></a> <span class="c1"># consumed additional tokens such as the DECIMAL scale and precision in the above example.</span> -</span><span id="L-4231"><a href="#L-4231"><span class="linenos">4231</span></a> <span class="c1">#</span> -</span><span id="L-4232"><a href="#L-4232"><span class="linenos">4232</span></a> <span class="c1"># If it's not greater than 1, then it must be 1, because we've consumed at least the type</span> -</span><span id="L-4233"><a href="#L-4233"><span class="linenos">4233</span></a> <span class="c1"># keyword, meaning that the expressions arg of the DataType must have gotten set by a</span> -</span><span id="L-4234"><a href="#L-4234"><span class="linenos">4234</span></a> <span class="c1"># callable in the TYPE_CONVERTERS mapping. For example, Snowflake converts DECIMAL to</span> -</span><span id="L-4235"><a href="#L-4235"><span class="linenos">4235</span></a> <span class="c1"># DECIMAL(38, 0)) in order to facilitate the data type's transpilation.</span> -</span><span id="L-4236"><a href="#L-4236"><span class="linenos">4236</span></a> <span class="c1">#</span> -</span><span id="L-4237"><a href="#L-4237"><span class="linenos">4237</span></a> <span class="c1"># In these cases, we don't really want to return the converted type, but instead retreat</span> -</span><span id="L-4238"><a href="#L-4238"><span class="linenos">4238</span></a> <span class="c1"># and try to parse a Column or Identifier in the section below.</span> -</span><span id="L-4239"><a href="#L-4239"><span class="linenos">4239</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">index2</span> <span class="o">-</span> <span class="n">index</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-4240"><a href="#L-4240"><span class="linenos">4240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> -</span><span id="L-4241"><a href="#L-4241"><span class="linenos">4241</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="L-4242"><a href="#L-4242"><span class="linenos">4242</span></a> -</span><span id="L-4243"><a href="#L-4243"><span class="linenos">4243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4244"><a href="#L-4244"><span class="linenos">4244</span></a> -</span><span id="L-4245"><a href="#L-4245"><span class="linenos">4245</span></a> <span class="k">if</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> -</span><span id="L-4246"><a href="#L-4246"><span class="linenos">4246</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-4247"><a href="#L-4247"><span class="linenos">4247</span></a> -</span><span id="L-4248"><a href="#L-4248"><span class="linenos">4248</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-4249"><a href="#L-4249"><span class="linenos">4249</span></a> <span class="k">return</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4197"><a href="#L-4197"><span class="linenos">4197</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">):</span> +</span><span id="L-4198"><a href="#L-4198"><span class="linenos">4198</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"typed"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TYPED_DIVISION</span> +</span><span id="L-4199"><a href="#L-4199"><span class="linenos">4199</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"safe"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SAFE_DIVISION</span> +</span><span id="L-4200"><a href="#L-4200"><span class="linenos">4200</span></a> +</span><span id="L-4201"><a href="#L-4201"><span class="linenos">4201</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4202"><a href="#L-4202"><span class="linenos">4202</span></a> +</span><span id="L-4203"><a href="#L-4203"><span class="linenos">4203</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4204"><a href="#L-4204"><span class="linenos">4204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span> +</span><span id="L-4205"><a href="#L-4205"><span class="linenos">4205</span></a> +</span><span id="L-4206"><a href="#L-4206"><span class="linenos">4206</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4207"><a href="#L-4207"><span class="linenos">4207</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> +</span><span id="L-4208"><a href="#L-4208"><span class="linenos">4208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-4209"><a href="#L-4209"><span class="linenos">4209</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> +</span><span id="L-4210"><a href="#L-4210"><span class="linenos">4210</span></a> +</span><span id="L-4211"><a href="#L-4211"><span class="linenos">4211</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span> +</span><span id="L-4212"><a href="#L-4212"><span class="linenos">4212</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4213"><a href="#L-4213"><span class="linenos">4213</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4214"><a href="#L-4214"><span class="linenos">4214</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">parse_interval</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">()</span> +</span><span id="L-4215"><a href="#L-4215"><span class="linenos">4215</span></a> <span class="k">if</span> <span class="n">interval</span><span class="p">:</span> +</span><span id="L-4216"><a href="#L-4216"><span class="linenos">4216</span></a> <span class="k">return</span> <span class="n">interval</span> +</span><span id="L-4217"><a href="#L-4217"><span class="linenos">4217</span></a> +</span><span id="L-4218"><a href="#L-4218"><span class="linenos">4218</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4219"><a href="#L-4219"><span class="linenos">4219</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4220"><a href="#L-4220"><span class="linenos">4220</span></a> +</span><span id="L-4221"><a href="#L-4221"><span class="linenos">4221</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="p">:</span> +</span><span id="L-4222"><a href="#L-4222"><span class="linenos">4222</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4223"><a href="#L-4223"><span class="linenos">4223</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4224"><a href="#L-4224"><span class="linenos">4224</span></a> +</span><span id="L-4225"><a href="#L-4225"><span class="linenos">4225</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="L-4226"><a href="#L-4226"><span class="linenos">4226</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_LITERAL_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">data_type</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4227"><a href="#L-4227"><span class="linenos">4227</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-4228"><a href="#L-4228"><span class="linenos">4228</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">data_type</span><span class="p">)</span> +</span><span id="L-4229"><a href="#L-4229"><span class="linenos">4229</span></a> +</span><span id="L-4230"><a href="#L-4230"><span class="linenos">4230</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="L-4231"><a href="#L-4231"><span class="linenos">4231</span></a> +</span><span id="L-4232"><a href="#L-4232"><span class="linenos">4232</span></a> <span class="c1"># The expressions arg gets set by the parser when we have something like DECIMAL(38, 0)</span> +</span><span id="L-4233"><a href="#L-4233"><span class="linenos">4233</span></a> <span class="c1"># in the input SQL. In that case, we'll produce these tokens: DECIMAL ( 38 , 0 )</span> +</span><span id="L-4234"><a href="#L-4234"><span class="linenos">4234</span></a> <span class="c1">#</span> +</span><span id="L-4235"><a href="#L-4235"><span class="linenos">4235</span></a> <span class="c1"># If the index difference here is greater than 1, that means the parser itself must have</span> +</span><span id="L-4236"><a href="#L-4236"><span class="linenos">4236</span></a> <span class="c1"># consumed additional tokens such as the DECIMAL scale and precision in the above example.</span> +</span><span id="L-4237"><a href="#L-4237"><span class="linenos">4237</span></a> <span class="c1">#</span> +</span><span id="L-4238"><a href="#L-4238"><span class="linenos">4238</span></a> <span class="c1"># If it's not greater than 1, then it must be 1, because we've consumed at least the type</span> +</span><span id="L-4239"><a href="#L-4239"><span class="linenos">4239</span></a> <span class="c1"># keyword, meaning that the expressions arg of the DataType must have gotten set by a</span> +</span><span id="L-4240"><a href="#L-4240"><span class="linenos">4240</span></a> <span class="c1"># callable in the TYPE_CONVERTERS mapping. For example, Snowflake converts DECIMAL to</span> +</span><span id="L-4241"><a href="#L-4241"><span class="linenos">4241</span></a> <span class="c1"># DECIMAL(38, 0)) in order to facilitate the data type's transpilation.</span> +</span><span id="L-4242"><a href="#L-4242"><span class="linenos">4242</span></a> <span class="c1">#</span> +</span><span id="L-4243"><a href="#L-4243"><span class="linenos">4243</span></a> <span class="c1"># In these cases, we don't really want to return the converted type, but instead retreat</span> +</span><span id="L-4244"><a href="#L-4244"><span class="linenos">4244</span></a> <span class="c1"># and try to parse a Column or Identifier in the section below.</span> +</span><span id="L-4245"><a href="#L-4245"><span class="linenos">4245</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">index2</span> <span class="o">-</span> <span class="n">index</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-4246"><a href="#L-4246"><span class="linenos">4246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> +</span><span id="L-4247"><a href="#L-4247"><span class="linenos">4247</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="L-4248"><a href="#L-4248"><span class="linenos">4248</span></a> +</span><span id="L-4249"><a href="#L-4249"><span class="linenos">4249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> </span><span id="L-4250"><a href="#L-4250"><span class="linenos">4250</span></a> -</span><span id="L-4251"><a href="#L-4251"><span class="linenos">4251</span></a> <span class="k">def</span> <span class="nf">_parse_type_size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">]:</span> -</span><span id="L-4252"><a href="#L-4252"><span class="linenos">4252</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-4253"><a href="#L-4253"><span class="linenos">4253</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-4254"><a href="#L-4254"><span class="linenos">4254</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4255"><a href="#L-4255"><span class="linenos">4255</span></a> -</span><span id="L-4256"><a href="#L-4256"><span class="linenos">4256</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span><span class="p">:</span> -</span><span id="L-4257"><a href="#L-4257"><span class="linenos">4257</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-4258"><a href="#L-4258"><span class="linenos">4258</span></a> -</span><span id="L-4259"><a href="#L-4259"><span class="linenos">4259</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4260"><a href="#L-4260"><span class="linenos">4260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4261"><a href="#L-4261"><span class="linenos">4261</span></a> <span class="p">)</span> -</span><span id="L-4262"><a href="#L-4262"><span class="linenos">4262</span></a> -</span><span id="L-4263"><a href="#L-4263"><span class="linenos">4263</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span> -</span><span id="L-4264"><a href="#L-4264"><span class="linenos">4264</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4265"><a href="#L-4265"><span class="linenos">4265</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4266"><a href="#L-4266"><span class="linenos">4266</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4267"><a href="#L-4267"><span class="linenos">4267</span></a> -</span><span id="L-4268"><a href="#L-4268"><span class="linenos">4268</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4269"><a href="#L-4269"><span class="linenos">4269</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> -</span><span id="L-4270"><a href="#L-4270"><span class="linenos">4270</span></a> -</span><span id="L-4271"><a href="#L-4271"><span class="linenos">4271</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> -</span><span id="L-4272"><a href="#L-4272"><span class="linenos">4272</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">allow_identifiers</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="L-4273"><a href="#L-4273"><span class="linenos">4273</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> -</span><span id="L-4274"><a href="#L-4274"><span class="linenos">4274</span></a> <span class="p">)</span> -</span><span id="L-4275"><a href="#L-4275"><span class="linenos">4275</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> -</span><span id="L-4276"><a href="#L-4276"><span class="linenos">4276</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">identifier</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-4277"><a href="#L-4277"><span class="linenos">4277</span></a> -</span><span id="L-4278"><a href="#L-4278"><span class="linenos">4278</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-4279"><a href="#L-4279"><span class="linenos">4279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected identifier"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-4280"><a href="#L-4280"><span class="linenos">4280</span></a> -</span><span id="L-4281"><a href="#L-4281"><span class="linenos">4281</span></a> <span class="k">if</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> -</span><span id="L-4282"><a href="#L-4282"><span class="linenos">4282</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-4283"><a href="#L-4283"><span class="linenos">4283</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SUPPORTS_USER_DEFINED_TYPES</span><span class="p">:</span> -</span><span id="L-4284"><a href="#L-4284"><span class="linenos">4284</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4285"><a href="#L-4285"><span class="linenos">4285</span></a> -</span><span id="L-4286"><a href="#L-4286"><span class="linenos">4286</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-4287"><a href="#L-4287"><span class="linenos">4287</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_name</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">_advance_any</span><span class="p">()</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-4288"><a href="#L-4288"><span class="linenos">4288</span></a> -</span><span id="L-4289"><a href="#L-4289"><span class="linenos">4289</span></a> <span class="n">this</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">type_name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4290"><a href="#L-4290"><span class="linenos">4290</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4291"><a href="#L-4291"><span class="linenos">4291</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-4292"><a href="#L-4292"><span class="linenos">4292</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4293"><a href="#L-4293"><span class="linenos">4293</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4294"><a href="#L-4294"><span class="linenos">4294</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4295"><a href="#L-4295"><span class="linenos">4295</span></a> -</span><span id="L-4296"><a href="#L-4296"><span class="linenos">4296</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-4297"><a href="#L-4297"><span class="linenos">4297</span></a> -</span><span id="L-4298"><a href="#L-4298"><span class="linenos">4298</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> -</span><span id="L-4299"><a href="#L-4299"><span class="linenos">4299</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-4300"><a href="#L-4300"><span class="linenos">4300</span></a> -</span><span id="L-4301"><a href="#L-4301"><span class="linenos">4301</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">:</span> -</span><span id="L-4302"><a href="#L-4302"><span class="linenos">4302</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ObjectIdentifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-4251"><a href="#L-4251"><span class="linenos">4251</span></a> <span class="k">if</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> +</span><span id="L-4252"><a href="#L-4252"><span class="linenos">4252</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-4253"><a href="#L-4253"><span class="linenos">4253</span></a> +</span><span id="L-4254"><a href="#L-4254"><span class="linenos">4254</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-4255"><a href="#L-4255"><span class="linenos">4255</span></a> <span class="k">return</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4256"><a href="#L-4256"><span class="linenos">4256</span></a> +</span><span id="L-4257"><a href="#L-4257"><span class="linenos">4257</span></a> <span class="k">def</span> <span class="nf">_parse_type_size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">]:</span> +</span><span id="L-4258"><a href="#L-4258"><span class="linenos">4258</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="L-4259"><a href="#L-4259"><span class="linenos">4259</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-4260"><a href="#L-4260"><span class="linenos">4260</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4261"><a href="#L-4261"><span class="linenos">4261</span></a> +</span><span id="L-4262"><a href="#L-4262"><span class="linenos">4262</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span><span class="p">:</span> +</span><span id="L-4263"><a href="#L-4263"><span class="linenos">4263</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-4264"><a href="#L-4264"><span class="linenos">4264</span></a> +</span><span id="L-4265"><a href="#L-4265"><span class="linenos">4265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4266"><a href="#L-4266"><span class="linenos">4266</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4267"><a href="#L-4267"><span class="linenos">4267</span></a> <span class="p">)</span> +</span><span id="L-4268"><a href="#L-4268"><span class="linenos">4268</span></a> +</span><span id="L-4269"><a href="#L-4269"><span class="linenos">4269</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span> +</span><span id="L-4270"><a href="#L-4270"><span class="linenos">4270</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4271"><a href="#L-4271"><span class="linenos">4271</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4272"><a href="#L-4272"><span class="linenos">4272</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4273"><a href="#L-4273"><span class="linenos">4273</span></a> +</span><span id="L-4274"><a href="#L-4274"><span class="linenos">4274</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4275"><a href="#L-4275"><span class="linenos">4275</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> +</span><span id="L-4276"><a href="#L-4276"><span class="linenos">4276</span></a> +</span><span id="L-4277"><a href="#L-4277"><span class="linenos">4277</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> +</span><span id="L-4278"><a href="#L-4278"><span class="linenos">4278</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">allow_identifiers</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="L-4279"><a href="#L-4279"><span class="linenos">4279</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> +</span><span id="L-4280"><a href="#L-4280"><span class="linenos">4280</span></a> <span class="p">)</span> +</span><span id="L-4281"><a href="#L-4281"><span class="linenos">4281</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> +</span><span id="L-4282"><a href="#L-4282"><span class="linenos">4282</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">identifier</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4283"><a href="#L-4283"><span class="linenos">4283</span></a> +</span><span id="L-4284"><a href="#L-4284"><span class="linenos">4284</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-4285"><a href="#L-4285"><span class="linenos">4285</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected identifier"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-4286"><a href="#L-4286"><span class="linenos">4286</span></a> +</span><span id="L-4287"><a href="#L-4287"><span class="linenos">4287</span></a> <span class="k">if</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> +</span><span id="L-4288"><a href="#L-4288"><span class="linenos">4288</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-4289"><a href="#L-4289"><span class="linenos">4289</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SUPPORTS_USER_DEFINED_TYPES</span><span class="p">:</span> +</span><span id="L-4290"><a href="#L-4290"><span class="linenos">4290</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4291"><a href="#L-4291"><span class="linenos">4291</span></a> +</span><span id="L-4292"><a href="#L-4292"><span class="linenos">4292</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-4293"><a href="#L-4293"><span class="linenos">4293</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_name</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">_advance_any</span><span class="p">()</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-4294"><a href="#L-4294"><span class="linenos">4294</span></a> +</span><span id="L-4295"><a href="#L-4295"><span class="linenos">4295</span></a> <span class="n">this</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">type_name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4296"><a href="#L-4296"><span class="linenos">4296</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4297"><a href="#L-4297"><span class="linenos">4297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-4298"><a href="#L-4298"><span class="linenos">4298</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4299"><a href="#L-4299"><span class="linenos">4299</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4300"><a href="#L-4300"><span class="linenos">4300</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4301"><a href="#L-4301"><span class="linenos">4301</span></a> +</span><span id="L-4302"><a href="#L-4302"><span class="linenos">4302</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> </span><span id="L-4303"><a href="#L-4303"><span class="linenos">4303</span></a> -</span><span id="L-4304"><a href="#L-4304"><span class="linenos">4304</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> -</span><span id="L-4305"><a href="#L-4305"><span class="linenos">4305</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_TYPE_TOKENS</span> -</span><span id="L-4306"><a href="#L-4306"><span class="linenos">4306</span></a> <span class="n">is_aggregate</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">AGGREGATE_TYPE_TOKENS</span> -</span><span id="L-4307"><a href="#L-4307"><span class="linenos">4307</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4308"><a href="#L-4308"><span class="linenos">4308</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4304"><a href="#L-4304"><span class="linenos">4304</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> +</span><span id="L-4305"><a href="#L-4305"><span class="linenos">4305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-4306"><a href="#L-4306"><span class="linenos">4306</span></a> +</span><span id="L-4307"><a href="#L-4307"><span class="linenos">4307</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">:</span> +</span><span id="L-4308"><a href="#L-4308"><span class="linenos">4308</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ObjectIdentifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> </span><span id="L-4309"><a href="#L-4309"><span class="linenos">4309</span></a> -</span><span id="L-4310"><a href="#L-4310"><span class="linenos">4310</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-4311"><a href="#L-4311"><span class="linenos">4311</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="L-4312"><a href="#L-4312"><span class="linenos">4312</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-4313"><a href="#L-4313"><span class="linenos">4313</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> -</span><span id="L-4314"><a href="#L-4314"><span class="linenos">4314</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-4315"><a href="#L-4315"><span class="linenos">4315</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> -</span><span id="L-4316"><a href="#L-4316"><span class="linenos">4316</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> -</span><span id="L-4317"><a href="#L-4317"><span class="linenos">4317</span></a> <span class="p">)</span> -</span><span id="L-4318"><a href="#L-4318"><span class="linenos">4318</span></a> <span class="p">)</span> -</span><span id="L-4319"><a href="#L-4319"><span class="linenos">4319</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">:</span> -</span><span id="L-4320"><a href="#L-4320"><span class="linenos">4320</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="L-4321"><a href="#L-4321"><span class="linenos">4321</span></a> <span class="k">elif</span> <span class="n">is_aggregate</span><span class="p">:</span> -</span><span id="L-4322"><a href="#L-4322"><span class="linenos">4322</span></a> <span class="n">func_or_ident</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="L-4323"><a href="#L-4323"><span class="linenos">4323</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> -</span><span id="L-4324"><a href="#L-4324"><span class="linenos">4324</span></a> <span class="p">)</span> -</span><span id="L-4325"><a href="#L-4325"><span class="linenos">4325</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">func_or_ident</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-4326"><a href="#L-4326"><span class="linenos">4326</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4327"><a href="#L-4327"><span class="linenos">4327</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-4328"><a href="#L-4328"><span class="linenos">4328</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> -</span><span id="L-4329"><a href="#L-4329"><span class="linenos">4329</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> -</span><span id="L-4330"><a href="#L-4330"><span class="linenos">4330</span></a> <span class="p">)</span> -</span><span id="L-4331"><a href="#L-4331"><span class="linenos">4331</span></a> <span class="p">)</span> -</span><span id="L-4332"><a href="#L-4332"><span class="linenos">4332</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">func_or_ident</span><span class="p">)</span> -</span><span id="L-4333"><a href="#L-4333"><span class="linenos">4333</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4334"><a href="#L-4334"><span class="linenos">4334</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type_size</span><span class="p">)</span> -</span><span id="L-4335"><a href="#L-4335"><span class="linenos">4335</span></a> -</span><span id="L-4336"><a href="#L-4336"><span class="linenos">4336</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-4337"><a href="#L-4337"><span class="linenos">4337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4338"><a href="#L-4338"><span class="linenos">4338</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4339"><a href="#L-4339"><span class="linenos">4339</span></a> -</span><span id="L-4340"><a href="#L-4340"><span class="linenos">4340</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4341"><a href="#L-4341"><span class="linenos">4341</span></a> -</span><span id="L-4342"><a href="#L-4342"><span class="linenos">4342</span></a> <span class="n">values</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="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4343"><a href="#L-4343"><span class="linenos">4343</span></a> -</span><span id="L-4344"><a href="#L-4344"><span class="linenos">4344</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="L-4345"><a href="#L-4345"><span class="linenos">4345</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="L-4346"><a href="#L-4346"><span class="linenos">4346</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-4347"><a href="#L-4347"><span class="linenos">4347</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4348"><a href="#L-4348"><span class="linenos">4348</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-4349"><a href="#L-4349"><span class="linenos">4349</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> -</span><span id="L-4350"><a href="#L-4350"><span class="linenos">4350</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> -</span><span id="L-4351"><a href="#L-4351"><span class="linenos">4351</span></a> <span class="p">)</span> -</span><span id="L-4352"><a href="#L-4352"><span class="linenos">4352</span></a> <span class="p">)</span> -</span><span id="L-4353"><a href="#L-4353"><span class="linenos">4353</span></a> -</span><span id="L-4354"><a href="#L-4354"><span class="linenos">4354</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="L-4355"><a href="#L-4355"><span class="linenos">4355</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="L-4356"><a href="#L-4356"><span class="linenos">4356</span></a> -</span><span id="L-4357"><a href="#L-4357"><span class="linenos">4357</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> -</span><span id="L-4358"><a href="#L-4358"><span class="linenos">4358</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="L-4359"><a href="#L-4359"><span class="linenos">4359</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> -</span><span id="L-4360"><a href="#L-4360"><span class="linenos">4360</span></a> -</span><span id="L-4361"><a href="#L-4361"><span class="linenos">4361</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> -</span><span id="L-4362"><a href="#L-4362"><span class="linenos">4362</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="L-4363"><a href="#L-4363"><span class="linenos">4363</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4364"><a href="#L-4364"><span class="linenos">4364</span></a> <span class="n">tz_type</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-4365"><a href="#L-4365"><span class="linenos">4365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span> -</span><span id="L-4366"><a href="#L-4366"><span class="linenos">4366</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMES</span> -</span><span id="L-4367"><a href="#L-4367"><span class="linenos">4367</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span> -</span><span id="L-4368"><a href="#L-4368"><span class="linenos">4368</span></a> <span class="p">)</span> -</span><span id="L-4369"><a href="#L-4369"><span class="linenos">4369</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">tz_type</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4370"><a href="#L-4370"><span class="linenos">4370</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="L-4371"><a href="#L-4371"><span class="linenos">4371</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4372"><a href="#L-4372"><span class="linenos">4372</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4373"><a href="#L-4373"><span class="linenos">4373</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="L-4374"><a href="#L-4374"><span class="linenos">4374</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4375"><a href="#L-4375"><span class="linenos">4375</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> -</span><span id="L-4376"><a href="#L-4376"><span class="linenos">4376</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4377"><a href="#L-4377"><span class="linenos">4377</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> -</span><span id="L-4378"><a href="#L-4378"><span class="linenos">4378</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="L-4379"><a href="#L-4379"><span class="linenos">4379</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-4380"><a href="#L-4380"><span class="linenos">4380</span></a> -</span><span id="L-4381"><a href="#L-4381"><span class="linenos">4381</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span> -</span><span id="L-4382"><a href="#L-4382"><span class="linenos">4382</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4383"><a href="#L-4383"><span class="linenos">4383</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> -</span><span id="L-4384"><a href="#L-4384"><span class="linenos">4384</span></a> -</span><span id="L-4385"><a href="#L-4385"><span class="linenos">4385</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> -</span><span id="L-4386"><a href="#L-4386"><span class="linenos">4386</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4387"><a href="#L-4387"><span class="linenos">4387</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-4388"><a href="#L-4388"><span class="linenos">4388</span></a> -</span><span id="L-4389"><a href="#L-4389"><span class="linenos">4389</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> -</span><span id="L-4390"><a href="#L-4390"><span class="linenos">4390</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4391"><a href="#L-4391"><span class="linenos">4391</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4392"><a href="#L-4392"><span class="linenos">4392</span></a> -</span><span id="L-4393"><a href="#L-4393"><span class="linenos">4393</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> -</span><span id="L-4394"><a href="#L-4394"><span class="linenos">4394</span></a> -</span><span id="L-4395"><a href="#L-4395"><span class="linenos">4395</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-4396"><a href="#L-4396"><span class="linenos">4396</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNSIGNED"</span><span class="p">):</span> -</span><span id="L-4397"><a href="#L-4397"><span class="linenos">4397</span></a> <span class="n">unsigned_type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_token</span><span class="p">)</span> -</span><span id="L-4398"><a href="#L-4398"><span class="linenos">4398</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unsigned_type_token</span><span class="p">:</span> -</span><span id="L-4399"><a href="#L-4399"><span class="linenos">4399</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s2"> to unsigned."</span><span class="p">)</span> -</span><span id="L-4400"><a href="#L-4400"><span class="linenos">4400</span></a> -</span><span id="L-4401"><a href="#L-4401"><span class="linenos">4401</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="n">unsigned_type_token</span> <span class="ow">or</span> <span class="n">type_token</span> -</span><span id="L-4402"><a href="#L-4402"><span class="linenos">4402</span></a> -</span><span id="L-4403"><a href="#L-4403"><span class="linenos">4403</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="L-4404"><a href="#L-4404"><span class="linenos">4404</span></a> <span class="n">this</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">Type</span><span class="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">],</span> -</span><span id="L-4405"><a href="#L-4405"><span class="linenos">4405</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-4406"><a href="#L-4406"><span class="linenos">4406</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> -</span><span id="L-4407"><a href="#L-4407"><span class="linenos">4407</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> -</span><span id="L-4408"><a href="#L-4408"><span class="linenos">4408</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-4409"><a href="#L-4409"><span class="linenos">4409</span></a> <span class="p">)</span> -</span><span id="L-4410"><a href="#L-4410"><span class="linenos">4410</span></a> <span class="k">elif</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-4411"><a href="#L-4411"><span class="linenos">4411</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4412"><a href="#L-4412"><span class="linenos">4412</span></a> -</span><span id="L-4413"><a href="#L-4413"><span class="linenos">4413</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4414"><a href="#L-4414"><span class="linenos">4414</span></a> -</span><span id="L-4415"><a href="#L-4415"><span class="linenos">4415</span></a> <span class="c1"># Postgres supports the INT ARRAY[3] syntax as a synonym for INT[3]</span> -</span><span id="L-4416"><a href="#L-4416"><span class="linenos">4416</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">)</span> +</span><span id="L-4310"><a href="#L-4310"><span class="linenos">4310</span></a> <span class="c1"># https://materialize.com/docs/sql/types/map/</span> +</span><span id="L-4311"><a href="#L-4311"><span class="linenos">4311</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="L-4312"><a href="#L-4312"><span class="linenos">4312</span></a> <span class="n">key_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="L-4313"><a href="#L-4313"><span class="linenos">4313</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="L-4314"><a href="#L-4314"><span class="linenos">4314</span></a> <span class="p">)</span> +</span><span id="L-4315"><a href="#L-4315"><span class="linenos">4315</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">):</span> +</span><span id="L-4316"><a href="#L-4316"><span class="linenos">4316</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4317"><a href="#L-4317"><span class="linenos">4317</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4318"><a href="#L-4318"><span class="linenos">4318</span></a> +</span><span id="L-4319"><a href="#L-4319"><span class="linenos">4319</span></a> <span class="n">value_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="L-4320"><a href="#L-4320"><span class="linenos">4320</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="L-4321"><a href="#L-4321"><span class="linenos">4321</span></a> <span class="p">)</span> +</span><span id="L-4322"><a href="#L-4322"><span class="linenos">4322</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="L-4323"><a href="#L-4323"><span class="linenos">4323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4324"><a href="#L-4324"><span class="linenos">4324</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4325"><a href="#L-4325"><span class="linenos">4325</span></a> +</span><span id="L-4326"><a href="#L-4326"><span class="linenos">4326</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="L-4327"><a href="#L-4327"><span class="linenos">4327</span></a> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="L-4328"><a href="#L-4328"><span class="linenos">4328</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">key_type</span><span class="p">,</span> <span class="n">value_type</span><span class="p">],</span> +</span><span id="L-4329"><a href="#L-4329"><span class="linenos">4329</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-4330"><a href="#L-4330"><span class="linenos">4330</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-4331"><a href="#L-4331"><span class="linenos">4331</span></a> <span class="p">)</span> +</span><span id="L-4332"><a href="#L-4332"><span class="linenos">4332</span></a> +</span><span id="L-4333"><a href="#L-4333"><span class="linenos">4333</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> +</span><span id="L-4334"><a href="#L-4334"><span class="linenos">4334</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_TYPE_TOKENS</span> +</span><span id="L-4335"><a href="#L-4335"><span class="linenos">4335</span></a> <span class="n">is_aggregate</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">AGGREGATE_TYPE_TOKENS</span> +</span><span id="L-4336"><a href="#L-4336"><span class="linenos">4336</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4337"><a href="#L-4337"><span class="linenos">4337</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4338"><a href="#L-4338"><span class="linenos">4338</span></a> +</span><span id="L-4339"><a href="#L-4339"><span class="linenos">4339</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-4340"><a href="#L-4340"><span class="linenos">4340</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="L-4341"><a href="#L-4341"><span class="linenos">4341</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-4342"><a href="#L-4342"><span class="linenos">4342</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> +</span><span id="L-4343"><a href="#L-4343"><span class="linenos">4343</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-4344"><a href="#L-4344"><span class="linenos">4344</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="L-4345"><a href="#L-4345"><span class="linenos">4345</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="L-4346"><a href="#L-4346"><span class="linenos">4346</span></a> <span class="p">)</span> +</span><span id="L-4347"><a href="#L-4347"><span class="linenos">4347</span></a> <span class="p">)</span> +</span><span id="L-4348"><a href="#L-4348"><span class="linenos">4348</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">:</span> +</span><span id="L-4349"><a href="#L-4349"><span class="linenos">4349</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="L-4350"><a href="#L-4350"><span class="linenos">4350</span></a> <span class="k">elif</span> <span class="n">is_aggregate</span><span class="p">:</span> +</span><span id="L-4351"><a href="#L-4351"><span class="linenos">4351</span></a> <span class="n">func_or_ident</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="L-4352"><a href="#L-4352"><span class="linenos">4352</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> +</span><span id="L-4353"><a href="#L-4353"><span class="linenos">4353</span></a> <span class="p">)</span> +</span><span id="L-4354"><a href="#L-4354"><span class="linenos">4354</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">func_or_ident</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-4355"><a href="#L-4355"><span class="linenos">4355</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4356"><a href="#L-4356"><span class="linenos">4356</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-4357"><a href="#L-4357"><span class="linenos">4357</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="L-4358"><a href="#L-4358"><span class="linenos">4358</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="L-4359"><a href="#L-4359"><span class="linenos">4359</span></a> <span class="p">)</span> +</span><span id="L-4360"><a href="#L-4360"><span class="linenos">4360</span></a> <span class="p">)</span> +</span><span id="L-4361"><a href="#L-4361"><span class="linenos">4361</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">func_or_ident</span><span class="p">)</span> +</span><span id="L-4362"><a href="#L-4362"><span class="linenos">4362</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4363"><a href="#L-4363"><span class="linenos">4363</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type_size</span><span class="p">)</span> +</span><span id="L-4364"><a href="#L-4364"><span class="linenos">4364</span></a> +</span><span id="L-4365"><a href="#L-4365"><span class="linenos">4365</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-4366"><a href="#L-4366"><span class="linenos">4366</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4367"><a href="#L-4367"><span class="linenos">4367</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4368"><a href="#L-4368"><span class="linenos">4368</span></a> +</span><span id="L-4369"><a href="#L-4369"><span class="linenos">4369</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4370"><a href="#L-4370"><span class="linenos">4370</span></a> +</span><span id="L-4371"><a href="#L-4371"><span class="linenos">4371</span></a> <span class="n">values</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="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4372"><a href="#L-4372"><span class="linenos">4372</span></a> +</span><span id="L-4373"><a href="#L-4373"><span class="linenos">4373</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="L-4374"><a href="#L-4374"><span class="linenos">4374</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="L-4375"><a href="#L-4375"><span class="linenos">4375</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-4376"><a href="#L-4376"><span class="linenos">4376</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4377"><a href="#L-4377"><span class="linenos">4377</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-4378"><a href="#L-4378"><span class="linenos">4378</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="L-4379"><a href="#L-4379"><span class="linenos">4379</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="L-4380"><a href="#L-4380"><span class="linenos">4380</span></a> <span class="p">)</span> +</span><span id="L-4381"><a href="#L-4381"><span class="linenos">4381</span></a> <span class="p">)</span> +</span><span id="L-4382"><a href="#L-4382"><span class="linenos">4382</span></a> +</span><span id="L-4383"><a href="#L-4383"><span class="linenos">4383</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="L-4384"><a href="#L-4384"><span class="linenos">4384</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="L-4385"><a href="#L-4385"><span class="linenos">4385</span></a> +</span><span id="L-4386"><a href="#L-4386"><span class="linenos">4386</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> +</span><span id="L-4387"><a href="#L-4387"><span class="linenos">4387</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="L-4388"><a href="#L-4388"><span class="linenos">4388</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> +</span><span id="L-4389"><a href="#L-4389"><span class="linenos">4389</span></a> +</span><span id="L-4390"><a href="#L-4390"><span class="linenos">4390</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> +</span><span id="L-4391"><a href="#L-4391"><span class="linenos">4391</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="L-4392"><a href="#L-4392"><span class="linenos">4392</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4393"><a href="#L-4393"><span class="linenos">4393</span></a> <span class="n">tz_type</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-4394"><a href="#L-4394"><span class="linenos">4394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span> +</span><span id="L-4395"><a href="#L-4395"><span class="linenos">4395</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMES</span> +</span><span id="L-4396"><a href="#L-4396"><span class="linenos">4396</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span> +</span><span id="L-4397"><a href="#L-4397"><span class="linenos">4397</span></a> <span class="p">)</span> +</span><span id="L-4398"><a href="#L-4398"><span class="linenos">4398</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">tz_type</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4399"><a href="#L-4399"><span class="linenos">4399</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="L-4400"><a href="#L-4400"><span class="linenos">4400</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4401"><a href="#L-4401"><span class="linenos">4401</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4402"><a href="#L-4402"><span class="linenos">4402</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="L-4403"><a href="#L-4403"><span class="linenos">4403</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4404"><a href="#L-4404"><span class="linenos">4404</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> +</span><span id="L-4405"><a href="#L-4405"><span class="linenos">4405</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4406"><a href="#L-4406"><span class="linenos">4406</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> +</span><span id="L-4407"><a href="#L-4407"><span class="linenos">4407</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="L-4408"><a href="#L-4408"><span class="linenos">4408</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-4409"><a href="#L-4409"><span class="linenos">4409</span></a> +</span><span id="L-4410"><a href="#L-4410"><span class="linenos">4410</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span> +</span><span id="L-4411"><a href="#L-4411"><span class="linenos">4411</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4412"><a href="#L-4412"><span class="linenos">4412</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> +</span><span id="L-4413"><a href="#L-4413"><span class="linenos">4413</span></a> +</span><span id="L-4414"><a href="#L-4414"><span class="linenos">4414</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> +</span><span id="L-4415"><a href="#L-4415"><span class="linenos">4415</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4416"><a href="#L-4416"><span class="linenos">4416</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> </span><span id="L-4417"><a href="#L-4417"><span class="linenos">4417</span></a> -</span><span id="L-4418"><a href="#L-4418"><span class="linenos">4418</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-4419"><a href="#L-4419"><span class="linenos">4419</span></a> <span class="n">matched_l_bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)</span> -</span><span id="L-4420"><a href="#L-4420"><span class="linenos">4420</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">matched_l_bracket</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">matched_array</span><span class="p">:</span> -</span><span id="L-4421"><a href="#L-4421"><span class="linenos">4421</span></a> <span class="k">break</span> -</span><span id="L-4422"><a href="#L-4422"><span class="linenos">4422</span></a> -</span><span id="L-4423"><a href="#L-4423"><span class="linenos">4423</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4424"><a href="#L-4424"><span class="linenos">4424</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="L-4425"><a href="#L-4425"><span class="linenos">4425</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">schema</span><span class="p">:</span> -</span><span id="L-4426"><a href="#L-4426"><span class="linenos">4426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4427"><a href="#L-4427"><span class="linenos">4427</span></a> <span class="k">break</span> -</span><span id="L-4428"><a href="#L-4428"><span class="linenos">4428</span></a> -</span><span id="L-4429"><a href="#L-4429"><span class="linenos">4429</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="L-4430"><a href="#L-4430"><span class="linenos">4430</span></a> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span> -</span><span id="L-4431"><a href="#L-4431"><span class="linenos">4431</span></a> <span class="p">)</span> -</span><span id="L-4432"><a href="#L-4432"><span class="linenos">4432</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> -</span><span id="L-4433"><a href="#L-4433"><span class="linenos">4433</span></a> -</span><span id="L-4434"><a href="#L-4434"><span class="linenos">4434</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="L-4435"><a href="#L-4435"><span class="linenos">4435</span></a> <span class="n">converter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4436"><a href="#L-4436"><span class="linenos">4436</span></a> <span class="k">if</span> <span class="n">converter</span><span class="p">:</span> -</span><span id="L-4437"><a href="#L-4437"><span class="linenos">4437</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">converter</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="p">))</span> -</span><span id="L-4438"><a href="#L-4438"><span class="linenos">4438</span></a> -</span><span id="L-4439"><a href="#L-4439"><span class="linenos">4439</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4440"><a href="#L-4440"><span class="linenos">4440</span></a> -</span><span id="L-4441"><a href="#L-4441"><span class="linenos">4441</span></a> <span class="k">def</span> <span class="nf">_parse_struct_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_required</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4442"><a href="#L-4442"><span class="linenos">4442</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4443"><a href="#L-4443"><span class="linenos">4443</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-4444"><a href="#L-4444"><span class="linenos">4444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">(</span><span class="n">parse_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4445"><a href="#L-4445"><span class="linenos">4445</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-4446"><a href="#L-4446"><span class="linenos">4446</span></a> <span class="p">)</span> -</span><span id="L-4447"><a href="#L-4447"><span class="linenos">4447</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> -</span><span id="L-4448"><a href="#L-4448"><span class="linenos">4448</span></a> -</span><span id="L-4449"><a href="#L-4449"><span class="linenos">4449</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-4450"><a href="#L-4450"><span class="linenos">4450</span></a> <span class="n">type_required</span> -</span><span id="L-4451"><a href="#L-4451"><span class="linenos">4451</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> -</span><span id="L-4452"><a href="#L-4452"><span class="linenos">4452</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4453"><a href="#L-4453"><span class="linenos">4453</span></a> <span class="p">):</span> -</span><span id="L-4454"><a href="#L-4454"><span class="linenos">4454</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4455"><a href="#L-4455"><span class="linenos">4455</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-4456"><a href="#L-4456"><span class="linenos">4456</span></a> -</span><span id="L-4457"><a href="#L-4457"><span class="linenos">4457</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4458"><a href="#L-4458"><span class="linenos">4458</span></a> -</span><span id="L-4459"><a href="#L-4459"><span class="linenos">4459</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4460"><a href="#L-4460"><span class="linenos">4460</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="L-4461"><a href="#L-4461"><span class="linenos">4461</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4462"><a href="#L-4462"><span class="linenos">4462</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> -</span><span id="L-4463"><a href="#L-4463"><span class="linenos">4463</span></a> -</span><span id="L-4464"><a href="#L-4464"><span class="linenos">4464</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4465"><a href="#L-4465"><span class="linenos">4465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> -</span><span id="L-4466"><a href="#L-4466"><span class="linenos">4466</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4467"><a href="#L-4467"><span class="linenos">4467</span></a> -</span><span id="L-4468"><a href="#L-4468"><span class="linenos">4468</span></a> <span class="k">def</span> <span class="nf">_parse_column_reference</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4469"><a href="#L-4469"><span class="linenos">4469</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-4470"><a href="#L-4470"><span class="linenos">4470</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-4471"><a href="#L-4471"><span class="linenos">4471</span></a> <span class="ow">not</span> <span class="n">this</span> -</span><span id="L-4472"><a href="#L-4472"><span class="linenos">4472</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4473"><a href="#L-4473"><span class="linenos">4473</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">VALUES_FOLLOWED_BY_PAREN</span> -</span><span id="L-4474"><a href="#L-4474"><span class="linenos">4474</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="L-4475"><a href="#L-4475"><span class="linenos">4475</span></a> <span class="p">):</span> -</span><span id="L-4476"><a href="#L-4476"><span class="linenos">4476</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-4477"><a href="#L-4477"><span class="linenos">4477</span></a> -</span><span id="L-4478"><a href="#L-4478"><span class="linenos">4478</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-4479"><a href="#L-4479"><span class="linenos">4479</span></a> <span class="c1"># We bubble up comments from the Identifier to the Column</span> -</span><span id="L-4480"><a href="#L-4480"><span class="linenos">4480</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4418"><a href="#L-4418"><span class="linenos">4418</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> +</span><span id="L-4419"><a href="#L-4419"><span class="linenos">4419</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4420"><a href="#L-4420"><span class="linenos">4420</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4421"><a href="#L-4421"><span class="linenos">4421</span></a> +</span><span id="L-4422"><a href="#L-4422"><span class="linenos">4422</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> +</span><span id="L-4423"><a href="#L-4423"><span class="linenos">4423</span></a> +</span><span id="L-4424"><a href="#L-4424"><span class="linenos">4424</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-4425"><a href="#L-4425"><span class="linenos">4425</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNSIGNED"</span><span class="p">):</span> +</span><span id="L-4426"><a href="#L-4426"><span class="linenos">4426</span></a> <span class="n">unsigned_type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_token</span><span class="p">)</span> +</span><span id="L-4427"><a href="#L-4427"><span class="linenos">4427</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unsigned_type_token</span><span class="p">:</span> +</span><span id="L-4428"><a href="#L-4428"><span class="linenos">4428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s2"> to unsigned."</span><span class="p">)</span> +</span><span id="L-4429"><a href="#L-4429"><span class="linenos">4429</span></a> +</span><span id="L-4430"><a href="#L-4430"><span class="linenos">4430</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="n">unsigned_type_token</span> <span class="ow">or</span> <span class="n">type_token</span> +</span><span id="L-4431"><a href="#L-4431"><span class="linenos">4431</span></a> +</span><span id="L-4432"><a href="#L-4432"><span class="linenos">4432</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="L-4433"><a href="#L-4433"><span class="linenos">4433</span></a> <span class="n">this</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">Type</span><span class="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">],</span> +</span><span id="L-4434"><a href="#L-4434"><span class="linenos">4434</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-4435"><a href="#L-4435"><span class="linenos">4435</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> +</span><span id="L-4436"><a href="#L-4436"><span class="linenos">4436</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> +</span><span id="L-4437"><a href="#L-4437"><span class="linenos">4437</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-4438"><a href="#L-4438"><span class="linenos">4438</span></a> <span class="p">)</span> +</span><span id="L-4439"><a href="#L-4439"><span class="linenos">4439</span></a> <span class="k">elif</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-4440"><a href="#L-4440"><span class="linenos">4440</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4441"><a href="#L-4441"><span class="linenos">4441</span></a> +</span><span id="L-4442"><a href="#L-4442"><span class="linenos">4442</span></a> <span class="c1"># https://materialize.com/docs/sql/types/list/#type-name</span> +</span><span id="L-4443"><a href="#L-4443"><span class="linenos">4443</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LIST</span><span class="p">):</span> +</span><span id="L-4444"><a href="#L-4444"><span class="linenos">4444</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">LIST</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4445"><a href="#L-4445"><span class="linenos">4445</span></a> +</span><span id="L-4446"><a href="#L-4446"><span class="linenos">4446</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4447"><a href="#L-4447"><span class="linenos">4447</span></a> +</span><span id="L-4448"><a href="#L-4448"><span class="linenos">4448</span></a> <span class="c1"># Postgres supports the INT ARRAY[3] syntax as a synonym for INT[3]</span> +</span><span id="L-4449"><a href="#L-4449"><span class="linenos">4449</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">)</span> +</span><span id="L-4450"><a href="#L-4450"><span class="linenos">4450</span></a> +</span><span id="L-4451"><a href="#L-4451"><span class="linenos">4451</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-4452"><a href="#L-4452"><span class="linenos">4452</span></a> <span class="n">matched_l_bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)</span> +</span><span id="L-4453"><a href="#L-4453"><span class="linenos">4453</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">matched_l_bracket</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">matched_array</span><span class="p">:</span> +</span><span id="L-4454"><a href="#L-4454"><span class="linenos">4454</span></a> <span class="k">break</span> +</span><span id="L-4455"><a href="#L-4455"><span class="linenos">4455</span></a> +</span><span id="L-4456"><a href="#L-4456"><span class="linenos">4456</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4457"><a href="#L-4457"><span class="linenos">4457</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="L-4458"><a href="#L-4458"><span class="linenos">4458</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">schema</span><span class="p">:</span> +</span><span id="L-4459"><a href="#L-4459"><span class="linenos">4459</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4460"><a href="#L-4460"><span class="linenos">4460</span></a> <span class="k">break</span> +</span><span id="L-4461"><a href="#L-4461"><span class="linenos">4461</span></a> +</span><span id="L-4462"><a href="#L-4462"><span class="linenos">4462</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="L-4463"><a href="#L-4463"><span class="linenos">4463</span></a> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span> +</span><span id="L-4464"><a href="#L-4464"><span class="linenos">4464</span></a> <span class="p">)</span> +</span><span id="L-4465"><a href="#L-4465"><span class="linenos">4465</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> +</span><span id="L-4466"><a href="#L-4466"><span class="linenos">4466</span></a> +</span><span id="L-4467"><a href="#L-4467"><span class="linenos">4467</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="L-4468"><a href="#L-4468"><span class="linenos">4468</span></a> <span class="n">converter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4469"><a href="#L-4469"><span class="linenos">4469</span></a> <span class="k">if</span> <span class="n">converter</span><span class="p">:</span> +</span><span id="L-4470"><a href="#L-4470"><span class="linenos">4470</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">converter</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="p">))</span> +</span><span id="L-4471"><a href="#L-4471"><span class="linenos">4471</span></a> +</span><span id="L-4472"><a href="#L-4472"><span class="linenos">4472</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4473"><a href="#L-4473"><span class="linenos">4473</span></a> +</span><span id="L-4474"><a href="#L-4474"><span class="linenos">4474</span></a> <span class="k">def</span> <span class="nf">_parse_struct_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_required</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4475"><a href="#L-4475"><span class="linenos">4475</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4476"><a href="#L-4476"><span class="linenos">4476</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-4477"><a href="#L-4477"><span class="linenos">4477</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">(</span><span class="n">parse_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4478"><a href="#L-4478"><span class="linenos">4478</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-4479"><a href="#L-4479"><span class="linenos">4479</span></a> <span class="p">)</span> +</span><span id="L-4480"><a href="#L-4480"><span class="linenos">4480</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> </span><span id="L-4481"><a href="#L-4481"><span class="linenos">4481</span></a> -</span><span id="L-4482"><a href="#L-4482"><span class="linenos">4482</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4483"><a href="#L-4483"><span class="linenos">4483</span></a> -</span><span id="L-4484"><a href="#L-4484"><span class="linenos">4484</span></a> <span class="k">def</span> <span class="nf">_parse_colon_as_json_extract</span><span class="p">(</span> -</span><span id="L-4485"><a href="#L-4485"><span class="linenos">4485</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-4486"><a href="#L-4486"><span class="linenos">4486</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4487"><a href="#L-4487"><span class="linenos">4487</span></a> <span class="n">casts</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-4488"><a href="#L-4488"><span class="linenos">4488</span></a> <span class="n">json_path</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4482"><a href="#L-4482"><span class="linenos">4482</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-4483"><a href="#L-4483"><span class="linenos">4483</span></a> <span class="n">type_required</span> +</span><span id="L-4484"><a href="#L-4484"><span class="linenos">4484</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> +</span><span id="L-4485"><a href="#L-4485"><span class="linenos">4485</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4486"><a href="#L-4486"><span class="linenos">4486</span></a> <span class="p">):</span> +</span><span id="L-4487"><a href="#L-4487"><span class="linenos">4487</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4488"><a href="#L-4488"><span class="linenos">4488</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> </span><span id="L-4489"><a href="#L-4489"><span class="linenos">4489</span></a> -</span><span id="L-4490"><a href="#L-4490"><span class="linenos">4490</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="L-4491"><a href="#L-4491"><span class="linenos">4491</span></a> <span class="n">start_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4492"><a href="#L-4492"><span class="linenos">4492</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-4493"><a href="#L-4493"><span class="linenos">4493</span></a> -</span><span id="L-4494"><a href="#L-4494"><span class="linenos">4494</span></a> <span class="c1"># The cast :: operator has a lower precedence than the extraction operator :, so</span> -</span><span id="L-4495"><a href="#L-4495"><span class="linenos">4495</span></a> <span class="c1"># we rearrange the AST appropriately to avoid casting the JSON path</span> -</span><span id="L-4496"><a href="#L-4496"><span class="linenos">4496</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="L-4497"><a href="#L-4497"><span class="linenos">4497</span></a> <span class="n">casts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">to</span><span class="p">)</span> -</span><span id="L-4498"><a href="#L-4498"><span class="linenos">4498</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-4499"><a href="#L-4499"><span class="linenos">4499</span></a> -</span><span id="L-4500"><a href="#L-4500"><span class="linenos">4500</span></a> <span class="k">if</span> <span class="n">casts</span><span class="p">:</span> -</span><span id="L-4501"><a href="#L-4501"><span class="linenos">4501</span></a> <span class="n">dcolon_offset</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span> -</span><span id="L-4502"><a href="#L-4502"><span class="linenos">4502</span></a> <span class="n">i</span> -</span><span id="L-4503"><a href="#L-4503"><span class="linenos">4503</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">:])</span> -</span><span id="L-4504"><a href="#L-4504"><span class="linenos">4504</span></a> <span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span> -</span><span id="L-4505"><a href="#L-4505"><span class="linenos">4505</span></a> <span class="p">)</span> -</span><span id="L-4506"><a href="#L-4506"><span class="linenos">4506</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span> <span class="o">+</span> <span class="n">dcolon_offset</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="L-4507"><a href="#L-4507"><span class="linenos">4507</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4508"><a href="#L-4508"><span class="linenos">4508</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-4509"><a href="#L-4509"><span class="linenos">4509</span></a> -</span><span id="L-4510"><a href="#L-4510"><span class="linenos">4510</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> -</span><span id="L-4511"><a href="#L-4511"><span class="linenos">4511</span></a> <span class="n">json_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">],</span> <span class="n">end_token</span><span class="p">))</span> -</span><span id="L-4512"><a href="#L-4512"><span class="linenos">4512</span></a> -</span><span id="L-4513"><a href="#L-4513"><span class="linenos">4513</span></a> <span class="k">if</span> <span class="n">json_path</span><span class="p">:</span> -</span><span id="L-4514"><a href="#L-4514"><span class="linenos">4514</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4515"><a href="#L-4515"><span class="linenos">4515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> -</span><span id="L-4516"><a href="#L-4516"><span class="linenos">4516</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-4517"><a href="#L-4517"><span class="linenos">4517</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">json_path</span><span class="p">))),</span> -</span><span id="L-4518"><a href="#L-4518"><span class="linenos">4518</span></a> <span class="p">)</span> -</span><span id="L-4519"><a href="#L-4519"><span class="linenos">4519</span></a> -</span><span id="L-4520"><a href="#L-4520"><span class="linenos">4520</span></a> <span class="k">while</span> <span class="n">casts</span><span class="p">:</span> -</span><span id="L-4521"><a href="#L-4521"><span class="linenos">4521</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">casts</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> +</span><span id="L-4490"><a href="#L-4490"><span class="linenos">4490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4491"><a href="#L-4491"><span class="linenos">4491</span></a> +</span><span id="L-4492"><a href="#L-4492"><span class="linenos">4492</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4493"><a href="#L-4493"><span class="linenos">4493</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="L-4494"><a href="#L-4494"><span class="linenos">4494</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4495"><a href="#L-4495"><span class="linenos">4495</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> +</span><span id="L-4496"><a href="#L-4496"><span class="linenos">4496</span></a> +</span><span id="L-4497"><a href="#L-4497"><span class="linenos">4497</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4498"><a href="#L-4498"><span class="linenos">4498</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> +</span><span id="L-4499"><a href="#L-4499"><span class="linenos">4499</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4500"><a href="#L-4500"><span class="linenos">4500</span></a> +</span><span id="L-4501"><a href="#L-4501"><span class="linenos">4501</span></a> <span class="k">def</span> <span class="nf">_parse_column_reference</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4502"><a href="#L-4502"><span class="linenos">4502</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-4503"><a href="#L-4503"><span class="linenos">4503</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-4504"><a href="#L-4504"><span class="linenos">4504</span></a> <span class="ow">not</span> <span class="n">this</span> +</span><span id="L-4505"><a href="#L-4505"><span class="linenos">4505</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4506"><a href="#L-4506"><span class="linenos">4506</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">VALUES_FOLLOWED_BY_PAREN</span> +</span><span id="L-4507"><a href="#L-4507"><span class="linenos">4507</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="L-4508"><a href="#L-4508"><span class="linenos">4508</span></a> <span class="p">):</span> +</span><span id="L-4509"><a href="#L-4509"><span class="linenos">4509</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-4510"><a href="#L-4510"><span class="linenos">4510</span></a> +</span><span id="L-4511"><a href="#L-4511"><span class="linenos">4511</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-4512"><a href="#L-4512"><span class="linenos">4512</span></a> <span class="c1"># We bubble up comments from the Identifier to the Column</span> +</span><span id="L-4513"><a href="#L-4513"><span class="linenos">4513</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4514"><a href="#L-4514"><span class="linenos">4514</span></a> +</span><span id="L-4515"><a href="#L-4515"><span class="linenos">4515</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4516"><a href="#L-4516"><span class="linenos">4516</span></a> +</span><span id="L-4517"><a href="#L-4517"><span class="linenos">4517</span></a> <span class="k">def</span> <span class="nf">_parse_colon_as_json_extract</span><span class="p">(</span> +</span><span id="L-4518"><a href="#L-4518"><span class="linenos">4518</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-4519"><a href="#L-4519"><span class="linenos">4519</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4520"><a href="#L-4520"><span class="linenos">4520</span></a> <span class="n">casts</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4521"><a href="#L-4521"><span class="linenos">4521</span></a> <span class="n">json_path</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-4522"><a href="#L-4522"><span class="linenos">4522</span></a> -</span><span id="L-4523"><a href="#L-4523"><span class="linenos">4523</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4524"><a href="#L-4524"><span class="linenos">4524</span></a> -</span><span id="L-4525"><a href="#L-4525"><span class="linenos">4525</span></a> <span class="k">def</span> <span class="nf">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4526"><a href="#L-4526"><span class="linenos">4526</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4527"><a href="#L-4527"><span class="linenos">4527</span></a> -</span><span id="L-4528"><a href="#L-4528"><span class="linenos">4528</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> -</span><span id="L-4529"><a href="#L-4529"><span class="linenos">4529</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-4530"><a href="#L-4530"><span class="linenos">4530</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> -</span><span id="L-4531"><a href="#L-4531"><span class="linenos">4531</span></a> -</span><span id="L-4532"><a href="#L-4532"><span class="linenos">4532</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> -</span><span id="L-4533"><a href="#L-4533"><span class="linenos">4533</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-4534"><a href="#L-4534"><span class="linenos">4534</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> -</span><span id="L-4535"><a href="#L-4535"><span class="linenos">4535</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> -</span><span id="L-4536"><a href="#L-4536"><span class="linenos">4536</span></a> <span class="k">elif</span> <span class="n">op</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-4537"><a href="#L-4537"><span class="linenos">4537</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> -</span><span id="L-4538"><a href="#L-4538"><span class="linenos">4538</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4539"><a href="#L-4539"><span class="linenos">4539</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">anonymous_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4540"><a href="#L-4540"><span class="linenos">4540</span></a> -</span><span id="L-4541"><a href="#L-4541"><span class="linenos">4541</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-4542"><a href="#L-4542"><span class="linenos">4542</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> -</span><span id="L-4543"><a href="#L-4543"><span class="linenos">4543</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> -</span><span id="L-4544"><a href="#L-4544"><span class="linenos">4544</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> -</span><span id="L-4545"><a href="#L-4545"><span class="linenos">4545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">replace_tree</span><span class="p">(</span> -</span><span id="L-4546"><a href="#L-4546"><span class="linenos">4546</span></a> <span class="n">this</span><span class="p">,</span> -</span><span id="L-4547"><a href="#L-4547"><span class="linenos">4547</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-4548"><a href="#L-4548"><span class="linenos">4548</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4549"><a href="#L-4549"><span class="linenos">4549</span></a> <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">table</span> -</span><span id="L-4550"><a href="#L-4550"><span class="linenos">4550</span></a> <span class="k">else</span> <span class="n">n</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-4551"><a href="#L-4551"><span class="linenos">4551</span></a> <span class="p">)</span> -</span><span id="L-4552"><a href="#L-4552"><span class="linenos">4552</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> -</span><span id="L-4553"><a href="#L-4553"><span class="linenos">4553</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span> -</span><span id="L-4554"><a href="#L-4554"><span class="linenos">4554</span></a> <span class="p">)</span> +</span><span id="L-4523"><a href="#L-4523"><span class="linenos">4523</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="L-4524"><a href="#L-4524"><span class="linenos">4524</span></a> <span class="n">start_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4525"><a href="#L-4525"><span class="linenos">4525</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-4526"><a href="#L-4526"><span class="linenos">4526</span></a> +</span><span id="L-4527"><a href="#L-4527"><span class="linenos">4527</span></a> <span class="c1"># The cast :: operator has a lower precedence than the extraction operator :, so</span> +</span><span id="L-4528"><a href="#L-4528"><span class="linenos">4528</span></a> <span class="c1"># we rearrange the AST appropriately to avoid casting the JSON path</span> +</span><span id="L-4529"><a href="#L-4529"><span class="linenos">4529</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="L-4530"><a href="#L-4530"><span class="linenos">4530</span></a> <span class="n">casts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">to</span><span class="p">)</span> +</span><span id="L-4531"><a href="#L-4531"><span class="linenos">4531</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4532"><a href="#L-4532"><span class="linenos">4532</span></a> +</span><span id="L-4533"><a href="#L-4533"><span class="linenos">4533</span></a> <span class="k">if</span> <span class="n">casts</span><span class="p">:</span> +</span><span id="L-4534"><a href="#L-4534"><span class="linenos">4534</span></a> <span class="n">dcolon_offset</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span> +</span><span id="L-4535"><a href="#L-4535"><span class="linenos">4535</span></a> <span class="n">i</span> +</span><span id="L-4536"><a href="#L-4536"><span class="linenos">4536</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">:])</span> +</span><span id="L-4537"><a href="#L-4537"><span class="linenos">4537</span></a> <span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span> +</span><span id="L-4538"><a href="#L-4538"><span class="linenos">4538</span></a> <span class="p">)</span> +</span><span id="L-4539"><a href="#L-4539"><span class="linenos">4539</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span> <span class="o">+</span> <span class="n">dcolon_offset</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="L-4540"><a href="#L-4540"><span class="linenos">4540</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4541"><a href="#L-4541"><span class="linenos">4541</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-4542"><a href="#L-4542"><span class="linenos">4542</span></a> +</span><span id="L-4543"><a href="#L-4543"><span class="linenos">4543</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> +</span><span id="L-4544"><a href="#L-4544"><span class="linenos">4544</span></a> <span class="n">json_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">],</span> <span class="n">end_token</span><span class="p">))</span> +</span><span id="L-4545"><a href="#L-4545"><span class="linenos">4545</span></a> +</span><span id="L-4546"><a href="#L-4546"><span class="linenos">4546</span></a> <span class="k">if</span> <span class="n">json_path</span><span class="p">:</span> +</span><span id="L-4547"><a href="#L-4547"><span class="linenos">4547</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4548"><a href="#L-4548"><span class="linenos">4548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> +</span><span id="L-4549"><a href="#L-4549"><span class="linenos">4549</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-4550"><a href="#L-4550"><span class="linenos">4550</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">json_path</span><span class="p">))),</span> +</span><span id="L-4551"><a href="#L-4551"><span class="linenos">4551</span></a> <span class="p">)</span> +</span><span id="L-4552"><a href="#L-4552"><span class="linenos">4552</span></a> +</span><span id="L-4553"><a href="#L-4553"><span class="linenos">4553</span></a> <span class="k">while</span> <span class="n">casts</span><span class="p">:</span> +</span><span id="L-4554"><a href="#L-4554"><span class="linenos">4554</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">casts</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> </span><span id="L-4555"><a href="#L-4555"><span class="linenos">4555</span></a> -</span><span id="L-4556"><a href="#L-4556"><span class="linenos">4556</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> -</span><span id="L-4557"><a href="#L-4557"><span class="linenos">4557</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> -</span><span id="L-4558"><a href="#L-4558"><span class="linenos">4558</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> -</span><span id="L-4559"><a href="#L-4559"><span class="linenos">4559</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4560"><a href="#L-4560"><span class="linenos">4560</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> -</span><span id="L-4561"><a href="#L-4561"><span class="linenos">4561</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> -</span><span id="L-4562"><a href="#L-4562"><span class="linenos">4562</span></a> <span class="n">table</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-4563"><a href="#L-4563"><span class="linenos">4563</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> -</span><span id="L-4564"><a href="#L-4564"><span class="linenos">4564</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> -</span><span id="L-4565"><a href="#L-4565"><span class="linenos">4565</span></a> <span class="p">)</span> -</span><span id="L-4566"><a href="#L-4566"><span class="linenos">4566</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4567"><a href="#L-4567"><span class="linenos">4567</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> -</span><span id="L-4568"><a href="#L-4568"><span class="linenos">4568</span></a> -</span><span id="L-4569"><a href="#L-4569"><span class="linenos">4569</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4570"><a href="#L-4570"><span class="linenos">4570</span></a> -</span><span id="L-4571"><a href="#L-4571"><span class="linenos">4571</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_colon_as_json_extract</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLON_IS_JSON_EXTRACT</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="L-4572"><a href="#L-4572"><span class="linenos">4572</span></a> -</span><span id="L-4573"><a href="#L-4573"><span class="linenos">4573</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4574"><a href="#L-4574"><span class="linenos">4574</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> -</span><span id="L-4575"><a href="#L-4575"><span class="linenos">4575</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-4576"><a href="#L-4576"><span class="linenos">4576</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-4577"><a href="#L-4577"><span class="linenos">4577</span></a> -</span><span id="L-4578"><a href="#L-4578"><span class="linenos">4578</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> -</span><span id="L-4579"><a href="#L-4579"><span class="linenos">4579</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> -</span><span id="L-4580"><a href="#L-4580"><span class="linenos">4580</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> -</span><span id="L-4581"><a href="#L-4581"><span class="linenos">4581</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> -</span><span id="L-4582"><a href="#L-4582"><span class="linenos">4582</span></a> -</span><span id="L-4583"><a href="#L-4583"><span class="linenos">4583</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-4584"><a href="#L-4584"><span class="linenos">4584</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4585"><a href="#L-4585"><span class="linenos">4585</span></a> -</span><span id="L-4586"><a href="#L-4586"><span class="linenos">4586</span></a> <span class="k">return</span> <span class="n">primary</span> -</span><span id="L-4587"><a href="#L-4587"><span class="linenos">4587</span></a> -</span><span id="L-4588"><a href="#L-4588"><span class="linenos">4588</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> -</span><span id="L-4589"><a href="#L-4589"><span class="linenos">4589</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-4590"><a href="#L-4590"><span class="linenos">4590</span></a> -</span><span id="L-4591"><a href="#L-4591"><span class="linenos">4591</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-4592"><a href="#L-4592"><span class="linenos">4592</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-4593"><a href="#L-4593"><span class="linenos">4593</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="L-4594"><a href="#L-4594"><span class="linenos">4594</span></a> -</span><span id="L-4595"><a href="#L-4595"><span class="linenos">4595</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="L-4596"><a href="#L-4596"><span class="linenos">4596</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> -</span><span id="L-4597"><a href="#L-4597"><span class="linenos">4597</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4598"><a href="#L-4598"><span class="linenos">4598</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> -</span><span id="L-4599"><a href="#L-4599"><span class="linenos">4599</span></a> -</span><span id="L-4600"><a href="#L-4600"><span class="linenos">4600</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-4556"><a href="#L-4556"><span class="linenos">4556</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4557"><a href="#L-4557"><span class="linenos">4557</span></a> +</span><span id="L-4558"><a href="#L-4558"><span class="linenos">4558</span></a> <span class="k">def</span> <span class="nf">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4559"><a href="#L-4559"><span class="linenos">4559</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4560"><a href="#L-4560"><span class="linenos">4560</span></a> +</span><span id="L-4561"><a href="#L-4561"><span class="linenos">4561</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> +</span><span id="L-4562"><a href="#L-4562"><span class="linenos">4562</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-4563"><a href="#L-4563"><span class="linenos">4563</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> +</span><span id="L-4564"><a href="#L-4564"><span class="linenos">4564</span></a> +</span><span id="L-4565"><a href="#L-4565"><span class="linenos">4565</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> +</span><span id="L-4566"><a href="#L-4566"><span class="linenos">4566</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-4567"><a href="#L-4567"><span class="linenos">4567</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> +</span><span id="L-4568"><a href="#L-4568"><span class="linenos">4568</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> +</span><span id="L-4569"><a href="#L-4569"><span class="linenos">4569</span></a> <span class="k">elif</span> <span class="n">op</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-4570"><a href="#L-4570"><span class="linenos">4570</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> +</span><span id="L-4571"><a href="#L-4571"><span class="linenos">4571</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4572"><a href="#L-4572"><span class="linenos">4572</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">anonymous_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4573"><a href="#L-4573"><span class="linenos">4573</span></a> +</span><span id="L-4574"><a href="#L-4574"><span class="linenos">4574</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-4575"><a href="#L-4575"><span class="linenos">4575</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> +</span><span id="L-4576"><a href="#L-4576"><span class="linenos">4576</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> +</span><span id="L-4577"><a href="#L-4577"><span class="linenos">4577</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> +</span><span id="L-4578"><a href="#L-4578"><span class="linenos">4578</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">replace_tree</span><span class="p">(</span> +</span><span id="L-4579"><a href="#L-4579"><span class="linenos">4579</span></a> <span class="n">this</span><span class="p">,</span> +</span><span id="L-4580"><a href="#L-4580"><span class="linenos">4580</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-4581"><a href="#L-4581"><span class="linenos">4581</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4582"><a href="#L-4582"><span class="linenos">4582</span></a> <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">table</span> +</span><span id="L-4583"><a href="#L-4583"><span class="linenos">4583</span></a> <span class="k">else</span> <span class="n">n</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4584"><a href="#L-4584"><span class="linenos">4584</span></a> <span class="p">)</span> +</span><span id="L-4585"><a href="#L-4585"><span class="linenos">4585</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> +</span><span id="L-4586"><a href="#L-4586"><span class="linenos">4586</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span> +</span><span id="L-4587"><a href="#L-4587"><span class="linenos">4587</span></a> <span class="p">)</span> +</span><span id="L-4588"><a href="#L-4588"><span class="linenos">4588</span></a> +</span><span id="L-4589"><a href="#L-4589"><span class="linenos">4589</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> +</span><span id="L-4590"><a href="#L-4590"><span class="linenos">4590</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> +</span><span id="L-4591"><a href="#L-4591"><span class="linenos">4591</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> +</span><span id="L-4592"><a href="#L-4592"><span class="linenos">4592</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4593"><a href="#L-4593"><span class="linenos">4593</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> +</span><span id="L-4594"><a href="#L-4594"><span class="linenos">4594</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> +</span><span id="L-4595"><a href="#L-4595"><span class="linenos">4595</span></a> <span class="n">table</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-4596"><a href="#L-4596"><span class="linenos">4596</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> +</span><span id="L-4597"><a href="#L-4597"><span class="linenos">4597</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> +</span><span id="L-4598"><a href="#L-4598"><span class="linenos">4598</span></a> <span class="p">)</span> +</span><span id="L-4599"><a href="#L-4599"><span class="linenos">4599</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4600"><a href="#L-4600"><span class="linenos">4600</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> </span><span id="L-4601"><a href="#L-4601"><span class="linenos">4601</span></a> -</span><span id="L-4602"><a href="#L-4602"><span class="linenos">4602</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4603"><a href="#L-4603"><span class="linenos">4603</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> -</span><span id="L-4604"><a href="#L-4604"><span class="linenos">4604</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span> -</span><span id="L-4605"><a href="#L-4605"><span class="linenos">4605</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4606"><a href="#L-4606"><span class="linenos">4606</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">):</span> -</span><span id="L-4607"><a href="#L-4607"><span class="linenos">4607</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span> -</span><span id="L-4608"><a href="#L-4608"><span class="linenos">4608</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span> -</span><span id="L-4609"><a href="#L-4609"><span class="linenos">4609</span></a> <span class="p">)</span> -</span><span id="L-4610"><a href="#L-4610"><span class="linenos">4610</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">:</span> -</span><span id="L-4611"><a href="#L-4611"><span class="linenos">4611</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4612"><a href="#L-4612"><span class="linenos">4612</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4613"><a href="#L-4613"><span class="linenos">4613</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4614"><a href="#L-4614"><span class="linenos">4614</span></a> -</span><span id="L-4615"><a href="#L-4615"><span class="linenos">4615</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-4616"><a href="#L-4616"><span class="linenos">4616</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> -</span><span id="L-4617"><a href="#L-4617"><span class="linenos">4617</span></a> -</span><span id="L-4618"><a href="#L-4618"><span class="linenos">4618</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4619"><a href="#L-4619"><span class="linenos">4619</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4602"><a href="#L-4602"><span class="linenos">4602</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4603"><a href="#L-4603"><span class="linenos">4603</span></a> +</span><span id="L-4604"><a href="#L-4604"><span class="linenos">4604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_colon_as_json_extract</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLON_IS_JSON_EXTRACT</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="L-4605"><a href="#L-4605"><span class="linenos">4605</span></a> +</span><span id="L-4606"><a href="#L-4606"><span class="linenos">4606</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4607"><a href="#L-4607"><span class="linenos">4607</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> +</span><span id="L-4608"><a href="#L-4608"><span class="linenos">4608</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-4609"><a href="#L-4609"><span class="linenos">4609</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-4610"><a href="#L-4610"><span class="linenos">4610</span></a> +</span><span id="L-4611"><a href="#L-4611"><span class="linenos">4611</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> +</span><span id="L-4612"><a href="#L-4612"><span class="linenos">4612</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> +</span><span id="L-4613"><a href="#L-4613"><span class="linenos">4613</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> +</span><span id="L-4614"><a href="#L-4614"><span class="linenos">4614</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> +</span><span id="L-4615"><a href="#L-4615"><span class="linenos">4615</span></a> +</span><span id="L-4616"><a href="#L-4616"><span class="linenos">4616</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-4617"><a href="#L-4617"><span class="linenos">4617</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4618"><a href="#L-4618"><span class="linenos">4618</span></a> +</span><span id="L-4619"><a href="#L-4619"><span class="linenos">4619</span></a> <span class="k">return</span> <span class="n">primary</span> </span><span id="L-4620"><a href="#L-4620"><span class="linenos">4620</span></a> -</span><span id="L-4621"><a href="#L-4621"><span class="linenos">4621</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4622"><a href="#L-4622"><span class="linenos">4622</span></a> -</span><span id="L-4623"><a href="#L-4623"><span class="linenos">4623</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span> -</span><span id="L-4624"><a href="#L-4624"><span class="linenos">4624</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-4625"><a href="#L-4625"><span class="linenos">4625</span></a> <span class="n">any_token</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-4626"><a href="#L-4626"><span class="linenos">4626</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4627"><a href="#L-4627"><span class="linenos">4627</span></a> <span class="n">anonymous_func</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-4628"><a href="#L-4628"><span class="linenos">4628</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4629"><a href="#L-4629"><span class="linenos">4629</span></a> <span class="k">if</span> <span class="n">anonymous_func</span><span class="p">:</span> -</span><span id="L-4630"><a href="#L-4630"><span class="linenos">4630</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-4631"><a href="#L-4631"><span class="linenos">4631</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">)</span> -</span><span id="L-4632"><a href="#L-4632"><span class="linenos">4632</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-4633"><a href="#L-4633"><span class="linenos">4633</span></a> <span class="p">)</span> -</span><span id="L-4634"><a href="#L-4634"><span class="linenos">4634</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4635"><a href="#L-4635"><span class="linenos">4635</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span> -</span><span id="L-4636"><a href="#L-4636"><span class="linenos">4636</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span> -</span><span id="L-4637"><a href="#L-4637"><span class="linenos">4637</span></a> <span class="p">)</span> -</span><span id="L-4638"><a href="#L-4638"><span class="linenos">4638</span></a> <span class="k">return</span> <span class="n">field</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">tokens</span><span class="p">)</span> -</span><span id="L-4639"><a href="#L-4639"><span class="linenos">4639</span></a> -</span><span id="L-4640"><a href="#L-4640"><span class="linenos">4640</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> -</span><span id="L-4641"><a href="#L-4641"><span class="linenos">4641</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-4642"><a href="#L-4642"><span class="linenos">4642</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4643"><a href="#L-4643"><span class="linenos">4643</span></a> <span class="n">anonymous</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-4644"><a href="#L-4644"><span class="linenos">4644</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4645"><a href="#L-4645"><span class="linenos">4645</span></a> <span class="n">any_token</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-4646"><a href="#L-4646"><span class="linenos">4646</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4647"><a href="#L-4647"><span class="linenos">4647</span></a> <span class="c1"># This allows us to also parse {fn <function>} syntax (Snowflake, MySQL support this)</span> -</span><span id="L-4648"><a href="#L-4648"><span class="linenos">4648</span></a> <span class="c1"># See: https://community.snowflake.com/s/article/SQL-Escape-Sequences</span> -</span><span id="L-4649"><a href="#L-4649"><span class="linenos">4649</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-4650"><a href="#L-4650"><span class="linenos">4650</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-4651"><a href="#L-4651"><span class="linenos">4651</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4652"><a href="#L-4652"><span class="linenos">4652</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> -</span><span id="L-4653"><a href="#L-4653"><span class="linenos">4653</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FN"</span> -</span><span id="L-4654"><a href="#L-4654"><span class="linenos">4654</span></a> <span class="p">):</span> -</span><span id="L-4655"><a href="#L-4655"><span class="linenos">4655</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-4656"><a href="#L-4656"><span class="linenos">4656</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-4657"><a href="#L-4657"><span class="linenos">4657</span></a> -</span><span id="L-4658"><a href="#L-4658"><span class="linenos">4658</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_call</span><span class="p">(</span> -</span><span id="L-4659"><a href="#L-4659"><span class="linenos">4659</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span> -</span><span id="L-4660"><a href="#L-4660"><span class="linenos">4660</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span> -</span><span id="L-4661"><a href="#L-4661"><span class="linenos">4661</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span> -</span><span id="L-4662"><a href="#L-4662"><span class="linenos">4662</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> -</span><span id="L-4663"><a href="#L-4663"><span class="linenos">4663</span></a> <span class="p">)</span> -</span><span id="L-4664"><a href="#L-4664"><span class="linenos">4664</span></a> -</span><span id="L-4665"><a href="#L-4665"><span class="linenos">4665</span></a> <span class="k">if</span> <span class="n">fn_syntax</span><span class="p">:</span> -</span><span id="L-4666"><a href="#L-4666"><span class="linenos">4666</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> -</span><span id="L-4667"><a href="#L-4667"><span class="linenos">4667</span></a> -</span><span id="L-4668"><a href="#L-4668"><span class="linenos">4668</span></a> <span class="k">return</span> <span class="n">func</span> -</span><span id="L-4669"><a href="#L-4669"><span class="linenos">4669</span></a> -</span><span id="L-4670"><a href="#L-4670"><span class="linenos">4670</span></a> <span class="k">def</span> <span class="nf">_parse_function_call</span><span class="p">(</span> -</span><span id="L-4671"><a href="#L-4671"><span class="linenos">4671</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-4672"><a href="#L-4672"><span class="linenos">4672</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4673"><a href="#L-4673"><span class="linenos">4673</span></a> <span class="n">anonymous</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-4674"><a href="#L-4674"><span class="linenos">4674</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-4675"><a href="#L-4675"><span class="linenos">4675</span></a> <span class="n">any_token</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-4676"><a href="#L-4676"><span class="linenos">4676</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4677"><a href="#L-4677"><span class="linenos">4677</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-4678"><a href="#L-4678"><span class="linenos">4678</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4679"><a href="#L-4679"><span class="linenos">4679</span></a> -</span><span id="L-4680"><a href="#L-4680"><span class="linenos">4680</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-4681"><a href="#L-4681"><span class="linenos">4681</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-4682"><a href="#L-4682"><span class="linenos">4682</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-4683"><a href="#L-4683"><span class="linenos">4683</span></a> <span class="n">upper</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-4684"><a href="#L-4684"><span class="linenos">4684</span></a> -</span><span id="L-4685"><a href="#L-4685"><span class="linenos">4685</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="L-4686"><a href="#L-4686"><span class="linenos">4686</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">parser</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">INVALID_FUNC_NAME_TOKENS</span><span class="p">:</span> -</span><span id="L-4687"><a href="#L-4687"><span class="linenos">4687</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-4688"><a href="#L-4688"><span class="linenos">4688</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="L-4689"><a href="#L-4689"><span class="linenos">4689</span></a> -</span><span id="L-4690"><a href="#L-4690"><span class="linenos">4690</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="L-4691"><a href="#L-4691"><span class="linenos">4691</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> -</span><span id="L-4692"><a href="#L-4692"><span class="linenos">4692</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-4693"><a href="#L-4693"><span class="linenos">4693</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> -</span><span id="L-4694"><a href="#L-4694"><span class="linenos">4694</span></a> -</span><span id="L-4695"><a href="#L-4695"><span class="linenos">4695</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4696"><a href="#L-4696"><span class="linenos">4696</span></a> -</span><span id="L-4697"><a href="#L-4697"><span class="linenos">4697</span></a> <span class="k">if</span> <span class="n">any_token</span><span class="p">:</span> -</span><span id="L-4698"><a href="#L-4698"><span class="linenos">4698</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">:</span> -</span><span id="L-4699"><a href="#L-4699"><span class="linenos">4699</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4700"><a href="#L-4700"><span class="linenos">4700</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> -</span><span id="L-4701"><a href="#L-4701"><span class="linenos">4701</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4621"><a href="#L-4621"><span class="linenos">4621</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> +</span><span id="L-4622"><a href="#L-4622"><span class="linenos">4622</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-4623"><a href="#L-4623"><span class="linenos">4623</span></a> +</span><span id="L-4624"><a href="#L-4624"><span class="linenos">4624</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-4625"><a href="#L-4625"><span class="linenos">4625</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-4626"><a href="#L-4626"><span class="linenos">4626</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="L-4627"><a href="#L-4627"><span class="linenos">4627</span></a> +</span><span id="L-4628"><a href="#L-4628"><span class="linenos">4628</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="L-4629"><a href="#L-4629"><span class="linenos">4629</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> +</span><span id="L-4630"><a href="#L-4630"><span class="linenos">4630</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4631"><a href="#L-4631"><span class="linenos">4631</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> +</span><span id="L-4632"><a href="#L-4632"><span class="linenos">4632</span></a> +</span><span id="L-4633"><a href="#L-4633"><span class="linenos">4633</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-4634"><a href="#L-4634"><span class="linenos">4634</span></a> +</span><span id="L-4635"><a href="#L-4635"><span class="linenos">4635</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-4636"><a href="#L-4636"><span class="linenos">4636</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> +</span><span id="L-4637"><a href="#L-4637"><span class="linenos">4637</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span> +</span><span id="L-4638"><a href="#L-4638"><span class="linenos">4638</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4639"><a href="#L-4639"><span class="linenos">4639</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">):</span> +</span><span id="L-4640"><a href="#L-4640"><span class="linenos">4640</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span> +</span><span id="L-4641"><a href="#L-4641"><span class="linenos">4641</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span> +</span><span id="L-4642"><a href="#L-4642"><span class="linenos">4642</span></a> <span class="p">)</span> +</span><span id="L-4643"><a href="#L-4643"><span class="linenos">4643</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">:</span> +</span><span id="L-4644"><a href="#L-4644"><span class="linenos">4644</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4645"><a href="#L-4645"><span class="linenos">4645</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4646"><a href="#L-4646"><span class="linenos">4646</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4647"><a href="#L-4647"><span class="linenos">4647</span></a> +</span><span id="L-4648"><a href="#L-4648"><span class="linenos">4648</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-4649"><a href="#L-4649"><span class="linenos">4649</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> +</span><span id="L-4650"><a href="#L-4650"><span class="linenos">4650</span></a> +</span><span id="L-4651"><a href="#L-4651"><span class="linenos">4651</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4652"><a href="#L-4652"><span class="linenos">4652</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4653"><a href="#L-4653"><span class="linenos">4653</span></a> +</span><span id="L-4654"><a href="#L-4654"><span class="linenos">4654</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4655"><a href="#L-4655"><span class="linenos">4655</span></a> +</span><span id="L-4656"><a href="#L-4656"><span class="linenos">4656</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span> +</span><span id="L-4657"><a href="#L-4657"><span class="linenos">4657</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-4658"><a href="#L-4658"><span class="linenos">4658</span></a> <span class="n">any_token</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-4659"><a href="#L-4659"><span class="linenos">4659</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4660"><a href="#L-4660"><span class="linenos">4660</span></a> <span class="n">anonymous_func</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-4661"><a href="#L-4661"><span class="linenos">4661</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4662"><a href="#L-4662"><span class="linenos">4662</span></a> <span class="k">if</span> <span class="n">anonymous_func</span><span class="p">:</span> +</span><span id="L-4663"><a href="#L-4663"><span class="linenos">4663</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-4664"><a href="#L-4664"><span class="linenos">4664</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">)</span> +</span><span id="L-4665"><a href="#L-4665"><span class="linenos">4665</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4666"><a href="#L-4666"><span class="linenos">4666</span></a> <span class="p">)</span> +</span><span id="L-4667"><a href="#L-4667"><span class="linenos">4667</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4668"><a href="#L-4668"><span class="linenos">4668</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span> +</span><span id="L-4669"><a href="#L-4669"><span class="linenos">4669</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span> +</span><span id="L-4670"><a href="#L-4670"><span class="linenos">4670</span></a> <span class="p">)</span> +</span><span id="L-4671"><a href="#L-4671"><span class="linenos">4671</span></a> <span class="k">return</span> <span class="n">field</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">tokens</span><span class="p">)</span> +</span><span id="L-4672"><a href="#L-4672"><span class="linenos">4672</span></a> +</span><span id="L-4673"><a href="#L-4673"><span class="linenos">4673</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> +</span><span id="L-4674"><a href="#L-4674"><span class="linenos">4674</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-4675"><a href="#L-4675"><span class="linenos">4675</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4676"><a href="#L-4676"><span class="linenos">4676</span></a> <span class="n">anonymous</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-4677"><a href="#L-4677"><span class="linenos">4677</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4678"><a href="#L-4678"><span class="linenos">4678</span></a> <span class="n">any_token</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-4679"><a href="#L-4679"><span class="linenos">4679</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4680"><a href="#L-4680"><span class="linenos">4680</span></a> <span class="c1"># This allows us to also parse {fn <function>} syntax (Snowflake, MySQL support this)</span> +</span><span id="L-4681"><a href="#L-4681"><span class="linenos">4681</span></a> <span class="c1"># See: https://community.snowflake.com/s/article/SQL-Escape-Sequences</span> +</span><span id="L-4682"><a href="#L-4682"><span class="linenos">4682</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-4683"><a href="#L-4683"><span class="linenos">4683</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-4684"><a href="#L-4684"><span class="linenos">4684</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4685"><a href="#L-4685"><span class="linenos">4685</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> +</span><span id="L-4686"><a href="#L-4686"><span class="linenos">4686</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FN"</span> +</span><span id="L-4687"><a href="#L-4687"><span class="linenos">4687</span></a> <span class="p">):</span> +</span><span id="L-4688"><a href="#L-4688"><span class="linenos">4688</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-4689"><a href="#L-4689"><span class="linenos">4689</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-4690"><a href="#L-4690"><span class="linenos">4690</span></a> +</span><span id="L-4691"><a href="#L-4691"><span class="linenos">4691</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_call</span><span class="p">(</span> +</span><span id="L-4692"><a href="#L-4692"><span class="linenos">4692</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span> +</span><span id="L-4693"><a href="#L-4693"><span class="linenos">4693</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span> +</span><span id="L-4694"><a href="#L-4694"><span class="linenos">4694</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span> +</span><span id="L-4695"><a href="#L-4695"><span class="linenos">4695</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> +</span><span id="L-4696"><a href="#L-4696"><span class="linenos">4696</span></a> <span class="p">)</span> +</span><span id="L-4697"><a href="#L-4697"><span class="linenos">4697</span></a> +</span><span id="L-4698"><a href="#L-4698"><span class="linenos">4698</span></a> <span class="k">if</span> <span class="n">fn_syntax</span><span class="p">:</span> +</span><span id="L-4699"><a href="#L-4699"><span class="linenos">4699</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> +</span><span id="L-4700"><a href="#L-4700"><span class="linenos">4700</span></a> +</span><span id="L-4701"><a href="#L-4701"><span class="linenos">4701</span></a> <span class="k">return</span> <span class="n">func</span> </span><span id="L-4702"><a href="#L-4702"><span class="linenos">4702</span></a> -</span><span id="L-4703"><a href="#L-4703"><span class="linenos">4703</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-4704"><a href="#L-4704"><span class="linenos">4704</span></a> -</span><span id="L-4705"><a href="#L-4705"><span class="linenos">4705</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="L-4706"><a href="#L-4706"><span class="linenos">4706</span></a> <span class="k">if</span> <span class="n">parser</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> -</span><span id="L-4707"><a href="#L-4707"><span class="linenos">4707</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-4708"><a href="#L-4708"><span class="linenos">4708</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4709"><a href="#L-4709"><span class="linenos">4709</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="L-4710"><a href="#L-4710"><span class="linenos">4710</span></a> -</span><span id="L-4711"><a href="#L-4711"><span class="linenos">4711</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-4712"><a href="#L-4712"><span class="linenos">4712</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> -</span><span id="L-4713"><a href="#L-4713"><span class="linenos">4713</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-4714"><a href="#L-4714"><span class="linenos">4714</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4715"><a href="#L-4715"><span class="linenos">4715</span></a> -</span><span id="L-4716"><a href="#L-4716"><span class="linenos">4716</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-4717"><a href="#L-4717"><span class="linenos">4717</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> -</span><span id="L-4718"><a href="#L-4718"><span class="linenos">4718</span></a> -</span><span id="L-4719"><a href="#L-4719"><span class="linenos">4719</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="L-4720"><a href="#L-4720"><span class="linenos">4720</span></a> -</span><span id="L-4721"><a href="#L-4721"><span class="linenos">4721</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">upper</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> -</span><span id="L-4722"><a href="#L-4722"><span class="linenos">4722</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> -</span><span id="L-4723"><a href="#L-4723"><span class="linenos">4723</span></a> -</span><span id="L-4724"><a href="#L-4724"><span class="linenos">4724</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-4725"><a href="#L-4725"><span class="linenos">4725</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-4726"><a href="#L-4726"><span class="linenos">4726</span></a> -</span><span id="L-4727"><a href="#L-4727"><span class="linenos">4727</span></a> <span class="k">if</span> <span class="n">function</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> -</span><span id="L-4728"><a href="#L-4728"><span class="linenos">4728</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> -</span><span id="L-4729"><a href="#L-4729"><span class="linenos">4729</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="L-4730"><a href="#L-4730"><span class="linenos">4730</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4731"><a href="#L-4731"><span class="linenos">4731</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-4732"><a href="#L-4732"><span class="linenos">4732</span></a> -</span><span id="L-4733"><a href="#L-4733"><span class="linenos">4733</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-4734"><a href="#L-4734"><span class="linenos">4734</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> -</span><span id="L-4735"><a href="#L-4735"><span class="linenos">4735</span></a> <span class="n">func</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="o">=</span> <span class="n">this</span> -</span><span id="L-4736"><a href="#L-4736"><span class="linenos">4736</span></a> -</span><span id="L-4737"><a href="#L-4737"><span class="linenos">4737</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">func</span> -</span><span id="L-4738"><a href="#L-4738"><span class="linenos">4738</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4739"><a href="#L-4739"><span class="linenos">4739</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">:</span> -</span><span id="L-4740"><a href="#L-4740"><span class="linenos">4740</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4741"><a href="#L-4741"><span class="linenos">4741</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-4742"><a href="#L-4742"><span class="linenos">4742</span></a> -</span><span id="L-4743"><a href="#L-4743"><span class="linenos">4743</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4744"><a href="#L-4744"><span class="linenos">4744</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> -</span><span id="L-4745"><a href="#L-4745"><span class="linenos">4745</span></a> -</span><span id="L-4746"><a href="#L-4746"><span class="linenos">4746</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4747"><a href="#L-4747"><span class="linenos">4747</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4703"><a href="#L-4703"><span class="linenos">4703</span></a> <span class="k">def</span> <span class="nf">_parse_function_call</span><span class="p">(</span> +</span><span id="L-4704"><a href="#L-4704"><span class="linenos">4704</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-4705"><a href="#L-4705"><span class="linenos">4705</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4706"><a href="#L-4706"><span class="linenos">4706</span></a> <span class="n">anonymous</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-4707"><a href="#L-4707"><span class="linenos">4707</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-4708"><a href="#L-4708"><span class="linenos">4708</span></a> <span class="n">any_token</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-4709"><a href="#L-4709"><span class="linenos">4709</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4710"><a href="#L-4710"><span class="linenos">4710</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-4711"><a href="#L-4711"><span class="linenos">4711</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4712"><a href="#L-4712"><span class="linenos">4712</span></a> +</span><span id="L-4713"><a href="#L-4713"><span class="linenos">4713</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">comments</span> +</span><span id="L-4714"><a href="#L-4714"><span class="linenos">4714</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-4715"><a href="#L-4715"><span class="linenos">4715</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-4716"><a href="#L-4716"><span class="linenos">4716</span></a> <span class="n">upper</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-4717"><a href="#L-4717"><span class="linenos">4717</span></a> +</span><span id="L-4718"><a href="#L-4718"><span class="linenos">4718</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="L-4719"><a href="#L-4719"><span class="linenos">4719</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">parser</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">INVALID_FUNC_NAME_TOKENS</span><span class="p">:</span> +</span><span id="L-4720"><a href="#L-4720"><span class="linenos">4720</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-4721"><a href="#L-4721"><span class="linenos">4721</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="L-4722"><a href="#L-4722"><span class="linenos">4722</span></a> +</span><span id="L-4723"><a href="#L-4723"><span class="linenos">4723</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="L-4724"><a href="#L-4724"><span class="linenos">4724</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> +</span><span id="L-4725"><a href="#L-4725"><span class="linenos">4725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-4726"><a href="#L-4726"><span class="linenos">4726</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> +</span><span id="L-4727"><a href="#L-4727"><span class="linenos">4727</span></a> +</span><span id="L-4728"><a href="#L-4728"><span class="linenos">4728</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4729"><a href="#L-4729"><span class="linenos">4729</span></a> +</span><span id="L-4730"><a href="#L-4730"><span class="linenos">4730</span></a> <span class="k">if</span> <span class="n">any_token</span><span class="p">:</span> +</span><span id="L-4731"><a href="#L-4731"><span class="linenos">4731</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">:</span> +</span><span id="L-4732"><a href="#L-4732"><span class="linenos">4732</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4733"><a href="#L-4733"><span class="linenos">4733</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> +</span><span id="L-4734"><a href="#L-4734"><span class="linenos">4734</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4735"><a href="#L-4735"><span class="linenos">4735</span></a> +</span><span id="L-4736"><a href="#L-4736"><span class="linenos">4736</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-4737"><a href="#L-4737"><span class="linenos">4737</span></a> +</span><span id="L-4738"><a href="#L-4738"><span class="linenos">4738</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="L-4739"><a href="#L-4739"><span class="linenos">4739</span></a> <span class="k">if</span> <span class="n">parser</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> +</span><span id="L-4740"><a href="#L-4740"><span class="linenos">4740</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-4741"><a href="#L-4741"><span class="linenos">4741</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4742"><a href="#L-4742"><span class="linenos">4742</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="L-4743"><a href="#L-4743"><span class="linenos">4743</span></a> +</span><span id="L-4744"><a href="#L-4744"><span class="linenos">4744</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-4745"><a href="#L-4745"><span class="linenos">4745</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="L-4746"><a href="#L-4746"><span class="linenos">4746</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-4747"><a href="#L-4747"><span class="linenos">4747</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-4748"><a href="#L-4748"><span class="linenos">4748</span></a> -</span><span id="L-4749"><a href="#L-4749"><span class="linenos">4749</span></a> <span class="k">def</span> <span class="nf">_kv_to_prop_eq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4750"><a href="#L-4750"><span class="linenos">4750</span></a> <span class="n">transformed</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4749"><a href="#L-4749"><span class="linenos">4749</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-4750"><a href="#L-4750"><span class="linenos">4750</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> </span><span id="L-4751"><a href="#L-4751"><span class="linenos">4751</span></a> -</span><span id="L-4752"><a href="#L-4752"><span class="linenos">4752</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-4753"><a href="#L-4753"><span class="linenos">4753</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEY_VALUE_DEFINITIONS</span><span class="p">):</span> -</span><span id="L-4754"><a href="#L-4754"><span class="linenos">4754</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> -</span><span id="L-4755"><a href="#L-4755"><span class="linenos">4755</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4752"><a href="#L-4752"><span class="linenos">4752</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="L-4753"><a href="#L-4753"><span class="linenos">4753</span></a> +</span><span id="L-4754"><a href="#L-4754"><span class="linenos">4754</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">upper</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> +</span><span id="L-4755"><a href="#L-4755"><span class="linenos">4755</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> </span><span id="L-4756"><a href="#L-4756"><span class="linenos">4756</span></a> -</span><span id="L-4757"><a href="#L-4757"><span class="linenos">4757</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span> -</span><span id="L-4758"><a href="#L-4758"><span class="linenos">4758</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4759"><a href="#L-4759"><span class="linenos">4759</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-4760"><a href="#L-4760"><span class="linenos">4760</span></a> <span class="p">)</span> -</span><span id="L-4761"><a href="#L-4761"><span class="linenos">4761</span></a> -</span><span id="L-4762"><a href="#L-4762"><span class="linenos">4762</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-4763"><a href="#L-4763"><span class="linenos">4763</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-4764"><a href="#L-4764"><span class="linenos">4764</span></a> -</span><span id="L-4765"><a href="#L-4765"><span class="linenos">4765</span></a> <span class="n">transformed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> -</span><span id="L-4766"><a href="#L-4766"><span class="linenos">4766</span></a> -</span><span id="L-4767"><a href="#L-4767"><span class="linenos">4767</span></a> <span class="k">return</span> <span class="n">transformed</span> -</span><span id="L-4768"><a href="#L-4768"><span class="linenos">4768</span></a> -</span><span id="L-4769"><a href="#L-4769"><span class="linenos">4769</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4770"><a href="#L-4770"><span class="linenos">4770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="L-4771"><a href="#L-4771"><span class="linenos">4771</span></a> -</span><span id="L-4772"><a href="#L-4772"><span class="linenos">4772</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> -</span><span id="L-4773"><a href="#L-4773"><span class="linenos">4773</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</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">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4774"><a href="#L-4774"><span class="linenos">4774</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4775"><a href="#L-4775"><span class="linenos">4775</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-4776"><a href="#L-4776"><span class="linenos">4776</span></a> -</span><span id="L-4777"><a href="#L-4777"><span class="linenos">4777</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-4778"><a href="#L-4778"><span class="linenos">4778</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="L-4779"><a href="#L-4779"><span class="linenos">4779</span></a> -</span><span id="L-4780"><a href="#L-4780"><span class="linenos">4780</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-4781"><a href="#L-4781"><span class="linenos">4781</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4782"><a href="#L-4782"><span class="linenos">4782</span></a> -</span><span id="L-4783"><a href="#L-4783"><span class="linenos">4783</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="L-4784"><a href="#L-4784"><span class="linenos">4784</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-4785"><a href="#L-4785"><span class="linenos">4785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4786"><a href="#L-4786"><span class="linenos">4786</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> -</span><span id="L-4787"><a href="#L-4787"><span class="linenos">4787</span></a> <span class="p">)</span> -</span><span id="L-4788"><a href="#L-4788"><span class="linenos">4788</span></a> -</span><span id="L-4789"><a href="#L-4789"><span class="linenos">4789</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Introducer</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-4790"><a href="#L-4790"><span class="linenos">4790</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-4791"><a href="#L-4791"><span class="linenos">4791</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> -</span><span id="L-4792"><a href="#L-4792"><span class="linenos">4792</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> -</span><span id="L-4793"><a href="#L-4793"><span class="linenos">4793</span></a> -</span><span id="L-4794"><a href="#L-4794"><span class="linenos">4794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-4795"><a href="#L-4795"><span class="linenos">4795</span></a> -</span><span id="L-4796"><a href="#L-4796"><span class="linenos">4796</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">:</span> -</span><span id="L-4797"><a href="#L-4797"><span class="linenos">4797</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4798"><a href="#L-4798"><span class="linenos">4798</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4757"><a href="#L-4757"><span class="linenos">4757</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-4758"><a href="#L-4758"><span class="linenos">4758</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-4759"><a href="#L-4759"><span class="linenos">4759</span></a> +</span><span id="L-4760"><a href="#L-4760"><span class="linenos">4760</span></a> <span class="k">if</span> <span class="n">function</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> +</span><span id="L-4761"><a href="#L-4761"><span class="linenos">4761</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> +</span><span id="L-4762"><a href="#L-4762"><span class="linenos">4762</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-4763"><a href="#L-4763"><span class="linenos">4763</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4764"><a href="#L-4764"><span class="linenos">4764</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-4765"><a href="#L-4765"><span class="linenos">4765</span></a> +</span><span id="L-4766"><a href="#L-4766"><span class="linenos">4766</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-4767"><a href="#L-4767"><span class="linenos">4767</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> +</span><span id="L-4768"><a href="#L-4768"><span class="linenos">4768</span></a> <span class="n">func</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="o">=</span> <span class="n">this</span> +</span><span id="L-4769"><a href="#L-4769"><span class="linenos">4769</span></a> +</span><span id="L-4770"><a href="#L-4770"><span class="linenos">4770</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">func</span> +</span><span id="L-4771"><a href="#L-4771"><span class="linenos">4771</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4772"><a href="#L-4772"><span class="linenos">4772</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">:</span> +</span><span id="L-4773"><a href="#L-4773"><span class="linenos">4773</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4774"><a href="#L-4774"><span class="linenos">4774</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-4775"><a href="#L-4775"><span class="linenos">4775</span></a> +</span><span id="L-4776"><a href="#L-4776"><span class="linenos">4776</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4777"><a href="#L-4777"><span class="linenos">4777</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> +</span><span id="L-4778"><a href="#L-4778"><span class="linenos">4778</span></a> +</span><span id="L-4779"><a href="#L-4779"><span class="linenos">4779</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4780"><a href="#L-4780"><span class="linenos">4780</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4781"><a href="#L-4781"><span class="linenos">4781</span></a> +</span><span id="L-4782"><a href="#L-4782"><span class="linenos">4782</span></a> <span class="k">def</span> <span class="nf">_kv_to_prop_eq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4783"><a href="#L-4783"><span class="linenos">4783</span></a> <span class="n">transformed</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4784"><a href="#L-4784"><span class="linenos">4784</span></a> +</span><span id="L-4785"><a href="#L-4785"><span class="linenos">4785</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-4786"><a href="#L-4786"><span class="linenos">4786</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEY_VALUE_DEFINITIONS</span><span class="p">):</span> +</span><span id="L-4787"><a href="#L-4787"><span class="linenos">4787</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> +</span><span id="L-4788"><a href="#L-4788"><span class="linenos">4788</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4789"><a href="#L-4789"><span class="linenos">4789</span></a> +</span><span id="L-4790"><a href="#L-4790"><span class="linenos">4790</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span> +</span><span id="L-4791"><a href="#L-4791"><span class="linenos">4791</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4792"><a href="#L-4792"><span class="linenos">4792</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span> +</span><span id="L-4793"><a href="#L-4793"><span class="linenos">4793</span></a> <span class="p">)</span> +</span><span id="L-4794"><a href="#L-4794"><span class="linenos">4794</span></a> +</span><span id="L-4795"><a href="#L-4795"><span class="linenos">4795</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-4796"><a href="#L-4796"><span class="linenos">4796</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-4797"><a href="#L-4797"><span class="linenos">4797</span></a> +</span><span id="L-4798"><a href="#L-4798"><span class="linenos">4798</span></a> <span class="n">transformed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> </span><span id="L-4799"><a href="#L-4799"><span class="linenos">4799</span></a> -</span><span id="L-4800"><a href="#L-4800"><span class="linenos">4800</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-4801"><a href="#L-4801"><span class="linenos">4801</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4802"><a href="#L-4802"><span class="linenos">4802</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-4803"><a href="#L-4803"><span class="linenos">4803</span></a> -</span><span id="L-4804"><a href="#L-4804"><span class="linenos">4804</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="L-4805"><a href="#L-4805"><span class="linenos">4805</span></a> -</span><span id="L-4806"><a href="#L-4806"><span class="linenos">4806</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4807"><a href="#L-4807"><span class="linenos">4807</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-4808"><a href="#L-4808"><span class="linenos">4808</span></a> -</span><span id="L-4809"><a href="#L-4809"><span class="linenos">4809</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4810"><a href="#L-4810"><span class="linenos">4810</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4811"><a href="#L-4811"><span class="linenos">4811</span></a> -</span><span id="L-4812"><a href="#L-4812"><span class="linenos">4812</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-4813"><a href="#L-4813"><span class="linenos">4813</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> -</span><span id="L-4814"><a href="#L-4814"><span class="linenos">4814</span></a> <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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">)</span> -</span><span id="L-4815"><a href="#L-4815"><span class="linenos">4815</span></a> <span class="p">)</span> -</span><span id="L-4816"><a href="#L-4816"><span class="linenos">4816</span></a> -</span><span id="L-4817"><a href="#L-4817"><span class="linenos">4817</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-4818"><a href="#L-4818"><span class="linenos">4818</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4819"><a href="#L-4819"><span class="linenos">4819</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4820"><a href="#L-4820"><span class="linenos">4820</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">()]</span> +</span><span id="L-4800"><a href="#L-4800"><span class="linenos">4800</span></a> <span class="k">return</span> <span class="n">transformed</span> +</span><span id="L-4801"><a href="#L-4801"><span class="linenos">4801</span></a> +</span><span id="L-4802"><a href="#L-4802"><span class="linenos">4802</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4803"><a href="#L-4803"><span class="linenos">4803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="L-4804"><a href="#L-4804"><span class="linenos">4804</span></a> +</span><span id="L-4805"><a href="#L-4805"><span class="linenos">4805</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> +</span><span id="L-4806"><a href="#L-4806"><span class="linenos">4806</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</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">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4807"><a href="#L-4807"><span class="linenos">4807</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4808"><a href="#L-4808"><span class="linenos">4808</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-4809"><a href="#L-4809"><span class="linenos">4809</span></a> +</span><span id="L-4810"><a href="#L-4810"><span class="linenos">4810</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-4811"><a href="#L-4811"><span class="linenos">4811</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="L-4812"><a href="#L-4812"><span class="linenos">4812</span></a> +</span><span id="L-4813"><a href="#L-4813"><span class="linenos">4813</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-4814"><a href="#L-4814"><span class="linenos">4814</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4815"><a href="#L-4815"><span class="linenos">4815</span></a> +</span><span id="L-4816"><a href="#L-4816"><span class="linenos">4816</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="L-4817"><a href="#L-4817"><span class="linenos">4817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-4818"><a href="#L-4818"><span class="linenos">4818</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4819"><a href="#L-4819"><span class="linenos">4819</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> +</span><span id="L-4820"><a href="#L-4820"><span class="linenos">4820</span></a> <span class="p">)</span> </span><span id="L-4821"><a href="#L-4821"><span class="linenos">4821</span></a> -</span><span id="L-4822"><a href="#L-4822"><span class="linenos">4822</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> -</span><span id="L-4823"><a href="#L-4823"><span class="linenos">4823</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="L-4824"><a href="#L-4824"><span class="linenos">4824</span></a> -</span><span id="L-4825"><a href="#L-4825"><span class="linenos">4825</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4822"><a href="#L-4822"><span class="linenos">4822</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Introducer</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-4823"><a href="#L-4823"><span class="linenos">4823</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4824"><a href="#L-4824"><span class="linenos">4824</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> +</span><span id="L-4825"><a href="#L-4825"><span class="linenos">4825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> </span><span id="L-4826"><a href="#L-4826"><span class="linenos">4826</span></a> -</span><span id="L-4827"><a href="#L-4827"><span class="linenos">4827</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-4827"><a href="#L-4827"><span class="linenos">4827</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> </span><span id="L-4828"><a href="#L-4828"><span class="linenos">4828</span></a> -</span><span id="L-4829"><a href="#L-4829"><span class="linenos">4829</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="L-4830"><a href="#L-4830"><span class="linenos">4830</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4831"><a href="#L-4831"><span class="linenos">4831</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="L-4832"><a href="#L-4832"><span class="linenos">4832</span></a> <span class="p">)</span> -</span><span id="L-4833"><a href="#L-4833"><span class="linenos">4833</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4834"><a href="#L-4834"><span class="linenos">4834</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-4835"><a href="#L-4835"><span class="linenos">4835</span></a> -</span><span id="L-4836"><a href="#L-4836"><span class="linenos">4836</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span> -</span><span id="L-4837"><a href="#L-4837"><span class="linenos">4837</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)))</span> -</span><span id="L-4838"><a href="#L-4838"><span class="linenos">4838</span></a> <span class="p">)</span> -</span><span id="L-4839"><a href="#L-4839"><span class="linenos">4839</span></a> -</span><span id="L-4840"><a href="#L-4840"><span class="linenos">4840</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4841"><a href="#L-4841"><span class="linenos">4841</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-4842"><a href="#L-4842"><span class="linenos">4842</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-4843"><a href="#L-4843"><span class="linenos">4843</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4829"><a href="#L-4829"><span class="linenos">4829</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">:</span> +</span><span id="L-4830"><a href="#L-4830"><span class="linenos">4830</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4831"><a href="#L-4831"><span class="linenos">4831</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4832"><a href="#L-4832"><span class="linenos">4832</span></a> +</span><span id="L-4833"><a href="#L-4833"><span class="linenos">4833</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-4834"><a href="#L-4834"><span class="linenos">4834</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4835"><a href="#L-4835"><span class="linenos">4835</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-4836"><a href="#L-4836"><span class="linenos">4836</span></a> +</span><span id="L-4837"><a href="#L-4837"><span class="linenos">4837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="L-4838"><a href="#L-4838"><span class="linenos">4838</span></a> +</span><span id="L-4839"><a href="#L-4839"><span class="linenos">4839</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4840"><a href="#L-4840"><span class="linenos">4840</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-4841"><a href="#L-4841"><span class="linenos">4841</span></a> +</span><span id="L-4842"><a href="#L-4842"><span class="linenos">4842</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4843"><a href="#L-4843"><span class="linenos">4843</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> </span><span id="L-4844"><a href="#L-4844"><span class="linenos">4844</span></a> -</span><span id="L-4845"><a href="#L-4845"><span class="linenos">4845</span></a> <span class="c1"># Disambiguate between schema and subquery/CTE, e.g. in INSERT INTO table (<expr>),</span> -</span><span id="L-4846"><a href="#L-4846"><span class="linenos">4846</span></a> <span class="c1"># expr can be of both types</span> -</span><span id="L-4847"><a href="#L-4847"><span class="linenos">4847</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SELECT_START_TOKENS</span><span class="p">):</span> -</span><span id="L-4848"><a href="#L-4848"><span class="linenos">4848</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-4849"><a href="#L-4849"><span class="linenos">4849</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4850"><a href="#L-4850"><span class="linenos">4850</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">())</span> -</span><span id="L-4851"><a href="#L-4851"><span class="linenos">4851</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-4852"><a href="#L-4852"><span class="linenos">4852</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-4853"><a href="#L-4853"><span class="linenos">4853</span></a> -</span><span id="L-4854"><a href="#L-4854"><span class="linenos">4854</span></a> <span class="k">def</span> <span class="nf">_parse_field_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4855"><a href="#L-4855"><span class="linenos">4855</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-4856"><a href="#L-4856"><span class="linenos">4856</span></a> -</span><span id="L-4857"><a href="#L-4857"><span class="linenos">4857</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4858"><a href="#L-4858"><span class="linenos">4858</span></a> <span class="c1"># column defs are not really columns, they're identifiers</span> -</span><span id="L-4859"><a href="#L-4859"><span class="linenos">4859</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-4860"><a href="#L-4860"><span class="linenos">4860</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4845"><a href="#L-4845"><span class="linenos">4845</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-4846"><a href="#L-4846"><span class="linenos">4846</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> +</span><span id="L-4847"><a href="#L-4847"><span class="linenos">4847</span></a> <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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">)</span> +</span><span id="L-4848"><a href="#L-4848"><span class="linenos">4848</span></a> <span class="p">)</span> +</span><span id="L-4849"><a href="#L-4849"><span class="linenos">4849</span></a> +</span><span id="L-4850"><a href="#L-4850"><span class="linenos">4850</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-4851"><a href="#L-4851"><span class="linenos">4851</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4852"><a href="#L-4852"><span class="linenos">4852</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4853"><a href="#L-4853"><span class="linenos">4853</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">()]</span> +</span><span id="L-4854"><a href="#L-4854"><span class="linenos">4854</span></a> +</span><span id="L-4855"><a href="#L-4855"><span class="linenos">4855</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> +</span><span id="L-4856"><a href="#L-4856"><span class="linenos">4856</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-4857"><a href="#L-4857"><span class="linenos">4857</span></a> +</span><span id="L-4858"><a href="#L-4858"><span class="linenos">4858</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4859"><a href="#L-4859"><span class="linenos">4859</span></a> +</span><span id="L-4860"><a href="#L-4860"><span class="linenos">4860</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> </span><span id="L-4861"><a href="#L-4861"><span class="linenos">4861</span></a> -</span><span id="L-4862"><a href="#L-4862"><span class="linenos">4862</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4863"><a href="#L-4863"><span class="linenos">4863</span></a> -</span><span id="L-4864"><a href="#L-4864"><span class="linenos">4864</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> -</span><span id="L-4865"><a href="#L-4865"><span class="linenos">4865</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4866"><a href="#L-4866"><span class="linenos">4866</span></a> -</span><span id="L-4867"><a href="#L-4867"><span class="linenos">4867</span></a> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4862"><a href="#L-4862"><span class="linenos">4862</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="L-4863"><a href="#L-4863"><span class="linenos">4863</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4864"><a href="#L-4864"><span class="linenos">4864</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="L-4865"><a href="#L-4865"><span class="linenos">4865</span></a> <span class="p">)</span> +</span><span id="L-4866"><a href="#L-4866"><span class="linenos">4866</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4867"><a href="#L-4867"><span class="linenos">4867</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> </span><span id="L-4868"><a href="#L-4868"><span class="linenos">4868</span></a> -</span><span id="L-4869"><a href="#L-4869"><span class="linenos">4869</span></a> <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">))</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> -</span><span id="L-4870"><a href="#L-4870"><span class="linenos">4870</span></a> <span class="p">(</span><span class="s2">"ALIAS"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">)</span> -</span><span id="L-4871"><a href="#L-4871"><span class="linenos">4871</span></a> <span class="p">):</span> -</span><span id="L-4872"><a href="#L-4872"><span class="linenos">4872</span></a> <span class="n">persisted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"MATERIALIZED"</span> -</span><span id="L-4873"><a href="#L-4873"><span class="linenos">4873</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-4874"><a href="#L-4874"><span class="linenos">4874</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4875"><a href="#L-4875"><span class="linenos">4875</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">,</span> -</span><span id="L-4876"><a href="#L-4876"><span class="linenos">4876</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-4877"><a href="#L-4877"><span class="linenos">4877</span></a> <span class="n">persisted</span><span class="o">=</span><span class="n">persisted</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PERSISTED"</span><span class="p">),</span> -</span><span id="L-4878"><a href="#L-4878"><span class="linenos">4878</span></a> <span class="n">not_null</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">),</span> -</span><span id="L-4879"><a href="#L-4879"><span class="linenos">4879</span></a> <span class="p">)</span> -</span><span id="L-4880"><a href="#L-4880"><span class="linenos">4880</span></a> <span class="p">)</span> -</span><span id="L-4881"><a href="#L-4881"><span class="linenos">4881</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4882"><a href="#L-4882"><span class="linenos">4882</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-4883"><a href="#L-4883"><span class="linenos">4883</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-4884"><a href="#L-4884"><span class="linenos">4884</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransformColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-4885"><a href="#L-4885"><span class="linenos">4885</span></a> <span class="p">)</span> +</span><span id="L-4869"><a href="#L-4869"><span class="linenos">4869</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span> +</span><span id="L-4870"><a href="#L-4870"><span class="linenos">4870</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)))</span> +</span><span id="L-4871"><a href="#L-4871"><span class="linenos">4871</span></a> <span class="p">)</span> +</span><span id="L-4872"><a href="#L-4872"><span class="linenos">4872</span></a> +</span><span id="L-4873"><a href="#L-4873"><span class="linenos">4873</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4874"><a href="#L-4874"><span class="linenos">4874</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-4875"><a href="#L-4875"><span class="linenos">4875</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-4876"><a href="#L-4876"><span class="linenos">4876</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4877"><a href="#L-4877"><span class="linenos">4877</span></a> +</span><span id="L-4878"><a href="#L-4878"><span class="linenos">4878</span></a> <span class="c1"># Disambiguate between schema and subquery/CTE, e.g. in INSERT INTO table (<expr>),</span> +</span><span id="L-4879"><a href="#L-4879"><span class="linenos">4879</span></a> <span class="c1"># expr can be of both types</span> +</span><span id="L-4880"><a href="#L-4880"><span class="linenos">4880</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SELECT_START_TOKENS</span><span class="p">):</span> +</span><span id="L-4881"><a href="#L-4881"><span class="linenos">4881</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-4882"><a href="#L-4882"><span class="linenos">4882</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4883"><a href="#L-4883"><span class="linenos">4883</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">())</span> +</span><span id="L-4884"><a href="#L-4884"><span class="linenos">4884</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-4885"><a href="#L-4885"><span class="linenos">4885</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> </span><span id="L-4886"><a href="#L-4886"><span class="linenos">4886</span></a> -</span><span id="L-4887"><a href="#L-4887"><span class="linenos">4887</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-4888"><a href="#L-4888"><span class="linenos">4888</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> -</span><span id="L-4889"><a href="#L-4889"><span class="linenos">4889</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="L-4890"><a href="#L-4890"><span class="linenos">4890</span></a> <span class="k">break</span> -</span><span id="L-4891"><a href="#L-4891"><span class="linenos">4891</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> -</span><span id="L-4892"><a href="#L-4892"><span class="linenos">4892</span></a> -</span><span id="L-4893"><a href="#L-4893"><span class="linenos">4893</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> -</span><span id="L-4894"><a href="#L-4894"><span class="linenos">4894</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4895"><a href="#L-4895"><span class="linenos">4895</span></a> -</span><span id="L-4896"><a href="#L-4896"><span class="linenos">4896</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> -</span><span id="L-4897"><a href="#L-4897"><span class="linenos">4897</span></a> -</span><span id="L-4898"><a href="#L-4898"><span class="linenos">4898</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span> -</span><span id="L-4899"><a href="#L-4899"><span class="linenos">4899</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-4900"><a href="#L-4900"><span class="linenos">4900</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> -</span><span id="L-4901"><a href="#L-4901"><span class="linenos">4901</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4902"><a href="#L-4902"><span class="linenos">4902</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-4903"><a href="#L-4903"><span class="linenos">4903</span></a> -</span><span id="L-4904"><a href="#L-4904"><span class="linenos">4904</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4905"><a href="#L-4905"><span class="linenos">4905</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-4906"><a href="#L-4906"><span class="linenos">4906</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-4907"><a href="#L-4907"><span class="linenos">4907</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-4908"><a href="#L-4908"><span class="linenos">4908</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> -</span><span id="L-4909"><a href="#L-4909"><span class="linenos">4909</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-4910"><a href="#L-4910"><span class="linenos">4910</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> -</span><span id="L-4911"><a href="#L-4911"><span class="linenos">4911</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-4912"><a href="#L-4912"><span class="linenos">4912</span></a> -</span><span id="L-4913"><a href="#L-4913"><span class="linenos">4913</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> -</span><span id="L-4914"><a href="#L-4914"><span class="linenos">4914</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> -</span><span id="L-4915"><a href="#L-4915"><span class="linenos">4915</span></a> -</span><span id="L-4916"><a href="#L-4916"><span class="linenos">4916</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> -</span><span id="L-4917"><a href="#L-4917"><span class="linenos">4917</span></a> -</span><span id="L-4918"><a href="#L-4918"><span class="linenos">4918</span></a> <span class="k">def</span> <span class="nf">_parse_auto_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">]:</span> -</span><span id="L-4919"><a href="#L-4919"><span class="linenos">4919</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REFRESH"</span><span class="p">):</span> -</span><span id="L-4920"><a href="#L-4920"><span class="linenos">4920</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-4921"><a href="#L-4921"><span class="linenos">4921</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4922"><a href="#L-4922"><span class="linenos">4922</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-4923"><a href="#L-4923"><span class="linenos">4923</span></a> -</span><span id="L-4924"><a href="#L-4924"><span class="linenos">4924</span></a> <span class="k">def</span> <span class="nf">_parse_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> -</span><span id="L-4925"><a href="#L-4925"><span class="linenos">4925</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4926"><a href="#L-4926"><span class="linenos">4926</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4927"><a href="#L-4927"><span class="linenos">4927</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-4928"><a href="#L-4928"><span class="linenos">4928</span></a> <span class="p">)</span> -</span><span id="L-4929"><a href="#L-4929"><span class="linenos">4929</span></a> -</span><span id="L-4930"><a href="#L-4930"><span class="linenos">4930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4931"><a href="#L-4931"><span class="linenos">4931</span></a> -</span><span id="L-4932"><a href="#L-4932"><span class="linenos">4932</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span> -</span><span id="L-4933"><a href="#L-4933"><span class="linenos">4933</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-4934"><a href="#L-4934"><span class="linenos">4934</span></a> <span class="p">)</span> <span class="o">-></span> <span class="p">(</span> -</span><span id="L-4935"><a href="#L-4935"><span class="linenos">4935</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> -</span><span id="L-4936"><a href="#L-4936"><span class="linenos">4936</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span> -</span><span id="L-4937"><a href="#L-4937"><span class="linenos">4937</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span> -</span><span id="L-4938"><a href="#L-4938"><span class="linenos">4938</span></a> <span class="p">):</span> -</span><span id="L-4939"><a href="#L-4939"><span class="linenos">4939</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"DEFAULT"</span><span class="p">):</span> -</span><span id="L-4940"><a href="#L-4940"><span class="linenos">4940</span></a> <span class="n">on_null</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">)</span> -</span><span id="L-4941"><a href="#L-4941"><span class="linenos">4941</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-4942"><a href="#L-4942"><span class="linenos">4942</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">on_null</span><span class="o">=</span><span class="n">on_null</span> -</span><span id="L-4943"><a href="#L-4943"><span class="linenos">4943</span></a> <span class="p">)</span> -</span><span id="L-4944"><a href="#L-4944"><span class="linenos">4944</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4945"><a href="#L-4945"><span class="linenos">4945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="L-4946"><a href="#L-4946"><span class="linenos">4946</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4947"><a href="#L-4947"><span class="linenos">4947</span></a> -</span><span id="L-4948"><a href="#L-4948"><span class="linenos">4948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-4949"><a href="#L-4949"><span class="linenos">4949</span></a> -</span><span id="L-4950"><a href="#L-4950"><span class="linenos">4950</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="L-4951"><a href="#L-4951"><span class="linenos">4951</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">)</span> -</span><span id="L-4952"><a href="#L-4952"><span class="linenos">4952</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> -</span><span id="L-4953"><a href="#L-4953"><span class="linenos">4953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> -</span><span id="L-4954"><a href="#L-4954"><span class="linenos">4954</span></a> <span class="n">hidden</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HIDDEN"</span><span class="p">)</span> -</span><span id="L-4955"><a href="#L-4955"><span class="linenos">4955</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">hidden</span><span class="o">=</span><span class="n">hidden</span><span class="p">)</span> +</span><span id="L-4887"><a href="#L-4887"><span class="linenos">4887</span></a> <span class="k">def</span> <span class="nf">_parse_field_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4888"><a href="#L-4888"><span class="linenos">4888</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-4889"><a href="#L-4889"><span class="linenos">4889</span></a> +</span><span id="L-4890"><a href="#L-4890"><span class="linenos">4890</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-4891"><a href="#L-4891"><span class="linenos">4891</span></a> <span class="c1"># column defs are not really columns, they're identifiers</span> +</span><span id="L-4892"><a href="#L-4892"><span class="linenos">4892</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-4893"><a href="#L-4893"><span class="linenos">4893</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4894"><a href="#L-4894"><span class="linenos">4894</span></a> +</span><span id="L-4895"><a href="#L-4895"><span class="linenos">4895</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4896"><a href="#L-4896"><span class="linenos">4896</span></a> +</span><span id="L-4897"><a href="#L-4897"><span class="linenos">4897</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> +</span><span id="L-4898"><a href="#L-4898"><span class="linenos">4898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4899"><a href="#L-4899"><span class="linenos">4899</span></a> +</span><span id="L-4900"><a href="#L-4900"><span class="linenos">4900</span></a> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4901"><a href="#L-4901"><span class="linenos">4901</span></a> +</span><span id="L-4902"><a href="#L-4902"><span class="linenos">4902</span></a> <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">))</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> +</span><span id="L-4903"><a href="#L-4903"><span class="linenos">4903</span></a> <span class="p">(</span><span class="s2">"ALIAS"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">)</span> +</span><span id="L-4904"><a href="#L-4904"><span class="linenos">4904</span></a> <span class="p">):</span> +</span><span id="L-4905"><a href="#L-4905"><span class="linenos">4905</span></a> <span class="n">persisted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"MATERIALIZED"</span> +</span><span id="L-4906"><a href="#L-4906"><span class="linenos">4906</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-4907"><a href="#L-4907"><span class="linenos">4907</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4908"><a href="#L-4908"><span class="linenos">4908</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">,</span> +</span><span id="L-4909"><a href="#L-4909"><span class="linenos">4909</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-4910"><a href="#L-4910"><span class="linenos">4910</span></a> <span class="n">persisted</span><span class="o">=</span><span class="n">persisted</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PERSISTED"</span><span class="p">),</span> +</span><span id="L-4911"><a href="#L-4911"><span class="linenos">4911</span></a> <span class="n">not_null</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">),</span> +</span><span id="L-4912"><a href="#L-4912"><span class="linenos">4912</span></a> <span class="p">)</span> +</span><span id="L-4913"><a href="#L-4913"><span class="linenos">4913</span></a> <span class="p">)</span> +</span><span id="L-4914"><a href="#L-4914"><span class="linenos">4914</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-4915"><a href="#L-4915"><span class="linenos">4915</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-4916"><a href="#L-4916"><span class="linenos">4916</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-4917"><a href="#L-4917"><span class="linenos">4917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransformColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-4918"><a href="#L-4918"><span class="linenos">4918</span></a> <span class="p">)</span> +</span><span id="L-4919"><a href="#L-4919"><span class="linenos">4919</span></a> +</span><span id="L-4920"><a href="#L-4920"><span class="linenos">4920</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-4921"><a href="#L-4921"><span class="linenos">4921</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> +</span><span id="L-4922"><a href="#L-4922"><span class="linenos">4922</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="L-4923"><a href="#L-4923"><span class="linenos">4923</span></a> <span class="k">break</span> +</span><span id="L-4924"><a href="#L-4924"><span class="linenos">4924</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="L-4925"><a href="#L-4925"><span class="linenos">4925</span></a> +</span><span id="L-4926"><a href="#L-4926"><span class="linenos">4926</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> +</span><span id="L-4927"><a href="#L-4927"><span class="linenos">4927</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-4928"><a href="#L-4928"><span class="linenos">4928</span></a> +</span><span id="L-4929"><a href="#L-4929"><span class="linenos">4929</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> +</span><span id="L-4930"><a href="#L-4930"><span class="linenos">4930</span></a> +</span><span id="L-4931"><a href="#L-4931"><span class="linenos">4931</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span> +</span><span id="L-4932"><a href="#L-4932"><span class="linenos">4932</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-4933"><a href="#L-4933"><span class="linenos">4933</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> +</span><span id="L-4934"><a href="#L-4934"><span class="linenos">4934</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4935"><a href="#L-4935"><span class="linenos">4935</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-4936"><a href="#L-4936"><span class="linenos">4936</span></a> +</span><span id="L-4937"><a href="#L-4937"><span class="linenos">4937</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-4938"><a href="#L-4938"><span class="linenos">4938</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-4939"><a href="#L-4939"><span class="linenos">4939</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-4940"><a href="#L-4940"><span class="linenos">4940</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-4941"><a href="#L-4941"><span class="linenos">4941</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> +</span><span id="L-4942"><a href="#L-4942"><span class="linenos">4942</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-4943"><a href="#L-4943"><span class="linenos">4943</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> +</span><span id="L-4944"><a href="#L-4944"><span class="linenos">4944</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-4945"><a href="#L-4945"><span class="linenos">4945</span></a> +</span><span id="L-4946"><a href="#L-4946"><span class="linenos">4946</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> +</span><span id="L-4947"><a href="#L-4947"><span class="linenos">4947</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> +</span><span id="L-4948"><a href="#L-4948"><span class="linenos">4948</span></a> +</span><span id="L-4949"><a href="#L-4949"><span class="linenos">4949</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> +</span><span id="L-4950"><a href="#L-4950"><span class="linenos">4950</span></a> +</span><span id="L-4951"><a href="#L-4951"><span class="linenos">4951</span></a> <span class="k">def</span> <span class="nf">_parse_auto_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">]:</span> +</span><span id="L-4952"><a href="#L-4952"><span class="linenos">4952</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REFRESH"</span><span class="p">):</span> +</span><span id="L-4953"><a href="#L-4953"><span class="linenos">4953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-4954"><a href="#L-4954"><span class="linenos">4954</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4955"><a href="#L-4955"><span class="linenos">4955</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> </span><span id="L-4956"><a href="#L-4956"><span class="linenos">4956</span></a> -</span><span id="L-4957"><a href="#L-4957"><span class="linenos">4957</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IDENTITY"</span><span class="p">)</span> -</span><span id="L-4958"><a href="#L-4958"><span class="linenos">4958</span></a> -</span><span id="L-4959"><a href="#L-4959"><span class="linenos">4959</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-4960"><a href="#L-4960"><span class="linenos">4960</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> -</span><span id="L-4961"><a href="#L-4961"><span class="linenos">4961</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4962"><a href="#L-4962"><span class="linenos">4962</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-4963"><a href="#L-4963"><span class="linenos">4963</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4964"><a href="#L-4964"><span class="linenos">4964</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="L-4965"><a href="#L-4965"><span class="linenos">4965</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4966"><a href="#L-4966"><span class="linenos">4966</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="L-4967"><a href="#L-4967"><span class="linenos">4967</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4968"><a href="#L-4968"><span class="linenos">4968</span></a> -</span><span id="L-4969"><a href="#L-4969"><span class="linenos">4969</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="L-4970"><a href="#L-4970"><span class="linenos">4970</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="L-4971"><a href="#L-4971"><span class="linenos">4971</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="L-4972"><a href="#L-4972"><span class="linenos">4972</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-4973"><a href="#L-4973"><span class="linenos">4973</span></a> -</span><span id="L-4974"><a href="#L-4974"><span class="linenos">4974</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identity</span><span class="p">:</span> -</span><span id="L-4975"><a href="#L-4975"><span class="linenos">4975</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">())</span> -</span><span id="L-4976"><a href="#L-4976"><span class="linenos">4976</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"start"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-4977"><a href="#L-4977"><span class="linenos">4977</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-4978"><a href="#L-4978"><span class="linenos">4978</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> -</span><span id="L-4979"><a href="#L-4979"><span class="linenos">4979</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-4957"><a href="#L-4957"><span class="linenos">4957</span></a> <span class="k">def</span> <span class="nf">_parse_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> +</span><span id="L-4958"><a href="#L-4958"><span class="linenos">4958</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-4959"><a href="#L-4959"><span class="linenos">4959</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4960"><a href="#L-4960"><span class="linenos">4960</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-4961"><a href="#L-4961"><span class="linenos">4961</span></a> <span class="p">)</span> +</span><span id="L-4962"><a href="#L-4962"><span class="linenos">4962</span></a> +</span><span id="L-4963"><a href="#L-4963"><span class="linenos">4963</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-4964"><a href="#L-4964"><span class="linenos">4964</span></a> +</span><span id="L-4965"><a href="#L-4965"><span class="linenos">4965</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span> +</span><span id="L-4966"><a href="#L-4966"><span class="linenos">4966</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-4967"><a href="#L-4967"><span class="linenos">4967</span></a> <span class="p">)</span> <span class="o">-></span> <span class="p">(</span> +</span><span id="L-4968"><a href="#L-4968"><span class="linenos">4968</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> +</span><span id="L-4969"><a href="#L-4969"><span class="linenos">4969</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span> +</span><span id="L-4970"><a href="#L-4970"><span class="linenos">4970</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span> +</span><span id="L-4971"><a href="#L-4971"><span class="linenos">4971</span></a> <span class="p">):</span> +</span><span id="L-4972"><a href="#L-4972"><span class="linenos">4972</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"DEFAULT"</span><span class="p">):</span> +</span><span id="L-4973"><a href="#L-4973"><span class="linenos">4973</span></a> <span class="n">on_null</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">)</span> +</span><span id="L-4974"><a href="#L-4974"><span class="linenos">4974</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-4975"><a href="#L-4975"><span class="linenos">4975</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">on_null</span><span class="o">=</span><span class="n">on_null</span> +</span><span id="L-4976"><a href="#L-4976"><span class="linenos">4976</span></a> <span class="p">)</span> +</span><span id="L-4977"><a href="#L-4977"><span class="linenos">4977</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4978"><a href="#L-4978"><span class="linenos">4978</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="L-4979"><a href="#L-4979"><span class="linenos">4979</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-4980"><a href="#L-4980"><span class="linenos">4980</span></a> -</span><span id="L-4981"><a href="#L-4981"><span class="linenos">4981</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-4981"><a href="#L-4981"><span class="linenos">4981</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> </span><span id="L-4982"><a href="#L-4982"><span class="linenos">4982</span></a> -</span><span id="L-4983"><a href="#L-4983"><span class="linenos">4983</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-4984"><a href="#L-4984"><span class="linenos">4984</span></a> -</span><span id="L-4985"><a href="#L-4985"><span class="linenos">4985</span></a> <span class="k">def</span> <span class="nf">_parse_inline</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">:</span> -</span><span id="L-4986"><a href="#L-4986"><span class="linenos">4986</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LENGTH"</span><span class="p">)</span> -</span><span id="L-4987"><a href="#L-4987"><span class="linenos">4987</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-4988"><a href="#L-4988"><span class="linenos">4988</span></a> -</span><span id="L-4989"><a href="#L-4989"><span class="linenos">4989</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4990"><a href="#L-4990"><span class="linenos">4990</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="L-4991"><a href="#L-4991"><span class="linenos">4991</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> -</span><span id="L-4992"><a href="#L-4992"><span class="linenos">4992</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> -</span><span id="L-4993"><a href="#L-4993"><span class="linenos">4993</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4994"><a href="#L-4994"><span class="linenos">4994</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"REPLICATION"</span><span class="p">):</span> -</span><span id="L-4995"><a href="#L-4995"><span class="linenos">4995</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotForReplicationColumnConstraint</span><span class="p">)</span> -</span><span id="L-4996"><a href="#L-4996"><span class="linenos">4996</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4997"><a href="#L-4997"><span class="linenos">4997</span></a> -</span><span id="L-4998"><a href="#L-4998"><span class="linenos">4998</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-4999"><a href="#L-4999"><span class="linenos">4999</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="L-5000"><a href="#L-5000"><span class="linenos">5000</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-5001"><a href="#L-5001"><span class="linenos">5001</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5002"><a href="#L-5002"><span class="linenos">5002</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5003"><a href="#L-5003"><span class="linenos">5003</span></a> -</span><span id="L-5004"><a href="#L-5004"><span class="linenos">5004</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> -</span><span id="L-5005"><a href="#L-5005"><span class="linenos">5005</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5006"><a href="#L-5006"><span class="linenos">5006</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> -</span><span id="L-5007"><a href="#L-5007"><span class="linenos">5007</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5008"><a href="#L-5008"><span class="linenos">5008</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> -</span><span id="L-5009"><a href="#L-5009"><span class="linenos">5009</span></a> <span class="p">)</span> -</span><span id="L-5010"><a href="#L-5010"><span class="linenos">5010</span></a> -</span><span id="L-5011"><a href="#L-5011"><span class="linenos">5011</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5012"><a href="#L-5012"><span class="linenos">5012</span></a> -</span><span id="L-5013"><a href="#L-5013"><span class="linenos">5013</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5014"><a href="#L-5014"><span class="linenos">5014</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="L-5015"><a href="#L-5015"><span class="linenos">5015</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> -</span><span id="L-5016"><a href="#L-5016"><span class="linenos">5016</span></a> -</span><span id="L-5017"><a href="#L-5017"><span class="linenos">5017</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5018"><a href="#L-5018"><span class="linenos">5018</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Constraint</span><span class="p">,</span> -</span><span id="L-5019"><a href="#L-5019"><span class="linenos">5019</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="L-5020"><a href="#L-5020"><span class="linenos">5020</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraints</span><span class="p">(),</span> -</span><span id="L-5021"><a href="#L-5021"><span class="linenos">5021</span></a> <span class="p">)</span> -</span><span id="L-5022"><a href="#L-5022"><span class="linenos">5022</span></a> -</span><span id="L-5023"><a href="#L-5023"><span class="linenos">5023</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5024"><a href="#L-5024"><span class="linenos">5024</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-5025"><a href="#L-5025"><span class="linenos">5025</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-5026"><a href="#L-5026"><span class="linenos">5026</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="L-5027"><a href="#L-5027"><span class="linenos">5027</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="L-5028"><a href="#L-5028"><span class="linenos">5028</span></a> <span class="k">break</span> -</span><span id="L-5029"><a href="#L-5029"><span class="linenos">5029</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="L-4983"><a href="#L-4983"><span class="linenos">4983</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="L-4984"><a href="#L-4984"><span class="linenos">4984</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">)</span> +</span><span id="L-4985"><a href="#L-4985"><span class="linenos">4985</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> +</span><span id="L-4986"><a href="#L-4986"><span class="linenos">4986</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> +</span><span id="L-4987"><a href="#L-4987"><span class="linenos">4987</span></a> <span class="n">hidden</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HIDDEN"</span><span class="p">)</span> +</span><span id="L-4988"><a href="#L-4988"><span class="linenos">4988</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">hidden</span><span class="o">=</span><span class="n">hidden</span><span class="p">)</span> +</span><span id="L-4989"><a href="#L-4989"><span class="linenos">4989</span></a> +</span><span id="L-4990"><a href="#L-4990"><span class="linenos">4990</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IDENTITY"</span><span class="p">)</span> +</span><span id="L-4991"><a href="#L-4991"><span class="linenos">4991</span></a> +</span><span id="L-4992"><a href="#L-4992"><span class="linenos">4992</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-4993"><a href="#L-4993"><span class="linenos">4993</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> +</span><span id="L-4994"><a href="#L-4994"><span class="linenos">4994</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-4995"><a href="#L-4995"><span class="linenos">4995</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-4996"><a href="#L-4996"><span class="linenos">4996</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-4997"><a href="#L-4997"><span class="linenos">4997</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="L-4998"><a href="#L-4998"><span class="linenos">4998</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-4999"><a href="#L-4999"><span class="linenos">4999</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="L-5000"><a href="#L-5000"><span class="linenos">5000</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5001"><a href="#L-5001"><span class="linenos">5001</span></a> +</span><span id="L-5002"><a href="#L-5002"><span class="linenos">5002</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="L-5003"><a href="#L-5003"><span class="linenos">5003</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-5004"><a href="#L-5004"><span class="linenos">5004</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="L-5005"><a href="#L-5005"><span class="linenos">5005</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="L-5006"><a href="#L-5006"><span class="linenos">5006</span></a> +</span><span id="L-5007"><a href="#L-5007"><span class="linenos">5007</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identity</span><span class="p">:</span> +</span><span id="L-5008"><a href="#L-5008"><span class="linenos">5008</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">())</span> +</span><span id="L-5009"><a href="#L-5009"><span class="linenos">5009</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"start"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-5010"><a href="#L-5010"><span class="linenos">5010</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-5011"><a href="#L-5011"><span class="linenos">5011</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-5012"><a href="#L-5012"><span class="linenos">5012</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-5013"><a href="#L-5013"><span class="linenos">5013</span></a> +</span><span id="L-5014"><a href="#L-5014"><span class="linenos">5014</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-5015"><a href="#L-5015"><span class="linenos">5015</span></a> +</span><span id="L-5016"><a href="#L-5016"><span class="linenos">5016</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5017"><a href="#L-5017"><span class="linenos">5017</span></a> +</span><span id="L-5018"><a href="#L-5018"><span class="linenos">5018</span></a> <span class="k">def</span> <span class="nf">_parse_inline</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">:</span> +</span><span id="L-5019"><a href="#L-5019"><span class="linenos">5019</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LENGTH"</span><span class="p">)</span> +</span><span id="L-5020"><a href="#L-5020"><span class="linenos">5020</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5021"><a href="#L-5021"><span class="linenos">5021</span></a> +</span><span id="L-5022"><a href="#L-5022"><span class="linenos">5022</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5023"><a href="#L-5023"><span class="linenos">5023</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="L-5024"><a href="#L-5024"><span class="linenos">5024</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> +</span><span id="L-5025"><a href="#L-5025"><span class="linenos">5025</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> +</span><span id="L-5026"><a href="#L-5026"><span class="linenos">5026</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5027"><a href="#L-5027"><span class="linenos">5027</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"REPLICATION"</span><span class="p">):</span> +</span><span id="L-5028"><a href="#L-5028"><span class="linenos">5028</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotForReplicationColumnConstraint</span><span class="p">)</span> +</span><span id="L-5029"><a href="#L-5029"><span class="linenos">5029</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-5030"><a href="#L-5030"><span class="linenos">5030</span></a> -</span><span id="L-5031"><a href="#L-5031"><span class="linenos">5031</span></a> <span class="k">return</span> <span class="n">constraints</span> -</span><span id="L-5032"><a href="#L-5032"><span class="linenos">5032</span></a> -</span><span id="L-5033"><a href="#L-5033"><span class="linenos">5033</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> -</span><span id="L-5034"><a href="#L-5034"><span class="linenos">5034</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</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">Collection</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-5035"><a href="#L-5035"><span class="linenos">5035</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5036"><a href="#L-5036"><span class="linenos">5036</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> -</span><span id="L-5037"><a href="#L-5037"><span class="linenos">5037</span></a> <span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span> -</span><span id="L-5038"><a href="#L-5038"><span class="linenos">5038</span></a> <span class="p">):</span> -</span><span id="L-5039"><a href="#L-5039"><span class="linenos">5039</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5040"><a href="#L-5040"><span class="linenos">5040</span></a> -</span><span id="L-5041"><a href="#L-5041"><span class="linenos">5041</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-5042"><a href="#L-5042"><span class="linenos">5042</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> -</span><span id="L-5043"><a href="#L-5043"><span class="linenos">5043</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="L-5044"><a href="#L-5044"><span class="linenos">5044</span></a> -</span><span id="L-5045"><a href="#L-5045"><span class="linenos">5045</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-5046"><a href="#L-5046"><span class="linenos">5046</span></a> -</span><span id="L-5047"><a href="#L-5047"><span class="linenos">5047</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">:</span> -</span><span id="L-5048"><a href="#L-5048"><span class="linenos">5048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> -</span><span id="L-5049"><a href="#L-5049"><span class="linenos">5049</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5050"><a href="#L-5050"><span class="linenos">5050</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">,</span> -</span><span id="L-5051"><a href="#L-5051"><span class="linenos">5051</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)),</span> -</span><span id="L-5052"><a href="#L-5052"><span class="linenos">5052</span></a> <span class="n">index_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="L-5053"><a href="#L-5053"><span class="linenos">5053</span></a> <span class="n">on_conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> +</span><span id="L-5031"><a href="#L-5031"><span class="linenos">5031</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5032"><a href="#L-5032"><span class="linenos">5032</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="L-5033"><a href="#L-5033"><span class="linenos">5033</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-5034"><a href="#L-5034"><span class="linenos">5034</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5035"><a href="#L-5035"><span class="linenos">5035</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5036"><a href="#L-5036"><span class="linenos">5036</span></a> +</span><span id="L-5037"><a href="#L-5037"><span class="linenos">5037</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> +</span><span id="L-5038"><a href="#L-5038"><span class="linenos">5038</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5039"><a href="#L-5039"><span class="linenos">5039</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> +</span><span id="L-5040"><a href="#L-5040"><span class="linenos">5040</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5041"><a href="#L-5041"><span class="linenos">5041</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> +</span><span id="L-5042"><a href="#L-5042"><span class="linenos">5042</span></a> <span class="p">)</span> +</span><span id="L-5043"><a href="#L-5043"><span class="linenos">5043</span></a> +</span><span id="L-5044"><a href="#L-5044"><span class="linenos">5044</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5045"><a href="#L-5045"><span class="linenos">5045</span></a> +</span><span id="L-5046"><a href="#L-5046"><span class="linenos">5046</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5047"><a href="#L-5047"><span class="linenos">5047</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="L-5048"><a href="#L-5048"><span class="linenos">5048</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> +</span><span id="L-5049"><a href="#L-5049"><span class="linenos">5049</span></a> +</span><span id="L-5050"><a href="#L-5050"><span class="linenos">5050</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5051"><a href="#L-5051"><span class="linenos">5051</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Constraint</span><span class="p">,</span> +</span><span id="L-5052"><a href="#L-5052"><span class="linenos">5052</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="L-5053"><a href="#L-5053"><span class="linenos">5053</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraints</span><span class="p">(),</span> </span><span id="L-5054"><a href="#L-5054"><span class="linenos">5054</span></a> <span class="p">)</span> </span><span id="L-5055"><a href="#L-5055"><span class="linenos">5055</span></a> -</span><span id="L-5056"><a href="#L-5056"><span class="linenos">5056</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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-5057"><a href="#L-5057"><span class="linenos">5057</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-5056"><a href="#L-5056"><span class="linenos">5056</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5057"><a href="#L-5057"><span class="linenos">5057</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-5058"><a href="#L-5058"><span class="linenos">5058</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-5059"><a href="#L-5059"><span class="linenos">5059</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-5060"><a href="#L-5060"><span class="linenos">5060</span></a> <span class="k">break</span> -</span><span id="L-5061"><a href="#L-5061"><span class="linenos">5061</span></a> -</span><span id="L-5062"><a href="#L-5062"><span class="linenos">5062</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-5063"><a href="#L-5063"><span class="linenos">5063</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5064"><a href="#L-5064"><span class="linenos">5064</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-5059"><a href="#L-5059"><span class="linenos">5059</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="L-5060"><a href="#L-5060"><span class="linenos">5060</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="L-5061"><a href="#L-5061"><span class="linenos">5061</span></a> <span class="k">break</span> +</span><span id="L-5062"><a href="#L-5062"><span class="linenos">5062</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="L-5063"><a href="#L-5063"><span class="linenos">5063</span></a> +</span><span id="L-5064"><a href="#L-5064"><span class="linenos">5064</span></a> <span class="k">return</span> <span class="n">constraints</span> </span><span id="L-5065"><a href="#L-5065"><span class="linenos">5065</span></a> -</span><span id="L-5066"><a href="#L-5066"><span class="linenos">5066</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> -</span><span id="L-5067"><a href="#L-5067"><span class="linenos">5067</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="L-5068"><a href="#L-5068"><span class="linenos">5068</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">):</span> -</span><span id="L-5069"><a href="#L-5069"><span class="linenos">5069</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> -</span><span id="L-5070"><a href="#L-5070"><span class="linenos">5070</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> -</span><span id="L-5071"><a href="#L-5071"><span class="linenos">5071</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"RESTRICT"</span> -</span><span id="L-5072"><a href="#L-5072"><span class="linenos">5072</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="L-5073"><a href="#L-5073"><span class="linenos">5073</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> -</span><span id="L-5074"><a href="#L-5074"><span class="linenos">5074</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-5075"><a href="#L-5075"><span class="linenos">5075</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> -</span><span id="L-5076"><a href="#L-5076"><span class="linenos">5076</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5077"><a href="#L-5077"><span class="linenos">5077</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> -</span><span id="L-5078"><a href="#L-5078"><span class="linenos">5078</span></a> -</span><span id="L-5079"><a href="#L-5079"><span class="linenos">5079</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-5080"><a href="#L-5080"><span class="linenos">5080</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> -</span><span id="L-5081"><a href="#L-5081"><span class="linenos">5081</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> -</span><span id="L-5082"><a href="#L-5082"><span class="linenos">5082</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> -</span><span id="L-5083"><a href="#L-5083"><span class="linenos">5083</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> -</span><span id="L-5084"><a href="#L-5084"><span class="linenos">5084</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> -</span><span id="L-5085"><a href="#L-5085"><span class="linenos">5085</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> -</span><span id="L-5086"><a href="#L-5086"><span class="linenos">5086</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> -</span><span id="L-5087"><a href="#L-5087"><span class="linenos">5087</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> -</span><span id="L-5088"><a href="#L-5088"><span class="linenos">5088</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> -</span><span id="L-5089"><a href="#L-5089"><span class="linenos">5089</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> -</span><span id="L-5090"><a href="#L-5090"><span class="linenos">5090</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5091"><a href="#L-5091"><span class="linenos">5091</span></a> <span class="k">break</span> -</span><span id="L-5092"><a href="#L-5092"><span class="linenos">5092</span></a> -</span><span id="L-5093"><a href="#L-5093"><span class="linenos">5093</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="L-5066"><a href="#L-5066"><span class="linenos">5066</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> +</span><span id="L-5067"><a href="#L-5067"><span class="linenos">5067</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</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">Collection</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-5068"><a href="#L-5068"><span class="linenos">5068</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5069"><a href="#L-5069"><span class="linenos">5069</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> +</span><span id="L-5070"><a href="#L-5070"><span class="linenos">5070</span></a> <span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span> +</span><span id="L-5071"><a href="#L-5071"><span class="linenos">5071</span></a> <span class="p">):</span> +</span><span id="L-5072"><a href="#L-5072"><span class="linenos">5072</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5073"><a href="#L-5073"><span class="linenos">5073</span></a> +</span><span id="L-5074"><a href="#L-5074"><span class="linenos">5074</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5075"><a href="#L-5075"><span class="linenos">5075</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> +</span><span id="L-5076"><a href="#L-5076"><span class="linenos">5076</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</span><span id="L-5077"><a href="#L-5077"><span class="linenos">5077</span></a> +</span><span id="L-5078"><a href="#L-5078"><span class="linenos">5078</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-5079"><a href="#L-5079"><span class="linenos">5079</span></a> +</span><span id="L-5080"><a href="#L-5080"><span class="linenos">5080</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">:</span> +</span><span id="L-5081"><a href="#L-5081"><span class="linenos">5081</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> +</span><span id="L-5082"><a href="#L-5082"><span class="linenos">5082</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5083"><a href="#L-5083"><span class="linenos">5083</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">,</span> +</span><span id="L-5084"><a href="#L-5084"><span class="linenos">5084</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)),</span> +</span><span id="L-5085"><a href="#L-5085"><span class="linenos">5085</span></a> <span class="n">index_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="L-5086"><a href="#L-5086"><span class="linenos">5086</span></a> <span class="n">on_conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> +</span><span id="L-5087"><a href="#L-5087"><span class="linenos">5087</span></a> <span class="p">)</span> +</span><span id="L-5088"><a href="#L-5088"><span class="linenos">5088</span></a> +</span><span id="L-5089"><a href="#L-5089"><span class="linenos">5089</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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-5090"><a href="#L-5090"><span class="linenos">5090</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-5091"><a href="#L-5091"><span class="linenos">5091</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-5092"><a href="#L-5092"><span class="linenos">5092</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-5093"><a href="#L-5093"><span class="linenos">5093</span></a> <span class="k">break</span> </span><span id="L-5094"><a href="#L-5094"><span class="linenos">5094</span></a> -</span><span id="L-5095"><a href="#L-5095"><span class="linenos">5095</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">]:</span> -</span><span id="L-5096"><a href="#L-5096"><span class="linenos">5096</span></a> <span class="k">if</span> <span class="n">match</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> -</span><span id="L-5097"><a href="#L-5097"><span class="linenos">5097</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5095"><a href="#L-5095"><span class="linenos">5095</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-5096"><a href="#L-5096"><span class="linenos">5096</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5097"><a href="#L-5097"><span class="linenos">5097</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> </span><span id="L-5098"><a href="#L-5098"><span class="linenos">5098</span></a> -</span><span id="L-5099"><a href="#L-5099"><span class="linenos">5099</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5100"><a href="#L-5100"><span class="linenos">5100</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5101"><a href="#L-5101"><span class="linenos">5101</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="L-5102"><a href="#L-5102"><span class="linenos">5102</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="L-5103"><a href="#L-5103"><span class="linenos">5103</span></a> -</span><span id="L-5104"><a href="#L-5104"><span class="linenos">5104</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">:</span> -</span><span id="L-5105"><a href="#L-5105"><span class="linenos">5105</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-5106"><a href="#L-5106"><span class="linenos">5106</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> -</span><span id="L-5107"><a href="#L-5107"><span class="linenos">5107</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-5108"><a href="#L-5108"><span class="linenos">5108</span></a> -</span><span id="L-5109"><a href="#L-5109"><span class="linenos">5109</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-5110"><a href="#L-5110"><span class="linenos">5110</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> -</span><span id="L-5111"><a href="#L-5111"><span class="linenos">5111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> -</span><span id="L-5112"><a href="#L-5112"><span class="linenos">5112</span></a> -</span><span id="L-5113"><a href="#L-5113"><span class="linenos">5113</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="L-5114"><a href="#L-5114"><span class="linenos">5114</span></a> -</span><span id="L-5115"><a href="#L-5115"><span class="linenos">5115</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> -</span><span id="L-5116"><a href="#L-5116"><span class="linenos">5116</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="L-5117"><a href="#L-5117"><span class="linenos">5117</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> -</span><span id="L-5118"><a href="#L-5118"><span class="linenos">5118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> -</span><span id="L-5119"><a href="#L-5119"><span class="linenos">5119</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-5120"><a href="#L-5120"><span class="linenos">5120</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5121"><a href="#L-5121"><span class="linenos">5121</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-5122"><a href="#L-5122"><span class="linenos">5122</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-5123"><a href="#L-5123"><span class="linenos">5123</span></a> -</span><span id="L-5124"><a href="#L-5124"><span class="linenos">5124</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> +</span><span id="L-5099"><a href="#L-5099"><span class="linenos">5099</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> +</span><span id="L-5100"><a href="#L-5100"><span class="linenos">5100</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="L-5101"><a href="#L-5101"><span class="linenos">5101</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">):</span> +</span><span id="L-5102"><a href="#L-5102"><span class="linenos">5102</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> +</span><span id="L-5103"><a href="#L-5103"><span class="linenos">5103</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> +</span><span id="L-5104"><a href="#L-5104"><span class="linenos">5104</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"RESTRICT"</span> +</span><span id="L-5105"><a href="#L-5105"><span class="linenos">5105</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="L-5106"><a href="#L-5106"><span class="linenos">5106</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> +</span><span id="L-5107"><a href="#L-5107"><span class="linenos">5107</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-5108"><a href="#L-5108"><span class="linenos">5108</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> +</span><span id="L-5109"><a href="#L-5109"><span class="linenos">5109</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5110"><a href="#L-5110"><span class="linenos">5110</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> +</span><span id="L-5111"><a href="#L-5111"><span class="linenos">5111</span></a> +</span><span id="L-5112"><a href="#L-5112"><span class="linenos">5112</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-5113"><a href="#L-5113"><span class="linenos">5113</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> +</span><span id="L-5114"><a href="#L-5114"><span class="linenos">5114</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> +</span><span id="L-5115"><a href="#L-5115"><span class="linenos">5115</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> +</span><span id="L-5116"><a href="#L-5116"><span class="linenos">5116</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> +</span><span id="L-5117"><a href="#L-5117"><span class="linenos">5117</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> +</span><span id="L-5118"><a href="#L-5118"><span class="linenos">5118</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> +</span><span id="L-5119"><a href="#L-5119"><span class="linenos">5119</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> +</span><span id="L-5120"><a href="#L-5120"><span class="linenos">5120</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> +</span><span id="L-5121"><a href="#L-5121"><span class="linenos">5121</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> +</span><span id="L-5122"><a href="#L-5122"><span class="linenos">5122</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> +</span><span id="L-5123"><a href="#L-5123"><span class="linenos">5123</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5124"><a href="#L-5124"><span class="linenos">5124</span></a> <span class="k">break</span> </span><span id="L-5125"><a href="#L-5125"><span class="linenos">5125</span></a> -</span><span id="L-5126"><a href="#L-5126"><span class="linenos">5126</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5127"><a href="#L-5127"><span class="linenos">5127</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> -</span><span id="L-5128"><a href="#L-5128"><span class="linenos">5128</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-5129"><a href="#L-5129"><span class="linenos">5129</span></a> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> -</span><span id="L-5130"><a href="#L-5130"><span class="linenos">5130</span></a> <span class="o">**</span><span class="n">options</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-5131"><a href="#L-5131"><span class="linenos">5131</span></a> <span class="p">)</span> -</span><span id="L-5132"><a href="#L-5132"><span class="linenos">5132</span></a> -</span><span id="L-5133"><a href="#L-5133"><span class="linenos">5133</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5134"><a href="#L-5134"><span class="linenos">5134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-5135"><a href="#L-5135"><span class="linenos">5135</span></a> -</span><span id="L-5136"><a href="#L-5136"><span class="linenos">5136</span></a> <span class="k">def</span> <span class="nf">_parse_period_for_system_time</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">]:</span> -</span><span id="L-5137"><a href="#L-5137"><span class="linenos">5137</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> -</span><span id="L-5138"><a href="#L-5138"><span class="linenos">5138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-5139"><a href="#L-5139"><span class="linenos">5139</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5140"><a href="#L-5140"><span class="linenos">5140</span></a> -</span><span id="L-5141"><a href="#L-5141"><span class="linenos">5141</span></a> <span class="n">id_vars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-5142"><a href="#L-5142"><span class="linenos">5142</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5143"><a href="#L-5143"><span class="linenos">5143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">,</span> -</span><span id="L-5144"><a href="#L-5144"><span class="linenos">5144</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="L-5145"><a href="#L-5145"><span class="linenos">5145</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> -</span><span id="L-5146"><a href="#L-5146"><span class="linenos">5146</span></a> <span class="p">)</span> +</span><span id="L-5126"><a href="#L-5126"><span class="linenos">5126</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="L-5127"><a href="#L-5127"><span class="linenos">5127</span></a> +</span><span id="L-5128"><a href="#L-5128"><span class="linenos">5128</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">]:</span> +</span><span id="L-5129"><a href="#L-5129"><span class="linenos">5129</span></a> <span class="k">if</span> <span class="n">match</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> +</span><span id="L-5130"><a href="#L-5130"><span class="linenos">5130</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5131"><a href="#L-5131"><span class="linenos">5131</span></a> +</span><span id="L-5132"><a href="#L-5132"><span class="linenos">5132</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5133"><a href="#L-5133"><span class="linenos">5133</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5134"><a href="#L-5134"><span class="linenos">5134</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="L-5135"><a href="#L-5135"><span class="linenos">5135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-5136"><a href="#L-5136"><span class="linenos">5136</span></a> +</span><span id="L-5137"><a href="#L-5137"><span class="linenos">5137</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">:</span> +</span><span id="L-5138"><a href="#L-5138"><span class="linenos">5138</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-5139"><a href="#L-5139"><span class="linenos">5139</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> +</span><span id="L-5140"><a href="#L-5140"><span class="linenos">5140</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-5141"><a href="#L-5141"><span class="linenos">5141</span></a> +</span><span id="L-5142"><a href="#L-5142"><span class="linenos">5142</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-5143"><a href="#L-5143"><span class="linenos">5143</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> +</span><span id="L-5144"><a href="#L-5144"><span class="linenos">5144</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> +</span><span id="L-5145"><a href="#L-5145"><span class="linenos">5145</span></a> +</span><span id="L-5146"><a href="#L-5146"><span class="linenos">5146</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> </span><span id="L-5147"><a href="#L-5147"><span class="linenos">5147</span></a> -</span><span id="L-5148"><a href="#L-5148"><span class="linenos">5148</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span> -</span><span id="L-5149"><a href="#L-5149"><span class="linenos">5149</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-5150"><a href="#L-5150"><span class="linenos">5150</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span> -</span><span id="L-5151"><a href="#L-5151"><span class="linenos">5151</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-5152"><a href="#L-5152"><span class="linenos">5152</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> -</span><span id="L-5153"><a href="#L-5153"><span class="linenos">5153</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> -</span><span id="L-5154"><a href="#L-5154"><span class="linenos">5154</span></a> <span class="p">)</span> -</span><span id="L-5155"><a href="#L-5155"><span class="linenos">5155</span></a> -</span><span id="L-5156"><a href="#L-5156"><span class="linenos">5156</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">in_props</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-5157"><a href="#L-5157"><span class="linenos">5157</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> +</span><span id="L-5148"><a href="#L-5148"><span class="linenos">5148</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> +</span><span id="L-5149"><a href="#L-5149"><span class="linenos">5149</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="L-5150"><a href="#L-5150"><span class="linenos">5150</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> +</span><span id="L-5151"><a href="#L-5151"><span class="linenos">5151</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> +</span><span id="L-5152"><a href="#L-5152"><span class="linenos">5152</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5153"><a href="#L-5153"><span class="linenos">5153</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5154"><a href="#L-5154"><span class="linenos">5154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-5155"><a href="#L-5155"><span class="linenos">5155</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5156"><a href="#L-5156"><span class="linenos">5156</span></a> +</span><span id="L-5157"><a href="#L-5157"><span class="linenos">5157</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> </span><span id="L-5158"><a href="#L-5158"><span class="linenos">5158</span></a> -</span><span id="L-5159"><a href="#L-5159"><span class="linenos">5159</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span> -</span><span id="L-5160"><a href="#L-5160"><span class="linenos">5160</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key_part</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">wrapped_optional</span> -</span><span id="L-5161"><a href="#L-5161"><span class="linenos">5161</span></a> <span class="p">)</span> -</span><span id="L-5162"><a href="#L-5162"><span class="linenos">5162</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="L-5163"><a href="#L-5163"><span class="linenos">5163</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="L-5164"><a href="#L-5164"><span class="linenos">5164</span></a> -</span><span id="L-5165"><a href="#L-5165"><span class="linenos">5165</span></a> <span class="k">def</span> <span class="nf">_parse_bracket_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">is_map</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5166"><a href="#L-5166"><span class="linenos">5166</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-5167"><a href="#L-5167"><span class="linenos">5167</span></a> -</span><span id="L-5168"><a href="#L-5168"><span class="linenos">5168</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5169"><a href="#L-5169"><span class="linenos">5169</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> -</span><span id="L-5170"><a href="#L-5170"><span class="linenos">5170</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5171"><a href="#L-5171"><span class="linenos">5171</span></a> -</span><span id="L-5172"><a href="#L-5172"><span class="linenos">5172</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-5173"><a href="#L-5173"><span class="linenos">5173</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-5174"><a href="#L-5174"><span class="linenos">5174</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket_key_value</span><span class="p">(</span><span class="n">is_map</span><span class="o">=</span><span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> -</span><span id="L-5175"><a href="#L-5175"><span class="linenos">5175</span></a> <span class="p">)</span> -</span><span id="L-5176"><a href="#L-5176"><span class="linenos">5176</span></a> -</span><span id="L-5177"><a href="#L-5177"><span class="linenos">5177</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> -</span><span id="L-5178"><a href="#L-5178"><span class="linenos">5178</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> -</span><span id="L-5179"><a href="#L-5179"><span class="linenos">5179</span></a> <span class="k">elif</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span> -</span><span id="L-5180"><a href="#L-5180"><span class="linenos">5180</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> -</span><span id="L-5181"><a href="#L-5181"><span class="linenos">5181</span></a> -</span><span id="L-5182"><a href="#L-5182"><span class="linenos">5182</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> -</span><span id="L-5183"><a href="#L-5183"><span class="linenos">5183</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> -</span><span id="L-5184"><a href="#L-5184"><span class="linenos">5184</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">expressions</span><span class="p">))</span> -</span><span id="L-5185"><a href="#L-5185"><span class="linenos">5185</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"ARRAY"</span><span class="p">:</span> -</span><span id="L-5186"><a href="#L-5186"><span class="linenos">5186</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-5187"><a href="#L-5187"><span class="linenos">5187</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5188"><a href="#L-5188"><span class="linenos">5188</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">INDEX_OFFSET</span><span class="p">)</span> -</span><span id="L-5189"><a href="#L-5189"><span class="linenos">5189</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-5190"><a href="#L-5190"><span class="linenos">5190</span></a> -</span><span id="L-5191"><a href="#L-5191"><span class="linenos">5191</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5192"><a href="#L-5192"><span class="linenos">5192</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5193"><a href="#L-5193"><span class="linenos">5193</span></a> -</span><span id="L-5194"><a href="#L-5194"><span class="linenos">5194</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5195"><a href="#L-5195"><span class="linenos">5195</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="L-5196"><a href="#L-5196"><span class="linenos">5196</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="L-5197"><a href="#L-5197"><span class="linenos">5197</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5198"><a href="#L-5198"><span class="linenos">5198</span></a> -</span><span id="L-5199"><a href="#L-5199"><span class="linenos">5199</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5200"><a href="#L-5200"><span class="linenos">5200</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-5201"><a href="#L-5201"><span class="linenos">5201</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5202"><a href="#L-5202"><span class="linenos">5202</span></a> -</span><span id="L-5203"><a href="#L-5203"><span class="linenos">5203</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-5204"><a href="#L-5204"><span class="linenos">5204</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-5205"><a href="#L-5205"><span class="linenos">5205</span></a> -</span><span id="L-5206"><a href="#L-5206"><span class="linenos">5206</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="L-5207"><a href="#L-5207"><span class="linenos">5207</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-5208"><a href="#L-5208"><span class="linenos">5208</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="L-5209"><a href="#L-5209"><span class="linenos">5209</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-5210"><a href="#L-5210"><span class="linenos">5210</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> -</span><span id="L-5211"><a href="#L-5211"><span class="linenos">5211</span></a> -</span><span id="L-5212"><a href="#L-5212"><span class="linenos">5212</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> -</span><span id="L-5213"><a href="#L-5213"><span class="linenos">5213</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5159"><a href="#L-5159"><span class="linenos">5159</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5160"><a href="#L-5160"><span class="linenos">5160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> +</span><span id="L-5161"><a href="#L-5161"><span class="linenos">5161</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-5162"><a href="#L-5162"><span class="linenos">5162</span></a> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> +</span><span id="L-5163"><a href="#L-5163"><span class="linenos">5163</span></a> <span class="o">**</span><span class="n">options</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-5164"><a href="#L-5164"><span class="linenos">5164</span></a> <span class="p">)</span> +</span><span id="L-5165"><a href="#L-5165"><span class="linenos">5165</span></a> +</span><span id="L-5166"><a href="#L-5166"><span class="linenos">5166</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5167"><a href="#L-5167"><span class="linenos">5167</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-5168"><a href="#L-5168"><span class="linenos">5168</span></a> +</span><span id="L-5169"><a href="#L-5169"><span class="linenos">5169</span></a> <span class="k">def</span> <span class="nf">_parse_period_for_system_time</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">]:</span> +</span><span id="L-5170"><a href="#L-5170"><span class="linenos">5170</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> +</span><span id="L-5171"><a href="#L-5171"><span class="linenos">5171</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-5172"><a href="#L-5172"><span class="linenos">5172</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5173"><a href="#L-5173"><span class="linenos">5173</span></a> +</span><span id="L-5174"><a href="#L-5174"><span class="linenos">5174</span></a> <span class="n">id_vars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-5175"><a href="#L-5175"><span class="linenos">5175</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5176"><a href="#L-5176"><span class="linenos">5176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">,</span> +</span><span id="L-5177"><a href="#L-5177"><span class="linenos">5177</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="L-5178"><a href="#L-5178"><span class="linenos">5178</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> +</span><span id="L-5179"><a href="#L-5179"><span class="linenos">5179</span></a> <span class="p">)</span> +</span><span id="L-5180"><a href="#L-5180"><span class="linenos">5180</span></a> +</span><span id="L-5181"><a href="#L-5181"><span class="linenos">5181</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span> +</span><span id="L-5182"><a href="#L-5182"><span class="linenos">5182</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-5183"><a href="#L-5183"><span class="linenos">5183</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span> +</span><span id="L-5184"><a href="#L-5184"><span class="linenos">5184</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-5185"><a href="#L-5185"><span class="linenos">5185</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> +</span><span id="L-5186"><a href="#L-5186"><span class="linenos">5186</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> +</span><span id="L-5187"><a href="#L-5187"><span class="linenos">5187</span></a> <span class="p">)</span> +</span><span id="L-5188"><a href="#L-5188"><span class="linenos">5188</span></a> +</span><span id="L-5189"><a href="#L-5189"><span class="linenos">5189</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">in_props</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-5190"><a href="#L-5190"><span class="linenos">5190</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> +</span><span id="L-5191"><a href="#L-5191"><span class="linenos">5191</span></a> +</span><span id="L-5192"><a href="#L-5192"><span class="linenos">5192</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span> +</span><span id="L-5193"><a href="#L-5193"><span class="linenos">5193</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key_part</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">wrapped_optional</span> +</span><span id="L-5194"><a href="#L-5194"><span class="linenos">5194</span></a> <span class="p">)</span> +</span><span id="L-5195"><a href="#L-5195"><span class="linenos">5195</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="L-5196"><a href="#L-5196"><span class="linenos">5196</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-5197"><a href="#L-5197"><span class="linenos">5197</span></a> +</span><span id="L-5198"><a href="#L-5198"><span class="linenos">5198</span></a> <span class="k">def</span> <span class="nf">_parse_bracket_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">is_map</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5199"><a href="#L-5199"><span class="linenos">5199</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-5200"><a href="#L-5200"><span class="linenos">5200</span></a> +</span><span id="L-5201"><a href="#L-5201"><span class="linenos">5201</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5202"><a href="#L-5202"><span class="linenos">5202</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> +</span><span id="L-5203"><a href="#L-5203"><span class="linenos">5203</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5204"><a href="#L-5204"><span class="linenos">5204</span></a> +</span><span id="L-5205"><a href="#L-5205"><span class="linenos">5205</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-5206"><a href="#L-5206"><span class="linenos">5206</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-5207"><a href="#L-5207"><span class="linenos">5207</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket_key_value</span><span class="p">(</span><span class="n">is_map</span><span class="o">=</span><span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> +</span><span id="L-5208"><a href="#L-5208"><span class="linenos">5208</span></a> <span class="p">)</span> +</span><span id="L-5209"><a href="#L-5209"><span class="linenos">5209</span></a> +</span><span id="L-5210"><a href="#L-5210"><span class="linenos">5210</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="L-5211"><a href="#L-5211"><span class="linenos">5211</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> +</span><span id="L-5212"><a href="#L-5212"><span class="linenos">5212</span></a> <span class="k">elif</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span> +</span><span id="L-5213"><a href="#L-5213"><span class="linenos">5213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> </span><span id="L-5214"><a href="#L-5214"><span class="linenos">5214</span></a> -</span><span id="L-5215"><a href="#L-5215"><span class="linenos">5215</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> -</span><span id="L-5216"><a href="#L-5216"><span class="linenos">5216</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">default</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="ow">and</span> <span class="n">default</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"END"</span><span class="p">:</span> -</span><span id="L-5217"><a href="#L-5217"><span class="linenos">5217</span></a> <span class="n">default</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="s2">"interval"</span><span class="p">)</span> -</span><span id="L-5218"><a href="#L-5218"><span class="linenos">5218</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5219"><a href="#L-5219"><span class="linenos">5219</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5220"><a href="#L-5220"><span class="linenos">5220</span></a> -</span><span id="L-5221"><a href="#L-5221"><span class="linenos">5221</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5222"><a href="#L-5222"><span class="linenos">5222</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> -</span><span id="L-5223"><a href="#L-5223"><span class="linenos">5223</span></a> <span class="p">)</span> +</span><span id="L-5215"><a href="#L-5215"><span class="linenos">5215</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> +</span><span id="L-5216"><a href="#L-5216"><span class="linenos">5216</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> +</span><span id="L-5217"><a href="#L-5217"><span class="linenos">5217</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">expressions</span><span class="p">))</span> +</span><span id="L-5218"><a href="#L-5218"><span class="linenos">5218</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-5219"><a href="#L-5219"><span class="linenos">5219</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-5220"><a href="#L-5220"><span class="linenos">5220</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5221"><a href="#L-5221"><span class="linenos">5221</span></a> <span class="n">constructor_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ARRAY_CONSTRUCTORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-5222"><a href="#L-5222"><span class="linenos">5222</span></a> <span class="k">if</span> <span class="n">constructor_type</span><span class="p">:</span> +</span><span id="L-5223"><a href="#L-5223"><span class="linenos">5223</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">constructor_type</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="L-5224"><a href="#L-5224"><span class="linenos">5224</span></a> -</span><span id="L-5225"><a href="#L-5225"><span class="linenos">5225</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5226"><a href="#L-5226"><span class="linenos">5226</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-5227"><a href="#L-5227"><span class="linenos">5227</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="L-5228"><a href="#L-5228"><span class="linenos">5228</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-5229"><a href="#L-5229"><span class="linenos">5229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-5230"><a href="#L-5230"><span class="linenos">5230</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5231"><a href="#L-5231"><span class="linenos">5231</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="L-5232"><a href="#L-5232"><span class="linenos">5232</span></a> -</span><span id="L-5233"><a href="#L-5233"><span class="linenos">5233</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_IF_COMMANDS</span> <span class="ow">and</span> <span class="n">index</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-5234"><a href="#L-5234"><span class="linenos">5234</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5225"><a href="#L-5225"><span class="linenos">5225</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">INDEX_OFFSET</span><span class="p">)</span> +</span><span id="L-5226"><a href="#L-5226"><span class="linenos">5226</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-5227"><a href="#L-5227"><span class="linenos">5227</span></a> +</span><span id="L-5228"><a href="#L-5228"><span class="linenos">5228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5229"><a href="#L-5229"><span class="linenos">5229</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5230"><a href="#L-5230"><span class="linenos">5230</span></a> +</span><span id="L-5231"><a href="#L-5231"><span class="linenos">5231</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5232"><a href="#L-5232"><span class="linenos">5232</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="L-5233"><a href="#L-5233"><span class="linenos">5233</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="L-5234"><a href="#L-5234"><span class="linenos">5234</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-5235"><a href="#L-5235"><span class="linenos">5235</span></a> -</span><span id="L-5236"><a href="#L-5236"><span class="linenos">5236</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-5237"><a href="#L-5237"><span class="linenos">5237</span></a> -</span><span id="L-5238"><a href="#L-5238"><span class="linenos">5238</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">condition</span><span class="p">:</span> -</span><span id="L-5239"><a href="#L-5239"><span class="linenos">5239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-5240"><a href="#L-5240"><span class="linenos">5240</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5241"><a href="#L-5241"><span class="linenos">5241</span></a> -</span><span id="L-5242"><a href="#L-5242"><span class="linenos">5242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="L-5243"><a href="#L-5243"><span class="linenos">5243</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-5244"><a href="#L-5244"><span class="linenos">5244</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-5245"><a href="#L-5245"><span class="linenos">5245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> -</span><span id="L-5246"><a href="#L-5246"><span class="linenos">5246</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> -</span><span id="L-5247"><a href="#L-5247"><span class="linenos">5247</span></a> -</span><span id="L-5248"><a href="#L-5248"><span class="linenos">5248</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5249"><a href="#L-5249"><span class="linenos">5249</span></a> -</span><span id="L-5250"><a href="#L-5250"><span class="linenos">5250</span></a> <span class="k">def</span> <span class="nf">_parse_next_value_for</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5251"><a href="#L-5251"><span class="linenos">5251</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">,</span> <span class="s2">"FOR"</span><span class="p">):</span> -</span><span id="L-5252"><a href="#L-5252"><span class="linenos">5252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-5253"><a href="#L-5253"><span class="linenos">5253</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5254"><a href="#L-5254"><span class="linenos">5254</span></a> -</span><span id="L-5255"><a href="#L-5255"><span class="linenos">5255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5256"><a href="#L-5256"><span class="linenos">5256</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NextValueFor</span><span class="p">,</span> -</span><span id="L-5257"><a href="#L-5257"><span class="linenos">5257</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> -</span><span id="L-5258"><a href="#L-5258"><span class="linenos">5258</span></a> <span class="n">order</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">),</span> -</span><span id="L-5259"><a href="#L-5259"><span class="linenos">5259</span></a> <span class="p">)</span> -</span><span id="L-5260"><a href="#L-5260"><span class="linenos">5260</span></a> -</span><span id="L-5261"><a href="#L-5261"><span class="linenos">5261</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">:</span> -</span><span id="L-5262"><a href="#L-5262"><span class="linenos">5262</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-5263"><a href="#L-5263"><span class="linenos">5263</span></a> -</span><span id="L-5264"><a href="#L-5264"><span class="linenos">5264</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-5265"><a href="#L-5265"><span class="linenos">5265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-5266"><a href="#L-5266"><span class="linenos">5266</span></a> -</span><span id="L-5267"><a href="#L-5267"><span class="linenos">5267</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-5268"><a href="#L-5268"><span class="linenos">5268</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5236"><a href="#L-5236"><span class="linenos">5236</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5237"><a href="#L-5237"><span class="linenos">5237</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-5238"><a href="#L-5238"><span class="linenos">5238</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5239"><a href="#L-5239"><span class="linenos">5239</span></a> +</span><span id="L-5240"><a href="#L-5240"><span class="linenos">5240</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-5241"><a href="#L-5241"><span class="linenos">5241</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5242"><a href="#L-5242"><span class="linenos">5242</span></a> +</span><span id="L-5243"><a href="#L-5243"><span class="linenos">5243</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="L-5244"><a href="#L-5244"><span class="linenos">5244</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5245"><a href="#L-5245"><span class="linenos">5245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="L-5246"><a href="#L-5246"><span class="linenos">5246</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5247"><a href="#L-5247"><span class="linenos">5247</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> +</span><span id="L-5248"><a href="#L-5248"><span class="linenos">5248</span></a> +</span><span id="L-5249"><a href="#L-5249"><span class="linenos">5249</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> +</span><span id="L-5250"><a href="#L-5250"><span class="linenos">5250</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5251"><a href="#L-5251"><span class="linenos">5251</span></a> +</span><span id="L-5252"><a href="#L-5252"><span class="linenos">5252</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> +</span><span id="L-5253"><a href="#L-5253"><span class="linenos">5253</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">default</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="ow">and</span> <span class="n">default</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"END"</span><span class="p">:</span> +</span><span id="L-5254"><a href="#L-5254"><span class="linenos">5254</span></a> <span class="n">default</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="s2">"interval"</span><span class="p">)</span> +</span><span id="L-5255"><a href="#L-5255"><span class="linenos">5255</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5256"><a href="#L-5256"><span class="linenos">5256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5257"><a href="#L-5257"><span class="linenos">5257</span></a> +</span><span id="L-5258"><a href="#L-5258"><span class="linenos">5258</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5259"><a href="#L-5259"><span class="linenos">5259</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> +</span><span id="L-5260"><a href="#L-5260"><span class="linenos">5260</span></a> <span class="p">)</span> +</span><span id="L-5261"><a href="#L-5261"><span class="linenos">5261</span></a> +</span><span id="L-5262"><a href="#L-5262"><span class="linenos">5262</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5263"><a href="#L-5263"><span class="linenos">5263</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-5264"><a href="#L-5264"><span class="linenos">5264</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="L-5265"><a href="#L-5265"><span class="linenos">5265</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-5266"><a href="#L-5266"><span class="linenos">5266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-5267"><a href="#L-5267"><span class="linenos">5267</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5268"><a href="#L-5268"><span class="linenos">5268</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-5269"><a href="#L-5269"><span class="linenos">5269</span></a> -</span><span id="L-5270"><a href="#L-5270"><span class="linenos">5270</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-5271"><a href="#L-5271"><span class="linenos">5271</span></a> -</span><span id="L-5272"><a href="#L-5272"><span class="linenos">5272</span></a> <span class="k">def</span> <span class="nf">_parse_gap_fill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">:</span> -</span><span id="L-5273"><a href="#L-5273"><span class="linenos">5273</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-5274"><a href="#L-5274"><span class="linenos">5274</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-5275"><a href="#L-5275"><span class="linenos">5275</span></a> -</span><span id="L-5276"><a href="#L-5276"><span class="linenos">5276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-5277"><a href="#L-5277"><span class="linenos">5277</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">())]</span> +</span><span id="L-5270"><a href="#L-5270"><span class="linenos">5270</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_IF_COMMANDS</span> <span class="ow">and</span> <span class="n">index</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-5271"><a href="#L-5271"><span class="linenos">5271</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5272"><a href="#L-5272"><span class="linenos">5272</span></a> +</span><span id="L-5273"><a href="#L-5273"><span class="linenos">5273</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5274"><a href="#L-5274"><span class="linenos">5274</span></a> +</span><span id="L-5275"><a href="#L-5275"><span class="linenos">5275</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">condition</span><span class="p">:</span> +</span><span id="L-5276"><a href="#L-5276"><span class="linenos">5276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-5277"><a href="#L-5277"><span class="linenos">5277</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-5278"><a href="#L-5278"><span class="linenos">5278</span></a> -</span><span id="L-5279"><a href="#L-5279"><span class="linenos">5279</span></a> <span class="n">gap_fill</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-5280"><a href="#L-5280"><span class="linenos">5280</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">gap_fill</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-5281"><a href="#L-5281"><span class="linenos">5281</span></a> -</span><span id="L-5282"><a href="#L-5282"><span class="linenos">5282</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-5283"><a href="#L-5283"><span class="linenos">5283</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5279"><a href="#L-5279"><span class="linenos">5279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="L-5280"><a href="#L-5280"><span class="linenos">5280</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5281"><a href="#L-5281"><span class="linenos">5281</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-5282"><a href="#L-5282"><span class="linenos">5282</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> +</span><span id="L-5283"><a href="#L-5283"><span class="linenos">5283</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> </span><span id="L-5284"><a href="#L-5284"><span class="linenos">5284</span></a> -</span><span id="L-5285"><a href="#L-5285"><span class="linenos">5285</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> -</span><span id="L-5286"><a href="#L-5286"><span class="linenos">5286</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-5287"><a href="#L-5287"><span class="linenos">5287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="L-5288"><a href="#L-5288"><span class="linenos">5288</span></a> -</span><span id="L-5289"><a href="#L-5289"><span class="linenos">5289</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> -</span><span id="L-5290"><a href="#L-5290"><span class="linenos">5290</span></a> -</span><span id="L-5291"><a href="#L-5291"><span class="linenos">5291</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5292"><a href="#L-5292"><span class="linenos">5292</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-5293"><a href="#L-5293"><span class="linenos">5293</span></a> -</span><span id="L-5294"><a href="#L-5294"><span class="linenos">5294</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="L-5295"><a href="#L-5295"><span class="linenos">5295</span></a> <span class="n">fmt_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-5296"><a href="#L-5296"><span class="linenos">5296</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="n">fmt_string</span><span class="p">)</span> +</span><span id="L-5285"><a href="#L-5285"><span class="linenos">5285</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5286"><a href="#L-5286"><span class="linenos">5286</span></a> +</span><span id="L-5287"><a href="#L-5287"><span class="linenos">5287</span></a> <span class="k">def</span> <span class="nf">_parse_next_value_for</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5288"><a href="#L-5288"><span class="linenos">5288</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">,</span> <span class="s2">"FOR"</span><span class="p">):</span> +</span><span id="L-5289"><a href="#L-5289"><span class="linenos">5289</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-5290"><a href="#L-5290"><span class="linenos">5290</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5291"><a href="#L-5291"><span class="linenos">5291</span></a> +</span><span id="L-5292"><a href="#L-5292"><span class="linenos">5292</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5293"><a href="#L-5293"><span class="linenos">5293</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NextValueFor</span><span class="p">,</span> +</span><span id="L-5294"><a href="#L-5294"><span class="linenos">5294</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> +</span><span id="L-5295"><a href="#L-5295"><span class="linenos">5295</span></a> <span class="n">order</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">),</span> +</span><span id="L-5296"><a href="#L-5296"><span class="linenos">5296</span></a> <span class="p">)</span> </span><span id="L-5297"><a href="#L-5297"><span class="linenos">5297</span></a> -</span><span id="L-5298"><a href="#L-5298"><span class="linenos">5298</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> -</span><span id="L-5299"><a href="#L-5299"><span class="linenos">5299</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">)</span> -</span><span id="L-5300"><a href="#L-5300"><span class="linenos">5300</span></a> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEMPORAL_TYPES</span><span class="p">:</span> -</span><span id="L-5301"><a href="#L-5301"><span class="linenos">5301</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5302"><a href="#L-5302"><span class="linenos">5302</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">DATE</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> -</span><span id="L-5303"><a href="#L-5303"><span class="linenos">5303</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5304"><a href="#L-5304"><span class="linenos">5304</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="L-5305"><a href="#L-5305"><span class="linenos">5305</span></a> <span class="n">format_time</span><span class="p">(</span> -</span><span id="L-5306"><a href="#L-5306"><span class="linenos">5306</span></a> <span class="n">fmt_string</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">fmt_string</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-5307"><a href="#L-5307"><span class="linenos">5307</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> -</span><span id="L-5308"><a href="#L-5308"><span class="linenos">5308</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_TRIE</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">,</span> -</span><span id="L-5309"><a href="#L-5309"><span class="linenos">5309</span></a> <span class="p">)</span> -</span><span id="L-5310"><a href="#L-5310"><span class="linenos">5310</span></a> <span class="p">),</span> -</span><span id="L-5311"><a href="#L-5311"><span class="linenos">5311</span></a> <span class="p">)</span> +</span><span id="L-5298"><a href="#L-5298"><span class="linenos">5298</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">:</span> +</span><span id="L-5299"><a href="#L-5299"><span class="linenos">5299</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="L-5300"><a href="#L-5300"><span class="linenos">5300</span></a> +</span><span id="L-5301"><a href="#L-5301"><span class="linenos">5301</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-5302"><a href="#L-5302"><span class="linenos">5302</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5303"><a href="#L-5303"><span class="linenos">5303</span></a> +</span><span id="L-5304"><a href="#L-5304"><span class="linenos">5304</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-5305"><a href="#L-5305"><span class="linenos">5305</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5306"><a href="#L-5306"><span class="linenos">5306</span></a> +</span><span id="L-5307"><a href="#L-5307"><span class="linenos">5307</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5308"><a href="#L-5308"><span class="linenos">5308</span></a> +</span><span id="L-5309"><a href="#L-5309"><span class="linenos">5309</span></a> <span class="k">def</span> <span class="nf">_parse_gap_fill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">:</span> +</span><span id="L-5310"><a href="#L-5310"><span class="linenos">5310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-5311"><a href="#L-5311"><span class="linenos">5311</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> </span><span id="L-5312"><a href="#L-5312"><span class="linenos">5312</span></a> -</span><span id="L-5313"><a href="#L-5313"><span class="linenos">5313</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">):</span> -</span><span id="L-5314"><a href="#L-5314"><span class="linenos">5314</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">,</span> <span class="n">fmt</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"zone"</span><span class="p">])</span> -</span><span id="L-5315"><a href="#L-5315"><span class="linenos">5315</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5316"><a href="#L-5316"><span class="linenos">5316</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> -</span><span id="L-5317"><a href="#L-5317"><span class="linenos">5317</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> -</span><span id="L-5318"><a href="#L-5318"><span class="linenos">5318</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-5319"><a href="#L-5319"><span class="linenos">5319</span></a> <span class="n">to</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">to</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5320"><a href="#L-5320"><span class="linenos">5320</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> -</span><span id="L-5321"><a href="#L-5321"><span class="linenos">5321</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> -</span><span id="L-5322"><a href="#L-5322"><span class="linenos">5322</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> -</span><span id="L-5323"><a href="#L-5323"><span class="linenos">5323</span></a> -</span><span id="L-5324"><a href="#L-5324"><span class="linenos">5324</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5325"><a href="#L-5325"><span class="linenos">5325</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> -</span><span id="L-5326"><a href="#L-5326"><span class="linenos">5326</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5327"><a href="#L-5327"><span class="linenos">5327</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> -</span><span id="L-5328"><a href="#L-5328"><span class="linenos">5328</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">fmt</span><span class="p">,</span> -</span><span id="L-5329"><a href="#L-5329"><span class="linenos">5329</span></a> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">,</span> -</span><span id="L-5330"><a href="#L-5330"><span class="linenos">5330</span></a> <span class="n">action</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CAST_ACTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-5331"><a href="#L-5331"><span class="linenos">5331</span></a> <span class="p">)</span> -</span><span id="L-5332"><a href="#L-5332"><span class="linenos">5332</span></a> -</span><span id="L-5333"><a href="#L-5333"><span class="linenos">5333</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-5334"><a href="#L-5334"><span class="linenos">5334</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="L-5335"><a href="#L-5335"><span class="linenos">5335</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-5336"><a href="#L-5336"><span class="linenos">5336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> -</span><span id="L-5337"><a href="#L-5337"><span class="linenos">5337</span></a> <span class="p">]</span> -</span><span id="L-5338"><a href="#L-5338"><span class="linenos">5338</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-5339"><a href="#L-5339"><span class="linenos">5339</span></a> <span class="n">args</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> -</span><span id="L-5340"><a href="#L-5340"><span class="linenos">5340</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5341"><a href="#L-5341"><span class="linenos">5341</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-5342"><a href="#L-5342"><span class="linenos">5342</span></a> -</span><span id="L-5343"><a href="#L-5343"><span class="linenos">5343</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-5344"><a href="#L-5344"><span class="linenos">5344</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> <span class="ow">and</span> <span class="n">args</span><span class="p">:</span> -</span><span id="L-5345"><a href="#L-5345"><span class="linenos">5345</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> -</span><span id="L-5346"><a href="#L-5346"><span class="linenos">5346</span></a> <span class="c1"># bigquery: STRING_AGG([DISTINCT] expression [, separator] [ORDER BY key [{ASC | DESC}] [, ... ]] [LIMIT n])</span> -</span><span id="L-5347"><a href="#L-5347"><span class="linenos">5347</span></a> <span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> -</span><span id="L-5348"><a href="#L-5348"><span class="linenos">5348</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-5313"><a href="#L-5313"><span class="linenos">5313</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-5314"><a href="#L-5314"><span class="linenos">5314</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)]</span> +</span><span id="L-5315"><a href="#L-5315"><span class="linenos">5315</span></a> +</span><span id="L-5316"><a href="#L-5316"><span class="linenos">5316</span></a> <span class="n">gap_fill</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-5317"><a href="#L-5317"><span class="linenos">5317</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">gap_fill</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-5318"><a href="#L-5318"><span class="linenos">5318</span></a> +</span><span id="L-5319"><a href="#L-5319"><span class="linenos">5319</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-5320"><a href="#L-5320"><span class="linenos">5320</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-5321"><a href="#L-5321"><span class="linenos">5321</span></a> +</span><span id="L-5322"><a href="#L-5322"><span class="linenos">5322</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> +</span><span id="L-5323"><a href="#L-5323"><span class="linenos">5323</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-5324"><a href="#L-5324"><span class="linenos">5324</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="L-5325"><a href="#L-5325"><span class="linenos">5325</span></a> +</span><span id="L-5326"><a href="#L-5326"><span class="linenos">5326</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> +</span><span id="L-5327"><a href="#L-5327"><span class="linenos">5327</span></a> +</span><span id="L-5328"><a href="#L-5328"><span class="linenos">5328</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5329"><a href="#L-5329"><span class="linenos">5329</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-5330"><a href="#L-5330"><span class="linenos">5330</span></a> +</span><span id="L-5331"><a href="#L-5331"><span class="linenos">5331</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="L-5332"><a href="#L-5332"><span class="linenos">5332</span></a> <span class="n">fmt_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5333"><a href="#L-5333"><span class="linenos">5333</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="n">fmt_string</span><span class="p">)</span> +</span><span id="L-5334"><a href="#L-5334"><span class="linenos">5334</span></a> +</span><span id="L-5335"><a href="#L-5335"><span class="linenos">5335</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> +</span><span id="L-5336"><a href="#L-5336"><span class="linenos">5336</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">)</span> +</span><span id="L-5337"><a href="#L-5337"><span class="linenos">5337</span></a> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEMPORAL_TYPES</span><span class="p">:</span> +</span><span id="L-5338"><a href="#L-5338"><span class="linenos">5338</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5339"><a href="#L-5339"><span class="linenos">5339</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">DATE</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> +</span><span id="L-5340"><a href="#L-5340"><span class="linenos">5340</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5341"><a href="#L-5341"><span class="linenos">5341</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="L-5342"><a href="#L-5342"><span class="linenos">5342</span></a> <span class="n">format_time</span><span class="p">(</span> +</span><span id="L-5343"><a href="#L-5343"><span class="linenos">5343</span></a> <span class="n">fmt_string</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">fmt_string</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-5344"><a href="#L-5344"><span class="linenos">5344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> +</span><span id="L-5345"><a href="#L-5345"><span class="linenos">5345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_TRIE</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">,</span> +</span><span id="L-5346"><a href="#L-5346"><span class="linenos">5346</span></a> <span class="p">)</span> +</span><span id="L-5347"><a href="#L-5347"><span class="linenos">5347</span></a> <span class="p">),</span> +</span><span id="L-5348"><a href="#L-5348"><span class="linenos">5348</span></a> <span class="p">)</span> </span><span id="L-5349"><a href="#L-5349"><span class="linenos">5349</span></a> -</span><span id="L-5350"><a href="#L-5350"><span class="linenos">5350</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> -</span><span id="L-5351"><a href="#L-5351"><span class="linenos">5351</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> -</span><span id="L-5352"><a href="#L-5352"><span class="linenos">5352</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> -</span><span id="L-5353"><a href="#L-5353"><span class="linenos">5353</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> -</span><span id="L-5354"><a href="#L-5354"><span class="linenos">5354</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-5355"><a href="#L-5355"><span class="linenos">5355</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-5356"><a href="#L-5356"><span class="linenos">5356</span></a> -</span><span id="L-5357"><a href="#L-5357"><span class="linenos">5357</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> -</span><span id="L-5358"><a href="#L-5358"><span class="linenos">5358</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> -</span><span id="L-5359"><a href="#L-5359"><span class="linenos">5359</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-5350"><a href="#L-5350"><span class="linenos">5350</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">):</span> +</span><span id="L-5351"><a href="#L-5351"><span class="linenos">5351</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">,</span> <span class="n">fmt</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"zone"</span><span class="p">])</span> +</span><span id="L-5352"><a href="#L-5352"><span class="linenos">5352</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5353"><a href="#L-5353"><span class="linenos">5353</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> +</span><span id="L-5354"><a href="#L-5354"><span class="linenos">5354</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> +</span><span id="L-5355"><a href="#L-5355"><span class="linenos">5355</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-5356"><a href="#L-5356"><span class="linenos">5356</span></a> <span class="n">to</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">to</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5357"><a href="#L-5357"><span class="linenos">5357</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> +</span><span id="L-5358"><a href="#L-5358"><span class="linenos">5358</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> +</span><span id="L-5359"><a href="#L-5359"><span class="linenos">5359</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> </span><span id="L-5360"><a href="#L-5360"><span class="linenos">5360</span></a> -</span><span id="L-5361"><a href="#L-5361"><span class="linenos">5361</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span> -</span><span id="L-5362"><a href="#L-5362"><span class="linenos">5362</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span> -</span><span id="L-5363"><a href="#L-5363"><span class="linenos">5363</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5364"><a href="#L-5364"><span class="linenos">5364</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-5365"><a href="#L-5365"><span class="linenos">5365</span></a> -</span><span id="L-5366"><a href="#L-5366"><span class="linenos">5366</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="L-5367"><a href="#L-5367"><span class="linenos">5367</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5368"><a href="#L-5368"><span class="linenos">5368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="L-5369"><a href="#L-5369"><span class="linenos">5369</span></a> <span class="p">)</span> -</span><span id="L-5370"><a href="#L-5370"><span class="linenos">5370</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-5371"><a href="#L-5371"><span class="linenos">5371</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-5372"><a href="#L-5372"><span class="linenos">5372</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5373"><a href="#L-5373"><span class="linenos">5373</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5374"><a href="#L-5374"><span class="linenos">5374</span></a> -</span><span id="L-5375"><a href="#L-5375"><span class="linenos">5375</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">)</span> -</span><span id="L-5376"><a href="#L-5376"><span class="linenos">5376</span></a> -</span><span id="L-5377"><a href="#L-5377"><span class="linenos">5377</span></a> <span class="k">def</span> <span class="nf">_parse_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Decode</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">]:</span> -</span><span id="L-5378"><a href="#L-5378"><span class="linenos">5378</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-5379"><a href="#L-5379"><span class="linenos">5379</span></a><span class="sd"> There are generally two variants of the DECODE function:</span> -</span><span id="L-5380"><a href="#L-5380"><span class="linenos">5380</span></a> -</span><span id="L-5381"><a href="#L-5381"><span class="linenos">5381</span></a><span class="sd"> - DECODE(bin, charset)</span> -</span><span id="L-5382"><a href="#L-5382"><span class="linenos">5382</span></a><span class="sd"> - DECODE(expression, search, result [, search, result] ... [, default])</span> -</span><span id="L-5383"><a href="#L-5383"><span class="linenos">5383</span></a> -</span><span id="L-5384"><a href="#L-5384"><span class="linenos">5384</span></a><span class="sd"> The second variant will always be parsed into a CASE expression. Note that NULL</span> -</span><span id="L-5385"><a href="#L-5385"><span class="linenos">5385</span></a><span class="sd"> needs special treatment, since we need to explicitly check for it with `IS NULL`,</span> -</span><span id="L-5386"><a href="#L-5386"><span class="linenos">5386</span></a><span class="sd"> instead of relying on pattern matching.</span> -</span><span id="L-5387"><a href="#L-5387"><span class="linenos">5387</span></a><span class="sd"> """</span> -</span><span id="L-5388"><a href="#L-5388"><span class="linenos">5388</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="L-5389"><a href="#L-5389"><span class="linenos">5389</span></a> -</span><span id="L-5390"><a href="#L-5390"><span class="linenos">5390</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">3</span><span class="p">:</span> -</span><span id="L-5391"><a href="#L-5391"><span class="linenos">5391</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">charset</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> -</span><span id="L-5392"><a href="#L-5392"><span class="linenos">5392</span></a> -</span><span id="L-5393"><a href="#L-5393"><span class="linenos">5393</span></a> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span> <span class="o">=</span> <span class="n">args</span> -</span><span id="L-5394"><a href="#L-5394"><span class="linenos">5394</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-5395"><a href="#L-5395"><span class="linenos">5395</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5396"><a href="#L-5396"><span class="linenos">5396</span></a> -</span><span id="L-5397"><a href="#L-5397"><span class="linenos">5397</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-5398"><a href="#L-5398"><span class="linenos">5398</span></a> <span class="k">for</span> <span class="n">search</span><span class="p">,</span> <span class="n">result</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">expressions</span><span class="p">[::</span><span class="mi">2</span><span class="p">],</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">::</span><span class="mi">2</span><span class="p">]):</span> -</span><span id="L-5399"><a href="#L-5399"><span class="linenos">5399</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">search</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> -</span><span id="L-5400"><a href="#L-5400"><span class="linenos">5400</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5401"><a href="#L-5401"><span class="linenos">5401</span></a> -</span><span id="L-5402"><a href="#L-5402"><span class="linenos">5402</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="L-5403"><a href="#L-5403"><span class="linenos">5403</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-5404"><a href="#L-5404"><span class="linenos">5404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> -</span><span id="L-5405"><a href="#L-5405"><span class="linenos">5405</span></a> <span class="p">)</span> -</span><span id="L-5406"><a href="#L-5406"><span class="linenos">5406</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> -</span><span id="L-5407"><a href="#L-5407"><span class="linenos">5407</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-5408"><a href="#L-5408"><span class="linenos">5408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> -</span><span id="L-5409"><a href="#L-5409"><span class="linenos">5409</span></a> <span class="p">)</span> -</span><span id="L-5410"><a href="#L-5410"><span class="linenos">5410</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5411"><a href="#L-5411"><span class="linenos">5411</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span><span class="p">(</span> -</span><span id="L-5412"><a href="#L-5412"><span class="linenos">5412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> -</span><span id="L-5413"><a href="#L-5413"><span class="linenos">5413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span><span class="p">(</span> -</span><span id="L-5414"><a href="#L-5414"><span class="linenos">5414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> -</span><span id="L-5415"><a href="#L-5415"><span class="linenos">5415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">search</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> -</span><span id="L-5416"><a href="#L-5416"><span class="linenos">5416</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-5417"><a href="#L-5417"><span class="linenos">5417</span></a> <span class="p">),</span> -</span><span id="L-5418"><a href="#L-5418"><span class="linenos">5418</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-5419"><a href="#L-5419"><span class="linenos">5419</span></a> <span class="p">)</span> -</span><span id="L-5420"><a href="#L-5420"><span class="linenos">5420</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cond</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">))</span> -</span><span id="L-5421"><a href="#L-5421"><span class="linenos">5421</span></a> -</span><span id="L-5422"><a href="#L-5422"><span class="linenos">5422</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-5423"><a href="#L-5423"><span class="linenos">5423</span></a> -</span><span id="L-5424"><a href="#L-5424"><span class="linenos">5424</span></a> <span class="k">def</span> <span class="nf">_parse_json_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">]:</span> -</span><span id="L-5425"><a href="#L-5425"><span class="linenos">5425</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> -</span><span id="L-5426"><a href="#L-5426"><span class="linenos">5426</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-5427"><a href="#L-5427"><span class="linenos">5427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span><span class="p">)</span> -</span><span id="L-5428"><a href="#L-5428"><span class="linenos">5428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">)</span> -</span><span id="L-5429"><a href="#L-5429"><span class="linenos">5429</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-5430"><a href="#L-5430"><span class="linenos">5430</span></a> -</span><span id="L-5431"><a href="#L-5431"><span class="linenos">5431</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span> +</span><span id="L-5361"><a href="#L-5361"><span class="linenos">5361</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5362"><a href="#L-5362"><span class="linenos">5362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> +</span><span id="L-5363"><a href="#L-5363"><span class="linenos">5363</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5364"><a href="#L-5364"><span class="linenos">5364</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> +</span><span id="L-5365"><a href="#L-5365"><span class="linenos">5365</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">fmt</span><span class="p">,</span> +</span><span id="L-5366"><a href="#L-5366"><span class="linenos">5366</span></a> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">,</span> +</span><span id="L-5367"><a href="#L-5367"><span class="linenos">5367</span></a> <span class="n">action</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CAST_ACTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-5368"><a href="#L-5368"><span class="linenos">5368</span></a> <span class="p">)</span> +</span><span id="L-5369"><a href="#L-5369"><span class="linenos">5369</span></a> +</span><span id="L-5370"><a href="#L-5370"><span class="linenos">5370</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-5371"><a href="#L-5371"><span class="linenos">5371</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="L-5372"><a href="#L-5372"><span class="linenos">5372</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="L-5373"><a href="#L-5373"><span class="linenos">5373</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> +</span><span id="L-5374"><a href="#L-5374"><span class="linenos">5374</span></a> <span class="p">]</span> +</span><span id="L-5375"><a href="#L-5375"><span class="linenos">5375</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-5376"><a href="#L-5376"><span class="linenos">5376</span></a> <span class="n">args</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> +</span><span id="L-5377"><a href="#L-5377"><span class="linenos">5377</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5378"><a href="#L-5378"><span class="linenos">5378</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-5379"><a href="#L-5379"><span class="linenos">5379</span></a> +</span><span id="L-5380"><a href="#L-5380"><span class="linenos">5380</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-5381"><a href="#L-5381"><span class="linenos">5381</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> <span class="ow">and</span> <span class="n">args</span><span class="p">:</span> +</span><span id="L-5382"><a href="#L-5382"><span class="linenos">5382</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> +</span><span id="L-5383"><a href="#L-5383"><span class="linenos">5383</span></a> <span class="c1"># bigquery: STRING_AGG([DISTINCT] expression [, separator] [ORDER BY key [{ASC | DESC}] [, ... ]] [LIMIT n])</span> +</span><span id="L-5384"><a href="#L-5384"><span class="linenos">5384</span></a> <span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> +</span><span id="L-5385"><a href="#L-5385"><span class="linenos">5385</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-5386"><a href="#L-5386"><span class="linenos">5386</span></a> +</span><span id="L-5387"><a href="#L-5387"><span class="linenos">5387</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> +</span><span id="L-5388"><a href="#L-5388"><span class="linenos">5388</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> +</span><span id="L-5389"><a href="#L-5389"><span class="linenos">5389</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> +</span><span id="L-5390"><a href="#L-5390"><span class="linenos">5390</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> +</span><span id="L-5391"><a href="#L-5391"><span class="linenos">5391</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-5392"><a href="#L-5392"><span class="linenos">5392</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-5393"><a href="#L-5393"><span class="linenos">5393</span></a> +</span><span id="L-5394"><a href="#L-5394"><span class="linenos">5394</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> +</span><span id="L-5395"><a href="#L-5395"><span class="linenos">5395</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="L-5396"><a href="#L-5396"><span class="linenos">5396</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-5397"><a href="#L-5397"><span class="linenos">5397</span></a> +</span><span id="L-5398"><a href="#L-5398"><span class="linenos">5398</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span> +</span><span id="L-5399"><a href="#L-5399"><span class="linenos">5399</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span> +</span><span id="L-5400"><a href="#L-5400"><span class="linenos">5400</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5401"><a href="#L-5401"><span class="linenos">5401</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5402"><a href="#L-5402"><span class="linenos">5402</span></a> +</span><span id="L-5403"><a href="#L-5403"><span class="linenos">5403</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="L-5404"><a href="#L-5404"><span class="linenos">5404</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5405"><a href="#L-5405"><span class="linenos">5405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="L-5406"><a href="#L-5406"><span class="linenos">5406</span></a> <span class="p">)</span> +</span><span id="L-5407"><a href="#L-5407"><span class="linenos">5407</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-5408"><a href="#L-5408"><span class="linenos">5408</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-5409"><a href="#L-5409"><span class="linenos">5409</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5410"><a href="#L-5410"><span class="linenos">5410</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5411"><a href="#L-5411"><span class="linenos">5411</span></a> +</span><span id="L-5412"><a href="#L-5412"><span class="linenos">5412</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">)</span> +</span><span id="L-5413"><a href="#L-5413"><span class="linenos">5413</span></a> +</span><span id="L-5414"><a href="#L-5414"><span class="linenos">5414</span></a> <span class="k">def</span> <span class="nf">_parse_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Decode</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">]:</span> +</span><span id="L-5415"><a href="#L-5415"><span class="linenos">5415</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-5416"><a href="#L-5416"><span class="linenos">5416</span></a><span class="sd"> There are generally two variants of the DECODE function:</span> +</span><span id="L-5417"><a href="#L-5417"><span class="linenos">5417</span></a> +</span><span id="L-5418"><a href="#L-5418"><span class="linenos">5418</span></a><span class="sd"> - DECODE(bin, charset)</span> +</span><span id="L-5419"><a href="#L-5419"><span class="linenos">5419</span></a><span class="sd"> - DECODE(expression, search, result [, search, result] ... [, default])</span> +</span><span id="L-5420"><a href="#L-5420"><span class="linenos">5420</span></a> +</span><span id="L-5421"><a href="#L-5421"><span class="linenos">5421</span></a><span class="sd"> The second variant will always be parsed into a CASE expression. Note that NULL</span> +</span><span id="L-5422"><a href="#L-5422"><span class="linenos">5422</span></a><span class="sd"> needs special treatment, since we need to explicitly check for it with `IS NULL`,</span> +</span><span id="L-5423"><a href="#L-5423"><span class="linenos">5423</span></a><span class="sd"> instead of relying on pattern matching.</span> +</span><span id="L-5424"><a href="#L-5424"><span class="linenos">5424</span></a><span class="sd"> """</span> +</span><span id="L-5425"><a href="#L-5425"><span class="linenos">5425</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="L-5426"><a href="#L-5426"><span class="linenos">5426</span></a> +</span><span id="L-5427"><a href="#L-5427"><span class="linenos">5427</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">3</span><span class="p">:</span> +</span><span id="L-5428"><a href="#L-5428"><span class="linenos">5428</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">charset</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="L-5429"><a href="#L-5429"><span class="linenos">5429</span></a> +</span><span id="L-5430"><a href="#L-5430"><span class="linenos">5430</span></a> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span> <span class="o">=</span> <span class="n">args</span> +</span><span id="L-5431"><a href="#L-5431"><span class="linenos">5431</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> </span><span id="L-5432"><a href="#L-5432"><span class="linenos">5432</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5433"><a href="#L-5433"><span class="linenos">5433</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-5434"><a href="#L-5434"><span class="linenos">5434</span></a> -</span><span id="L-5435"><a href="#L-5435"><span class="linenos">5435</span></a> <span class="k">def</span> <span class="nf">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5436"><a href="#L-5436"><span class="linenos">5436</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT"</span><span class="p">,</span> <span class="s2">"JSON"</span><span class="p">):</span> -</span><span id="L-5437"><a href="#L-5437"><span class="linenos">5437</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5433"><a href="#L-5433"><span class="linenos">5433</span></a> +</span><span id="L-5434"><a href="#L-5434"><span class="linenos">5434</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-5435"><a href="#L-5435"><span class="linenos">5435</span></a> <span class="k">for</span> <span class="n">search</span><span class="p">,</span> <span class="n">result</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">expressions</span><span class="p">[::</span><span class="mi">2</span><span class="p">],</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">::</span><span class="mi">2</span><span class="p">]):</span> +</span><span id="L-5436"><a href="#L-5436"><span class="linenos">5436</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">search</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> +</span><span id="L-5437"><a href="#L-5437"><span class="linenos">5437</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-5438"><a href="#L-5438"><span class="linenos">5438</span></a> -</span><span id="L-5439"><a href="#L-5439"><span class="linenos">5439</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FormatJson</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5440"><a href="#L-5440"><span class="linenos">5440</span></a> -</span><span id="L-5441"><a href="#L-5441"><span class="linenos">5441</span></a> <span class="k">def</span> <span class="nf">_parse_on_handling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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="nb">str</span><span class="p">]:</span> -</span><span id="L-5442"><a href="#L-5442"><span class="linenos">5442</span></a> <span class="c1"># Parses the "X ON Y" syntax, i.e. NULL ON NULL (Oracle, T-SQL)</span> -</span><span id="L-5443"><a href="#L-5443"><span class="linenos">5443</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span> -</span><span id="L-5444"><a href="#L-5444"><span class="linenos">5444</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="n">on</span><span class="p">):</span> -</span><span id="L-5445"><a href="#L-5445"><span class="linenos">5445</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-5446"><a href="#L-5446"><span class="linenos">5446</span></a> -</span><span id="L-5447"><a href="#L-5447"><span class="linenos">5447</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5448"><a href="#L-5448"><span class="linenos">5448</span></a> -</span><span id="L-5449"><a href="#L-5449"><span class="linenos">5449</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-5450"><a href="#L-5450"><span class="linenos">5450</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">:</span> <span class="o">...</span> -</span><span id="L-5451"><a href="#L-5451"><span class="linenos">5451</span></a> -</span><span id="L-5452"><a href="#L-5452"><span class="linenos">5452</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-5453"><a href="#L-5453"><span class="linenos">5453</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span><span class="p">:</span> <span class="o">...</span> -</span><span id="L-5454"><a href="#L-5454"><span class="linenos">5454</span></a> -</span><span id="L-5455"><a href="#L-5455"><span class="linenos">5455</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-5456"><a href="#L-5456"><span class="linenos">5456</span></a> <span class="n">star</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="L-5457"><a href="#L-5457"><span class="linenos">5457</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-5458"><a href="#L-5458"><span class="linenos">5458</span></a> <span class="p">[</span><span class="n">star</span><span class="p">]</span> -</span><span id="L-5459"><a href="#L-5459"><span class="linenos">5459</span></a> <span class="k">if</span> <span class="n">star</span> -</span><span id="L-5460"><a href="#L-5460"><span class="linenos">5460</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_key_value</span><span class="p">()))</span> -</span><span id="L-5461"><a href="#L-5461"><span class="linenos">5461</span></a> <span class="p">)</span> -</span><span id="L-5462"><a href="#L-5462"><span class="linenos">5462</span></a> <span class="n">null_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ABSENT"</span><span class="p">)</span> -</span><span id="L-5463"><a href="#L-5463"><span class="linenos">5463</span></a> -</span><span id="L-5464"><a href="#L-5464"><span class="linenos">5464</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5465"><a href="#L-5465"><span class="linenos">5465</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> -</span><span id="L-5466"><a href="#L-5466"><span class="linenos">5466</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5467"><a href="#L-5467"><span class="linenos">5467</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> -</span><span id="L-5468"><a href="#L-5468"><span class="linenos">5468</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-5469"><a href="#L-5469"><span class="linenos">5469</span></a> -</span><span id="L-5470"><a href="#L-5470"><span class="linenos">5470</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEYS"</span><span class="p">)</span> +</span><span id="L-5439"><a href="#L-5439"><span class="linenos">5439</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="L-5440"><a href="#L-5440"><span class="linenos">5440</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-5441"><a href="#L-5441"><span class="linenos">5441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> +</span><span id="L-5442"><a href="#L-5442"><span class="linenos">5442</span></a> <span class="p">)</span> +</span><span id="L-5443"><a href="#L-5443"><span class="linenos">5443</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> +</span><span id="L-5444"><a href="#L-5444"><span class="linenos">5444</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-5445"><a href="#L-5445"><span class="linenos">5445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> +</span><span id="L-5446"><a href="#L-5446"><span class="linenos">5446</span></a> <span class="p">)</span> +</span><span id="L-5447"><a href="#L-5447"><span class="linenos">5447</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5448"><a href="#L-5448"><span class="linenos">5448</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span><span class="p">(</span> +</span><span id="L-5449"><a href="#L-5449"><span class="linenos">5449</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> +</span><span id="L-5450"><a href="#L-5450"><span class="linenos">5450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span><span class="p">(</span> +</span><span id="L-5451"><a href="#L-5451"><span class="linenos">5451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> +</span><span id="L-5452"><a href="#L-5452"><span class="linenos">5452</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">search</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> +</span><span id="L-5453"><a href="#L-5453"><span class="linenos">5453</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-5454"><a href="#L-5454"><span class="linenos">5454</span></a> <span class="p">),</span> +</span><span id="L-5455"><a href="#L-5455"><span class="linenos">5455</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-5456"><a href="#L-5456"><span class="linenos">5456</span></a> <span class="p">)</span> +</span><span id="L-5457"><a href="#L-5457"><span class="linenos">5457</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cond</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">))</span> +</span><span id="L-5458"><a href="#L-5458"><span class="linenos">5458</span></a> +</span><span id="L-5459"><a href="#L-5459"><span class="linenos">5459</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-5460"><a href="#L-5460"><span class="linenos">5460</span></a> +</span><span id="L-5461"><a href="#L-5461"><span class="linenos">5461</span></a> <span class="k">def</span> <span class="nf">_parse_json_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">]:</span> +</span><span id="L-5462"><a href="#L-5462"><span class="linenos">5462</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> +</span><span id="L-5463"><a href="#L-5463"><span class="linenos">5463</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-5464"><a href="#L-5464"><span class="linenos">5464</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span><span class="p">)</span> +</span><span id="L-5465"><a href="#L-5465"><span class="linenos">5465</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">)</span> +</span><span id="L-5466"><a href="#L-5466"><span class="linenos">5466</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5467"><a href="#L-5467"><span class="linenos">5467</span></a> +</span><span id="L-5468"><a href="#L-5468"><span class="linenos">5468</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span> +</span><span id="L-5469"><a href="#L-5469"><span class="linenos">5469</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5470"><a href="#L-5470"><span class="linenos">5470</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> </span><span id="L-5471"><a href="#L-5471"><span class="linenos">5471</span></a> -</span><span id="L-5472"><a href="#L-5472"><span class="linenos">5472</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURNING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span> -</span><span id="L-5473"><a href="#L-5473"><span class="linenos">5473</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-5474"><a href="#L-5474"><span class="linenos">5474</span></a> <span class="p">)</span> -</span><span id="L-5475"><a href="#L-5475"><span class="linenos">5475</span></a> <span class="n">encoding</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCODING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="L-5476"><a href="#L-5476"><span class="linenos">5476</span></a> -</span><span id="L-5477"><a href="#L-5477"><span class="linenos">5477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5478"><a href="#L-5478"><span class="linenos">5478</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span> <span class="k">if</span> <span class="n">agg</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">,</span> -</span><span id="L-5479"><a href="#L-5479"><span class="linenos">5479</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-5480"><a href="#L-5480"><span class="linenos">5480</span></a> <span class="n">null_handling</span><span class="o">=</span><span class="n">null_handling</span><span class="p">,</span> -</span><span id="L-5481"><a href="#L-5481"><span class="linenos">5481</span></a> <span class="n">unique_keys</span><span class="o">=</span><span class="n">unique_keys</span><span class="p">,</span> -</span><span id="L-5482"><a href="#L-5482"><span class="linenos">5482</span></a> <span class="n">return_type</span><span class="o">=</span><span class="n">return_type</span><span class="p">,</span> -</span><span id="L-5483"><a href="#L-5483"><span class="linenos">5483</span></a> <span class="n">encoding</span><span class="o">=</span><span class="n">encoding</span><span class="p">,</span> -</span><span id="L-5484"><a href="#L-5484"><span class="linenos">5484</span></a> <span class="p">)</span> +</span><span id="L-5472"><a href="#L-5472"><span class="linenos">5472</span></a> <span class="k">def</span> <span class="nf">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5473"><a href="#L-5473"><span class="linenos">5473</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT"</span><span class="p">,</span> <span class="s2">"JSON"</span><span class="p">):</span> +</span><span id="L-5474"><a href="#L-5474"><span class="linenos">5474</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5475"><a href="#L-5475"><span class="linenos">5475</span></a> +</span><span id="L-5476"><a href="#L-5476"><span class="linenos">5476</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FormatJson</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5477"><a href="#L-5477"><span class="linenos">5477</span></a> +</span><span id="L-5478"><a href="#L-5478"><span class="linenos">5478</span></a> <span class="k">def</span> <span class="nf">_parse_on_handling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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="nb">str</span><span class="p">]:</span> +</span><span id="L-5479"><a href="#L-5479"><span class="linenos">5479</span></a> <span class="c1"># Parses the "X ON Y" syntax, i.e. NULL ON NULL (Oracle, T-SQL)</span> +</span><span id="L-5480"><a href="#L-5480"><span class="linenos">5480</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span> +</span><span id="L-5481"><a href="#L-5481"><span class="linenos">5481</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="n">on</span><span class="p">):</span> +</span><span id="L-5482"><a href="#L-5482"><span class="linenos">5482</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-5483"><a href="#L-5483"><span class="linenos">5483</span></a> +</span><span id="L-5484"><a href="#L-5484"><span class="linenos">5484</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-5485"><a href="#L-5485"><span class="linenos">5485</span></a> -</span><span id="L-5486"><a href="#L-5486"><span class="linenos">5486</span></a> <span class="c1"># Note: this is currently incomplete; it only implements the "JSON_value_column" part</span> -</span><span id="L-5487"><a href="#L-5487"><span class="linenos">5487</span></a> <span class="k">def</span> <span class="nf">_parse_json_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">:</span> -</span><span id="L-5488"><a href="#L-5488"><span class="linenos">5488</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NESTED"</span><span class="p">):</span> -</span><span id="L-5489"><a href="#L-5489"><span class="linenos">5489</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-5490"><a href="#L-5490"><span class="linenos">5490</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-5491"><a href="#L-5491"><span class="linenos">5491</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5492"><a href="#L-5492"><span class="linenos">5492</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5493"><a href="#L-5493"><span class="linenos">5493</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5494"><a href="#L-5494"><span class="linenos">5494</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5495"><a href="#L-5495"><span class="linenos">5495</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-5496"><a href="#L-5496"><span class="linenos">5496</span></a> -</span><span id="L-5497"><a href="#L-5497"><span class="linenos">5497</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATH"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-5498"><a href="#L-5498"><span class="linenos">5498</span></a> <span class="n">nested_schema</span> <span class="o">=</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> -</span><span id="L-5499"><a href="#L-5499"><span class="linenos">5499</span></a> -</span><span id="L-5500"><a href="#L-5500"><span class="linenos">5500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5501"><a href="#L-5501"><span class="linenos">5501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">,</span> -</span><span id="L-5502"><a href="#L-5502"><span class="linenos">5502</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5503"><a href="#L-5503"><span class="linenos">5503</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-5504"><a href="#L-5504"><span class="linenos">5504</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-5505"><a href="#L-5505"><span class="linenos">5505</span></a> <span class="n">nested_schema</span><span class="o">=</span><span class="n">nested_schema</span><span class="p">,</span> -</span><span id="L-5506"><a href="#L-5506"><span class="linenos">5506</span></a> <span class="p">)</span> -</span><span id="L-5507"><a href="#L-5507"><span class="linenos">5507</span></a> -</span><span id="L-5508"><a href="#L-5508"><span class="linenos">5508</span></a> <span class="k">def</span> <span class="nf">_parse_json_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">:</span> -</span><span id="L-5509"><a href="#L-5509"><span class="linenos">5509</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLUMNS"</span><span class="p">)</span> -</span><span id="L-5510"><a href="#L-5510"><span class="linenos">5510</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5511"><a href="#L-5511"><span class="linenos">5511</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">,</span> -</span><span id="L-5512"><a href="#L-5512"><span class="linenos">5512</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_column_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-5513"><a href="#L-5513"><span class="linenos">5513</span></a> <span class="p">)</span> -</span><span id="L-5514"><a href="#L-5514"><span class="linenos">5514</span></a> -</span><span id="L-5515"><a href="#L-5515"><span class="linenos">5515</span></a> <span class="k">def</span> <span class="nf">_parse_json_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">:</span> -</span><span id="L-5516"><a href="#L-5516"><span class="linenos">5516</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-5517"><a href="#L-5517"><span class="linenos">5517</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-5518"><a href="#L-5518"><span class="linenos">5518</span></a> <span class="n">error_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> -</span><span id="L-5519"><a href="#L-5519"><span class="linenos">5519</span></a> <span class="n">empty_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> -</span><span id="L-5520"><a href="#L-5520"><span class="linenos">5520</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> -</span><span id="L-5521"><a href="#L-5521"><span class="linenos">5521</span></a> -</span><span id="L-5522"><a href="#L-5522"><span class="linenos">5522</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">(</span> -</span><span id="L-5523"><a href="#L-5523"><span class="linenos">5523</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5524"><a href="#L-5524"><span class="linenos">5524</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> -</span><span id="L-5525"><a href="#L-5525"><span class="linenos">5525</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-5526"><a href="#L-5526"><span class="linenos">5526</span></a> <span class="n">error_handling</span><span class="o">=</span><span class="n">error_handling</span><span class="p">,</span> -</span><span id="L-5527"><a href="#L-5527"><span class="linenos">5527</span></a> <span class="n">empty_handling</span><span class="o">=</span><span class="n">empty_handling</span><span class="p">,</span> -</span><span id="L-5528"><a href="#L-5528"><span class="linenos">5528</span></a> <span class="p">)</span> -</span><span id="L-5529"><a href="#L-5529"><span class="linenos">5529</span></a> -</span><span id="L-5530"><a href="#L-5530"><span class="linenos">5530</span></a> <span class="k">def</span> <span class="nf">_parse_match_against</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">:</span> -</span><span id="L-5531"><a href="#L-5531"><span class="linenos">5531</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-5532"><a href="#L-5532"><span class="linenos">5532</span></a> -</span><span id="L-5533"><a href="#L-5533"><span class="linenos">5533</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">")"</span><span class="p">,</span> <span class="s2">"AGAINST"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">)</span> -</span><span id="L-5534"><a href="#L-5534"><span class="linenos">5534</span></a> -</span><span id="L-5535"><a href="#L-5535"><span class="linenos">5535</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5486"><a href="#L-5486"><span class="linenos">5486</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-5487"><a href="#L-5487"><span class="linenos">5487</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-5488"><a href="#L-5488"><span class="linenos">5488</span></a> +</span><span id="L-5489"><a href="#L-5489"><span class="linenos">5489</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-5490"><a href="#L-5490"><span class="linenos">5490</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span><span class="p">:</span> <span class="o">...</span> +</span><span id="L-5491"><a href="#L-5491"><span class="linenos">5491</span></a> +</span><span id="L-5492"><a href="#L-5492"><span class="linenos">5492</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-5493"><a href="#L-5493"><span class="linenos">5493</span></a> <span class="n">star</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="L-5494"><a href="#L-5494"><span class="linenos">5494</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-5495"><a href="#L-5495"><span class="linenos">5495</span></a> <span class="p">[</span><span class="n">star</span><span class="p">]</span> +</span><span id="L-5496"><a href="#L-5496"><span class="linenos">5496</span></a> <span class="k">if</span> <span class="n">star</span> +</span><span id="L-5497"><a href="#L-5497"><span class="linenos">5497</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_key_value</span><span class="p">()))</span> +</span><span id="L-5498"><a href="#L-5498"><span class="linenos">5498</span></a> <span class="p">)</span> +</span><span id="L-5499"><a href="#L-5499"><span class="linenos">5499</span></a> <span class="n">null_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ABSENT"</span><span class="p">)</span> +</span><span id="L-5500"><a href="#L-5500"><span class="linenos">5500</span></a> +</span><span id="L-5501"><a href="#L-5501"><span class="linenos">5501</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5502"><a href="#L-5502"><span class="linenos">5502</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> +</span><span id="L-5503"><a href="#L-5503"><span class="linenos">5503</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5504"><a href="#L-5504"><span class="linenos">5504</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> +</span><span id="L-5505"><a href="#L-5505"><span class="linenos">5505</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-5506"><a href="#L-5506"><span class="linenos">5506</span></a> +</span><span id="L-5507"><a href="#L-5507"><span class="linenos">5507</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEYS"</span><span class="p">)</span> +</span><span id="L-5508"><a href="#L-5508"><span class="linenos">5508</span></a> +</span><span id="L-5509"><a href="#L-5509"><span class="linenos">5509</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURNING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span> +</span><span id="L-5510"><a href="#L-5510"><span class="linenos">5510</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="L-5511"><a href="#L-5511"><span class="linenos">5511</span></a> <span class="p">)</span> +</span><span id="L-5512"><a href="#L-5512"><span class="linenos">5512</span></a> <span class="n">encoding</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCODING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="L-5513"><a href="#L-5513"><span class="linenos">5513</span></a> +</span><span id="L-5514"><a href="#L-5514"><span class="linenos">5514</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5515"><a href="#L-5515"><span class="linenos">5515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span> <span class="k">if</span> <span class="n">agg</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">,</span> +</span><span id="L-5516"><a href="#L-5516"><span class="linenos">5516</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-5517"><a href="#L-5517"><span class="linenos">5517</span></a> <span class="n">null_handling</span><span class="o">=</span><span class="n">null_handling</span><span class="p">,</span> +</span><span id="L-5518"><a href="#L-5518"><span class="linenos">5518</span></a> <span class="n">unique_keys</span><span class="o">=</span><span class="n">unique_keys</span><span class="p">,</span> +</span><span id="L-5519"><a href="#L-5519"><span class="linenos">5519</span></a> <span class="n">return_type</span><span class="o">=</span><span class="n">return_type</span><span class="p">,</span> +</span><span id="L-5520"><a href="#L-5520"><span class="linenos">5520</span></a> <span class="n">encoding</span><span class="o">=</span><span class="n">encoding</span><span class="p">,</span> +</span><span id="L-5521"><a href="#L-5521"><span class="linenos">5521</span></a> <span class="p">)</span> +</span><span id="L-5522"><a href="#L-5522"><span class="linenos">5522</span></a> +</span><span id="L-5523"><a href="#L-5523"><span class="linenos">5523</span></a> <span class="c1"># Note: this is currently incomplete; it only implements the "JSON_value_column" part</span> +</span><span id="L-5524"><a href="#L-5524"><span class="linenos">5524</span></a> <span class="k">def</span> <span class="nf">_parse_json_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">:</span> +</span><span id="L-5525"><a href="#L-5525"><span class="linenos">5525</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NESTED"</span><span class="p">):</span> +</span><span id="L-5526"><a href="#L-5526"><span class="linenos">5526</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-5527"><a href="#L-5527"><span class="linenos">5527</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-5528"><a href="#L-5528"><span class="linenos">5528</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5529"><a href="#L-5529"><span class="linenos">5529</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5530"><a href="#L-5530"><span class="linenos">5530</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5531"><a href="#L-5531"><span class="linenos">5531</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5532"><a href="#L-5532"><span class="linenos">5532</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-5533"><a href="#L-5533"><span class="linenos">5533</span></a> +</span><span id="L-5534"><a href="#L-5534"><span class="linenos">5534</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATH"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5535"><a href="#L-5535"><span class="linenos">5535</span></a> <span class="n">nested_schema</span> <span class="o">=</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> </span><span id="L-5536"><a href="#L-5536"><span class="linenos">5536</span></a> -</span><span id="L-5537"><a href="#L-5537"><span class="linenos">5537</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"NATURAL"</span><span class="p">,</span> <span class="s2">"LANGUAGE"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> -</span><span id="L-5538"><a href="#L-5538"><span class="linenos">5538</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN NATURAL LANGUAGE MODE"</span> -</span><span id="L-5539"><a href="#L-5539"><span class="linenos">5539</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> -</span><span id="L-5540"><a href="#L-5540"><span class="linenos">5540</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">modifier</span><span class="si">}</span><span class="s2"> WITH QUERY EXPANSION"</span> -</span><span id="L-5541"><a href="#L-5541"><span class="linenos">5541</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"BOOLEAN"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> -</span><span id="L-5542"><a href="#L-5542"><span class="linenos">5542</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN BOOLEAN MODE"</span> -</span><span id="L-5543"><a href="#L-5543"><span class="linenos">5543</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> -</span><span id="L-5544"><a href="#L-5544"><span class="linenos">5544</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"WITH QUERY EXPANSION"</span> -</span><span id="L-5545"><a href="#L-5545"><span class="linenos">5545</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5546"><a href="#L-5546"><span class="linenos">5546</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5547"><a href="#L-5547"><span class="linenos">5547</span></a> -</span><span id="L-5548"><a href="#L-5548"><span class="linenos">5548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5549"><a href="#L-5549"><span class="linenos">5549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">modifier</span><span class="o">=</span><span class="n">modifier</span> +</span><span id="L-5537"><a href="#L-5537"><span class="linenos">5537</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5538"><a href="#L-5538"><span class="linenos">5538</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">,</span> +</span><span id="L-5539"><a href="#L-5539"><span class="linenos">5539</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5540"><a href="#L-5540"><span class="linenos">5540</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-5541"><a href="#L-5541"><span class="linenos">5541</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-5542"><a href="#L-5542"><span class="linenos">5542</span></a> <span class="n">nested_schema</span><span class="o">=</span><span class="n">nested_schema</span><span class="p">,</span> +</span><span id="L-5543"><a href="#L-5543"><span class="linenos">5543</span></a> <span class="p">)</span> +</span><span id="L-5544"><a href="#L-5544"><span class="linenos">5544</span></a> +</span><span id="L-5545"><a href="#L-5545"><span class="linenos">5545</span></a> <span class="k">def</span> <span class="nf">_parse_json_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">:</span> +</span><span id="L-5546"><a href="#L-5546"><span class="linenos">5546</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLUMNS"</span><span class="p">)</span> +</span><span id="L-5547"><a href="#L-5547"><span class="linenos">5547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5548"><a href="#L-5548"><span class="linenos">5548</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">,</span> +</span><span id="L-5549"><a href="#L-5549"><span class="linenos">5549</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_column_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> </span><span id="L-5550"><a href="#L-5550"><span class="linenos">5550</span></a> <span class="p">)</span> </span><span id="L-5551"><a href="#L-5551"><span class="linenos">5551</span></a> -</span><span id="L-5552"><a href="#L-5552"><span class="linenos">5552</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-ver16</span> -</span><span id="L-5553"><a href="#L-5553"><span class="linenos">5553</span></a> <span class="k">def</span> <span class="nf">_parse_open_json</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">:</span> -</span><span id="L-5554"><a href="#L-5554"><span class="linenos">5554</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-5555"><a href="#L-5555"><span class="linenos">5555</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-5556"><a href="#L-5556"><span class="linenos">5556</span></a> -</span><span id="L-5557"><a href="#L-5557"><span class="linenos">5557</span></a> <span class="k">def</span> <span class="nf">_parse_open_json_column_def</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">:</span> -</span><span id="L-5558"><a href="#L-5558"><span class="linenos">5558</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5559"><a href="#L-5559"><span class="linenos">5559</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-5560"><a href="#L-5560"><span class="linenos">5560</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-5561"><a href="#L-5561"><span class="linenos">5561</span></a> <span class="n">as_json</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">)</span> -</span><span id="L-5562"><a href="#L-5562"><span class="linenos">5562</span></a> -</span><span id="L-5563"><a href="#L-5563"><span class="linenos">5563</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5564"><a href="#L-5564"><span class="linenos">5564</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="n">as_json</span> -</span><span id="L-5565"><a href="#L-5565"><span class="linenos">5565</span></a> <span class="p">)</span> +</span><span id="L-5552"><a href="#L-5552"><span class="linenos">5552</span></a> <span class="k">def</span> <span class="nf">_parse_json_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">:</span> +</span><span id="L-5553"><a href="#L-5553"><span class="linenos">5553</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5554"><a href="#L-5554"><span class="linenos">5554</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5555"><a href="#L-5555"><span class="linenos">5555</span></a> <span class="n">error_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> +</span><span id="L-5556"><a href="#L-5556"><span class="linenos">5556</span></a> <span class="n">empty_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> +</span><span id="L-5557"><a href="#L-5557"><span class="linenos">5557</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> +</span><span id="L-5558"><a href="#L-5558"><span class="linenos">5558</span></a> +</span><span id="L-5559"><a href="#L-5559"><span class="linenos">5559</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">(</span> +</span><span id="L-5560"><a href="#L-5560"><span class="linenos">5560</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5561"><a href="#L-5561"><span class="linenos">5561</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> +</span><span id="L-5562"><a href="#L-5562"><span class="linenos">5562</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-5563"><a href="#L-5563"><span class="linenos">5563</span></a> <span class="n">error_handling</span><span class="o">=</span><span class="n">error_handling</span><span class="p">,</span> +</span><span id="L-5564"><a href="#L-5564"><span class="linenos">5564</span></a> <span class="n">empty_handling</span><span class="o">=</span><span class="n">empty_handling</span><span class="p">,</span> +</span><span id="L-5565"><a href="#L-5565"><span class="linenos">5565</span></a> <span class="p">)</span> </span><span id="L-5566"><a href="#L-5566"><span class="linenos">5566</span></a> -</span><span id="L-5567"><a href="#L-5567"><span class="linenos">5567</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5568"><a href="#L-5568"><span class="linenos">5568</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-5569"><a href="#L-5569"><span class="linenos">5569</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-5570"><a href="#L-5570"><span class="linenos">5570</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_open_json_column_def</span><span class="p">)</span> +</span><span id="L-5567"><a href="#L-5567"><span class="linenos">5567</span></a> <span class="k">def</span> <span class="nf">_parse_match_against</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">:</span> +</span><span id="L-5568"><a href="#L-5568"><span class="linenos">5568</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-5569"><a href="#L-5569"><span class="linenos">5569</span></a> +</span><span id="L-5570"><a href="#L-5570"><span class="linenos">5570</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">")"</span><span class="p">,</span> <span class="s2">"AGAINST"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">)</span> </span><span id="L-5571"><a href="#L-5571"><span class="linenos">5571</span></a> -</span><span id="L-5572"><a href="#L-5572"><span class="linenos">5572</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-5572"><a href="#L-5572"><span class="linenos">5572</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> </span><span id="L-5573"><a href="#L-5573"><span class="linenos">5573</span></a> -</span><span id="L-5574"><a href="#L-5574"><span class="linenos">5574</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> -</span><span id="L-5575"><a href="#L-5575"><span class="linenos">5575</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-5576"><a href="#L-5576"><span class="linenos">5576</span></a> -</span><span id="L-5577"><a href="#L-5577"><span class="linenos">5577</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-5578"><a href="#L-5578"><span class="linenos">5578</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5579"><a href="#L-5579"><span class="linenos">5579</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-5580"><a href="#L-5580"><span class="linenos">5580</span></a> <span class="p">)</span> -</span><span id="L-5581"><a href="#L-5581"><span class="linenos">5581</span></a> -</span><span id="L-5582"><a href="#L-5582"><span class="linenos">5582</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> -</span><span id="L-5583"><a href="#L-5583"><span class="linenos">5583</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-5584"><a href="#L-5584"><span class="linenos">5584</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-5585"><a href="#L-5585"><span class="linenos">5585</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5586"><a href="#L-5586"><span class="linenos">5586</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-5587"><a href="#L-5587"><span class="linenos">5587</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-5574"><a href="#L-5574"><span class="linenos">5574</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"NATURAL"</span><span class="p">,</span> <span class="s2">"LANGUAGE"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> +</span><span id="L-5575"><a href="#L-5575"><span class="linenos">5575</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN NATURAL LANGUAGE MODE"</span> +</span><span id="L-5576"><a href="#L-5576"><span class="linenos">5576</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> +</span><span id="L-5577"><a href="#L-5577"><span class="linenos">5577</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">modifier</span><span class="si">}</span><span class="s2"> WITH QUERY EXPANSION"</span> +</span><span id="L-5578"><a href="#L-5578"><span class="linenos">5578</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"BOOLEAN"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> +</span><span id="L-5579"><a href="#L-5579"><span class="linenos">5579</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN BOOLEAN MODE"</span> +</span><span id="L-5580"><a href="#L-5580"><span class="linenos">5580</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> +</span><span id="L-5581"><a href="#L-5581"><span class="linenos">5581</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"WITH QUERY EXPANSION"</span> +</span><span id="L-5582"><a href="#L-5582"><span class="linenos">5582</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5583"><a href="#L-5583"><span class="linenos">5583</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5584"><a href="#L-5584"><span class="linenos">5584</span></a> +</span><span id="L-5585"><a href="#L-5585"><span class="linenos">5585</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5586"><a href="#L-5586"><span class="linenos">5586</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">modifier</span><span class="o">=</span><span class="n">modifier</span> +</span><span id="L-5587"><a href="#L-5587"><span class="linenos">5587</span></a> <span class="p">)</span> </span><span id="L-5588"><a href="#L-5588"><span class="linenos">5588</span></a> -</span><span id="L-5589"><a href="#L-5589"><span class="linenos">5589</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5590"><a href="#L-5590"><span class="linenos">5590</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="L-5591"><a href="#L-5591"><span class="linenos">5591</span></a> <span class="p">)</span> -</span><span id="L-5592"><a href="#L-5592"><span class="linenos">5592</span></a> -</span><span id="L-5593"><a href="#L-5593"><span class="linenos">5593</span></a> <span class="k">def</span> <span class="nf">_parse_predict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">:</span> -</span><span id="L-5594"><a href="#L-5594"><span class="linenos">5594</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MODEL"</span><span class="p">)</span> -</span><span id="L-5595"><a href="#L-5595"><span class="linenos">5595</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-5596"><a href="#L-5596"><span class="linenos">5596</span></a> -</span><span id="L-5597"><a href="#L-5597"><span class="linenos">5597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-5598"><a href="#L-5598"><span class="linenos">5598</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">)</span> +</span><span id="L-5589"><a href="#L-5589"><span class="linenos">5589</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-ver16</span> +</span><span id="L-5590"><a href="#L-5590"><span class="linenos">5590</span></a> <span class="k">def</span> <span class="nf">_parse_open_json</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">:</span> +</span><span id="L-5591"><a href="#L-5591"><span class="linenos">5591</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5592"><a href="#L-5592"><span class="linenos">5592</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5593"><a href="#L-5593"><span class="linenos">5593</span></a> +</span><span id="L-5594"><a href="#L-5594"><span class="linenos">5594</span></a> <span class="k">def</span> <span class="nf">_parse_open_json_column_def</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">:</span> +</span><span id="L-5595"><a href="#L-5595"><span class="linenos">5595</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5596"><a href="#L-5596"><span class="linenos">5596</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-5597"><a href="#L-5597"><span class="linenos">5597</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5598"><a href="#L-5598"><span class="linenos">5598</span></a> <span class="n">as_json</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">)</span> </span><span id="L-5599"><a href="#L-5599"><span class="linenos">5599</span></a> -</span><span id="L-5600"><a href="#L-5600"><span class="linenos">5600</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5601"><a href="#L-5601"><span class="linenos">5601</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">,</span> -</span><span id="L-5602"><a href="#L-5602"><span class="linenos">5602</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5603"><a href="#L-5603"><span class="linenos">5603</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(),</span> -</span><span id="L-5604"><a href="#L-5604"><span class="linenos">5604</span></a> <span class="n">params_struct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="L-5605"><a href="#L-5605"><span class="linenos">5605</span></a> <span class="p">)</span> -</span><span id="L-5606"><a href="#L-5606"><span class="linenos">5606</span></a> -</span><span id="L-5607"><a href="#L-5607"><span class="linenos">5607</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">:</span> -</span><span id="L-5608"><a href="#L-5608"><span class="linenos">5608</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="L-5609"><a href="#L-5609"><span class="linenos">5609</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-5600"><a href="#L-5600"><span class="linenos">5600</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5601"><a href="#L-5601"><span class="linenos">5601</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="n">as_json</span> +</span><span id="L-5602"><a href="#L-5602"><span class="linenos">5602</span></a> <span class="p">)</span> +</span><span id="L-5603"><a href="#L-5603"><span class="linenos">5603</span></a> +</span><span id="L-5604"><a href="#L-5604"><span class="linenos">5604</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5605"><a href="#L-5605"><span class="linenos">5605</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-5606"><a href="#L-5606"><span class="linenos">5606</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-5607"><a href="#L-5607"><span class="linenos">5607</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_open_json_column_def</span><span class="p">)</span> +</span><span id="L-5608"><a href="#L-5608"><span class="linenos">5608</span></a> +</span><span id="L-5609"><a href="#L-5609"><span class="linenos">5609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="L-5610"><a href="#L-5610"><span class="linenos">5610</span></a> -</span><span id="L-5611"><a href="#L-5611"><span class="linenos">5611</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> -</span><span id="L-5612"><a href="#L-5612"><span class="linenos">5612</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> -</span><span id="L-5613"><a href="#L-5613"><span class="linenos">5613</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> -</span><span id="L-5614"><a href="#L-5614"><span class="linenos">5614</span></a> -</span><span id="L-5615"><a href="#L-5615"><span class="linenos">5615</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">))</span> -</span><span id="L-5616"><a href="#L-5616"><span class="linenos">5616</span></a> -</span><span id="L-5617"><a href="#L-5617"><span class="linenos">5617</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-5618"><a href="#L-5618"><span class="linenos">5618</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-5619"><a href="#L-5619"><span class="linenos">5619</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-5620"><a href="#L-5620"><span class="linenos">5620</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-5621"><a href="#L-5621"><span class="linenos">5621</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> -</span><span id="L-5622"><a href="#L-5622"><span class="linenos">5622</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-5623"><a href="#L-5623"><span class="linenos">5623</span></a> -</span><span id="L-5624"><a href="#L-5624"><span class="linenos">5624</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-5611"><a href="#L-5611"><span class="linenos">5611</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> +</span><span id="L-5612"><a href="#L-5612"><span class="linenos">5612</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-5613"><a href="#L-5613"><span class="linenos">5613</span></a> +</span><span id="L-5614"><a href="#L-5614"><span class="linenos">5614</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-5615"><a href="#L-5615"><span class="linenos">5615</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5616"><a href="#L-5616"><span class="linenos">5616</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-5617"><a href="#L-5617"><span class="linenos">5617</span></a> <span class="p">)</span> +</span><span id="L-5618"><a href="#L-5618"><span class="linenos">5618</span></a> +</span><span id="L-5619"><a href="#L-5619"><span class="linenos">5619</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> +</span><span id="L-5620"><a href="#L-5620"><span class="linenos">5620</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-5621"><a href="#L-5621"><span class="linenos">5621</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-5622"><a href="#L-5622"><span class="linenos">5622</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5623"><a href="#L-5623"><span class="linenos">5623</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-5624"><a href="#L-5624"><span class="linenos">5624</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-5625"><a href="#L-5625"><span class="linenos">5625</span></a> -</span><span id="L-5626"><a href="#L-5626"><span class="linenos">5626</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> -</span><span id="L-5627"><a href="#L-5627"><span class="linenos">5627</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> -</span><span id="L-5628"><a href="#L-5628"><span class="linenos">5628</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> +</span><span id="L-5626"><a href="#L-5626"><span class="linenos">5626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5627"><a href="#L-5627"><span class="linenos">5627</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-5628"><a href="#L-5628"><span class="linenos">5628</span></a> <span class="p">)</span> </span><span id="L-5629"><a href="#L-5629"><span class="linenos">5629</span></a> -</span><span id="L-5630"><a href="#L-5630"><span class="linenos">5630</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5631"><a href="#L-5631"><span class="linenos">5631</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5632"><a href="#L-5632"><span class="linenos">5632</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5630"><a href="#L-5630"><span class="linenos">5630</span></a> <span class="k">def</span> <span class="nf">_parse_predict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">:</span> +</span><span id="L-5631"><a href="#L-5631"><span class="linenos">5631</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MODEL"</span><span class="p">)</span> +</span><span id="L-5632"><a href="#L-5632"><span class="linenos">5632</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> </span><span id="L-5633"><a href="#L-5633"><span class="linenos">5633</span></a> -</span><span id="L-5634"><a href="#L-5634"><span class="linenos">5634</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> -</span><span id="L-5635"><a href="#L-5635"><span class="linenos">5635</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5634"><a href="#L-5634"><span class="linenos">5634</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-5635"><a href="#L-5635"><span class="linenos">5635</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">)</span> </span><span id="L-5636"><a href="#L-5636"><span class="linenos">5636</span></a> -</span><span id="L-5637"><a href="#L-5637"><span class="linenos">5637</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-5638"><a href="#L-5638"><span class="linenos">5638</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> -</span><span id="L-5639"><a href="#L-5639"><span class="linenos">5639</span></a> <span class="n">invert_order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRIM_PATTERN_FIRST</span> -</span><span id="L-5640"><a href="#L-5640"><span class="linenos">5640</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-5641"><a href="#L-5641"><span class="linenos">5641</span></a> -</span><span id="L-5642"><a href="#L-5642"><span class="linenos">5642</span></a> <span class="k">if</span> <span class="n">invert_order</span><span class="p">:</span> -</span><span id="L-5643"><a href="#L-5643"><span class="linenos">5643</span></a> <span class="n">this</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="p">,</span> <span class="n">this</span> -</span><span id="L-5644"><a href="#L-5644"><span class="linenos">5644</span></a> -</span><span id="L-5645"><a href="#L-5645"><span class="linenos">5645</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> -</span><span id="L-5646"><a href="#L-5646"><span class="linenos">5646</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5637"><a href="#L-5637"><span class="linenos">5637</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5638"><a href="#L-5638"><span class="linenos">5638</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">,</span> +</span><span id="L-5639"><a href="#L-5639"><span class="linenos">5639</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5640"><a href="#L-5640"><span class="linenos">5640</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(),</span> +</span><span id="L-5641"><a href="#L-5641"><span class="linenos">5641</span></a> <span class="n">params_struct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="L-5642"><a href="#L-5642"><span class="linenos">5642</span></a> <span class="p">)</span> +</span><span id="L-5643"><a href="#L-5643"><span class="linenos">5643</span></a> +</span><span id="L-5644"><a href="#L-5644"><span class="linenos">5644</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">:</span> +</span><span id="L-5645"><a href="#L-5645"><span class="linenos">5645</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="L-5646"><a href="#L-5646"><span class="linenos">5646</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> </span><span id="L-5647"><a href="#L-5647"><span class="linenos">5647</span></a> -</span><span id="L-5648"><a href="#L-5648"><span class="linenos">5648</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5649"><a href="#L-5649"><span class="linenos">5649</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span> -</span><span id="L-5650"><a href="#L-5650"><span class="linenos">5650</span></a> <span class="p">)</span> +</span><span id="L-5648"><a href="#L-5648"><span class="linenos">5648</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> +</span><span id="L-5649"><a href="#L-5649"><span class="linenos">5649</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> +</span><span id="L-5650"><a href="#L-5650"><span class="linenos">5650</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> </span><span id="L-5651"><a href="#L-5651"><span class="linenos">5651</span></a> -</span><span id="L-5652"><a href="#L-5652"><span class="linenos">5652</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-5653"><a href="#L-5653"><span class="linenos">5653</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> -</span><span id="L-5654"><a href="#L-5654"><span class="linenos">5654</span></a> -</span><span id="L-5655"><a href="#L-5655"><span class="linenos">5655</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5656"><a href="#L-5656"><span class="linenos">5656</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5657"><a href="#L-5657"><span class="linenos">5657</span></a> -</span><span id="L-5658"><a href="#L-5658"><span class="linenos">5658</span></a> <span class="k">def</span> <span class="nf">_parse_respect_or_ignore_nulls</span><span class="p">(</span> -</span><span id="L-5659"><a href="#L-5659"><span class="linenos">5659</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-5660"><a href="#L-5660"><span class="linenos">5660</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5661"><a href="#L-5661"><span class="linenos">5661</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="L-5662"><a href="#L-5662"><span class="linenos">5662</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5663"><a href="#L-5663"><span class="linenos">5663</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESPECT"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="L-5664"><a href="#L-5664"><span class="linenos">5664</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5665"><a href="#L-5665"><span class="linenos">5665</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5652"><a href="#L-5652"><span class="linenos">5652</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">))</span> +</span><span id="L-5653"><a href="#L-5653"><span class="linenos">5653</span></a> +</span><span id="L-5654"><a href="#L-5654"><span class="linenos">5654</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-5655"><a href="#L-5655"><span class="linenos">5655</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5656"><a href="#L-5656"><span class="linenos">5656</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-5657"><a href="#L-5657"><span class="linenos">5657</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-5658"><a href="#L-5658"><span class="linenos">5658</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> +</span><span id="L-5659"><a href="#L-5659"><span class="linenos">5659</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-5660"><a href="#L-5660"><span class="linenos">5660</span></a> +</span><span id="L-5661"><a href="#L-5661"><span class="linenos">5661</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-5662"><a href="#L-5662"><span class="linenos">5662</span></a> +</span><span id="L-5663"><a href="#L-5663"><span class="linenos">5663</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> +</span><span id="L-5664"><a href="#L-5664"><span class="linenos">5664</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> +</span><span id="L-5665"><a href="#L-5665"><span class="linenos">5665</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> </span><span id="L-5666"><a href="#L-5666"><span class="linenos">5666</span></a> -</span><span id="L-5667"><a href="#L-5667"><span class="linenos">5667</span></a> <span class="k">def</span> <span class="nf">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5668"><a href="#L-5668"><span class="linenos">5668</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> -</span><span id="L-5669"><a href="#L-5669"><span class="linenos">5669</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MIN"</span><span class="p">))</span> -</span><span id="L-5670"><a href="#L-5670"><span class="linenos">5670</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"MIN"</span> -</span><span id="L-5671"><a href="#L-5671"><span class="linenos">5671</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5672"><a href="#L-5672"><span class="linenos">5672</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">HavingMax</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span> -</span><span id="L-5673"><a href="#L-5673"><span class="linenos">5673</span></a> <span class="p">)</span> -</span><span id="L-5674"><a href="#L-5674"><span class="linenos">5674</span></a> -</span><span id="L-5675"><a href="#L-5675"><span class="linenos">5675</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5676"><a href="#L-5676"><span class="linenos">5676</span></a> -</span><span id="L-5677"><a href="#L-5677"><span class="linenos">5677</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> -</span><span id="L-5678"><a href="#L-5678"><span class="linenos">5678</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-5679"><a href="#L-5679"><span class="linenos">5679</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5680"><a href="#L-5680"><span class="linenos">5680</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">this</span> -</span><span id="L-5681"><a href="#L-5681"><span class="linenos">5681</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-5682"><a href="#L-5682"><span class="linenos">5682</span></a> -</span><span id="L-5683"><a href="#L-5683"><span class="linenos">5683</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-5684"><a href="#L-5684"><span class="linenos">5684</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> -</span><span id="L-5685"><a href="#L-5685"><span class="linenos">5685</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5686"><a href="#L-5686"><span class="linenos">5686</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(</span><span class="n">skip_where_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5687"><a href="#L-5687"><span class="linenos">5687</span></a> <span class="p">)</span> -</span><span id="L-5688"><a href="#L-5688"><span class="linenos">5688</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-5689"><a href="#L-5689"><span class="linenos">5689</span></a> -</span><span id="L-5690"><a href="#L-5690"><span class="linenos">5690</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> -</span><span id="L-5691"><a href="#L-5691"><span class="linenos">5691</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> -</span><span id="L-5692"><a href="#L-5692"><span class="linenos">5692</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> -</span><span id="L-5693"><a href="#L-5693"><span class="linenos">5693</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> -</span><span id="L-5694"><a href="#L-5694"><span class="linenos">5694</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> -</span><span id="L-5695"><a href="#L-5695"><span class="linenos">5695</span></a> -</span><span id="L-5696"><a href="#L-5696"><span class="linenos">5696</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> -</span><span id="L-5697"><a href="#L-5697"><span class="linenos">5697</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> -</span><span id="L-5698"><a href="#L-5698"><span class="linenos">5698</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> -</span><span id="L-5699"><a href="#L-5699"><span class="linenos">5699</span></a> -</span><span id="L-5700"><a href="#L-5700"><span class="linenos">5700</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> -</span><span id="L-5701"><a href="#L-5701"><span class="linenos">5701</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> -</span><span id="L-5702"><a href="#L-5702"><span class="linenos">5702</span></a> -</span><span id="L-5703"><a href="#L-5703"><span class="linenos">5703</span></a> <span class="c1"># The below changes handle</span> -</span><span id="L-5704"><a href="#L-5704"><span class="linenos">5704</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> -</span><span id="L-5705"><a href="#L-5705"><span class="linenos">5705</span></a> -</span><span id="L-5706"><a href="#L-5706"><span class="linenos">5706</span></a> <span class="c1"># Oracle allows both formats</span> -</span><span id="L-5707"><a href="#L-5707"><span class="linenos">5707</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> -</span><span id="L-5708"><a href="#L-5708"><span class="linenos">5708</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> -</span><span id="L-5709"><a href="#L-5709"><span class="linenos">5709</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> -</span><span id="L-5710"><a href="#L-5710"><span class="linenos">5710</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-5711"><a href="#L-5711"><span class="linenos">5711</span></a> <span class="n">ignore_respect</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">)</span> -</span><span id="L-5712"><a href="#L-5712"><span class="linenos">5712</span></a> -</span><span id="L-5713"><a href="#L-5713"><span class="linenos">5713</span></a> <span class="k">if</span> <span class="n">ignore_respect</span> <span class="ow">and</span> <span class="n">ignore_respect</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-5714"><a href="#L-5714"><span class="linenos">5714</span></a> <span class="n">ignore_respect</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5715"><a href="#L-5715"><span class="linenos">5715</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5716"><a href="#L-5716"><span class="linenos">5716</span></a> -</span><span id="L-5717"><a href="#L-5717"><span class="linenos">5717</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5718"><a href="#L-5718"><span class="linenos">5718</span></a> -</span><span id="L-5719"><a href="#L-5719"><span class="linenos">5719</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> -</span><span id="L-5720"><a href="#L-5720"><span class="linenos">5720</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-5721"><a href="#L-5721"><span class="linenos">5721</span></a> <span class="n">over</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5722"><a href="#L-5722"><span class="linenos">5722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-5723"><a href="#L-5723"><span class="linenos">5723</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">):</span> -</span><span id="L-5724"><a href="#L-5724"><span class="linenos">5724</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5725"><a href="#L-5725"><span class="linenos">5725</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5726"><a href="#L-5726"><span class="linenos">5726</span></a> <span class="n">over</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-5727"><a href="#L-5727"><span class="linenos">5727</span></a> -</span><span id="L-5728"><a href="#L-5728"><span class="linenos">5728</span></a> <span class="k">if</span> <span class="n">comments</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-5729"><a href="#L-5729"><span class="linenos">5729</span></a> <span class="n">func</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> -</span><span id="L-5730"><a href="#L-5730"><span class="linenos">5730</span></a> -</span><span id="L-5731"><a href="#L-5731"><span class="linenos">5731</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-5732"><a href="#L-5732"><span class="linenos">5732</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5733"><a href="#L-5733"><span class="linenos">5733</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> -</span><span id="L-5734"><a href="#L-5734"><span class="linenos">5734</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-5735"><a href="#L-5735"><span class="linenos">5735</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5736"><a href="#L-5736"><span class="linenos">5736</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-5737"><a href="#L-5737"><span class="linenos">5737</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> -</span><span id="L-5738"><a href="#L-5738"><span class="linenos">5738</span></a> <span class="p">)</span> +</span><span id="L-5667"><a href="#L-5667"><span class="linenos">5667</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5668"><a href="#L-5668"><span class="linenos">5668</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5669"><a href="#L-5669"><span class="linenos">5669</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5670"><a href="#L-5670"><span class="linenos">5670</span></a> +</span><span id="L-5671"><a href="#L-5671"><span class="linenos">5671</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> +</span><span id="L-5672"><a href="#L-5672"><span class="linenos">5672</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5673"><a href="#L-5673"><span class="linenos">5673</span></a> +</span><span id="L-5674"><a href="#L-5674"><span class="linenos">5674</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5675"><a href="#L-5675"><span class="linenos">5675</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> +</span><span id="L-5676"><a href="#L-5676"><span class="linenos">5676</span></a> <span class="n">invert_order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRIM_PATTERN_FIRST</span> +</span><span id="L-5677"><a href="#L-5677"><span class="linenos">5677</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5678"><a href="#L-5678"><span class="linenos">5678</span></a> +</span><span id="L-5679"><a href="#L-5679"><span class="linenos">5679</span></a> <span class="k">if</span> <span class="n">invert_order</span><span class="p">:</span> +</span><span id="L-5680"><a href="#L-5680"><span class="linenos">5680</span></a> <span class="n">this</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="p">,</span> <span class="n">this</span> +</span><span id="L-5681"><a href="#L-5681"><span class="linenos">5681</span></a> +</span><span id="L-5682"><a href="#L-5682"><span class="linenos">5682</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> +</span><span id="L-5683"><a href="#L-5683"><span class="linenos">5683</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5684"><a href="#L-5684"><span class="linenos">5684</span></a> +</span><span id="L-5685"><a href="#L-5685"><span class="linenos">5685</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5686"><a href="#L-5686"><span class="linenos">5686</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span> +</span><span id="L-5687"><a href="#L-5687"><span class="linenos">5687</span></a> <span class="p">)</span> +</span><span id="L-5688"><a href="#L-5688"><span class="linenos">5688</span></a> +</span><span id="L-5689"><a href="#L-5689"><span class="linenos">5689</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-5690"><a href="#L-5690"><span class="linenos">5690</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> +</span><span id="L-5691"><a href="#L-5691"><span class="linenos">5691</span></a> +</span><span id="L-5692"><a href="#L-5692"><span class="linenos">5692</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5693"><a href="#L-5693"><span class="linenos">5693</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5694"><a href="#L-5694"><span class="linenos">5694</span></a> +</span><span id="L-5695"><a href="#L-5695"><span class="linenos">5695</span></a> <span class="k">def</span> <span class="nf">_parse_respect_or_ignore_nulls</span><span class="p">(</span> +</span><span id="L-5696"><a href="#L-5696"><span class="linenos">5696</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-5697"><a href="#L-5697"><span class="linenos">5697</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5698"><a href="#L-5698"><span class="linenos">5698</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="L-5699"><a href="#L-5699"><span class="linenos">5699</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5700"><a href="#L-5700"><span class="linenos">5700</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESPECT"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="L-5701"><a href="#L-5701"><span class="linenos">5701</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5702"><a href="#L-5702"><span class="linenos">5702</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5703"><a href="#L-5703"><span class="linenos">5703</span></a> +</span><span id="L-5704"><a href="#L-5704"><span class="linenos">5704</span></a> <span class="k">def</span> <span class="nf">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5705"><a href="#L-5705"><span class="linenos">5705</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> +</span><span id="L-5706"><a href="#L-5706"><span class="linenos">5706</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MIN"</span><span class="p">))</span> +</span><span id="L-5707"><a href="#L-5707"><span class="linenos">5707</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"MIN"</span> +</span><span id="L-5708"><a href="#L-5708"><span class="linenos">5708</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5709"><a href="#L-5709"><span class="linenos">5709</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">HavingMax</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span> +</span><span id="L-5710"><a href="#L-5710"><span class="linenos">5710</span></a> <span class="p">)</span> +</span><span id="L-5711"><a href="#L-5711"><span class="linenos">5711</span></a> +</span><span id="L-5712"><a href="#L-5712"><span class="linenos">5712</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5713"><a href="#L-5713"><span class="linenos">5713</span></a> +</span><span id="L-5714"><a href="#L-5714"><span class="linenos">5714</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> +</span><span id="L-5715"><a href="#L-5715"><span class="linenos">5715</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-5716"><a href="#L-5716"><span class="linenos">5716</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5717"><a href="#L-5717"><span class="linenos">5717</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">this</span> +</span><span id="L-5718"><a href="#L-5718"><span class="linenos">5718</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-5719"><a href="#L-5719"><span class="linenos">5719</span></a> +</span><span id="L-5720"><a href="#L-5720"><span class="linenos">5720</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-5721"><a href="#L-5721"><span class="linenos">5721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> +</span><span id="L-5722"><a href="#L-5722"><span class="linenos">5722</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5723"><a href="#L-5723"><span class="linenos">5723</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(</span><span class="n">skip_where_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5724"><a href="#L-5724"><span class="linenos">5724</span></a> <span class="p">)</span> +</span><span id="L-5725"><a href="#L-5725"><span class="linenos">5725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-5726"><a href="#L-5726"><span class="linenos">5726</span></a> +</span><span id="L-5727"><a href="#L-5727"><span class="linenos">5727</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> +</span><span id="L-5728"><a href="#L-5728"><span class="linenos">5728</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> +</span><span id="L-5729"><a href="#L-5729"><span class="linenos">5729</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> +</span><span id="L-5730"><a href="#L-5730"><span class="linenos">5730</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> +</span><span id="L-5731"><a href="#L-5731"><span class="linenos">5731</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> +</span><span id="L-5732"><a href="#L-5732"><span class="linenos">5732</span></a> +</span><span id="L-5733"><a href="#L-5733"><span class="linenos">5733</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> +</span><span id="L-5734"><a href="#L-5734"><span class="linenos">5734</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> +</span><span id="L-5735"><a href="#L-5735"><span class="linenos">5735</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> +</span><span id="L-5736"><a href="#L-5736"><span class="linenos">5736</span></a> +</span><span id="L-5737"><a href="#L-5737"><span class="linenos">5737</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> +</span><span id="L-5738"><a href="#L-5738"><span class="linenos">5738</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> </span><span id="L-5739"><a href="#L-5739"><span class="linenos">5739</span></a> -</span><span id="L-5740"><a href="#L-5740"><span class="linenos">5740</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-5741"><a href="#L-5741"><span class="linenos">5741</span></a> -</span><span id="L-5742"><a href="#L-5742"><span class="linenos">5742</span></a> <span class="n">first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">)</span> -</span><span id="L-5743"><a href="#L-5743"><span class="linenos">5743</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAST"</span><span class="p">):</span> -</span><span id="L-5744"><a href="#L-5744"><span class="linenos">5744</span></a> <span class="n">first</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-5745"><a href="#L-5745"><span class="linenos">5745</span></a> -</span><span id="L-5746"><a href="#L-5746"><span class="linenos">5746</span></a> <span class="n">partition</span><span class="p">,</span> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_and_order</span><span class="p">()</span> -</span><span id="L-5747"><a href="#L-5747"><span class="linenos">5747</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-5748"><a href="#L-5748"><span class="linenos">5748</span></a> -</span><span id="L-5749"><a href="#L-5749"><span class="linenos">5749</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-5750"><a href="#L-5750"><span class="linenos">5750</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> -</span><span id="L-5751"><a href="#L-5751"><span class="linenos">5751</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="L-5752"><a href="#L-5752"><span class="linenos">5752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="L-5753"><a href="#L-5753"><span class="linenos">5753</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="L-5754"><a href="#L-5754"><span class="linenos">5754</span></a> -</span><span id="L-5755"><a href="#L-5755"><span class="linenos">5755</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5756"><a href="#L-5756"><span class="linenos">5756</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> -</span><span id="L-5757"><a href="#L-5757"><span class="linenos">5757</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-5758"><a href="#L-5758"><span class="linenos">5758</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="L-5759"><a href="#L-5759"><span class="linenos">5759</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="L-5760"><a href="#L-5760"><span class="linenos">5760</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="L-5761"><a href="#L-5761"><span class="linenos">5761</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="L-5762"><a href="#L-5762"><span class="linenos">5762</span></a> <span class="p">)</span> -</span><span id="L-5763"><a href="#L-5763"><span class="linenos">5763</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-5764"><a href="#L-5764"><span class="linenos">5764</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5765"><a href="#L-5765"><span class="linenos">5765</span></a> -</span><span id="L-5766"><a href="#L-5766"><span class="linenos">5766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-5740"><a href="#L-5740"><span class="linenos">5740</span></a> <span class="c1"># The below changes handle</span> +</span><span id="L-5741"><a href="#L-5741"><span class="linenos">5741</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> +</span><span id="L-5742"><a href="#L-5742"><span class="linenos">5742</span></a> +</span><span id="L-5743"><a href="#L-5743"><span class="linenos">5743</span></a> <span class="c1"># Oracle allows both formats</span> +</span><span id="L-5744"><a href="#L-5744"><span class="linenos">5744</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> +</span><span id="L-5745"><a href="#L-5745"><span class="linenos">5745</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> +</span><span id="L-5746"><a href="#L-5746"><span class="linenos">5746</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> +</span><span id="L-5747"><a href="#L-5747"><span class="linenos">5747</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-5748"><a href="#L-5748"><span class="linenos">5748</span></a> <span class="n">ignore_respect</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">)</span> +</span><span id="L-5749"><a href="#L-5749"><span class="linenos">5749</span></a> +</span><span id="L-5750"><a href="#L-5750"><span class="linenos">5750</span></a> <span class="k">if</span> <span class="n">ignore_respect</span> <span class="ow">and</span> <span class="n">ignore_respect</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-5751"><a href="#L-5751"><span class="linenos">5751</span></a> <span class="n">ignore_respect</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5752"><a href="#L-5752"><span class="linenos">5752</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5753"><a href="#L-5753"><span class="linenos">5753</span></a> +</span><span id="L-5754"><a href="#L-5754"><span class="linenos">5754</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5755"><a href="#L-5755"><span class="linenos">5755</span></a> +</span><span id="L-5756"><a href="#L-5756"><span class="linenos">5756</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> +</span><span id="L-5757"><a href="#L-5757"><span class="linenos">5757</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-5758"><a href="#L-5758"><span class="linenos">5758</span></a> <span class="n">over</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-5759"><a href="#L-5759"><span class="linenos">5759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-5760"><a href="#L-5760"><span class="linenos">5760</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">):</span> +</span><span id="L-5761"><a href="#L-5761"><span class="linenos">5761</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5762"><a href="#L-5762"><span class="linenos">5762</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5763"><a href="#L-5763"><span class="linenos">5763</span></a> <span class="n">over</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-5764"><a href="#L-5764"><span class="linenos">5764</span></a> +</span><span id="L-5765"><a href="#L-5765"><span class="linenos">5765</span></a> <span class="k">if</span> <span class="n">comments</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-5766"><a href="#L-5766"><span class="linenos">5766</span></a> <span class="n">func</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> </span><span id="L-5767"><a href="#L-5767"><span class="linenos">5767</span></a> -</span><span id="L-5768"><a href="#L-5768"><span class="linenos">5768</span></a> <span class="n">window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5769"><a href="#L-5769"><span class="linenos">5769</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> -</span><span id="L-5770"><a href="#L-5770"><span class="linenos">5770</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-5771"><a href="#L-5771"><span class="linenos">5771</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5772"><a href="#L-5772"><span class="linenos">5772</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="L-5773"><a href="#L-5773"><span class="linenos">5773</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="L-5774"><a href="#L-5774"><span class="linenos">5774</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> -</span><span id="L-5775"><a href="#L-5775"><span class="linenos">5775</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> -</span><span id="L-5776"><a href="#L-5776"><span class="linenos">5776</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> -</span><span id="L-5777"><a href="#L-5777"><span class="linenos">5777</span></a> <span class="n">first</span><span class="o">=</span><span class="n">first</span><span class="p">,</span> -</span><span id="L-5778"><a href="#L-5778"><span class="linenos">5778</span></a> <span class="p">)</span> -</span><span id="L-5779"><a href="#L-5779"><span class="linenos">5779</span></a> -</span><span id="L-5780"><a href="#L-5780"><span class="linenos">5780</span></a> <span class="c1"># This covers Oracle's FIRST/LAST syntax: aggregate KEEP (...) OVER (...)</span> -</span><span id="L-5781"><a href="#L-5781"><span class="linenos">5781</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-5782"><a href="#L-5782"><span class="linenos">5782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">window</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-5783"><a href="#L-5783"><span class="linenos">5783</span></a> -</span><span id="L-5784"><a href="#L-5784"><span class="linenos">5784</span></a> <span class="k">return</span> <span class="n">window</span> +</span><span id="L-5768"><a href="#L-5768"><span class="linenos">5768</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-5769"><a href="#L-5769"><span class="linenos">5769</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5770"><a href="#L-5770"><span class="linenos">5770</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> +</span><span id="L-5771"><a href="#L-5771"><span class="linenos">5771</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-5772"><a href="#L-5772"><span class="linenos">5772</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5773"><a href="#L-5773"><span class="linenos">5773</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-5774"><a href="#L-5774"><span class="linenos">5774</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> +</span><span id="L-5775"><a href="#L-5775"><span class="linenos">5775</span></a> <span class="p">)</span> +</span><span id="L-5776"><a href="#L-5776"><span class="linenos">5776</span></a> +</span><span id="L-5777"><a href="#L-5777"><span class="linenos">5777</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-5778"><a href="#L-5778"><span class="linenos">5778</span></a> +</span><span id="L-5779"><a href="#L-5779"><span class="linenos">5779</span></a> <span class="n">first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">)</span> +</span><span id="L-5780"><a href="#L-5780"><span class="linenos">5780</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAST"</span><span class="p">):</span> +</span><span id="L-5781"><a href="#L-5781"><span class="linenos">5781</span></a> <span class="n">first</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-5782"><a href="#L-5782"><span class="linenos">5782</span></a> +</span><span id="L-5783"><a href="#L-5783"><span class="linenos">5783</span></a> <span class="n">partition</span><span class="p">,</span> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_and_order</span><span class="p">()</span> +</span><span id="L-5784"><a href="#L-5784"><span class="linenos">5784</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> </span><span id="L-5785"><a href="#L-5785"><span class="linenos">5785</span></a> -</span><span id="L-5786"><a href="#L-5786"><span class="linenos">5786</span></a> <span class="k">def</span> <span class="nf">_parse_partition_and_order</span><span class="p">(</span> -</span><span id="L-5787"><a href="#L-5787"><span class="linenos">5787</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-5788"><a href="#L-5788"><span class="linenos">5788</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-5789"><a href="#L-5789"><span class="linenos">5789</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="L-5790"><a href="#L-5790"><span class="linenos">5790</span></a> -</span><span id="L-5791"><a href="#L-5791"><span class="linenos">5791</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</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">Expression</span><span class="p">]]:</span> -</span><span id="L-5792"><a href="#L-5792"><span class="linenos">5792</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> -</span><span id="L-5793"><a href="#L-5793"><span class="linenos">5793</span></a> -</span><span id="L-5794"><a href="#L-5794"><span class="linenos">5794</span></a> <span class="k">return</span> <span class="p">{</span> -</span><span id="L-5795"><a href="#L-5795"><span class="linenos">5795</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-5796"><a href="#L-5796"><span class="linenos">5796</span></a> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNBOUNDED"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"UNBOUNDED"</span><span class="p">)</span> -</span><span id="L-5797"><a href="#L-5797"><span class="linenos">5797</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CURRENT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"CURRENT ROW"</span><span class="p">)</span> -</span><span id="L-5798"><a href="#L-5798"><span class="linenos">5798</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-5799"><a href="#L-5799"><span class="linenos">5799</span></a> <span class="p">),</span> -</span><span id="L-5800"><a href="#L-5800"><span class="linenos">5800</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="L-5801"><a href="#L-5801"><span class="linenos">5801</span></a> <span class="p">}</span> +</span><span id="L-5786"><a href="#L-5786"><span class="linenos">5786</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-5787"><a href="#L-5787"><span class="linenos">5787</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="L-5788"><a href="#L-5788"><span class="linenos">5788</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="L-5789"><a href="#L-5789"><span class="linenos">5789</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="L-5790"><a href="#L-5790"><span class="linenos">5790</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="L-5791"><a href="#L-5791"><span class="linenos">5791</span></a> +</span><span id="L-5792"><a href="#L-5792"><span class="linenos">5792</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5793"><a href="#L-5793"><span class="linenos">5793</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> +</span><span id="L-5794"><a href="#L-5794"><span class="linenos">5794</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-5795"><a href="#L-5795"><span class="linenos">5795</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="L-5796"><a href="#L-5796"><span class="linenos">5796</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="L-5797"><a href="#L-5797"><span class="linenos">5797</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="L-5798"><a href="#L-5798"><span class="linenos">5798</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="L-5799"><a href="#L-5799"><span class="linenos">5799</span></a> <span class="p">)</span> +</span><span id="L-5800"><a href="#L-5800"><span class="linenos">5800</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-5801"><a href="#L-5801"><span class="linenos">5801</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-5802"><a href="#L-5802"><span class="linenos">5802</span></a> -</span><span id="L-5803"><a href="#L-5803"><span class="linenos">5803</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> -</span><span id="L-5804"><a href="#L-5804"><span class="linenos">5804</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-5805"><a href="#L-5805"><span class="linenos">5805</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5806"><a href="#L-5806"><span class="linenos">5806</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-5807"><a href="#L-5807"><span class="linenos">5807</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="L-5808"><a href="#L-5808"><span class="linenos">5808</span></a> -</span><span id="L-5809"><a href="#L-5809"><span class="linenos">5809</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> -</span><span id="L-5810"><a href="#L-5810"><span class="linenos">5810</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5811"><a href="#L-5811"><span class="linenos">5811</span></a> -</span><span id="L-5812"><a href="#L-5812"><span class="linenos">5812</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-5813"><a href="#L-5813"><span class="linenos">5813</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5814"><a href="#L-5814"><span class="linenos">5814</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> -</span><span id="L-5815"><a href="#L-5815"><span class="linenos">5815</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="L-5816"><a href="#L-5816"><span class="linenos">5816</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5817"><a href="#L-5817"><span class="linenos">5817</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> -</span><span id="L-5818"><a href="#L-5818"><span class="linenos">5818</span></a> <span class="p">)</span> -</span><span id="L-5819"><a href="#L-5819"><span class="linenos">5819</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> -</span><span id="L-5820"><a href="#L-5820"><span class="linenos">5820</span></a> <span class="k">return</span> <span class="n">aliases</span> -</span><span id="L-5821"><a href="#L-5821"><span class="linenos">5821</span></a> -</span><span id="L-5822"><a href="#L-5822"><span class="linenos">5822</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="L-5823"><a href="#L-5823"><span class="linenos">5823</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ALIASES</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> -</span><span id="L-5824"><a href="#L-5824"><span class="linenos">5824</span></a> <span class="p">)</span> -</span><span id="L-5825"><a href="#L-5825"><span class="linenos">5825</span></a> -</span><span id="L-5826"><a href="#L-5826"><span class="linenos">5826</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-5827"><a href="#L-5827"><span class="linenos">5827</span></a> <span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> -</span><span id="L-5828"><a href="#L-5828"><span class="linenos">5828</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-5829"><a href="#L-5829"><span class="linenos">5829</span></a> <span class="n">column</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-5803"><a href="#L-5803"><span class="linenos">5803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-5804"><a href="#L-5804"><span class="linenos">5804</span></a> +</span><span id="L-5805"><a href="#L-5805"><span class="linenos">5805</span></a> <span class="n">window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5806"><a href="#L-5806"><span class="linenos">5806</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> +</span><span id="L-5807"><a href="#L-5807"><span class="linenos">5807</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-5808"><a href="#L-5808"><span class="linenos">5808</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5809"><a href="#L-5809"><span class="linenos">5809</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="L-5810"><a href="#L-5810"><span class="linenos">5810</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="L-5811"><a href="#L-5811"><span class="linenos">5811</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> +</span><span id="L-5812"><a href="#L-5812"><span class="linenos">5812</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> +</span><span id="L-5813"><a href="#L-5813"><span class="linenos">5813</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> +</span><span id="L-5814"><a href="#L-5814"><span class="linenos">5814</span></a> <span class="n">first</span><span class="o">=</span><span class="n">first</span><span class="p">,</span> +</span><span id="L-5815"><a href="#L-5815"><span class="linenos">5815</span></a> <span class="p">)</span> +</span><span id="L-5816"><a href="#L-5816"><span class="linenos">5816</span></a> +</span><span id="L-5817"><a href="#L-5817"><span class="linenos">5817</span></a> <span class="c1"># This covers Oracle's FIRST/LAST syntax: aggregate KEEP (...) OVER (...)</span> +</span><span id="L-5818"><a href="#L-5818"><span class="linenos">5818</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-5819"><a href="#L-5819"><span class="linenos">5819</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">window</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-5820"><a href="#L-5820"><span class="linenos">5820</span></a> +</span><span id="L-5821"><a href="#L-5821"><span class="linenos">5821</span></a> <span class="k">return</span> <span class="n">window</span> +</span><span id="L-5822"><a href="#L-5822"><span class="linenos">5822</span></a> +</span><span id="L-5823"><a href="#L-5823"><span class="linenos">5823</span></a> <span class="k">def</span> <span class="nf">_parse_partition_and_order</span><span class="p">(</span> +</span><span id="L-5824"><a href="#L-5824"><span class="linenos">5824</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-5825"><a href="#L-5825"><span class="linenos">5825</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-5826"><a href="#L-5826"><span class="linenos">5826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> +</span><span id="L-5827"><a href="#L-5827"><span class="linenos">5827</span></a> +</span><span id="L-5828"><a href="#L-5828"><span class="linenos">5828</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</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">Expression</span><span class="p">]]:</span> +</span><span id="L-5829"><a href="#L-5829"><span class="linenos">5829</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> </span><span id="L-5830"><a href="#L-5830"><span class="linenos">5830</span></a> -</span><span id="L-5831"><a href="#L-5831"><span class="linenos">5831</span></a> <span class="c1"># Moves the comment next to the alias in `expr /* comment */ AS alias`</span> -</span><span id="L-5832"><a href="#L-5832"><span class="linenos">5832</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">column</span> <span class="ow">and</span> <span class="n">column</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> -</span><span id="L-5833"><a href="#L-5833"><span class="linenos">5833</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> -</span><span id="L-5834"><a href="#L-5834"><span class="linenos">5834</span></a> -</span><span id="L-5835"><a href="#L-5835"><span class="linenos">5835</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5836"><a href="#L-5836"><span class="linenos">5836</span></a> -</span><span id="L-5837"><a href="#L-5837"><span class="linenos">5837</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> -</span><span id="L-5838"><a href="#L-5838"><span class="linenos">5838</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-5839"><a href="#L-5839"><span class="linenos">5839</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-5840"><a href="#L-5840"><span class="linenos">5840</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-5841"><a href="#L-5841"><span class="linenos">5841</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5842"><a href="#L-5842"><span class="linenos">5842</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> -</span><span id="L-5843"><a href="#L-5843"><span class="linenos">5843</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-5844"><a href="#L-5844"><span class="linenos">5844</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> -</span><span id="L-5845"><a href="#L-5845"><span class="linenos">5845</span></a> <span class="p">):</span> -</span><span id="L-5846"><a href="#L-5846"><span class="linenos">5846</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> -</span><span id="L-5847"><a href="#L-5847"><span class="linenos">5847</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="L-5831"><a href="#L-5831"><span class="linenos">5831</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="L-5832"><a href="#L-5832"><span class="linenos">5832</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-5833"><a href="#L-5833"><span class="linenos">5833</span></a> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNBOUNDED"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"UNBOUNDED"</span><span class="p">)</span> +</span><span id="L-5834"><a href="#L-5834"><span class="linenos">5834</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CURRENT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"CURRENT ROW"</span><span class="p">)</span> +</span><span id="L-5835"><a href="#L-5835"><span class="linenos">5835</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-5836"><a href="#L-5836"><span class="linenos">5836</span></a> <span class="p">),</span> +</span><span id="L-5837"><a href="#L-5837"><span class="linenos">5837</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="L-5838"><a href="#L-5838"><span class="linenos">5838</span></a> <span class="p">}</span> +</span><span id="L-5839"><a href="#L-5839"><span class="linenos">5839</span></a> +</span><span id="L-5840"><a href="#L-5840"><span class="linenos">5840</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> +</span><span id="L-5841"><a href="#L-5841"><span class="linenos">5841</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-5842"><a href="#L-5842"><span class="linenos">5842</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5843"><a href="#L-5843"><span class="linenos">5843</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-5844"><a href="#L-5844"><span class="linenos">5844</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-5845"><a href="#L-5845"><span class="linenos">5845</span></a> +</span><span id="L-5846"><a href="#L-5846"><span class="linenos">5846</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> +</span><span id="L-5847"><a href="#L-5847"><span class="linenos">5847</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-5848"><a href="#L-5848"><span class="linenos">5848</span></a> -</span><span id="L-5849"><a href="#L-5849"><span class="linenos">5849</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-5850"><a href="#L-5850"><span class="linenos">5850</span></a> -</span><span id="L-5851"><a href="#L-5851"><span class="linenos">5851</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5852"><a href="#L-5852"><span class="linenos">5852</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">):</span> -</span><span id="L-5853"><a href="#L-5853"><span class="linenos">5853</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5854"><a href="#L-5854"><span class="linenos">5854</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5855"><a href="#L-5855"><span class="linenos">5855</span></a> -</span><span id="L-5856"><a href="#L-5856"><span class="linenos">5856</span></a> <span class="k">def</span> <span class="nf">_parse_string_as_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span> -</span><span id="L-5857"><a href="#L-5857"><span class="linenos">5857</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5849"><a href="#L-5849"><span class="linenos">5849</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-5850"><a href="#L-5850"><span class="linenos">5850</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5851"><a href="#L-5851"><span class="linenos">5851</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> +</span><span id="L-5852"><a href="#L-5852"><span class="linenos">5852</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="L-5853"><a href="#L-5853"><span class="linenos">5853</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5854"><a href="#L-5854"><span class="linenos">5854</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> +</span><span id="L-5855"><a href="#L-5855"><span class="linenos">5855</span></a> <span class="p">)</span> +</span><span id="L-5856"><a href="#L-5856"><span class="linenos">5856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> +</span><span id="L-5857"><a href="#L-5857"><span class="linenos">5857</span></a> <span class="k">return</span> <span class="n">aliases</span> </span><span id="L-5858"><a href="#L-5858"><span class="linenos">5858</span></a> -</span><span id="L-5859"><a href="#L-5859"><span class="linenos">5859</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5860"><a href="#L-5860"><span class="linenos">5860</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">):</span> -</span><span id="L-5861"><a href="#L-5861"><span class="linenos">5861</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5862"><a href="#L-5862"><span class="linenos">5862</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5863"><a href="#L-5863"><span class="linenos">5863</span></a> -</span><span id="L-5864"><a href="#L-5864"><span class="linenos">5864</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5865"><a href="#L-5865"><span class="linenos">5865</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> -</span><span id="L-5866"><a href="#L-5866"><span class="linenos">5866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5867"><a href="#L-5867"><span class="linenos">5867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5868"><a href="#L-5868"><span class="linenos">5868</span></a> -</span><span id="L-5869"><a href="#L-5869"><span class="linenos">5869</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span> -</span><span id="L-5870"><a href="#L-5870"><span class="linenos">5870</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-5871"><a href="#L-5871"><span class="linenos">5871</span></a> <span class="n">any_token</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-5872"><a href="#L-5872"><span class="linenos">5872</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-5873"><a href="#L-5873"><span class="linenos">5873</span></a> <span class="n">upper</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-5874"><a href="#L-5874"><span class="linenos">5874</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5875"><a href="#L-5875"><span class="linenos">5875</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-5876"><a href="#L-5876"><span class="linenos">5876</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> -</span><span id="L-5877"><a href="#L-5877"><span class="linenos">5877</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="L-5878"><a href="#L-5878"><span class="linenos">5878</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="k">if</span> <span class="n">tokens</span> <span class="k">else</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-5879"><a href="#L-5879"><span class="linenos">5879</span></a> <span class="p">):</span> -</span><span id="L-5880"><a href="#L-5880"><span class="linenos">5880</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5881"><a href="#L-5881"><span class="linenos">5881</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">upper</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-5882"><a href="#L-5882"><span class="linenos">5882</span></a> <span class="p">)</span> -</span><span id="L-5883"><a href="#L-5883"><span class="linenos">5883</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5884"><a href="#L-5884"><span class="linenos">5884</span></a> -</span><span id="L-5885"><a href="#L-5885"><span class="linenos">5885</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignore_reserved</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">Token</span><span class="p">]:</span> -</span><span id="L-5886"><a href="#L-5886"><span class="linenos">5886</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="p">(</span><span class="n">ignore_reserved</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">):</span> -</span><span id="L-5887"><a href="#L-5887"><span class="linenos">5887</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-5888"><a href="#L-5888"><span class="linenos">5888</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-5889"><a href="#L-5889"><span class="linenos">5889</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5890"><a href="#L-5890"><span class="linenos">5890</span></a> -</span><span id="L-5891"><a href="#L-5891"><span class="linenos">5891</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5892"><a href="#L-5892"><span class="linenos">5892</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-5893"><a href="#L-5893"><span class="linenos">5893</span></a> -</span><span id="L-5894"><a href="#L-5894"><span class="linenos">5894</span></a> <span class="k">def</span> <span class="nf">_parse_primary_or_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5895"><a href="#L-5895"><span class="linenos">5895</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-5896"><a href="#L-5896"><span class="linenos">5896</span></a> -</span><span id="L-5897"><a href="#L-5897"><span class="linenos">5897</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5898"><a href="#L-5898"><span class="linenos">5898</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NULL_TOKENS</span><span class="p">):</span> -</span><span id="L-5899"><a href="#L-5899"><span class="linenos">5899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5900"><a href="#L-5900"><span class="linenos">5900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5901"><a href="#L-5901"><span class="linenos">5901</span></a> -</span><span id="L-5902"><a href="#L-5902"><span class="linenos">5902</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5903"><a href="#L-5903"><span class="linenos">5903</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> -</span><span id="L-5904"><a href="#L-5904"><span class="linenos">5904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5905"><a href="#L-5905"><span class="linenos">5905</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> -</span><span id="L-5906"><a href="#L-5906"><span class="linenos">5906</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5907"><a href="#L-5907"><span class="linenos">5907</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5908"><a href="#L-5908"><span class="linenos">5908</span></a> -</span><span id="L-5909"><a href="#L-5909"><span class="linenos">5909</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5910"><a href="#L-5910"><span class="linenos">5910</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> -</span><span id="L-5911"><a href="#L-5911"><span class="linenos">5911</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-5912"><a href="#L-5912"><span class="linenos">5912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-5913"><a href="#L-5913"><span class="linenos">5913</span></a> -</span><span id="L-5914"><a href="#L-5914"><span class="linenos">5914</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">:</span> -</span><span id="L-5915"><a href="#L-5915"><span class="linenos">5915</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_or_var</span><span class="p">()</span> -</span><span id="L-5916"><a href="#L-5916"><span class="linenos">5916</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-5917"><a href="#L-5917"><span class="linenos">5917</span></a> -</span><span id="L-5918"><a href="#L-5918"><span class="linenos">5918</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5919"><a href="#L-5919"><span class="linenos">5919</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> -</span><span id="L-5920"><a href="#L-5920"><span class="linenos">5920</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-5921"><a href="#L-5921"><span class="linenos">5921</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> -</span><span id="L-5922"><a href="#L-5922"><span class="linenos">5922</span></a> <span class="k">return</span> <span class="n">placeholder</span> -</span><span id="L-5923"><a href="#L-5923"><span class="linenos">5923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> -</span><span id="L-5924"><a href="#L-5924"><span class="linenos">5924</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5925"><a href="#L-5925"><span class="linenos">5925</span></a> -</span><span id="L-5926"><a href="#L-5926"><span class="linenos">5926</span></a> <span class="k">def</span> <span class="nf">_parse_star_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">keywords</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-5927"><a href="#L-5927"><span class="linenos">5927</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">keywords</span><span class="p">):</span> -</span><span id="L-5928"><a href="#L-5928"><span class="linenos">5928</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-5929"><a href="#L-5929"><span class="linenos">5929</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-5930"><a href="#L-5930"><span class="linenos">5930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="L-5931"><a href="#L-5931"><span class="linenos">5931</span></a> -</span><span id="L-5932"><a href="#L-5932"><span class="linenos">5932</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="L-5933"><a href="#L-5933"><span class="linenos">5933</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-5934"><a href="#L-5934"><span class="linenos">5934</span></a> -</span><span id="L-5935"><a href="#L-5935"><span class="linenos">5935</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> -</span><span id="L-5936"><a href="#L-5936"><span class="linenos">5936</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> -</span><span id="L-5937"><a href="#L-5937"><span class="linenos">5937</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5938"><a href="#L-5938"><span class="linenos">5938</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-5939"><a href="#L-5939"><span class="linenos">5939</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="L-5940"><a href="#L-5940"><span class="linenos">5940</span></a> -</span><span id="L-5941"><a href="#L-5941"><span class="linenos">5941</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> -</span><span id="L-5942"><a href="#L-5942"><span class="linenos">5942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> -</span><span id="L-5943"><a href="#L-5943"><span class="linenos">5943</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-5944"><a href="#L-5944"><span class="linenos">5944</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-5945"><a href="#L-5945"><span class="linenos">5945</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> -</span><span id="L-5946"><a href="#L-5946"><span class="linenos">5946</span></a> -</span><span id="L-5947"><a href="#L-5947"><span class="linenos">5947</span></a> <span class="k">return</span> <span class="n">items</span> -</span><span id="L-5948"><a href="#L-5948"><span class="linenos">5948</span></a> -</span><span id="L-5949"><a href="#L-5949"><span class="linenos">5949</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> -</span><span id="L-5950"><a href="#L-5950"><span class="linenos">5950</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="L-5951"><a href="#L-5951"><span class="linenos">5951</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5952"><a href="#L-5952"><span class="linenos">5952</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-5953"><a href="#L-5953"><span class="linenos">5953</span></a> -</span><span id="L-5954"><a href="#L-5954"><span class="linenos">5954</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="L-5955"><a href="#L-5955"><span class="linenos">5955</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-5956"><a href="#L-5956"><span class="linenos">5956</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="L-5957"><a href="#L-5957"><span class="linenos">5957</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-5958"><a href="#L-5958"><span class="linenos">5958</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="L-5959"><a href="#L-5959"><span class="linenos">5959</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> -</span><span id="L-5960"><a href="#L-5960"><span class="linenos">5960</span></a> <span class="p">)</span> -</span><span id="L-5961"><a href="#L-5961"><span class="linenos">5961</span></a> -</span><span id="L-5962"><a href="#L-5962"><span class="linenos">5962</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-5963"><a href="#L-5963"><span class="linenos">5963</span></a> -</span><span id="L-5964"><a href="#L-5964"><span class="linenos">5964</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5965"><a href="#L-5965"><span class="linenos">5965</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span><span class="p">)</span> -</span><span id="L-5966"><a href="#L-5966"><span class="linenos">5966</span></a> -</span><span id="L-5967"><a href="#L-5967"><span class="linenos">5967</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> -</span><span id="L-5968"><a href="#L-5968"><span class="linenos">5968</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-5969"><a href="#L-5969"><span class="linenos">5969</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5970"><a href="#L-5970"><span class="linenos">5970</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span> -</span><span id="L-5971"><a href="#L-5971"><span class="linenos">5971</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">),</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span> -</span><span id="L-5972"><a href="#L-5972"><span class="linenos">5972</span></a> <span class="p">)</span> -</span><span id="L-5973"><a href="#L-5973"><span class="linenos">5973</span></a> -</span><span id="L-5974"><a href="#L-5974"><span class="linenos">5974</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> -</span><span id="L-5975"><a href="#L-5975"><span class="linenos">5975</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="L-5976"><a href="#L-5976"><span class="linenos">5976</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">wrapped</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">optional</span><span class="p">:</span> -</span><span id="L-5977"><a href="#L-5977"><span class="linenos">5977</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> -</span><span id="L-5978"><a href="#L-5978"><span class="linenos">5978</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-5979"><a href="#L-5979"><span class="linenos">5979</span></a> <span class="k">if</span> <span class="n">wrapped</span><span class="p">:</span> -</span><span id="L-5980"><a href="#L-5980"><span class="linenos">5980</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-5981"><a href="#L-5981"><span class="linenos">5981</span></a> <span class="k">return</span> <span class="n">parse_result</span> -</span><span id="L-5982"><a href="#L-5982"><span class="linenos">5982</span></a> -</span><span id="L-5983"><a href="#L-5983"><span class="linenos">5983</span></a> <span class="k">def</span> <span class="nf">_parse_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5984"><a href="#L-5984"><span class="linenos">5984</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-5859"><a href="#L-5859"><span class="linenos">5859</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="L-5860"><a href="#L-5860"><span class="linenos">5860</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ALIASES</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> +</span><span id="L-5861"><a href="#L-5861"><span class="linenos">5861</span></a> <span class="p">)</span> +</span><span id="L-5862"><a href="#L-5862"><span class="linenos">5862</span></a> +</span><span id="L-5863"><a href="#L-5863"><span class="linenos">5863</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-5864"><a href="#L-5864"><span class="linenos">5864</span></a> <span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> +</span><span id="L-5865"><a href="#L-5865"><span class="linenos">5865</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-5866"><a href="#L-5866"><span class="linenos">5866</span></a> <span class="n">column</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-5867"><a href="#L-5867"><span class="linenos">5867</span></a> +</span><span id="L-5868"><a href="#L-5868"><span class="linenos">5868</span></a> <span class="c1"># Moves the comment next to the alias in `expr /* comment */ AS alias`</span> +</span><span id="L-5869"><a href="#L-5869"><span class="linenos">5869</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">column</span> <span class="ow">and</span> <span class="n">column</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> +</span><span id="L-5870"><a href="#L-5870"><span class="linenos">5870</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> +</span><span id="L-5871"><a href="#L-5871"><span class="linenos">5871</span></a> +</span><span id="L-5872"><a href="#L-5872"><span class="linenos">5872</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-5873"><a href="#L-5873"><span class="linenos">5873</span></a> +</span><span id="L-5874"><a href="#L-5874"><span class="linenos">5874</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> +</span><span id="L-5875"><a href="#L-5875"><span class="linenos">5875</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-5876"><a href="#L-5876"><span class="linenos">5876</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-5877"><a href="#L-5877"><span class="linenos">5877</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-5878"><a href="#L-5878"><span class="linenos">5878</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5879"><a href="#L-5879"><span class="linenos">5879</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> +</span><span id="L-5880"><a href="#L-5880"><span class="linenos">5880</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-5881"><a href="#L-5881"><span class="linenos">5881</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> +</span><span id="L-5882"><a href="#L-5882"><span class="linenos">5882</span></a> <span class="p">):</span> +</span><span id="L-5883"><a href="#L-5883"><span class="linenos">5883</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> +</span><span id="L-5884"><a href="#L-5884"><span class="linenos">5884</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="L-5885"><a href="#L-5885"><span class="linenos">5885</span></a> +</span><span id="L-5886"><a href="#L-5886"><span class="linenos">5886</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-5887"><a href="#L-5887"><span class="linenos">5887</span></a> +</span><span id="L-5888"><a href="#L-5888"><span class="linenos">5888</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5889"><a href="#L-5889"><span class="linenos">5889</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">):</span> +</span><span id="L-5890"><a href="#L-5890"><span class="linenos">5890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5891"><a href="#L-5891"><span class="linenos">5891</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5892"><a href="#L-5892"><span class="linenos">5892</span></a> +</span><span id="L-5893"><a href="#L-5893"><span class="linenos">5893</span></a> <span class="k">def</span> <span class="nf">_parse_string_as_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span> +</span><span id="L-5894"><a href="#L-5894"><span class="linenos">5894</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5895"><a href="#L-5895"><span class="linenos">5895</span></a> +</span><span id="L-5896"><a href="#L-5896"><span class="linenos">5896</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5897"><a href="#L-5897"><span class="linenos">5897</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">):</span> +</span><span id="L-5898"><a href="#L-5898"><span class="linenos">5898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5899"><a href="#L-5899"><span class="linenos">5899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5900"><a href="#L-5900"><span class="linenos">5900</span></a> +</span><span id="L-5901"><a href="#L-5901"><span class="linenos">5901</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5902"><a href="#L-5902"><span class="linenos">5902</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> +</span><span id="L-5903"><a href="#L-5903"><span class="linenos">5903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5904"><a href="#L-5904"><span class="linenos">5904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5905"><a href="#L-5905"><span class="linenos">5905</span></a> +</span><span id="L-5906"><a href="#L-5906"><span class="linenos">5906</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span> +</span><span id="L-5907"><a href="#L-5907"><span class="linenos">5907</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-5908"><a href="#L-5908"><span class="linenos">5908</span></a> <span class="n">any_token</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-5909"><a href="#L-5909"><span class="linenos">5909</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-5910"><a href="#L-5910"><span class="linenos">5910</span></a> <span class="n">upper</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-5911"><a href="#L-5911"><span class="linenos">5911</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5912"><a href="#L-5912"><span class="linenos">5912</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-5913"><a href="#L-5913"><span class="linenos">5913</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> +</span><span id="L-5914"><a href="#L-5914"><span class="linenos">5914</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="L-5915"><a href="#L-5915"><span class="linenos">5915</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="k">if</span> <span class="n">tokens</span> <span class="k">else</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="L-5916"><a href="#L-5916"><span class="linenos">5916</span></a> <span class="p">):</span> +</span><span id="L-5917"><a href="#L-5917"><span class="linenos">5917</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5918"><a href="#L-5918"><span class="linenos">5918</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">upper</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-5919"><a href="#L-5919"><span class="linenos">5919</span></a> <span class="p">)</span> +</span><span id="L-5920"><a href="#L-5920"><span class="linenos">5920</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5921"><a href="#L-5921"><span class="linenos">5921</span></a> +</span><span id="L-5922"><a href="#L-5922"><span class="linenos">5922</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignore_reserved</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">Token</span><span class="p">]:</span> +</span><span id="L-5923"><a href="#L-5923"><span class="linenos">5923</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="p">(</span><span class="n">ignore_reserved</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">):</span> +</span><span id="L-5924"><a href="#L-5924"><span class="linenos">5924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-5925"><a href="#L-5925"><span class="linenos">5925</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-5926"><a href="#L-5926"><span class="linenos">5926</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5927"><a href="#L-5927"><span class="linenos">5927</span></a> +</span><span id="L-5928"><a href="#L-5928"><span class="linenos">5928</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5929"><a href="#L-5929"><span class="linenos">5929</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-5930"><a href="#L-5930"><span class="linenos">5930</span></a> +</span><span id="L-5931"><a href="#L-5931"><span class="linenos">5931</span></a> <span class="k">def</span> <span class="nf">_parse_primary_or_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5932"><a href="#L-5932"><span class="linenos">5932</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-5933"><a href="#L-5933"><span class="linenos">5933</span></a> +</span><span id="L-5934"><a href="#L-5934"><span class="linenos">5934</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5935"><a href="#L-5935"><span class="linenos">5935</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NULL_TOKENS</span><span class="p">):</span> +</span><span id="L-5936"><a href="#L-5936"><span class="linenos">5936</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5937"><a href="#L-5937"><span class="linenos">5937</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5938"><a href="#L-5938"><span class="linenos">5938</span></a> +</span><span id="L-5939"><a href="#L-5939"><span class="linenos">5939</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5940"><a href="#L-5940"><span class="linenos">5940</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> +</span><span id="L-5941"><a href="#L-5941"><span class="linenos">5941</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5942"><a href="#L-5942"><span class="linenos">5942</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> +</span><span id="L-5943"><a href="#L-5943"><span class="linenos">5943</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5944"><a href="#L-5944"><span class="linenos">5944</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5945"><a href="#L-5945"><span class="linenos">5945</span></a> +</span><span id="L-5946"><a href="#L-5946"><span class="linenos">5946</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5947"><a href="#L-5947"><span class="linenos">5947</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> +</span><span id="L-5948"><a href="#L-5948"><span class="linenos">5948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-5949"><a href="#L-5949"><span class="linenos">5949</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-5950"><a href="#L-5950"><span class="linenos">5950</span></a> +</span><span id="L-5951"><a href="#L-5951"><span class="linenos">5951</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">:</span> +</span><span id="L-5952"><a href="#L-5952"><span class="linenos">5952</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_or_var</span><span class="p">()</span> +</span><span id="L-5953"><a href="#L-5953"><span class="linenos">5953</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-5954"><a href="#L-5954"><span class="linenos">5954</span></a> +</span><span id="L-5955"><a href="#L-5955"><span class="linenos">5955</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5956"><a href="#L-5956"><span class="linenos">5956</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> +</span><span id="L-5957"><a href="#L-5957"><span class="linenos">5957</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-5958"><a href="#L-5958"><span class="linenos">5958</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> +</span><span id="L-5959"><a href="#L-5959"><span class="linenos">5959</span></a> <span class="k">return</span> <span class="n">placeholder</span> +</span><span id="L-5960"><a href="#L-5960"><span class="linenos">5960</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> +</span><span id="L-5961"><a href="#L-5961"><span class="linenos">5961</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5962"><a href="#L-5962"><span class="linenos">5962</span></a> +</span><span id="L-5963"><a href="#L-5963"><span class="linenos">5963</span></a> <span class="k">def</span> <span class="nf">_parse_star_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">keywords</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-5964"><a href="#L-5964"><span class="linenos">5964</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">keywords</span><span class="p">):</span> +</span><span id="L-5965"><a href="#L-5965"><span class="linenos">5965</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-5966"><a href="#L-5966"><span class="linenos">5966</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-5967"><a href="#L-5967"><span class="linenos">5967</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-5968"><a href="#L-5968"><span class="linenos">5968</span></a> +</span><span id="L-5969"><a href="#L-5969"><span class="linenos">5969</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="L-5970"><a href="#L-5970"><span class="linenos">5970</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-5971"><a href="#L-5971"><span class="linenos">5971</span></a> +</span><span id="L-5972"><a href="#L-5972"><span class="linenos">5972</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> +</span><span id="L-5973"><a href="#L-5973"><span class="linenos">5973</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> +</span><span id="L-5974"><a href="#L-5974"><span class="linenos">5974</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5975"><a href="#L-5975"><span class="linenos">5975</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-5976"><a href="#L-5976"><span class="linenos">5976</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="L-5977"><a href="#L-5977"><span class="linenos">5977</span></a> +</span><span id="L-5978"><a href="#L-5978"><span class="linenos">5978</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> +</span><span id="L-5979"><a href="#L-5979"><span class="linenos">5979</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="L-5980"><a href="#L-5980"><span class="linenos">5980</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-5981"><a href="#L-5981"><span class="linenos">5981</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-5982"><a href="#L-5982"><span class="linenos">5982</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="L-5983"><a href="#L-5983"><span class="linenos">5983</span></a> +</span><span id="L-5984"><a href="#L-5984"><span class="linenos">5984</span></a> <span class="k">return</span> <span class="n">items</span> </span><span id="L-5985"><a href="#L-5985"><span class="linenos">5985</span></a> -</span><span id="L-5986"><a href="#L-5986"><span class="linenos">5986</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5987"><a href="#L-5987"><span class="linenos">5987</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> -</span><span id="L-5988"><a href="#L-5988"><span class="linenos">5988</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-5989"><a href="#L-5989"><span class="linenos">5989</span></a> <span class="p">)</span> +</span><span id="L-5986"><a href="#L-5986"><span class="linenos">5986</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> +</span><span id="L-5987"><a href="#L-5987"><span class="linenos">5987</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="L-5988"><a href="#L-5988"><span class="linenos">5988</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-5989"><a href="#L-5989"><span class="linenos">5989</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> </span><span id="L-5990"><a href="#L-5990"><span class="linenos">5990</span></a> -</span><span id="L-5991"><a href="#L-5991"><span class="linenos">5991</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-5992"><a href="#L-5992"><span class="linenos">5992</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span> -</span><span id="L-5993"><a href="#L-5993"><span class="linenos">5993</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-5994"><a href="#L-5994"><span class="linenos">5994</span></a> <span class="p">)</span> -</span><span id="L-5995"><a href="#L-5995"><span class="linenos">5995</span></a> -</span><span id="L-5996"><a href="#L-5996"><span class="linenos">5996</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-5997"><a href="#L-5997"><span class="linenos">5997</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-5998"><a href="#L-5998"><span class="linenos">5998</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> -</span><span id="L-5999"><a href="#L-5999"><span class="linenos">5999</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-5991"><a href="#L-5991"><span class="linenos">5991</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="L-5992"><a href="#L-5992"><span class="linenos">5992</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-5993"><a href="#L-5993"><span class="linenos">5993</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="L-5994"><a href="#L-5994"><span class="linenos">5994</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-5995"><a href="#L-5995"><span class="linenos">5995</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="L-5996"><a href="#L-5996"><span class="linenos">5996</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> +</span><span id="L-5997"><a href="#L-5997"><span class="linenos">5997</span></a> <span class="p">)</span> +</span><span id="L-5998"><a href="#L-5998"><span class="linenos">5998</span></a> +</span><span id="L-5999"><a href="#L-5999"><span class="linenos">5999</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-6000"><a href="#L-6000"><span class="linenos">6000</span></a> -</span><span id="L-6001"><a href="#L-6001"><span class="linenos">6001</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> -</span><span id="L-6002"><a href="#L-6002"><span class="linenos">6002</span></a> -</span><span id="L-6003"><a href="#L-6003"><span class="linenos">6003</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6004"><a href="#L-6004"><span class="linenos">6004</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-6005"><a href="#L-6005"><span class="linenos">6005</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6006"><a href="#L-6006"><span class="linenos">6006</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> -</span><span id="L-6007"><a href="#L-6007"><span class="linenos">6007</span></a> <span class="n">mode</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-6008"><a href="#L-6008"><span class="linenos">6008</span></a> -</span><span id="L-6009"><a href="#L-6009"><span class="linenos">6009</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> -</span><span id="L-6010"><a href="#L-6010"><span class="linenos">6010</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> -</span><span id="L-6011"><a href="#L-6011"><span class="linenos">6011</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-6012"><a href="#L-6012"><span class="linenos">6012</span></a> <span class="k">break</span> -</span><span id="L-6013"><a href="#L-6013"><span class="linenos">6013</span></a> -</span><span id="L-6014"><a href="#L-6014"><span class="linenos">6014</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> -</span><span id="L-6015"><a href="#L-6015"><span class="linenos">6015</span></a> -</span><span id="L-6016"><a href="#L-6016"><span class="linenos">6016</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Commit</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">:</span> -</span><span id="L-6017"><a href="#L-6017"><span class="linenos">6017</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-6018"><a href="#L-6018"><span class="linenos">6018</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-6019"><a href="#L-6019"><span class="linenos">6019</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> -</span><span id="L-6020"><a href="#L-6020"><span class="linenos">6020</span></a> -</span><span id="L-6021"><a href="#L-6021"><span class="linenos">6021</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> +</span><span id="L-6001"><a href="#L-6001"><span class="linenos">6001</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6002"><a href="#L-6002"><span class="linenos">6002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span><span class="p">)</span> +</span><span id="L-6003"><a href="#L-6003"><span class="linenos">6003</span></a> +</span><span id="L-6004"><a href="#L-6004"><span class="linenos">6004</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> +</span><span id="L-6005"><a href="#L-6005"><span class="linenos">6005</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-6006"><a href="#L-6006"><span class="linenos">6006</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6007"><a href="#L-6007"><span class="linenos">6007</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span> +</span><span id="L-6008"><a href="#L-6008"><span class="linenos">6008</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">),</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span> +</span><span id="L-6009"><a href="#L-6009"><span class="linenos">6009</span></a> <span class="p">)</span> +</span><span id="L-6010"><a href="#L-6010"><span class="linenos">6010</span></a> +</span><span id="L-6011"><a href="#L-6011"><span class="linenos">6011</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> +</span><span id="L-6012"><a href="#L-6012"><span class="linenos">6012</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="L-6013"><a href="#L-6013"><span class="linenos">6013</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">wrapped</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">optional</span><span class="p">:</span> +</span><span id="L-6014"><a href="#L-6014"><span class="linenos">6014</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> +</span><span id="L-6015"><a href="#L-6015"><span class="linenos">6015</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-6016"><a href="#L-6016"><span class="linenos">6016</span></a> <span class="k">if</span> <span class="n">wrapped</span><span class="p">:</span> +</span><span id="L-6017"><a href="#L-6017"><span class="linenos">6017</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-6018"><a href="#L-6018"><span class="linenos">6018</span></a> <span class="k">return</span> <span class="n">parse_result</span> +</span><span id="L-6019"><a href="#L-6019"><span class="linenos">6019</span></a> +</span><span id="L-6020"><a href="#L-6020"><span class="linenos">6020</span></a> <span class="k">def</span> <span class="nf">_parse_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6021"><a href="#L-6021"><span class="linenos">6021</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> </span><span id="L-6022"><a href="#L-6022"><span class="linenos">6022</span></a> -</span><span id="L-6023"><a href="#L-6023"><span class="linenos">6023</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="L-6024"><a href="#L-6024"><span class="linenos">6024</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> -</span><span id="L-6025"><a href="#L-6025"><span class="linenos">6025</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-6026"><a href="#L-6026"><span class="linenos">6026</span></a> -</span><span id="L-6027"><a href="#L-6027"><span class="linenos">6027</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> -</span><span id="L-6028"><a href="#L-6028"><span class="linenos">6028</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="L-6029"><a href="#L-6029"><span class="linenos">6029</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> -</span><span id="L-6030"><a href="#L-6030"><span class="linenos">6030</span></a> -</span><span id="L-6031"><a href="#L-6031"><span class="linenos">6031</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> -</span><span id="L-6032"><a href="#L-6032"><span class="linenos">6032</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> -</span><span id="L-6033"><a href="#L-6033"><span class="linenos">6033</span></a> -</span><span id="L-6034"><a href="#L-6034"><span class="linenos">6034</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> -</span><span id="L-6035"><a href="#L-6035"><span class="linenos">6035</span></a> -</span><span id="L-6036"><a href="#L-6036"><span class="linenos">6036</span></a> <span class="k">def</span> <span class="nf">_parse_refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">:</span> -</span><span id="L-6037"><a href="#L-6037"><span class="linenos">6037</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-6038"><a href="#L-6038"><span class="linenos">6038</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="L-6023"><a href="#L-6023"><span class="linenos">6023</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6024"><a href="#L-6024"><span class="linenos">6024</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> +</span><span id="L-6025"><a href="#L-6025"><span class="linenos">6025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-6026"><a href="#L-6026"><span class="linenos">6026</span></a> <span class="p">)</span> +</span><span id="L-6027"><a href="#L-6027"><span class="linenos">6027</span></a> +</span><span id="L-6028"><a href="#L-6028"><span class="linenos">6028</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6029"><a href="#L-6029"><span class="linenos">6029</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span> +</span><span id="L-6030"><a href="#L-6030"><span class="linenos">6030</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="L-6031"><a href="#L-6031"><span class="linenos">6031</span></a> <span class="p">)</span> +</span><span id="L-6032"><a href="#L-6032"><span class="linenos">6032</span></a> +</span><span id="L-6033"><a href="#L-6033"><span class="linenos">6033</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-6034"><a href="#L-6034"><span class="linenos">6034</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6035"><a href="#L-6035"><span class="linenos">6035</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> +</span><span id="L-6036"><a href="#L-6036"><span class="linenos">6036</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-6037"><a href="#L-6037"><span class="linenos">6037</span></a> +</span><span id="L-6038"><a href="#L-6038"><span class="linenos">6038</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> </span><span id="L-6039"><a href="#L-6039"><span class="linenos">6039</span></a> -</span><span id="L-6040"><a href="#L-6040"><span class="linenos">6040</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6041"><a href="#L-6041"><span class="linenos">6041</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="L-6042"><a href="#L-6042"><span class="linenos">6042</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6043"><a href="#L-6043"><span class="linenos">6043</span></a> -</span><span id="L-6044"><a href="#L-6044"><span class="linenos">6044</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="L-6045"><a href="#L-6045"><span class="linenos">6045</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6046"><a href="#L-6046"><span class="linenos">6046</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">()</span> -</span><span id="L-6047"><a href="#L-6047"><span class="linenos">6047</span></a> -</span><span id="L-6048"><a href="#L-6048"><span class="linenos">6048</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-6049"><a href="#L-6049"><span class="linenos">6049</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> +</span><span id="L-6040"><a href="#L-6040"><span class="linenos">6040</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6041"><a href="#L-6041"><span class="linenos">6041</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-6042"><a href="#L-6042"><span class="linenos">6042</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6043"><a href="#L-6043"><span class="linenos">6043</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> +</span><span id="L-6044"><a href="#L-6044"><span class="linenos">6044</span></a> <span class="n">mode</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-6045"><a href="#L-6045"><span class="linenos">6045</span></a> +</span><span id="L-6046"><a href="#L-6046"><span class="linenos">6046</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> +</span><span id="L-6047"><a href="#L-6047"><span class="linenos">6047</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> +</span><span id="L-6048"><a href="#L-6048"><span class="linenos">6048</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-6049"><a href="#L-6049"><span class="linenos">6049</span></a> <span class="k">break</span> </span><span id="L-6050"><a href="#L-6050"><span class="linenos">6050</span></a> -</span><span id="L-6051"><a href="#L-6051"><span class="linenos">6051</span></a> <span class="c1"># https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns</span> -</span><span id="L-6052"><a href="#L-6052"><span class="linenos">6052</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FIRST"</span><span class="p">,</span> <span class="s2">"AFTER"</span><span class="p">)):</span> -</span><span id="L-6053"><a href="#L-6053"><span class="linenos">6053</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-6054"><a href="#L-6054"><span class="linenos">6054</span></a> <span class="n">column_position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6055"><a href="#L-6055"><span class="linenos">6055</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span> -</span><span id="L-6056"><a href="#L-6056"><span class="linenos">6056</span></a> <span class="p">)</span> -</span><span id="L-6057"><a href="#L-6057"><span class="linenos">6057</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="n">column_position</span><span class="p">)</span> -</span><span id="L-6058"><a href="#L-6058"><span class="linenos">6058</span></a> -</span><span id="L-6059"><a href="#L-6059"><span class="linenos">6059</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-6060"><a href="#L-6060"><span class="linenos">6060</span></a> -</span><span id="L-6061"><a href="#L-6061"><span class="linenos">6061</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">]:</span> -</span><span id="L-6062"><a href="#L-6062"><span class="linenos">6062</span></a> <span class="n">drop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">()</span> -</span><span id="L-6063"><a href="#L-6063"><span class="linenos">6063</span></a> <span class="k">if</span> <span class="n">drop</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">drop</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">):</span> -</span><span id="L-6064"><a href="#L-6064"><span class="linenos">6064</span></a> <span class="n">drop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">drop</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="s2">"COLUMN"</span><span class="p">))</span> -</span><span id="L-6065"><a href="#L-6065"><span class="linenos">6065</span></a> <span class="k">return</span> <span class="n">drop</span> -</span><span id="L-6066"><a href="#L-6066"><span class="linenos">6066</span></a> -</span><span id="L-6067"><a href="#L-6067"><span class="linenos">6067</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> -</span><span id="L-6068"><a href="#L-6068"><span class="linenos">6068</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">:</span> -</span><span id="L-6069"><a href="#L-6069"><span class="linenos">6069</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6070"><a href="#L-6070"><span class="linenos">6070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> -</span><span id="L-6071"><a href="#L-6071"><span class="linenos">6071</span></a> <span class="p">)</span> +</span><span id="L-6051"><a href="#L-6051"><span class="linenos">6051</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> +</span><span id="L-6052"><a href="#L-6052"><span class="linenos">6052</span></a> +</span><span id="L-6053"><a href="#L-6053"><span class="linenos">6053</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Commit</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">:</span> +</span><span id="L-6054"><a href="#L-6054"><span class="linenos">6054</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6055"><a href="#L-6055"><span class="linenos">6055</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6056"><a href="#L-6056"><span class="linenos">6056</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> +</span><span id="L-6057"><a href="#L-6057"><span class="linenos">6057</span></a> +</span><span id="L-6058"><a href="#L-6058"><span class="linenos">6058</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> +</span><span id="L-6059"><a href="#L-6059"><span class="linenos">6059</span></a> +</span><span id="L-6060"><a href="#L-6060"><span class="linenos">6060</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="L-6061"><a href="#L-6061"><span class="linenos">6061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> +</span><span id="L-6062"><a href="#L-6062"><span class="linenos">6062</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-6063"><a href="#L-6063"><span class="linenos">6063</span></a> +</span><span id="L-6064"><a href="#L-6064"><span class="linenos">6064</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> +</span><span id="L-6065"><a href="#L-6065"><span class="linenos">6065</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="L-6066"><a href="#L-6066"><span class="linenos">6066</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> +</span><span id="L-6067"><a href="#L-6067"><span class="linenos">6067</span></a> +</span><span id="L-6068"><a href="#L-6068"><span class="linenos">6068</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> +</span><span id="L-6069"><a href="#L-6069"><span class="linenos">6069</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> +</span><span id="L-6070"><a href="#L-6070"><span class="linenos">6070</span></a> +</span><span id="L-6071"><a href="#L-6071"><span class="linenos">6071</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> </span><span id="L-6072"><a href="#L-6072"><span class="linenos">6072</span></a> -</span><span id="L-6073"><a href="#L-6073"><span class="linenos">6073</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6074"><a href="#L-6074"><span class="linenos">6074</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="L-6075"><a href="#L-6075"><span class="linenos">6075</span></a> -</span><span id="L-6076"><a href="#L-6076"><span class="linenos">6076</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6077"><a href="#L-6077"><span class="linenos">6077</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-6078"><a href="#L-6078"><span class="linenos">6078</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6079"><a href="#L-6079"><span class="linenos">6079</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">)</span> -</span><span id="L-6080"><a href="#L-6080"><span class="linenos">6080</span></a> <span class="p">)</span> -</span><span id="L-6081"><a href="#L-6081"><span class="linenos">6081</span></a> <span class="p">)</span> -</span><span id="L-6082"><a href="#L-6082"><span class="linenos">6082</span></a> -</span><span id="L-6083"><a href="#L-6083"><span class="linenos">6083</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6084"><a href="#L-6084"><span class="linenos">6084</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="L-6085"><a href="#L-6085"><span class="linenos">6085</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6086"><a href="#L-6086"><span class="linenos">6086</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6073"><a href="#L-6073"><span class="linenos">6073</span></a> <span class="k">def</span> <span class="nf">_parse_refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">:</span> +</span><span id="L-6074"><a href="#L-6074"><span class="linenos">6074</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-6075"><a href="#L-6075"><span class="linenos">6075</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="L-6076"><a href="#L-6076"><span class="linenos">6076</span></a> +</span><span id="L-6077"><a href="#L-6077"><span class="linenos">6077</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6078"><a href="#L-6078"><span class="linenos">6078</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="L-6079"><a href="#L-6079"><span class="linenos">6079</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6080"><a href="#L-6080"><span class="linenos">6080</span></a> +</span><span id="L-6081"><a href="#L-6081"><span class="linenos">6081</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="L-6082"><a href="#L-6082"><span class="linenos">6082</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6083"><a href="#L-6083"><span class="linenos">6083</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">()</span> +</span><span id="L-6084"><a href="#L-6084"><span class="linenos">6084</span></a> +</span><span id="L-6085"><a href="#L-6085"><span class="linenos">6085</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-6086"><a href="#L-6086"><span class="linenos">6086</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> </span><span id="L-6087"><a href="#L-6087"><span class="linenos">6087</span></a> -</span><span id="L-6088"><a href="#L-6088"><span class="linenos">6088</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6089"><a href="#L-6089"><span class="linenos">6089</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">):</span> -</span><span id="L-6090"><a href="#L-6090"><span class="linenos">6090</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-6091"><a href="#L-6091"><span class="linenos">6091</span></a> -</span><span id="L-6092"><a href="#L-6092"><span class="linenos">6092</span></a> <span class="c1"># Many dialects support the ALTER [COLUMN] syntax, so if there is no</span> -</span><span id="L-6093"><a href="#L-6093"><span class="linenos">6093</span></a> <span class="c1"># keyword after ALTER we default to parsing this statement</span> -</span><span id="L-6094"><a href="#L-6094"><span class="linenos">6094</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="L-6095"><a href="#L-6095"><span class="linenos">6095</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6096"><a href="#L-6096"><span class="linenos">6096</span></a> -</span><span id="L-6097"><a href="#L-6097"><span class="linenos">6097</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-6098"><a href="#L-6098"><span class="linenos">6098</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6099"><a href="#L-6099"><span class="linenos">6099</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-6100"><a href="#L-6100"><span class="linenos">6100</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="L-6101"><a href="#L-6101"><span class="linenos">6101</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">):</span> -</span><span id="L-6102"><a href="#L-6102"><span class="linenos">6102</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="L-6103"><a href="#L-6103"><span class="linenos">6103</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="L-6104"><a href="#L-6104"><span class="linenos">6104</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6105"><a href="#L-6105"><span class="linenos">6105</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="L-6106"><a href="#L-6106"><span class="linenos">6106</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="L-6107"><a href="#L-6107"><span class="linenos">6107</span></a> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6108"><a href="#L-6108"><span class="linenos">6108</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-6109"><a href="#L-6109"><span class="linenos">6109</span></a> <span class="p">)</span> -</span><span id="L-6110"><a href="#L-6110"><span class="linenos">6110</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="L-6111"><a href="#L-6111"><span class="linenos">6111</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6112"><a href="#L-6112"><span class="linenos">6112</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="L-6113"><a href="#L-6113"><span class="linenos">6113</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="L-6114"><a href="#L-6114"><span class="linenos">6114</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-6115"><a href="#L-6115"><span class="linenos">6115</span></a> <span class="p">)</span> -</span><span id="L-6116"><a href="#L-6116"><span class="linenos">6116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> -</span><span id="L-6117"><a href="#L-6117"><span class="linenos">6117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> -</span><span id="L-6118"><a href="#L-6118"><span class="linenos">6118</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6119"><a href="#L-6119"><span class="linenos">6119</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="L-6120"><a href="#L-6120"><span class="linenos">6120</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="L-6121"><a href="#L-6121"><span class="linenos">6121</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> -</span><span id="L-6122"><a href="#L-6122"><span class="linenos">6122</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="L-6123"><a href="#L-6123"><span class="linenos">6123</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="L-6124"><a href="#L-6124"><span class="linenos">6124</span></a> <span class="p">)</span> -</span><span id="L-6125"><a href="#L-6125"><span class="linenos">6125</span></a> -</span><span id="L-6126"><a href="#L-6126"><span class="linenos">6126</span></a> <span class="k">def</span> <span class="nf">_parse_alter_diststyle</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">:</span> -</span><span id="L-6127"><a href="#L-6127"><span class="linenos">6127</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"EVEN"</span><span class="p">,</span> <span class="s2">"AUTO"</span><span class="p">)):</span> -</span><span id="L-6128"><a href="#L-6128"><span class="linenos">6128</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="L-6129"><a href="#L-6129"><span class="linenos">6129</span></a> -</span><span id="L-6130"><a href="#L-6130"><span class="linenos">6130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">,</span> <span class="s2">"DISTKEY"</span><span class="p">)</span> -</span><span id="L-6131"><a href="#L-6131"><span class="linenos">6131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="L-6132"><a href="#L-6132"><span class="linenos">6132</span></a> -</span><span id="L-6133"><a href="#L-6133"><span class="linenos">6133</span></a> <span class="k">def</span> <span class="nf">_parse_alter_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">:</span> -</span><span id="L-6134"><a href="#L-6134"><span class="linenos">6134</span></a> <span class="k">if</span> <span class="n">compound</span><span class="p">:</span> -</span><span id="L-6135"><a href="#L-6135"><span class="linenos">6135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTKEY"</span><span class="p">)</span> -</span><span id="L-6136"><a href="#L-6136"><span class="linenos">6136</span></a> -</span><span id="L-6137"><a href="#L-6137"><span class="linenos">6137</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6138"><a href="#L-6138"><span class="linenos">6138</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6139"><a href="#L-6139"><span class="linenos">6139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="L-6140"><a href="#L-6140"><span class="linenos">6140</span></a> <span class="p">)</span> -</span><span id="L-6141"><a href="#L-6141"><span class="linenos">6141</span></a> -</span><span id="L-6142"><a href="#L-6142"><span class="linenos">6142</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"AUTO"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">))</span> -</span><span id="L-6143"><a href="#L-6143"><span class="linenos">6143</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6144"><a href="#L-6144"><span class="linenos">6144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="L-6145"><a href="#L-6145"><span class="linenos">6145</span></a> <span class="p">)</span> -</span><span id="L-6146"><a href="#L-6146"><span class="linenos">6146</span></a> -</span><span id="L-6147"><a href="#L-6147"><span class="linenos">6147</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6148"><a href="#L-6148"><span class="linenos">6148</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="L-6149"><a href="#L-6149"><span class="linenos">6149</span></a> -</span><span id="L-6150"><a href="#L-6150"><span class="linenos">6150</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="L-6151"><a href="#L-6151"><span class="linenos">6151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6152"><a href="#L-6152"><span class="linenos">6152</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">))</span> -</span><span id="L-6153"><a href="#L-6153"><span class="linenos">6153</span></a> -</span><span id="L-6154"><a href="#L-6154"><span class="linenos">6154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6155"><a href="#L-6155"><span class="linenos">6155</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> -</span><span id="L-6156"><a href="#L-6156"><span class="linenos">6156</span></a> -</span><span id="L-6157"><a href="#L-6157"><span class="linenos">6157</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_rename</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RenameTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">]:</span> -</span><span id="L-6158"><a href="#L-6158"><span class="linenos">6158</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">):</span> -</span><span id="L-6159"><a href="#L-6159"><span class="linenos">6159</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="L-6160"><a href="#L-6160"><span class="linenos">6160</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-6161"><a href="#L-6161"><span class="linenos">6161</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="L-6162"><a href="#L-6162"><span class="linenos">6162</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-6163"><a href="#L-6163"><span class="linenos">6163</span></a> -</span><span id="L-6164"><a href="#L-6164"><span class="linenos">6164</span></a> <span class="k">if</span> <span class="n">old_column</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">to</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">new_column</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6165"><a href="#L-6165"><span class="linenos">6165</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6088"><a href="#L-6088"><span class="linenos">6088</span></a> <span class="c1"># https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns</span> +</span><span id="L-6089"><a href="#L-6089"><span class="linenos">6089</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FIRST"</span><span class="p">,</span> <span class="s2">"AFTER"</span><span class="p">)):</span> +</span><span id="L-6090"><a href="#L-6090"><span class="linenos">6090</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-6091"><a href="#L-6091"><span class="linenos">6091</span></a> <span class="n">column_position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6092"><a href="#L-6092"><span class="linenos">6092</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span> +</span><span id="L-6093"><a href="#L-6093"><span class="linenos">6093</span></a> <span class="p">)</span> +</span><span id="L-6094"><a href="#L-6094"><span class="linenos">6094</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="n">column_position</span><span class="p">)</span> +</span><span id="L-6095"><a href="#L-6095"><span class="linenos">6095</span></a> +</span><span id="L-6096"><a href="#L-6096"><span class="linenos">6096</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-6097"><a href="#L-6097"><span class="linenos">6097</span></a> +</span><span id="L-6098"><a href="#L-6098"><span class="linenos">6098</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">]:</span> +</span><span id="L-6099"><a href="#L-6099"><span class="linenos">6099</span></a> <span class="n">drop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">()</span> +</span><span id="L-6100"><a href="#L-6100"><span class="linenos">6100</span></a> <span class="k">if</span> <span class="n">drop</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">drop</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">):</span> +</span><span id="L-6101"><a href="#L-6101"><span class="linenos">6101</span></a> <span class="n">drop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">drop</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="s2">"COLUMN"</span><span class="p">))</span> +</span><span id="L-6102"><a href="#L-6102"><span class="linenos">6102</span></a> <span class="k">return</span> <span class="n">drop</span> +</span><span id="L-6103"><a href="#L-6103"><span class="linenos">6103</span></a> +</span><span id="L-6104"><a href="#L-6104"><span class="linenos">6104</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> +</span><span id="L-6105"><a href="#L-6105"><span class="linenos">6105</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">:</span> +</span><span id="L-6106"><a href="#L-6106"><span class="linenos">6106</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6107"><a href="#L-6107"><span class="linenos">6107</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> +</span><span id="L-6108"><a href="#L-6108"><span class="linenos">6108</span></a> <span class="p">)</span> +</span><span id="L-6109"><a href="#L-6109"><span class="linenos">6109</span></a> +</span><span id="L-6110"><a href="#L-6110"><span class="linenos">6110</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6111"><a href="#L-6111"><span class="linenos">6111</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="L-6112"><a href="#L-6112"><span class="linenos">6112</span></a> +</span><span id="L-6113"><a href="#L-6113"><span class="linenos">6113</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6114"><a href="#L-6114"><span class="linenos">6114</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-6115"><a href="#L-6115"><span class="linenos">6115</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6116"><a href="#L-6116"><span class="linenos">6116</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">)</span> +</span><span id="L-6117"><a href="#L-6117"><span class="linenos">6117</span></a> <span class="p">)</span> +</span><span id="L-6118"><a href="#L-6118"><span class="linenos">6118</span></a> <span class="p">)</span> +</span><span id="L-6119"><a href="#L-6119"><span class="linenos">6119</span></a> +</span><span id="L-6120"><a href="#L-6120"><span class="linenos">6120</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6121"><a href="#L-6121"><span class="linenos">6121</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="L-6122"><a href="#L-6122"><span class="linenos">6122</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6123"><a href="#L-6123"><span class="linenos">6123</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6124"><a href="#L-6124"><span class="linenos">6124</span></a> +</span><span id="L-6125"><a href="#L-6125"><span class="linenos">6125</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6126"><a href="#L-6126"><span class="linenos">6126</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">):</span> +</span><span id="L-6127"><a href="#L-6127"><span class="linenos">6127</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-6128"><a href="#L-6128"><span class="linenos">6128</span></a> +</span><span id="L-6129"><a href="#L-6129"><span class="linenos">6129</span></a> <span class="c1"># Many dialects support the ALTER [COLUMN] syntax, so if there is no</span> +</span><span id="L-6130"><a href="#L-6130"><span class="linenos">6130</span></a> <span class="c1"># keyword after ALTER we default to parsing this statement</span> +</span><span id="L-6131"><a href="#L-6131"><span class="linenos">6131</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="L-6132"><a href="#L-6132"><span class="linenos">6132</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6133"><a href="#L-6133"><span class="linenos">6133</span></a> +</span><span id="L-6134"><a href="#L-6134"><span class="linenos">6134</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-6135"><a href="#L-6135"><span class="linenos">6135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6136"><a href="#L-6136"><span class="linenos">6136</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-6137"><a href="#L-6137"><span class="linenos">6137</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="L-6138"><a href="#L-6138"><span class="linenos">6138</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">):</span> +</span><span id="L-6139"><a href="#L-6139"><span class="linenos">6139</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="L-6140"><a href="#L-6140"><span class="linenos">6140</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="L-6141"><a href="#L-6141"><span class="linenos">6141</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6142"><a href="#L-6142"><span class="linenos">6142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="L-6143"><a href="#L-6143"><span class="linenos">6143</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="L-6144"><a href="#L-6144"><span class="linenos">6144</span></a> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6145"><a href="#L-6145"><span class="linenos">6145</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-6146"><a href="#L-6146"><span class="linenos">6146</span></a> <span class="p">)</span> +</span><span id="L-6147"><a href="#L-6147"><span class="linenos">6147</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="L-6148"><a href="#L-6148"><span class="linenos">6148</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6149"><a href="#L-6149"><span class="linenos">6149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="L-6150"><a href="#L-6150"><span class="linenos">6150</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="L-6151"><a href="#L-6151"><span class="linenos">6151</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-6152"><a href="#L-6152"><span class="linenos">6152</span></a> <span class="p">)</span> +</span><span id="L-6153"><a href="#L-6153"><span class="linenos">6153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> +</span><span id="L-6154"><a href="#L-6154"><span class="linenos">6154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> +</span><span id="L-6155"><a href="#L-6155"><span class="linenos">6155</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6156"><a href="#L-6156"><span class="linenos">6156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="L-6157"><a href="#L-6157"><span class="linenos">6157</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="L-6158"><a href="#L-6158"><span class="linenos">6158</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> +</span><span id="L-6159"><a href="#L-6159"><span class="linenos">6159</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="L-6160"><a href="#L-6160"><span class="linenos">6160</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="L-6161"><a href="#L-6161"><span class="linenos">6161</span></a> <span class="p">)</span> +</span><span id="L-6162"><a href="#L-6162"><span class="linenos">6162</span></a> +</span><span id="L-6163"><a href="#L-6163"><span class="linenos">6163</span></a> <span class="k">def</span> <span class="nf">_parse_alter_diststyle</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">:</span> +</span><span id="L-6164"><a href="#L-6164"><span class="linenos">6164</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"EVEN"</span><span class="p">,</span> <span class="s2">"AUTO"</span><span class="p">)):</span> +</span><span id="L-6165"><a href="#L-6165"><span class="linenos">6165</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> </span><span id="L-6166"><a href="#L-6166"><span class="linenos">6166</span></a> -</span><span id="L-6167"><a href="#L-6167"><span class="linenos">6167</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">)</span> -</span><span id="L-6168"><a href="#L-6168"><span class="linenos">6168</span></a> -</span><span id="L-6169"><a href="#L-6169"><span class="linenos">6169</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="L-6170"><a href="#L-6170"><span class="linenos">6170</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-6171"><a href="#L-6171"><span class="linenos">6171</span></a> -</span><span id="L-6172"><a href="#L-6172"><span class="linenos">6172</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">:</span> -</span><span id="L-6173"><a href="#L-6173"><span class="linenos">6173</span></a> <span class="n">alter_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> -</span><span id="L-6174"><a href="#L-6174"><span class="linenos">6174</span></a> -</span><span id="L-6175"><a href="#L-6175"><span class="linenos">6175</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> -</span><span id="L-6176"><a href="#L-6176"><span class="linenos">6176</span></a> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"PROPERTIES"</span> -</span><span id="L-6177"><a href="#L-6177"><span class="linenos">6177</span></a> <span class="p">):</span> -</span><span id="L-6178"><a href="#L-6178"><span class="linenos">6178</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> -</span><span id="L-6179"><a href="#L-6179"><span class="linenos">6179</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILESTREAM_ON"</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6180"><a href="#L-6180"><span class="linenos">6180</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> -</span><span id="L-6181"><a href="#L-6181"><span class="linenos">6181</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"LOGGED"</span><span class="p">,</span> <span class="s2">"UNLOGGED"</span><span class="p">)):</span> -</span><span id="L-6182"><a href="#L-6182"><span class="linenos">6182</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="L-6183"><a href="#L-6183"><span class="linenos">6183</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CLUSTER"</span><span class="p">,</span> <span class="s2">"OIDS"</span><span class="p">)):</span> -</span><span id="L-6184"><a href="#L-6184"><span class="linenos">6184</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WITHOUT </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">))</span> -</span><span id="L-6185"><a href="#L-6185"><span class="linenos">6185</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCATION"</span><span class="p">):</span> -</span><span id="L-6186"><a href="#L-6186"><span class="linenos">6186</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"location"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6187"><a href="#L-6187"><span class="linenos">6187</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">,</span> <span class="s2">"METHOD"</span><span class="p">):</span> -</span><span id="L-6188"><a href="#L-6188"><span class="linenos">6188</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"access_method"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6189"><a href="#L-6189"><span class="linenos">6189</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLESPACE"</span><span class="p">):</span> -</span><span id="L-6190"><a href="#L-6190"><span class="linenos">6190</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tablespace"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6191"><a href="#L-6191"><span class="linenos">6191</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILE"</span><span class="p">,</span> <span class="s2">"FORMAT"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILEFORMAT"</span><span class="p">):</span> -</span><span id="L-6192"><a href="#L-6192"><span class="linenos">6192</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()])</span> -</span><span id="L-6193"><a href="#L-6193"><span class="linenos">6193</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_FILE_FORMAT"</span><span class="p">):</span> -</span><span id="L-6194"><a href="#L-6194"><span class="linenos">6194</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="L-6195"><a href="#L-6195"><span class="linenos">6195</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_COPY_OPTIONS"</span><span class="p">):</span> -</span><span id="L-6196"><a href="#L-6196"><span class="linenos">6196</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"copy_options"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="L-6197"><a href="#L-6197"><span class="linenos">6197</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAG"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAGS"</span><span class="p">):</span> -</span><span id="L-6198"><a href="#L-6198"><span class="linenos">6198</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tag"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> -</span><span id="L-6199"><a href="#L-6199"><span class="linenos">6199</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6200"><a href="#L-6200"><span class="linenos">6200</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> -</span><span id="L-6201"><a href="#L-6201"><span class="linenos">6201</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"serde"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6202"><a href="#L-6202"><span class="linenos">6202</span></a> -</span><span id="L-6203"><a href="#L-6203"><span class="linenos">6203</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()])</span> -</span><span id="L-6204"><a href="#L-6204"><span class="linenos">6204</span></a> -</span><span id="L-6205"><a href="#L-6205"><span class="linenos">6205</span></a> <span class="k">return</span> <span class="n">alter_set</span> -</span><span id="L-6206"><a href="#L-6206"><span class="linenos">6206</span></a> -</span><span id="L-6207"><a href="#L-6207"><span class="linenos">6207</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-6208"><a href="#L-6208"><span class="linenos">6208</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-6209"><a href="#L-6209"><span class="linenos">6209</span></a> -</span><span id="L-6210"><a href="#L-6210"><span class="linenos">6210</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="L-6211"><a href="#L-6211"><span class="linenos">6211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-6212"><a href="#L-6212"><span class="linenos">6212</span></a> -</span><span id="L-6213"><a href="#L-6213"><span class="linenos">6213</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="L-6214"><a href="#L-6214"><span class="linenos">6214</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> -</span><span id="L-6215"><a href="#L-6215"><span class="linenos">6215</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6216"><a href="#L-6216"><span class="linenos">6216</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-6217"><a href="#L-6217"><span class="linenos">6217</span></a> -</span><span id="L-6218"><a href="#L-6218"><span class="linenos">6218</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="L-6219"><a href="#L-6219"><span class="linenos">6219</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6220"><a href="#L-6220"><span class="linenos">6220</span></a> -</span><span id="L-6221"><a href="#L-6221"><span class="linenos">6221</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-6222"><a href="#L-6222"><span class="linenos">6222</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-6223"><a href="#L-6223"><span class="linenos">6223</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="L-6224"><a href="#L-6224"><span class="linenos">6224</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> -</span><span id="L-6225"><a href="#L-6225"><span class="linenos">6225</span></a> -</span><span id="L-6226"><a href="#L-6226"><span class="linenos">6226</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">actions</span><span class="p">:</span> -</span><span id="L-6227"><a href="#L-6227"><span class="linenos">6227</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6228"><a href="#L-6228"><span class="linenos">6228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span><span class="p">,</span> -</span><span id="L-6229"><a href="#L-6229"><span class="linenos">6229</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-6230"><a href="#L-6230"><span class="linenos">6230</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="L-6231"><a href="#L-6231"><span class="linenos">6231</span></a> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">,</span> -</span><span id="L-6232"><a href="#L-6232"><span class="linenos">6232</span></a> <span class="n">only</span><span class="o">=</span><span class="n">only</span><span class="p">,</span> -</span><span id="L-6233"><a href="#L-6233"><span class="linenos">6233</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> -</span><span id="L-6234"><a href="#L-6234"><span class="linenos">6234</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> -</span><span id="L-6235"><a href="#L-6235"><span class="linenos">6235</span></a> <span class="p">)</span> -</span><span id="L-6236"><a href="#L-6236"><span class="linenos">6236</span></a> -</span><span id="L-6237"><a href="#L-6237"><span class="linenos">6237</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-6238"><a href="#L-6238"><span class="linenos">6238</span></a> -</span><span id="L-6239"><a href="#L-6239"><span class="linenos">6239</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> -</span><span id="L-6240"><a href="#L-6240"><span class="linenos">6240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="L-6241"><a href="#L-6241"><span class="linenos">6241</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-6242"><a href="#L-6242"><span class="linenos">6242</span></a> -</span><span id="L-6243"><a href="#L-6243"><span class="linenos">6243</span></a> <span class="k">if</span> <span class="n">target</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6244"><a href="#L-6244"><span class="linenos">6244</span></a> <span class="n">target</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="L-6245"><a href="#L-6245"><span class="linenos">6245</span></a> -</span><span id="L-6246"><a href="#L-6246"><span class="linenos">6246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> -</span><span id="L-6247"><a href="#L-6247"><span class="linenos">6247</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-6248"><a href="#L-6248"><span class="linenos">6248</span></a> -</span><span id="L-6249"><a href="#L-6249"><span class="linenos">6249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-6250"><a href="#L-6250"><span class="linenos">6250</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="L-6251"><a href="#L-6251"><span class="linenos">6251</span></a> -</span><span id="L-6252"><a href="#L-6252"><span class="linenos">6252</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6253"><a href="#L-6253"><span class="linenos">6253</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> -</span><span id="L-6254"><a href="#L-6254"><span class="linenos">6254</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> -</span><span id="L-6255"><a href="#L-6255"><span class="linenos">6255</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> -</span><span id="L-6256"><a href="#L-6256"><span class="linenos">6256</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> -</span><span id="L-6257"><a href="#L-6257"><span class="linenos">6257</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> -</span><span id="L-6258"><a href="#L-6258"><span class="linenos">6258</span></a> <span class="p">)</span> -</span><span id="L-6259"><a href="#L-6259"><span class="linenos">6259</span></a> -</span><span id="L-6260"><a href="#L-6260"><span class="linenos">6260</span></a> <span class="k">def</span> <span class="nf">_parse_when_matched</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">]:</span> -</span><span id="L-6261"><a href="#L-6261"><span class="linenos">6261</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6167"><a href="#L-6167"><span class="linenos">6167</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">,</span> <span class="s2">"DISTKEY"</span><span class="p">)</span> +</span><span id="L-6168"><a href="#L-6168"><span class="linenos">6168</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="L-6169"><a href="#L-6169"><span class="linenos">6169</span></a> +</span><span id="L-6170"><a href="#L-6170"><span class="linenos">6170</span></a> <span class="k">def</span> <span class="nf">_parse_alter_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">:</span> +</span><span id="L-6171"><a href="#L-6171"><span class="linenos">6171</span></a> <span class="k">if</span> <span class="n">compound</span><span class="p">:</span> +</span><span id="L-6172"><a href="#L-6172"><span class="linenos">6172</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTKEY"</span><span class="p">)</span> +</span><span id="L-6173"><a href="#L-6173"><span class="linenos">6173</span></a> +</span><span id="L-6174"><a href="#L-6174"><span class="linenos">6174</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6175"><a href="#L-6175"><span class="linenos">6175</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6176"><a href="#L-6176"><span class="linenos">6176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> +</span><span id="L-6177"><a href="#L-6177"><span class="linenos">6177</span></a> <span class="p">)</span> +</span><span id="L-6178"><a href="#L-6178"><span class="linenos">6178</span></a> +</span><span id="L-6179"><a href="#L-6179"><span class="linenos">6179</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"AUTO"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">))</span> +</span><span id="L-6180"><a href="#L-6180"><span class="linenos">6180</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6181"><a href="#L-6181"><span class="linenos">6181</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> +</span><span id="L-6182"><a href="#L-6182"><span class="linenos">6182</span></a> <span class="p">)</span> +</span><span id="L-6183"><a href="#L-6183"><span class="linenos">6183</span></a> +</span><span id="L-6184"><a href="#L-6184"><span class="linenos">6184</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6185"><a href="#L-6185"><span class="linenos">6185</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="L-6186"><a href="#L-6186"><span class="linenos">6186</span></a> +</span><span id="L-6187"><a href="#L-6187"><span class="linenos">6187</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-6188"><a href="#L-6188"><span class="linenos">6188</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6189"><a href="#L-6189"><span class="linenos">6189</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">))</span> +</span><span id="L-6190"><a href="#L-6190"><span class="linenos">6190</span></a> +</span><span id="L-6191"><a href="#L-6191"><span class="linenos">6191</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6192"><a href="#L-6192"><span class="linenos">6192</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> +</span><span id="L-6193"><a href="#L-6193"><span class="linenos">6193</span></a> +</span><span id="L-6194"><a href="#L-6194"><span class="linenos">6194</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_rename</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RenameTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">]:</span> +</span><span id="L-6195"><a href="#L-6195"><span class="linenos">6195</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">):</span> +</span><span id="L-6196"><a href="#L-6196"><span class="linenos">6196</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-6197"><a href="#L-6197"><span class="linenos">6197</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-6198"><a href="#L-6198"><span class="linenos">6198</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="L-6199"><a href="#L-6199"><span class="linenos">6199</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-6200"><a href="#L-6200"><span class="linenos">6200</span></a> +</span><span id="L-6201"><a href="#L-6201"><span class="linenos">6201</span></a> <span class="k">if</span> <span class="n">old_column</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">to</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">new_column</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6202"><a href="#L-6202"><span class="linenos">6202</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6203"><a href="#L-6203"><span class="linenos">6203</span></a> +</span><span id="L-6204"><a href="#L-6204"><span class="linenos">6204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">)</span> +</span><span id="L-6205"><a href="#L-6205"><span class="linenos">6205</span></a> +</span><span id="L-6206"><a href="#L-6206"><span class="linenos">6206</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="L-6207"><a href="#L-6207"><span class="linenos">6207</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-6208"><a href="#L-6208"><span class="linenos">6208</span></a> +</span><span id="L-6209"><a href="#L-6209"><span class="linenos">6209</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">:</span> +</span><span id="L-6210"><a href="#L-6210"><span class="linenos">6210</span></a> <span class="n">alter_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> +</span><span id="L-6211"><a href="#L-6211"><span class="linenos">6211</span></a> +</span><span id="L-6212"><a href="#L-6212"><span class="linenos">6212</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> +</span><span id="L-6213"><a href="#L-6213"><span class="linenos">6213</span></a> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"PROPERTIES"</span> +</span><span id="L-6214"><a href="#L-6214"><span class="linenos">6214</span></a> <span class="p">):</span> +</span><span id="L-6215"><a href="#L-6215"><span class="linenos">6215</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> +</span><span id="L-6216"><a href="#L-6216"><span class="linenos">6216</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILESTREAM_ON"</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6217"><a href="#L-6217"><span class="linenos">6217</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> +</span><span id="L-6218"><a href="#L-6218"><span class="linenos">6218</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"LOGGED"</span><span class="p">,</span> <span class="s2">"UNLOGGED"</span><span class="p">)):</span> +</span><span id="L-6219"><a href="#L-6219"><span class="linenos">6219</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="L-6220"><a href="#L-6220"><span class="linenos">6220</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CLUSTER"</span><span class="p">,</span> <span class="s2">"OIDS"</span><span class="p">)):</span> +</span><span id="L-6221"><a href="#L-6221"><span class="linenos">6221</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WITHOUT </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">))</span> +</span><span id="L-6222"><a href="#L-6222"><span class="linenos">6222</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCATION"</span><span class="p">):</span> +</span><span id="L-6223"><a href="#L-6223"><span class="linenos">6223</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"location"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6224"><a href="#L-6224"><span class="linenos">6224</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">,</span> <span class="s2">"METHOD"</span><span class="p">):</span> +</span><span id="L-6225"><a href="#L-6225"><span class="linenos">6225</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"access_method"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6226"><a href="#L-6226"><span class="linenos">6226</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLESPACE"</span><span class="p">):</span> +</span><span id="L-6227"><a href="#L-6227"><span class="linenos">6227</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tablespace"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6228"><a href="#L-6228"><span class="linenos">6228</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILE"</span><span class="p">,</span> <span class="s2">"FORMAT"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILEFORMAT"</span><span class="p">):</span> +</span><span id="L-6229"><a href="#L-6229"><span class="linenos">6229</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()])</span> +</span><span id="L-6230"><a href="#L-6230"><span class="linenos">6230</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_FILE_FORMAT"</span><span class="p">):</span> +</span><span id="L-6231"><a href="#L-6231"><span class="linenos">6231</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="L-6232"><a href="#L-6232"><span class="linenos">6232</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_COPY_OPTIONS"</span><span class="p">):</span> +</span><span id="L-6233"><a href="#L-6233"><span class="linenos">6233</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"copy_options"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="L-6234"><a href="#L-6234"><span class="linenos">6234</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAG"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAGS"</span><span class="p">):</span> +</span><span id="L-6235"><a href="#L-6235"><span class="linenos">6235</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tag"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> +</span><span id="L-6236"><a href="#L-6236"><span class="linenos">6236</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6237"><a href="#L-6237"><span class="linenos">6237</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> +</span><span id="L-6238"><a href="#L-6238"><span class="linenos">6238</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"serde"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6239"><a href="#L-6239"><span class="linenos">6239</span></a> +</span><span id="L-6240"><a href="#L-6240"><span class="linenos">6240</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()])</span> +</span><span id="L-6241"><a href="#L-6241"><span class="linenos">6241</span></a> +</span><span id="L-6242"><a href="#L-6242"><span class="linenos">6242</span></a> <span class="k">return</span> <span class="n">alter_set</span> +</span><span id="L-6243"><a href="#L-6243"><span class="linenos">6243</span></a> +</span><span id="L-6244"><a href="#L-6244"><span class="linenos">6244</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-6245"><a href="#L-6245"><span class="linenos">6245</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-6246"><a href="#L-6246"><span class="linenos">6246</span></a> +</span><span id="L-6247"><a href="#L-6247"><span class="linenos">6247</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="L-6248"><a href="#L-6248"><span class="linenos">6248</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-6249"><a href="#L-6249"><span class="linenos">6249</span></a> +</span><span id="L-6250"><a href="#L-6250"><span class="linenos">6250</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-6251"><a href="#L-6251"><span class="linenos">6251</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> +</span><span id="L-6252"><a href="#L-6252"><span class="linenos">6252</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6253"><a href="#L-6253"><span class="linenos">6253</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-6254"><a href="#L-6254"><span class="linenos">6254</span></a> +</span><span id="L-6255"><a href="#L-6255"><span class="linenos">6255</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="L-6256"><a href="#L-6256"><span class="linenos">6256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6257"><a href="#L-6257"><span class="linenos">6257</span></a> +</span><span id="L-6258"><a href="#L-6258"><span class="linenos">6258</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-6259"><a href="#L-6259"><span class="linenos">6259</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-6260"><a href="#L-6260"><span class="linenos">6260</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="L-6261"><a href="#L-6261"><span class="linenos">6261</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> </span><span id="L-6262"><a href="#L-6262"><span class="linenos">6262</span></a> -</span><span id="L-6263"><a href="#L-6263"><span class="linenos">6263</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="L-6264"><a href="#L-6264"><span class="linenos">6264</span></a> <span class="n">matched</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="L-6265"><a href="#L-6265"><span class="linenos">6265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCHED"</span><span class="p">)</span> -</span><span id="L-6266"><a href="#L-6266"><span class="linenos">6266</span></a> <span class="n">source</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-6267"><a href="#L-6267"><span class="linenos">6267</span></a> <span class="kc">False</span> -</span><span id="L-6268"><a href="#L-6268"><span class="linenos">6268</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"TARGET"</span><span class="p">)</span> -</span><span id="L-6269"><a href="#L-6269"><span class="linenos">6269</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"SOURCE"</span><span class="p">)</span> -</span><span id="L-6270"><a href="#L-6270"><span class="linenos">6270</span></a> <span class="p">)</span> -</span><span id="L-6271"><a href="#L-6271"><span class="linenos">6271</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-6272"><a href="#L-6272"><span class="linenos">6272</span></a> -</span><span id="L-6273"><a href="#L-6273"><span class="linenos">6273</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="L-6274"><a href="#L-6274"><span class="linenos">6274</span></a> -</span><span id="L-6275"><a href="#L-6275"><span class="linenos">6275</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> -</span><span id="L-6276"><a href="#L-6276"><span class="linenos">6276</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="L-6277"><a href="#L-6277"><span class="linenos">6277</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> -</span><span id="L-6278"><a href="#L-6278"><span class="linenos">6278</span></a> <span class="n">then</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> -</span><span id="L-6279"><a href="#L-6279"><span class="linenos">6279</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6280"><a href="#L-6280"><span class="linenos">6280</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6281"><a href="#L-6281"><span class="linenos">6281</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="L-6282"><a href="#L-6282"><span class="linenos">6282</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="L-6283"><a href="#L-6283"><span class="linenos">6283</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="L-6284"><a href="#L-6284"><span class="linenos">6284</span></a> <span class="p">)</span> -</span><span id="L-6285"><a href="#L-6285"><span class="linenos">6285</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> -</span><span id="L-6286"><a href="#L-6286"><span class="linenos">6286</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="L-6287"><a href="#L-6287"><span class="linenos">6287</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-6288"><a href="#L-6288"><span class="linenos">6288</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-6289"><a href="#L-6289"><span class="linenos">6289</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6290"><a href="#L-6290"><span class="linenos">6290</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6291"><a href="#L-6291"><span class="linenos">6291</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="L-6292"><a href="#L-6292"><span class="linenos">6292</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> -</span><span id="L-6293"><a href="#L-6293"><span class="linenos">6293</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> -</span><span id="L-6294"><a href="#L-6294"><span class="linenos">6294</span></a> <span class="p">)</span> -</span><span id="L-6295"><a href="#L-6295"><span class="linenos">6295</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> -</span><span id="L-6296"><a href="#L-6296"><span class="linenos">6296</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-6297"><a href="#L-6297"><span class="linenos">6297</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6298"><a href="#L-6298"><span class="linenos">6298</span></a> <span class="n">then</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6263"><a href="#L-6263"><span class="linenos">6263</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">actions</span><span class="p">:</span> +</span><span id="L-6264"><a href="#L-6264"><span class="linenos">6264</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6265"><a href="#L-6265"><span class="linenos">6265</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span><span class="p">,</span> +</span><span id="L-6266"><a href="#L-6266"><span class="linenos">6266</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-6267"><a href="#L-6267"><span class="linenos">6267</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="L-6268"><a href="#L-6268"><span class="linenos">6268</span></a> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">,</span> +</span><span id="L-6269"><a href="#L-6269"><span class="linenos">6269</span></a> <span class="n">only</span><span class="o">=</span><span class="n">only</span><span class="p">,</span> +</span><span id="L-6270"><a href="#L-6270"><span class="linenos">6270</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> +</span><span id="L-6271"><a href="#L-6271"><span class="linenos">6271</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> +</span><span id="L-6272"><a href="#L-6272"><span class="linenos">6272</span></a> <span class="p">)</span> +</span><span id="L-6273"><a href="#L-6273"><span class="linenos">6273</span></a> +</span><span id="L-6274"><a href="#L-6274"><span class="linenos">6274</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-6275"><a href="#L-6275"><span class="linenos">6275</span></a> +</span><span id="L-6276"><a href="#L-6276"><span class="linenos">6276</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> +</span><span id="L-6277"><a href="#L-6277"><span class="linenos">6277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="L-6278"><a href="#L-6278"><span class="linenos">6278</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="L-6279"><a href="#L-6279"><span class="linenos">6279</span></a> +</span><span id="L-6280"><a href="#L-6280"><span class="linenos">6280</span></a> <span class="k">if</span> <span class="n">target</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6281"><a href="#L-6281"><span class="linenos">6281</span></a> <span class="n">target</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="L-6282"><a href="#L-6282"><span class="linenos">6282</span></a> +</span><span id="L-6283"><a href="#L-6283"><span class="linenos">6283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> +</span><span id="L-6284"><a href="#L-6284"><span class="linenos">6284</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="L-6285"><a href="#L-6285"><span class="linenos">6285</span></a> +</span><span id="L-6286"><a href="#L-6286"><span class="linenos">6286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-6287"><a href="#L-6287"><span class="linenos">6287</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="L-6288"><a href="#L-6288"><span class="linenos">6288</span></a> +</span><span id="L-6289"><a href="#L-6289"><span class="linenos">6289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6290"><a href="#L-6290"><span class="linenos">6290</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> +</span><span id="L-6291"><a href="#L-6291"><span class="linenos">6291</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> +</span><span id="L-6292"><a href="#L-6292"><span class="linenos">6292</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> +</span><span id="L-6293"><a href="#L-6293"><span class="linenos">6293</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> +</span><span id="L-6294"><a href="#L-6294"><span class="linenos">6294</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> +</span><span id="L-6295"><a href="#L-6295"><span class="linenos">6295</span></a> <span class="p">)</span> +</span><span id="L-6296"><a href="#L-6296"><span class="linenos">6296</span></a> +</span><span id="L-6297"><a href="#L-6297"><span class="linenos">6297</span></a> <span class="k">def</span> <span class="nf">_parse_when_matched</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">]:</span> +</span><span id="L-6298"><a href="#L-6298"><span class="linenos">6298</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-6299"><a href="#L-6299"><span class="linenos">6299</span></a> -</span><span id="L-6300"><a href="#L-6300"><span class="linenos">6300</span></a> <span class="n">whens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-6301"><a href="#L-6301"><span class="linenos">6301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6302"><a href="#L-6302"><span class="linenos">6302</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">,</span> -</span><span id="L-6303"><a href="#L-6303"><span class="linenos">6303</span></a> <span class="n">matched</span><span class="o">=</span><span class="n">matched</span><span class="p">,</span> -</span><span id="L-6304"><a href="#L-6304"><span class="linenos">6304</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> -</span><span id="L-6305"><a href="#L-6305"><span class="linenos">6305</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> -</span><span id="L-6306"><a href="#L-6306"><span class="linenos">6306</span></a> <span class="n">then</span><span class="o">=</span><span class="n">then</span><span class="p">,</span> -</span><span id="L-6307"><a href="#L-6307"><span class="linenos">6307</span></a> <span class="p">)</span> -</span><span id="L-6308"><a href="#L-6308"><span class="linenos">6308</span></a> <span class="p">)</span> -</span><span id="L-6309"><a href="#L-6309"><span class="linenos">6309</span></a> <span class="k">return</span> <span class="n">whens</span> -</span><span id="L-6310"><a href="#L-6310"><span class="linenos">6310</span></a> -</span><span id="L-6311"><a href="#L-6311"><span class="linenos">6311</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6312"><a href="#L-6312"><span class="linenos">6312</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SHOW_TRIE</span><span class="p">)</span> -</span><span id="L-6313"><a href="#L-6313"><span class="linenos">6313</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-6314"><a href="#L-6314"><span class="linenos">6314</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-6315"><a href="#L-6315"><span class="linenos">6315</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-6316"><a href="#L-6316"><span class="linenos">6316</span></a> -</span><span id="L-6317"><a href="#L-6317"><span class="linenos">6317</span></a> <span class="k">def</span> <span class="nf">_parse_set_item_assignment</span><span class="p">(</span> -</span><span id="L-6318"><a href="#L-6318"><span class="linenos">6318</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-6319"><a href="#L-6319"><span class="linenos">6319</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6320"><a href="#L-6320"><span class="linenos">6320</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-6321"><a href="#L-6321"><span class="linenos">6321</span></a> -</span><span id="L-6322"><a href="#L-6322"><span class="linenos">6322</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">,</span> <span class="s2">"SESSION"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">):</span> -</span><span id="L-6323"><a href="#L-6323"><span class="linenos">6323</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"GLOBAL"</span><span class="p">)</span> -</span><span id="L-6324"><a href="#L-6324"><span class="linenos">6324</span></a> -</span><span id="L-6325"><a href="#L-6325"><span class="linenos">6325</span></a> <span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-6326"><a href="#L-6326"><span class="linenos">6326</span></a> <span class="n">assignment_delimiter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"="</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">))</span> -</span><span id="L-6327"><a href="#L-6327"><span class="linenos">6327</span></a> -</span><span id="L-6328"><a href="#L-6328"><span class="linenos">6328</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">left</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">assignment_delimiter</span><span class="p">):</span> -</span><span id="L-6329"><a href="#L-6329"><span class="linenos">6329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6330"><a href="#L-6330"><span class="linenos">6330</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6331"><a href="#L-6331"><span class="linenos">6331</span></a> -</span><span id="L-6332"><a href="#L-6332"><span class="linenos">6332</span></a> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-6333"><a href="#L-6333"><span class="linenos">6333</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)):</span> -</span><span id="L-6334"><a href="#L-6334"><span class="linenos">6334</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-6335"><a href="#L-6335"><span class="linenos">6335</span></a> -</span><span id="L-6336"><a href="#L-6336"><span class="linenos">6336</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">)</span> -</span><span id="L-6337"><a href="#L-6337"><span class="linenos">6337</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="L-6338"><a href="#L-6338"><span class="linenos">6338</span></a> -</span><span id="L-6339"><a href="#L-6339"><span class="linenos">6339</span></a> <span class="k">def</span> <span class="nf">_parse_set_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-6340"><a href="#L-6340"><span class="linenos">6340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">)</span> -</span><span id="L-6341"><a href="#L-6341"><span class="linenos">6341</span></a> <span class="n">characteristics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-6342"><a href="#L-6342"><span class="linenos">6342</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">)</span> -</span><span id="L-6343"><a href="#L-6343"><span class="linenos">6343</span></a> <span class="p">)</span> -</span><span id="L-6344"><a href="#L-6344"><span class="linenos">6344</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6345"><a href="#L-6345"><span class="linenos">6345</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> -</span><span id="L-6346"><a href="#L-6346"><span class="linenos">6346</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">characteristics</span><span class="p">,</span> -</span><span id="L-6347"><a href="#L-6347"><span class="linenos">6347</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> -</span><span id="L-6348"><a href="#L-6348"><span class="linenos">6348</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"global"</span><span class="p">:</span> <span class="n">global_</span><span class="p">},</span> <span class="c1"># type: ignore</span> -</span><span id="L-6349"><a href="#L-6349"><span class="linenos">6349</span></a> <span class="p">)</span> -</span><span id="L-6350"><a href="#L-6350"><span class="linenos">6350</span></a> -</span><span id="L-6351"><a href="#L-6351"><span class="linenos">6351</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6352"><a href="#L-6352"><span class="linenos">6352</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SET_TRIE</span><span class="p">)</span> -</span><span id="L-6353"><a href="#L-6353"><span class="linenos">6353</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> -</span><span id="L-6354"><a href="#L-6354"><span class="linenos">6354</span></a> -</span><span id="L-6355"><a href="#L-6355"><span class="linenos">6355</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unset</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">tag</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-6356"><a href="#L-6356"><span class="linenos">6356</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-6357"><a href="#L-6357"><span class="linenos">6357</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6358"><a href="#L-6358"><span class="linenos">6358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">),</span> <span class="n">unset</span><span class="o">=</span><span class="n">unset</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag</span> -</span><span id="L-6359"><a href="#L-6359"><span class="linenos">6359</span></a> <span class="p">)</span> -</span><span id="L-6360"><a href="#L-6360"><span class="linenos">6360</span></a> -</span><span id="L-6361"><a href="#L-6361"><span class="linenos">6361</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6362"><a href="#L-6362"><span class="linenos">6362</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6363"><a href="#L-6363"><span class="linenos">6363</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-6300"><a href="#L-6300"><span class="linenos">6300</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="L-6301"><a href="#L-6301"><span class="linenos">6301</span></a> <span class="n">matched</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="L-6302"><a href="#L-6302"><span class="linenos">6302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCHED"</span><span class="p">)</span> +</span><span id="L-6303"><a href="#L-6303"><span class="linenos">6303</span></a> <span class="n">source</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-6304"><a href="#L-6304"><span class="linenos">6304</span></a> <span class="kc">False</span> +</span><span id="L-6305"><a href="#L-6305"><span class="linenos">6305</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"TARGET"</span><span class="p">)</span> +</span><span id="L-6306"><a href="#L-6306"><span class="linenos">6306</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"SOURCE"</span><span class="p">)</span> +</span><span id="L-6307"><a href="#L-6307"><span class="linenos">6307</span></a> <span class="p">)</span> +</span><span id="L-6308"><a href="#L-6308"><span class="linenos">6308</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-6309"><a href="#L-6309"><span class="linenos">6309</span></a> +</span><span id="L-6310"><a href="#L-6310"><span class="linenos">6310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="L-6311"><a href="#L-6311"><span class="linenos">6311</span></a> +</span><span id="L-6312"><a href="#L-6312"><span class="linenos">6312</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> +</span><span id="L-6313"><a href="#L-6313"><span class="linenos">6313</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="L-6314"><a href="#L-6314"><span class="linenos">6314</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> +</span><span id="L-6315"><a href="#L-6315"><span class="linenos">6315</span></a> <span class="n">then</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> +</span><span id="L-6316"><a href="#L-6316"><span class="linenos">6316</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6317"><a href="#L-6317"><span class="linenos">6317</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6318"><a href="#L-6318"><span class="linenos">6318</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="L-6319"><a href="#L-6319"><span class="linenos">6319</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="L-6320"><a href="#L-6320"><span class="linenos">6320</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="L-6321"><a href="#L-6321"><span class="linenos">6321</span></a> <span class="p">)</span> +</span><span id="L-6322"><a href="#L-6322"><span class="linenos">6322</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> +</span><span id="L-6323"><a href="#L-6323"><span class="linenos">6323</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="L-6324"><a href="#L-6324"><span class="linenos">6324</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-6325"><a href="#L-6325"><span class="linenos">6325</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-6326"><a href="#L-6326"><span class="linenos">6326</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6327"><a href="#L-6327"><span class="linenos">6327</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6328"><a href="#L-6328"><span class="linenos">6328</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="L-6329"><a href="#L-6329"><span class="linenos">6329</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> +</span><span id="L-6330"><a href="#L-6330"><span class="linenos">6330</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> +</span><span id="L-6331"><a href="#L-6331"><span class="linenos">6331</span></a> <span class="p">)</span> +</span><span id="L-6332"><a href="#L-6332"><span class="linenos">6332</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> +</span><span id="L-6333"><a href="#L-6333"><span class="linenos">6333</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-6334"><a href="#L-6334"><span class="linenos">6334</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6335"><a href="#L-6335"><span class="linenos">6335</span></a> <span class="n">then</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6336"><a href="#L-6336"><span class="linenos">6336</span></a> +</span><span id="L-6337"><a href="#L-6337"><span class="linenos">6337</span></a> <span class="n">whens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-6338"><a href="#L-6338"><span class="linenos">6338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6339"><a href="#L-6339"><span class="linenos">6339</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">,</span> +</span><span id="L-6340"><a href="#L-6340"><span class="linenos">6340</span></a> <span class="n">matched</span><span class="o">=</span><span class="n">matched</span><span class="p">,</span> +</span><span id="L-6341"><a href="#L-6341"><span class="linenos">6341</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> +</span><span id="L-6342"><a href="#L-6342"><span class="linenos">6342</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> +</span><span id="L-6343"><a href="#L-6343"><span class="linenos">6343</span></a> <span class="n">then</span><span class="o">=</span><span class="n">then</span><span class="p">,</span> +</span><span id="L-6344"><a href="#L-6344"><span class="linenos">6344</span></a> <span class="p">)</span> +</span><span id="L-6345"><a href="#L-6345"><span class="linenos">6345</span></a> <span class="p">)</span> +</span><span id="L-6346"><a href="#L-6346"><span class="linenos">6346</span></a> <span class="k">return</span> <span class="n">whens</span> +</span><span id="L-6347"><a href="#L-6347"><span class="linenos">6347</span></a> +</span><span id="L-6348"><a href="#L-6348"><span class="linenos">6348</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6349"><a href="#L-6349"><span class="linenos">6349</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SHOW_TRIE</span><span class="p">)</span> +</span><span id="L-6350"><a href="#L-6350"><span class="linenos">6350</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-6351"><a href="#L-6351"><span class="linenos">6351</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-6352"><a href="#L-6352"><span class="linenos">6352</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-6353"><a href="#L-6353"><span class="linenos">6353</span></a> +</span><span id="L-6354"><a href="#L-6354"><span class="linenos">6354</span></a> <span class="k">def</span> <span class="nf">_parse_set_item_assignment</span><span class="p">(</span> +</span><span id="L-6355"><a href="#L-6355"><span class="linenos">6355</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6356"><a href="#L-6356"><span class="linenos">6356</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6357"><a href="#L-6357"><span class="linenos">6357</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-6358"><a href="#L-6358"><span class="linenos">6358</span></a> +</span><span id="L-6359"><a href="#L-6359"><span class="linenos">6359</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">,</span> <span class="s2">"SESSION"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">):</span> +</span><span id="L-6360"><a href="#L-6360"><span class="linenos">6360</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"GLOBAL"</span><span class="p">)</span> +</span><span id="L-6361"><a href="#L-6361"><span class="linenos">6361</span></a> +</span><span id="L-6362"><a href="#L-6362"><span class="linenos">6362</span></a> <span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-6363"><a href="#L-6363"><span class="linenos">6363</span></a> <span class="n">assignment_delimiter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"="</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">))</span> </span><span id="L-6364"><a href="#L-6364"><span class="linenos">6364</span></a> -</span><span id="L-6365"><a href="#L-6365"><span class="linenos">6365</span></a> <span class="k">return</span> <span class="n">set_</span> -</span><span id="L-6366"><a href="#L-6366"><span class="linenos">6366</span></a> -</span><span id="L-6367"><a href="#L-6367"><span class="linenos">6367</span></a> <span class="k">def</span> <span class="nf">_parse_var_from_options</span><span class="p">(</span> -</span><span id="L-6368"><a href="#L-6368"><span class="linenos">6368</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-6369"><a href="#L-6369"><span class="linenos">6369</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">]:</span> -</span><span id="L-6370"><a href="#L-6370"><span class="linenos">6370</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> -</span><span id="L-6371"><a href="#L-6371"><span class="linenos">6371</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> -</span><span id="L-6372"><a href="#L-6372"><span class="linenos">6372</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6373"><a href="#L-6373"><span class="linenos">6373</span></a> -</span><span id="L-6374"><a href="#L-6374"><span class="linenos">6374</span></a> <span class="n">option</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-6375"><a href="#L-6375"><span class="linenos">6375</span></a> <span class="n">continuations</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> -</span><span id="L-6376"><a href="#L-6376"><span class="linenos">6376</span></a> -</span><span id="L-6377"><a href="#L-6377"><span class="linenos">6377</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-6378"><a href="#L-6378"><span class="linenos">6378</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6379"><a href="#L-6379"><span class="linenos">6379</span></a> <span class="k">for</span> <span class="n">keywords</span> <span class="ow">in</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="p">[]:</span> -</span><span id="L-6380"><a href="#L-6380"><span class="linenos">6380</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-6381"><a href="#L-6381"><span class="linenos">6381</span></a> <span class="n">keywords</span> <span class="o">=</span> <span class="p">(</span><span class="n">keywords</span><span class="p">,)</span> -</span><span id="L-6382"><a href="#L-6382"><span class="linenos">6382</span></a> -</span><span id="L-6383"><a href="#L-6383"><span class="linenos">6383</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">keywords</span><span class="p">):</span> -</span><span id="L-6384"><a href="#L-6384"><span class="linenos">6384</span></a> <span class="n">option</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keywords</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-6385"><a href="#L-6385"><span class="linenos">6385</span></a> <span class="k">break</span> -</span><span id="L-6386"><a href="#L-6386"><span class="linenos">6386</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6387"><a href="#L-6387"><span class="linenos">6387</span></a> <span class="k">if</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="n">continuations</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6388"><a href="#L-6388"><span class="linenos">6388</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span> -</span><span id="L-6389"><a href="#L-6389"><span class="linenos">6389</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown option </span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-6390"><a href="#L-6390"><span class="linenos">6390</span></a> -</span><span id="L-6391"><a href="#L-6391"><span class="linenos">6391</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6392"><a href="#L-6392"><span class="linenos">6392</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6393"><a href="#L-6393"><span class="linenos">6393</span></a> -</span><span id="L-6394"><a href="#L-6394"><span class="linenos">6394</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> -</span><span id="L-6395"><a href="#L-6395"><span class="linenos">6395</span></a> -</span><span id="L-6396"><a href="#L-6396"><span class="linenos">6396</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-6397"><a href="#L-6397"><span class="linenos">6397</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6398"><a href="#L-6398"><span class="linenos">6398</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6399"><a href="#L-6399"><span class="linenos">6399</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-6400"><a href="#L-6400"><span class="linenos">6400</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-6401"><a href="#L-6401"><span class="linenos">6401</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> -</span><span id="L-6402"><a href="#L-6402"><span class="linenos">6402</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">[:</span><span class="n">size</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">text</span><span class="p">[</span><span class="n">size</span><span class="p">:])</span> +</span><span id="L-6365"><a href="#L-6365"><span class="linenos">6365</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">left</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">assignment_delimiter</span><span class="p">):</span> +</span><span id="L-6366"><a href="#L-6366"><span class="linenos">6366</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6367"><a href="#L-6367"><span class="linenos">6367</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6368"><a href="#L-6368"><span class="linenos">6368</span></a> +</span><span id="L-6369"><a href="#L-6369"><span class="linenos">6369</span></a> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-6370"><a href="#L-6370"><span class="linenos">6370</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)):</span> +</span><span id="L-6371"><a href="#L-6371"><span class="linenos">6371</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-6372"><a href="#L-6372"><span class="linenos">6372</span></a> +</span><span id="L-6373"><a href="#L-6373"><span class="linenos">6373</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">)</span> +</span><span id="L-6374"><a href="#L-6374"><span class="linenos">6374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="L-6375"><a href="#L-6375"><span class="linenos">6375</span></a> +</span><span id="L-6376"><a href="#L-6376"><span class="linenos">6376</span></a> <span class="k">def</span> <span class="nf">_parse_set_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-6377"><a href="#L-6377"><span class="linenos">6377</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">)</span> +</span><span id="L-6378"><a href="#L-6378"><span class="linenos">6378</span></a> <span class="n">characteristics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-6379"><a href="#L-6379"><span class="linenos">6379</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">)</span> +</span><span id="L-6380"><a href="#L-6380"><span class="linenos">6380</span></a> <span class="p">)</span> +</span><span id="L-6381"><a href="#L-6381"><span class="linenos">6381</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6382"><a href="#L-6382"><span class="linenos">6382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> +</span><span id="L-6383"><a href="#L-6383"><span class="linenos">6383</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">characteristics</span><span class="p">,</span> +</span><span id="L-6384"><a href="#L-6384"><span class="linenos">6384</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> +</span><span id="L-6385"><a href="#L-6385"><span class="linenos">6385</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"global"</span><span class="p">:</span> <span class="n">global_</span><span class="p">},</span> <span class="c1"># type: ignore</span> +</span><span id="L-6386"><a href="#L-6386"><span class="linenos">6386</span></a> <span class="p">)</span> +</span><span id="L-6387"><a href="#L-6387"><span class="linenos">6387</span></a> +</span><span id="L-6388"><a href="#L-6388"><span class="linenos">6388</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6389"><a href="#L-6389"><span class="linenos">6389</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SET_TRIE</span><span class="p">)</span> +</span><span id="L-6390"><a href="#L-6390"><span class="linenos">6390</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> +</span><span id="L-6391"><a href="#L-6391"><span class="linenos">6391</span></a> +</span><span id="L-6392"><a href="#L-6392"><span class="linenos">6392</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unset</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">tag</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-6393"><a href="#L-6393"><span class="linenos">6393</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-6394"><a href="#L-6394"><span class="linenos">6394</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6395"><a href="#L-6395"><span class="linenos">6395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">),</span> <span class="n">unset</span><span class="o">=</span><span class="n">unset</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag</span> +</span><span id="L-6396"><a href="#L-6396"><span class="linenos">6396</span></a> <span class="p">)</span> +</span><span id="L-6397"><a href="#L-6397"><span class="linenos">6397</span></a> +</span><span id="L-6398"><a href="#L-6398"><span class="linenos">6398</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6399"><a href="#L-6399"><span class="linenos">6399</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6400"><a href="#L-6400"><span class="linenos">6400</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-6401"><a href="#L-6401"><span class="linenos">6401</span></a> +</span><span id="L-6402"><a href="#L-6402"><span class="linenos">6402</span></a> <span class="k">return</span> <span class="n">set_</span> </span><span id="L-6403"><a href="#L-6403"><span class="linenos">6403</span></a> -</span><span id="L-6404"><a href="#L-6404"><span class="linenos">6404</span></a> <span class="k">def</span> <span class="nf">_parse_dict_property</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">:</span> -</span><span id="L-6405"><a href="#L-6405"><span class="linenos">6405</span></a> <span class="n">settings</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6406"><a href="#L-6406"><span class="linenos">6406</span></a> -</span><span id="L-6407"><a href="#L-6407"><span class="linenos">6407</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-6408"><a href="#L-6408"><span class="linenos">6408</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-6409"><a href="#L-6409"><span class="linenos">6409</span></a> -</span><span id="L-6410"><a href="#L-6410"><span class="linenos">6410</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-6411"><a href="#L-6411"><span class="linenos">6411</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-6412"><a href="#L-6412"><span class="linenos">6412</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-6413"><a href="#L-6413"><span class="linenos">6413</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-6414"><a href="#L-6414"><span class="linenos">6414</span></a> -</span><span id="L-6415"><a href="#L-6415"><span class="linenos">6415</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6416"><a href="#L-6416"><span class="linenos">6416</span></a> <span class="k">break</span> -</span><span id="L-6417"><a href="#L-6417"><span class="linenos">6417</span></a> <span class="n">settings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictSubProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">))</span> -</span><span id="L-6418"><a href="#L-6418"><span class="linenos">6418</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> +</span><span id="L-6404"><a href="#L-6404"><span class="linenos">6404</span></a> <span class="k">def</span> <span class="nf">_parse_var_from_options</span><span class="p">(</span> +</span><span id="L-6405"><a href="#L-6405"><span class="linenos">6405</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-6406"><a href="#L-6406"><span class="linenos">6406</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">]:</span> +</span><span id="L-6407"><a href="#L-6407"><span class="linenos">6407</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> +</span><span id="L-6408"><a href="#L-6408"><span class="linenos">6408</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> +</span><span id="L-6409"><a href="#L-6409"><span class="linenos">6409</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6410"><a href="#L-6410"><span class="linenos">6410</span></a> +</span><span id="L-6411"><a href="#L-6411"><span class="linenos">6411</span></a> <span class="n">option</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-6412"><a href="#L-6412"><span class="linenos">6412</span></a> <span class="n">continuations</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> +</span><span id="L-6413"><a href="#L-6413"><span class="linenos">6413</span></a> +</span><span id="L-6414"><a href="#L-6414"><span class="linenos">6414</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-6415"><a href="#L-6415"><span class="linenos">6415</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6416"><a href="#L-6416"><span class="linenos">6416</span></a> <span class="k">for</span> <span class="n">keywords</span> <span class="ow">in</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="p">[]:</span> +</span><span id="L-6417"><a href="#L-6417"><span class="linenos">6417</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-6418"><a href="#L-6418"><span class="linenos">6418</span></a> <span class="n">keywords</span> <span class="o">=</span> <span class="p">(</span><span class="n">keywords</span><span class="p">,)</span> </span><span id="L-6419"><a href="#L-6419"><span class="linenos">6419</span></a> -</span><span id="L-6420"><a href="#L-6420"><span class="linenos">6420</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-6421"><a href="#L-6421"><span class="linenos">6421</span></a> -</span><span id="L-6422"><a href="#L-6422"><span class="linenos">6422</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6423"><a href="#L-6423"><span class="linenos">6423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">,</span> -</span><span id="L-6424"><a href="#L-6424"><span class="linenos">6424</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-6425"><a href="#L-6425"><span class="linenos">6425</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-6426"><a href="#L-6426"><span class="linenos">6426</span></a> <span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">,</span> -</span><span id="L-6427"><a href="#L-6427"><span class="linenos">6427</span></a> <span class="p">)</span> -</span><span id="L-6428"><a href="#L-6428"><span class="linenos">6428</span></a> -</span><span id="L-6429"><a href="#L-6429"><span class="linenos">6429</span></a> <span class="k">def</span> <span class="nf">_parse_dict_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">:</span> -</span><span id="L-6430"><a href="#L-6430"><span class="linenos">6430</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-6431"><a href="#L-6431"><span class="linenos">6431</span></a> <span class="n">has_min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MIN"</span><span class="p">)</span> -</span><span id="L-6432"><a href="#L-6432"><span class="linenos">6432</span></a> <span class="k">if</span> <span class="n">has_min</span><span class="p">:</span> -</span><span id="L-6433"><a href="#L-6433"><span class="linenos">6433</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-6434"><a href="#L-6434"><span class="linenos">6434</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">)</span> -</span><span id="L-6435"><a href="#L-6435"><span class="linenos">6435</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-6436"><a href="#L-6436"><span class="linenos">6436</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6437"><a href="#L-6437"><span class="linenos">6437</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-6438"><a href="#L-6438"><span class="linenos">6438</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> -</span><span id="L-6439"><a href="#L-6439"><span class="linenos">6439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-6440"><a href="#L-6440"><span class="linenos">6440</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span><span class="p">)</span> -</span><span id="L-6441"><a href="#L-6441"><span class="linenos">6441</span></a> -</span><span id="L-6442"><a href="#L-6442"><span class="linenos">6442</span></a> <span class="k">def</span> <span class="nf">_parse_comprehension</span><span class="p">(</span> -</span><span id="L-6443"><a href="#L-6443"><span class="linenos">6443</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-6444"><a href="#L-6444"><span class="linenos">6444</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">]:</span> -</span><span id="L-6445"><a href="#L-6445"><span class="linenos">6445</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-6446"><a href="#L-6446"><span class="linenos">6446</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-6447"><a href="#L-6447"><span class="linenos">6447</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-6448"><a href="#L-6448"><span class="linenos">6448</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-6449"><a href="#L-6449"><span class="linenos">6449</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6450"><a href="#L-6450"><span class="linenos">6450</span></a> <span class="n">iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-6451"><a href="#L-6451"><span class="linenos">6451</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-6452"><a href="#L-6452"><span class="linenos">6452</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6453"><a href="#L-6453"><span class="linenos">6453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">,</span> -</span><span id="L-6454"><a href="#L-6454"><span class="linenos">6454</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-6455"><a href="#L-6455"><span class="linenos">6455</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-6456"><a href="#L-6456"><span class="linenos">6456</span></a> <span class="n">iterator</span><span class="o">=</span><span class="n">iterator</span><span class="p">,</span> -</span><span id="L-6457"><a href="#L-6457"><span class="linenos">6457</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> -</span><span id="L-6458"><a href="#L-6458"><span class="linenos">6458</span></a> <span class="p">)</span> -</span><span id="L-6459"><a href="#L-6459"><span class="linenos">6459</span></a> -</span><span id="L-6460"><a href="#L-6460"><span class="linenos">6460</span></a> <span class="k">def</span> <span class="nf">_parse_heredoc</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">]:</span> -</span><span id="L-6461"><a href="#L-6461"><span class="linenos">6461</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">):</span> -</span><span id="L-6462"><a href="#L-6462"><span class="linenos">6462</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-6463"><a href="#L-6463"><span class="linenos">6463</span></a> -</span><span id="L-6464"><a href="#L-6464"><span class="linenos">6464</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> -</span><span id="L-6465"><a href="#L-6465"><span class="linenos">6465</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6466"><a href="#L-6466"><span class="linenos">6466</span></a> -</span><span id="L-6467"><a href="#L-6467"><span class="linenos">6467</span></a> <span class="n">tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> -</span><span id="L-6468"><a href="#L-6468"><span class="linenos">6468</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-6469"><a href="#L-6469"><span class="linenos">6469</span></a> -</span><span id="L-6470"><a href="#L-6470"><span class="linenos">6470</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">():</span> -</span><span id="L-6471"><a href="#L-6471"><span class="linenos">6471</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6472"><a href="#L-6472"><span class="linenos">6472</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-6420"><a href="#L-6420"><span class="linenos">6420</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">keywords</span><span class="p">):</span> +</span><span id="L-6421"><a href="#L-6421"><span class="linenos">6421</span></a> <span class="n">option</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keywords</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-6422"><a href="#L-6422"><span class="linenos">6422</span></a> <span class="k">break</span> +</span><span id="L-6423"><a href="#L-6423"><span class="linenos">6423</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6424"><a href="#L-6424"><span class="linenos">6424</span></a> <span class="k">if</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="n">continuations</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6425"><a href="#L-6425"><span class="linenos">6425</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span> +</span><span id="L-6426"><a href="#L-6426"><span class="linenos">6426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown option </span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-6427"><a href="#L-6427"><span class="linenos">6427</span></a> +</span><span id="L-6428"><a href="#L-6428"><span class="linenos">6428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6429"><a href="#L-6429"><span class="linenos">6429</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6430"><a href="#L-6430"><span class="linenos">6430</span></a> +</span><span id="L-6431"><a href="#L-6431"><span class="linenos">6431</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> +</span><span id="L-6432"><a href="#L-6432"><span class="linenos">6432</span></a> +</span><span id="L-6433"><a href="#L-6433"><span class="linenos">6433</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-6434"><a href="#L-6434"><span class="linenos">6434</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6435"><a href="#L-6435"><span class="linenos">6435</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6436"><a href="#L-6436"><span class="linenos">6436</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-6437"><a href="#L-6437"><span class="linenos">6437</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-6438"><a href="#L-6438"><span class="linenos">6438</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> +</span><span id="L-6439"><a href="#L-6439"><span class="linenos">6439</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">[:</span><span class="n">size</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">text</span><span class="p">[</span><span class="n">size</span><span class="p">:])</span> +</span><span id="L-6440"><a href="#L-6440"><span class="linenos">6440</span></a> +</span><span id="L-6441"><a href="#L-6441"><span class="linenos">6441</span></a> <span class="k">def</span> <span class="nf">_parse_dict_property</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">:</span> +</span><span id="L-6442"><a href="#L-6442"><span class="linenos">6442</span></a> <span class="n">settings</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6443"><a href="#L-6443"><span class="linenos">6443</span></a> +</span><span id="L-6444"><a href="#L-6444"><span class="linenos">6444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-6445"><a href="#L-6445"><span class="linenos">6445</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-6446"><a href="#L-6446"><span class="linenos">6446</span></a> +</span><span id="L-6447"><a href="#L-6447"><span class="linenos">6447</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-6448"><a href="#L-6448"><span class="linenos">6448</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-6449"><a href="#L-6449"><span class="linenos">6449</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-6450"><a href="#L-6450"><span class="linenos">6450</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-6451"><a href="#L-6451"><span class="linenos">6451</span></a> +</span><span id="L-6452"><a href="#L-6452"><span class="linenos">6452</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6453"><a href="#L-6453"><span class="linenos">6453</span></a> <span class="k">break</span> +</span><span id="L-6454"><a href="#L-6454"><span class="linenos">6454</span></a> <span class="n">settings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictSubProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">))</span> +</span><span id="L-6455"><a href="#L-6455"><span class="linenos">6455</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> +</span><span id="L-6456"><a href="#L-6456"><span class="linenos">6456</span></a> +</span><span id="L-6457"><a href="#L-6457"><span class="linenos">6457</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-6458"><a href="#L-6458"><span class="linenos">6458</span></a> +</span><span id="L-6459"><a href="#L-6459"><span class="linenos">6459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6460"><a href="#L-6460"><span class="linenos">6460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">,</span> +</span><span id="L-6461"><a href="#L-6461"><span class="linenos">6461</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-6462"><a href="#L-6462"><span class="linenos">6462</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-6463"><a href="#L-6463"><span class="linenos">6463</span></a> <span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">,</span> +</span><span id="L-6464"><a href="#L-6464"><span class="linenos">6464</span></a> <span class="p">)</span> +</span><span id="L-6465"><a href="#L-6465"><span class="linenos">6465</span></a> +</span><span id="L-6466"><a href="#L-6466"><span class="linenos">6466</span></a> <span class="k">def</span> <span class="nf">_parse_dict_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">:</span> +</span><span id="L-6467"><a href="#L-6467"><span class="linenos">6467</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-6468"><a href="#L-6468"><span class="linenos">6468</span></a> <span class="n">has_min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MIN"</span><span class="p">)</span> +</span><span id="L-6469"><a href="#L-6469"><span class="linenos">6469</span></a> <span class="k">if</span> <span class="n">has_min</span><span class="p">:</span> +</span><span id="L-6470"><a href="#L-6470"><span class="linenos">6470</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-6471"><a href="#L-6471"><span class="linenos">6471</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">)</span> +</span><span id="L-6472"><a href="#L-6472"><span class="linenos">6472</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> </span><span id="L-6473"><a href="#L-6473"><span class="linenos">6473</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6474"><a href="#L-6474"><span class="linenos">6474</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> -</span><span id="L-6475"><a href="#L-6475"><span class="linenos">6475</span></a> -</span><span id="L-6476"><a href="#L-6476"><span class="linenos">6476</span></a> <span class="k">if</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"$"</span><span class="p">:</span> -</span><span id="L-6477"><a href="#L-6477"><span class="linenos">6477</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> -</span><span id="L-6478"><a href="#L-6478"><span class="linenos">6478</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="L-6479"><a href="#L-6479"><span class="linenos">6479</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"$"</span><span class="p">)</span> -</span><span id="L-6480"><a href="#L-6480"><span class="linenos">6480</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6481"><a href="#L-6481"><span class="linenos">6481</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> -</span><span id="L-6482"><a href="#L-6482"><span class="linenos">6482</span></a> -</span><span id="L-6483"><a href="#L-6483"><span class="linenos">6483</span></a> <span class="n">heredoc_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> -</span><span id="L-6484"><a href="#L-6484"><span class="linenos">6484</span></a> -</span><span id="L-6485"><a href="#L-6485"><span class="linenos">6485</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6486"><a href="#L-6486"><span class="linenos">6486</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">tags</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6487"><a href="#L-6487"><span class="linenos">6487</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">heredoc_start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-6488"><a href="#L-6488"><span class="linenos">6488</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tags</span><span class="p">))</span> -</span><span id="L-6489"><a href="#L-6489"><span class="linenos">6489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag_text</span><span class="p">)</span> -</span><span id="L-6490"><a href="#L-6490"><span class="linenos">6490</span></a> -</span><span id="L-6491"><a href="#L-6491"><span class="linenos">6491</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6492"><a href="#L-6492"><span class="linenos">6492</span></a> -</span><span id="L-6493"><a href="#L-6493"><span class="linenos">6493</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No closing </span><span class="si">{</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tags</span><span class="p">)</span><span class="si">}</span><span class="s2"> found"</span><span class="p">)</span> -</span><span id="L-6494"><a href="#L-6494"><span class="linenos">6494</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6495"><a href="#L-6495"><span class="linenos">6495</span></a> -</span><span id="L-6496"><a href="#L-6496"><span class="linenos">6496</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> -</span><span id="L-6497"><a href="#L-6497"><span class="linenos">6497</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="L-6498"><a href="#L-6498"><span class="linenos">6498</span></a> <span class="p">)</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">Callable</span><span class="p">]:</span> -</span><span id="L-6499"><a href="#L-6499"><span class="linenos">6499</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6500"><a href="#L-6500"><span class="linenos">6500</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6501"><a href="#L-6501"><span class="linenos">6501</span></a> -</span><span id="L-6502"><a href="#L-6502"><span class="linenos">6502</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-6503"><a href="#L-6503"><span class="linenos">6503</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6504"><a href="#L-6504"><span class="linenos">6504</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-6505"><a href="#L-6505"><span class="linenos">6505</span></a> <span class="c1"># The current token might be multiple words</span> -</span><span id="L-6506"><a href="#L-6506"><span class="linenos">6506</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-6507"><a href="#L-6507"><span class="linenos">6507</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-6508"><a href="#L-6508"><span class="linenos">6508</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> -</span><span id="L-6509"><a href="#L-6509"><span class="linenos">6509</span></a> -</span><span id="L-6510"><a href="#L-6510"><span class="linenos">6510</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6511"><a href="#L-6511"><span class="linenos">6511</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> -</span><span id="L-6512"><a href="#L-6512"><span class="linenos">6512</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> -</span><span id="L-6513"><a href="#L-6513"><span class="linenos">6513</span></a> <span class="k">break</span> -</span><span id="L-6514"><a href="#L-6514"><span class="linenos">6514</span></a> -</span><span id="L-6515"><a href="#L-6515"><span class="linenos">6515</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> -</span><span id="L-6516"><a href="#L-6516"><span class="linenos">6516</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> -</span><span id="L-6517"><a href="#L-6517"><span class="linenos">6517</span></a> <span class="k">return</span> <span class="n">subparser</span> -</span><span id="L-6518"><a href="#L-6518"><span class="linenos">6518</span></a> -</span><span id="L-6519"><a href="#L-6519"><span class="linenos">6519</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6520"><a href="#L-6520"><span class="linenos">6520</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6474"><a href="#L-6474"><span class="linenos">6474</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-6475"><a href="#L-6475"><span class="linenos">6475</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> +</span><span id="L-6476"><a href="#L-6476"><span class="linenos">6476</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-6477"><a href="#L-6477"><span class="linenos">6477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span><span class="p">)</span> +</span><span id="L-6478"><a href="#L-6478"><span class="linenos">6478</span></a> +</span><span id="L-6479"><a href="#L-6479"><span class="linenos">6479</span></a> <span class="k">def</span> <span class="nf">_parse_comprehension</span><span class="p">(</span> +</span><span id="L-6480"><a href="#L-6480"><span class="linenos">6480</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-6481"><a href="#L-6481"><span class="linenos">6481</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">]:</span> +</span><span id="L-6482"><a href="#L-6482"><span class="linenos">6482</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-6483"><a href="#L-6483"><span class="linenos">6483</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-6484"><a href="#L-6484"><span class="linenos">6484</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-6485"><a href="#L-6485"><span class="linenos">6485</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-6486"><a href="#L-6486"><span class="linenos">6486</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6487"><a href="#L-6487"><span class="linenos">6487</span></a> <span class="n">iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-6488"><a href="#L-6488"><span class="linenos">6488</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-6489"><a href="#L-6489"><span class="linenos">6489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6490"><a href="#L-6490"><span class="linenos">6490</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">,</span> +</span><span id="L-6491"><a href="#L-6491"><span class="linenos">6491</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-6492"><a href="#L-6492"><span class="linenos">6492</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-6493"><a href="#L-6493"><span class="linenos">6493</span></a> <span class="n">iterator</span><span class="o">=</span><span class="n">iterator</span><span class="p">,</span> +</span><span id="L-6494"><a href="#L-6494"><span class="linenos">6494</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> +</span><span id="L-6495"><a href="#L-6495"><span class="linenos">6495</span></a> <span class="p">)</span> +</span><span id="L-6496"><a href="#L-6496"><span class="linenos">6496</span></a> +</span><span id="L-6497"><a href="#L-6497"><span class="linenos">6497</span></a> <span class="k">def</span> <span class="nf">_parse_heredoc</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">]:</span> +</span><span id="L-6498"><a href="#L-6498"><span class="linenos">6498</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">):</span> +</span><span id="L-6499"><a href="#L-6499"><span class="linenos">6499</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-6500"><a href="#L-6500"><span class="linenos">6500</span></a> +</span><span id="L-6501"><a href="#L-6501"><span class="linenos">6501</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> +</span><span id="L-6502"><a href="#L-6502"><span class="linenos">6502</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6503"><a href="#L-6503"><span class="linenos">6503</span></a> +</span><span id="L-6504"><a href="#L-6504"><span class="linenos">6504</span></a> <span class="n">tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> +</span><span id="L-6505"><a href="#L-6505"><span class="linenos">6505</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6506"><a href="#L-6506"><span class="linenos">6506</span></a> +</span><span id="L-6507"><a href="#L-6507"><span class="linenos">6507</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">():</span> +</span><span id="L-6508"><a href="#L-6508"><span class="linenos">6508</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6509"><a href="#L-6509"><span class="linenos">6509</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-6510"><a href="#L-6510"><span class="linenos">6510</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6511"><a href="#L-6511"><span class="linenos">6511</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> +</span><span id="L-6512"><a href="#L-6512"><span class="linenos">6512</span></a> +</span><span id="L-6513"><a href="#L-6513"><span class="linenos">6513</span></a> <span class="k">if</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"$"</span><span class="p">:</span> +</span><span id="L-6514"><a href="#L-6514"><span class="linenos">6514</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> +</span><span id="L-6515"><a href="#L-6515"><span class="linenos">6515</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="L-6516"><a href="#L-6516"><span class="linenos">6516</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"$"</span><span class="p">)</span> +</span><span id="L-6517"><a href="#L-6517"><span class="linenos">6517</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6518"><a href="#L-6518"><span class="linenos">6518</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> +</span><span id="L-6519"><a href="#L-6519"><span class="linenos">6519</span></a> +</span><span id="L-6520"><a href="#L-6520"><span class="linenos">6520</span></a> <span class="n">heredoc_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> </span><span id="L-6521"><a href="#L-6521"><span class="linenos">6521</span></a> -</span><span id="L-6522"><a href="#L-6522"><span class="linenos">6522</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="L-6523"><a href="#L-6523"><span class="linenos">6523</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6524"><a href="#L-6524"><span class="linenos">6524</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6525"><a href="#L-6525"><span class="linenos">6525</span></a> -</span><span id="L-6526"><a href="#L-6526"><span class="linenos">6526</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="L-6527"><a href="#L-6527"><span class="linenos">6527</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-6528"><a href="#L-6528"><span class="linenos">6528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6529"><a href="#L-6529"><span class="linenos">6529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-6530"><a href="#L-6530"><span class="linenos">6530</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-6531"><a href="#L-6531"><span class="linenos">6531</span></a> -</span><span id="L-6532"><a href="#L-6532"><span class="linenos">6532</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6533"><a href="#L-6533"><span class="linenos">6533</span></a> -</span><span id="L-6534"><a href="#L-6534"><span class="linenos">6534</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-6535"><a href="#L-6535"><span class="linenos">6535</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6536"><a href="#L-6536"><span class="linenos">6536</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6537"><a href="#L-6537"><span class="linenos">6537</span></a> -</span><span id="L-6538"><a href="#L-6538"><span class="linenos">6538</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> -</span><span id="L-6539"><a href="#L-6539"><span class="linenos">6539</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-6540"><a href="#L-6540"><span class="linenos">6540</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6541"><a href="#L-6541"><span class="linenos">6541</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-6542"><a href="#L-6542"><span class="linenos">6542</span></a> -</span><span id="L-6543"><a href="#L-6543"><span class="linenos">6543</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6544"><a href="#L-6544"><span class="linenos">6544</span></a> -</span><span id="L-6545"><a href="#L-6545"><span class="linenos">6545</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-6546"><a href="#L-6546"><span class="linenos">6546</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="L-6547"><a href="#L-6547"><span class="linenos">6547</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-6548"><a href="#L-6548"><span class="linenos">6548</span></a> -</span><span id="L-6549"><a href="#L-6549"><span class="linenos">6549</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> -</span><span id="L-6550"><a href="#L-6550"><span class="linenos">6550</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-6551"><a href="#L-6551"><span class="linenos">6551</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-6552"><a href="#L-6552"><span class="linenos">6552</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-6553"><a href="#L-6553"><span class="linenos">6553</span></a> -</span><span id="L-6554"><a href="#L-6554"><span class="linenos">6554</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6522"><a href="#L-6522"><span class="linenos">6522</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6523"><a href="#L-6523"><span class="linenos">6523</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">tags</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6524"><a href="#L-6524"><span class="linenos">6524</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">heredoc_start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-6525"><a href="#L-6525"><span class="linenos">6525</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tags</span><span class="p">))</span> +</span><span id="L-6526"><a href="#L-6526"><span class="linenos">6526</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag_text</span><span class="p">)</span> +</span><span id="L-6527"><a href="#L-6527"><span class="linenos">6527</span></a> +</span><span id="L-6528"><a href="#L-6528"><span class="linenos">6528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6529"><a href="#L-6529"><span class="linenos">6529</span></a> +</span><span id="L-6530"><a href="#L-6530"><span class="linenos">6530</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No closing </span><span class="si">{</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tags</span><span class="p">)</span><span class="si">}</span><span class="s2"> found"</span><span class="p">)</span> +</span><span id="L-6531"><a href="#L-6531"><span class="linenos">6531</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6532"><a href="#L-6532"><span class="linenos">6532</span></a> +</span><span id="L-6533"><a href="#L-6533"><span class="linenos">6533</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> +</span><span id="L-6534"><a href="#L-6534"><span class="linenos">6534</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="L-6535"><a href="#L-6535"><span class="linenos">6535</span></a> <span class="p">)</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">Callable</span><span class="p">]:</span> +</span><span id="L-6536"><a href="#L-6536"><span class="linenos">6536</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6537"><a href="#L-6537"><span class="linenos">6537</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6538"><a href="#L-6538"><span class="linenos">6538</span></a> +</span><span id="L-6539"><a href="#L-6539"><span class="linenos">6539</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-6540"><a href="#L-6540"><span class="linenos">6540</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6541"><a href="#L-6541"><span class="linenos">6541</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-6542"><a href="#L-6542"><span class="linenos">6542</span></a> <span class="c1"># The current token might be multiple words</span> +</span><span id="L-6543"><a href="#L-6543"><span class="linenos">6543</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-6544"><a href="#L-6544"><span class="linenos">6544</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-6545"><a href="#L-6545"><span class="linenos">6545</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> +</span><span id="L-6546"><a href="#L-6546"><span class="linenos">6546</span></a> +</span><span id="L-6547"><a href="#L-6547"><span class="linenos">6547</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6548"><a href="#L-6548"><span class="linenos">6548</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> +</span><span id="L-6549"><a href="#L-6549"><span class="linenos">6549</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> +</span><span id="L-6550"><a href="#L-6550"><span class="linenos">6550</span></a> <span class="k">break</span> +</span><span id="L-6551"><a href="#L-6551"><span class="linenos">6551</span></a> +</span><span id="L-6552"><a href="#L-6552"><span class="linenos">6552</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> +</span><span id="L-6553"><a href="#L-6553"><span class="linenos">6553</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> +</span><span id="L-6554"><a href="#L-6554"><span class="linenos">6554</span></a> <span class="k">return</span> <span class="n">subparser</span> </span><span id="L-6555"><a href="#L-6555"><span class="linenos">6555</span></a> -</span><span id="L-6556"><a href="#L-6556"><span class="linenos">6556</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6557"><a href="#L-6557"><span class="linenos">6557</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> -</span><span id="L-6558"><a href="#L-6558"><span class="linenos">6558</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> -</span><span id="L-6559"><a href="#L-6559"><span class="linenos">6559</span></a> -</span><span id="L-6560"><a href="#L-6560"><span class="linenos">6560</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6561"><a href="#L-6561"><span class="linenos">6561</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> -</span><span id="L-6562"><a href="#L-6562"><span class="linenos">6562</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> -</span><span id="L-6563"><a href="#L-6563"><span class="linenos">6563</span></a> -</span><span id="L-6564"><a href="#L-6564"><span class="linenos">6564</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-6565"><a href="#L-6565"><span class="linenos">6565</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="L-6566"><a href="#L-6566"><span class="linenos">6566</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-6567"><a href="#L-6567"><span class="linenos">6567</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6568"><a href="#L-6568"><span class="linenos">6568</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-6556"><a href="#L-6556"><span class="linenos">6556</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6557"><a href="#L-6557"><span class="linenos">6557</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6558"><a href="#L-6558"><span class="linenos">6558</span></a> +</span><span id="L-6559"><a href="#L-6559"><span class="linenos">6559</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="L-6560"><a href="#L-6560"><span class="linenos">6560</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6561"><a href="#L-6561"><span class="linenos">6561</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6562"><a href="#L-6562"><span class="linenos">6562</span></a> +</span><span id="L-6563"><a href="#L-6563"><span class="linenos">6563</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="L-6564"><a href="#L-6564"><span class="linenos">6564</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-6565"><a href="#L-6565"><span class="linenos">6565</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6566"><a href="#L-6566"><span class="linenos">6566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-6567"><a href="#L-6567"><span class="linenos">6567</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-6568"><a href="#L-6568"><span class="linenos">6568</span></a> </span><span id="L-6569"><a href="#L-6569"><span class="linenos">6569</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-6570"><a href="#L-6570"><span class="linenos">6570</span></a> -</span><span id="L-6571"><a href="#L-6571"><span class="linenos">6571</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-6572"><a href="#L-6572"><span class="linenos">6572</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-6573"><a href="#L-6573"><span class="linenos">6573</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="L-6574"><a href="#L-6574"><span class="linenos">6574</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> -</span><span id="L-6575"><a href="#L-6575"><span class="linenos">6575</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-6576"><a href="#L-6576"><span class="linenos">6576</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6577"><a href="#L-6577"><span class="linenos">6577</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6578"><a href="#L-6578"><span class="linenos">6578</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6571"><a href="#L-6571"><span class="linenos">6571</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-6572"><a href="#L-6572"><span class="linenos">6572</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6573"><a href="#L-6573"><span class="linenos">6573</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6574"><a href="#L-6574"><span class="linenos">6574</span></a> +</span><span id="L-6575"><a href="#L-6575"><span class="linenos">6575</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> +</span><span id="L-6576"><a href="#L-6576"><span class="linenos">6576</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-6577"><a href="#L-6577"><span class="linenos">6577</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6578"><a href="#L-6578"><span class="linenos">6578</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="L-6579"><a href="#L-6579"><span class="linenos">6579</span></a> -</span><span id="L-6580"><a href="#L-6580"><span class="linenos">6580</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-6581"><a href="#L-6581"><span class="linenos">6581</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-6582"><a href="#L-6582"><span class="linenos">6582</span></a> -</span><span id="L-6583"><a href="#L-6583"><span class="linenos">6583</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-6584"><a href="#L-6584"><span class="linenos">6584</span></a> -</span><span id="L-6585"><a href="#L-6585"><span class="linenos">6585</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span> -</span><span id="L-6586"><a href="#L-6586"><span class="linenos">6586</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">node</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-6587"><a href="#L-6587"><span class="linenos">6587</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6588"><a href="#L-6588"><span class="linenos">6588</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="L-6589"><a href="#L-6589"><span class="linenos">6589</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-6580"><a href="#L-6580"><span class="linenos">6580</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6581"><a href="#L-6581"><span class="linenos">6581</span></a> +</span><span id="L-6582"><a href="#L-6582"><span class="linenos">6582</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-6583"><a href="#L-6583"><span class="linenos">6583</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="L-6584"><a href="#L-6584"><span class="linenos">6584</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6585"><a href="#L-6585"><span class="linenos">6585</span></a> +</span><span id="L-6586"><a href="#L-6586"><span class="linenos">6586</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> +</span><span id="L-6587"><a href="#L-6587"><span class="linenos">6587</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-6588"><a href="#L-6588"><span class="linenos">6588</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-6589"><a href="#L-6589"><span class="linenos">6589</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="L-6590"><a href="#L-6590"><span class="linenos">6590</span></a> -</span><span id="L-6591"><a href="#L-6591"><span class="linenos">6591</span></a> <span class="n">lambda_types</span> <span class="o">=</span> <span class="p">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"to"</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">False</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> +</span><span id="L-6591"><a href="#L-6591"><span class="linenos">6591</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-6592"><a href="#L-6592"><span class="linenos">6592</span></a> -</span><span id="L-6593"><a href="#L-6593"><span class="linenos">6593</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-6594"><a href="#L-6594"><span class="linenos">6594</span></a> <span class="n">typ</span> <span class="o">=</span> <span class="n">lambda_types</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-6595"><a href="#L-6595"><span class="linenos">6595</span></a> <span class="k">if</span> <span class="n">typ</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-6596"><a href="#L-6596"><span class="linenos">6596</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-6597"><a href="#L-6597"><span class="linenos">6597</span></a> -</span><span id="L-6598"><a href="#L-6598"><span class="linenos">6598</span></a> <span class="k">if</span> <span class="n">typ</span><span class="p">:</span> -</span><span id="L-6599"><a href="#L-6599"><span class="linenos">6599</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6600"><a href="#L-6600"><span class="linenos">6600</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> -</span><span id="L-6601"><a href="#L-6601"><span class="linenos">6601</span></a> <span class="n">this</span><span class="o">=</span><span class="n">dot_or_id</span><span class="p">,</span> -</span><span id="L-6602"><a href="#L-6602"><span class="linenos">6602</span></a> <span class="n">to</span><span class="o">=</span><span class="n">typ</span><span class="p">,</span> -</span><span id="L-6603"><a href="#L-6603"><span class="linenos">6603</span></a> <span class="p">)</span> -</span><span id="L-6604"><a href="#L-6604"><span class="linenos">6604</span></a> -</span><span id="L-6605"><a href="#L-6605"><span class="linenos">6605</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-6606"><a href="#L-6606"><span class="linenos">6606</span></a> -</span><span id="L-6607"><a href="#L-6607"><span class="linenos">6607</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> -</span><span id="L-6608"><a href="#L-6608"><span class="linenos">6608</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> -</span><span id="L-6609"><a href="#L-6609"><span class="linenos">6609</span></a> <span class="n">parent</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> -</span><span id="L-6610"><a href="#L-6610"><span class="linenos">6610</span></a> <span class="k">break</span> -</span><span id="L-6611"><a href="#L-6611"><span class="linenos">6611</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-6612"><a href="#L-6612"><span class="linenos">6612</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6613"><a href="#L-6613"><span class="linenos">6613</span></a> <span class="k">if</span> <span class="n">column</span> <span class="ow">is</span> <span class="n">node</span><span class="p">:</span> -</span><span id="L-6614"><a href="#L-6614"><span class="linenos">6614</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">dot_or_id</span> -</span><span id="L-6615"><a href="#L-6615"><span class="linenos">6615</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6616"><a href="#L-6616"><span class="linenos">6616</span></a> <span class="n">column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> -</span><span id="L-6617"><a href="#L-6617"><span class="linenos">6617</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="L-6618"><a href="#L-6618"><span class="linenos">6618</span></a> -</span><span id="L-6619"><a href="#L-6619"><span class="linenos">6619</span></a> <span class="k">def</span> <span class="nf">_parse_truncate_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">]</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-6620"><a href="#L-6620"><span class="linenos">6620</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-6593"><a href="#L-6593"><span class="linenos">6593</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6594"><a href="#L-6594"><span class="linenos">6594</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> +</span><span id="L-6595"><a href="#L-6595"><span class="linenos">6595</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> +</span><span id="L-6596"><a href="#L-6596"><span class="linenos">6596</span></a> +</span><span id="L-6597"><a href="#L-6597"><span class="linenos">6597</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6598"><a href="#L-6598"><span class="linenos">6598</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> +</span><span id="L-6599"><a href="#L-6599"><span class="linenos">6599</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> +</span><span id="L-6600"><a href="#L-6600"><span class="linenos">6600</span></a> +</span><span id="L-6601"><a href="#L-6601"><span class="linenos">6601</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-6602"><a href="#L-6602"><span class="linenos">6602</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="L-6603"><a href="#L-6603"><span class="linenos">6603</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-6604"><a href="#L-6604"><span class="linenos">6604</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6605"><a href="#L-6605"><span class="linenos">6605</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-6606"><a href="#L-6606"><span class="linenos">6606</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6607"><a href="#L-6607"><span class="linenos">6607</span></a> +</span><span id="L-6608"><a href="#L-6608"><span class="linenos">6608</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-6609"><a href="#L-6609"><span class="linenos">6609</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-6610"><a href="#L-6610"><span class="linenos">6610</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="L-6611"><a href="#L-6611"><span class="linenos">6611</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> +</span><span id="L-6612"><a href="#L-6612"><span class="linenos">6612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-6613"><a href="#L-6613"><span class="linenos">6613</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6614"><a href="#L-6614"><span class="linenos">6614</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6615"><a href="#L-6615"><span class="linenos">6615</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-6616"><a href="#L-6616"><span class="linenos">6616</span></a> +</span><span id="L-6617"><a href="#L-6617"><span class="linenos">6617</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-6618"><a href="#L-6618"><span class="linenos">6618</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-6619"><a href="#L-6619"><span class="linenos">6619</span></a> +</span><span id="L-6620"><a href="#L-6620"><span class="linenos">6620</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="L-6621"><a href="#L-6621"><span class="linenos">6621</span></a> -</span><span id="L-6622"><a href="#L-6622"><span class="linenos">6622</span></a> <span class="c1"># Not to be confused with TRUNCATE(number, decimals) function call</span> -</span><span id="L-6623"><a href="#L-6623"><span class="linenos">6623</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-6624"><a href="#L-6624"><span class="linenos">6624</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="L-6625"><a href="#L-6625"><span class="linenos">6625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="L-6626"><a href="#L-6626"><span class="linenos">6626</span></a> -</span><span id="L-6627"><a href="#L-6627"><span class="linenos">6627</span></a> <span class="c1"># Clickhouse supports TRUNCATE DATABASE as well</span> -</span><span id="L-6628"><a href="#L-6628"><span class="linenos">6628</span></a> <span class="n">is_database</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">)</span> +</span><span id="L-6622"><a href="#L-6622"><span class="linenos">6622</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span> +</span><span id="L-6623"><a href="#L-6623"><span class="linenos">6623</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">node</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-6624"><a href="#L-6624"><span class="linenos">6624</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6625"><a href="#L-6625"><span class="linenos">6625</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="L-6626"><a href="#L-6626"><span class="linenos">6626</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-6627"><a href="#L-6627"><span class="linenos">6627</span></a> +</span><span id="L-6628"><a href="#L-6628"><span class="linenos">6628</span></a> <span class="n">lambda_types</span> <span class="o">=</span> <span class="p">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"to"</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">False</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> </span><span id="L-6629"><a href="#L-6629"><span class="linenos">6629</span></a> -</span><span id="L-6630"><a href="#L-6630"><span class="linenos">6630</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-6631"><a href="#L-6631"><span class="linenos">6631</span></a> -</span><span id="L-6632"><a href="#L-6632"><span class="linenos">6632</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-6633"><a href="#L-6633"><span class="linenos">6633</span></a> -</span><span id="L-6634"><a href="#L-6634"><span class="linenos">6634</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-6635"><a href="#L-6635"><span class="linenos">6635</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_database</span><span class="p">)</span> -</span><span id="L-6636"><a href="#L-6636"><span class="linenos">6636</span></a> <span class="p">)</span> -</span><span id="L-6637"><a href="#L-6637"><span class="linenos">6637</span></a> -</span><span id="L-6638"><a href="#L-6638"><span class="linenos">6638</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-6639"><a href="#L-6639"><span class="linenos">6639</span></a> -</span><span id="L-6640"><a href="#L-6640"><span class="linenos">6640</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTART"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> -</span><span id="L-6641"><a href="#L-6641"><span class="linenos">6641</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"RESTART"</span> -</span><span id="L-6642"><a href="#L-6642"><span class="linenos">6642</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTINUE"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> -</span><span id="L-6643"><a href="#L-6643"><span class="linenos">6643</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"CONTINUE"</span> -</span><span id="L-6644"><a href="#L-6644"><span class="linenos">6644</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6645"><a href="#L-6645"><span class="linenos">6645</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-6646"><a href="#L-6646"><span class="linenos">6646</span></a> -</span><span id="L-6647"><a href="#L-6647"><span class="linenos">6647</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> -</span><span id="L-6648"><a href="#L-6648"><span class="linenos">6648</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-6649"><a href="#L-6649"><span class="linenos">6649</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6650"><a href="#L-6650"><span class="linenos">6650</span></a> <span class="n">option</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-6651"><a href="#L-6651"><span class="linenos">6651</span></a> -</span><span id="L-6652"><a href="#L-6652"><span class="linenos">6652</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span> -</span><span id="L-6653"><a href="#L-6653"><span class="linenos">6653</span></a> -</span><span id="L-6654"><a href="#L-6654"><span class="linenos">6654</span></a> <span class="c1"># Fallback case</span> -</span><span id="L-6655"><a href="#L-6655"><span class="linenos">6655</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6656"><a href="#L-6656"><span class="linenos">6656</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-6657"><a href="#L-6657"><span class="linenos">6657</span></a> -</span><span id="L-6658"><a href="#L-6658"><span class="linenos">6658</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6659"><a href="#L-6659"><span class="linenos">6659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">,</span> -</span><span id="L-6660"><a href="#L-6660"><span class="linenos">6660</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-6661"><a href="#L-6661"><span class="linenos">6661</span></a> <span class="n">is_database</span><span class="o">=</span><span class="n">is_database</span><span class="p">,</span> -</span><span id="L-6662"><a href="#L-6662"><span class="linenos">6662</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="L-6663"><a href="#L-6663"><span class="linenos">6663</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> -</span><span id="L-6664"><a href="#L-6664"><span class="linenos">6664</span></a> <span class="n">identity</span><span class="o">=</span><span class="n">identity</span><span class="p">,</span> -</span><span id="L-6665"><a href="#L-6665"><span class="linenos">6665</span></a> <span class="n">option</span><span class="o">=</span><span class="n">option</span><span class="p">,</span> -</span><span id="L-6666"><a href="#L-6666"><span class="linenos">6666</span></a> <span class="n">partition</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="L-6667"><a href="#L-6667"><span class="linenos">6667</span></a> <span class="p">)</span> +</span><span id="L-6630"><a href="#L-6630"><span class="linenos">6630</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-6631"><a href="#L-6631"><span class="linenos">6631</span></a> <span class="n">typ</span> <span class="o">=</span> <span class="n">lambda_types</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-6632"><a href="#L-6632"><span class="linenos">6632</span></a> <span class="k">if</span> <span class="n">typ</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-6633"><a href="#L-6633"><span class="linenos">6633</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-6634"><a href="#L-6634"><span class="linenos">6634</span></a> +</span><span id="L-6635"><a href="#L-6635"><span class="linenos">6635</span></a> <span class="k">if</span> <span class="n">typ</span><span class="p">:</span> +</span><span id="L-6636"><a href="#L-6636"><span class="linenos">6636</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6637"><a href="#L-6637"><span class="linenos">6637</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> +</span><span id="L-6638"><a href="#L-6638"><span class="linenos">6638</span></a> <span class="n">this</span><span class="o">=</span><span class="n">dot_or_id</span><span class="p">,</span> +</span><span id="L-6639"><a href="#L-6639"><span class="linenos">6639</span></a> <span class="n">to</span><span class="o">=</span><span class="n">typ</span><span class="p">,</span> +</span><span id="L-6640"><a href="#L-6640"><span class="linenos">6640</span></a> <span class="p">)</span> +</span><span id="L-6641"><a href="#L-6641"><span class="linenos">6641</span></a> +</span><span id="L-6642"><a href="#L-6642"><span class="linenos">6642</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-6643"><a href="#L-6643"><span class="linenos">6643</span></a> +</span><span id="L-6644"><a href="#L-6644"><span class="linenos">6644</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> +</span><span id="L-6645"><a href="#L-6645"><span class="linenos">6645</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> +</span><span id="L-6646"><a href="#L-6646"><span class="linenos">6646</span></a> <span class="n">parent</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> +</span><span id="L-6647"><a href="#L-6647"><span class="linenos">6647</span></a> <span class="k">break</span> +</span><span id="L-6648"><a href="#L-6648"><span class="linenos">6648</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-6649"><a href="#L-6649"><span class="linenos">6649</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6650"><a href="#L-6650"><span class="linenos">6650</span></a> <span class="k">if</span> <span class="n">column</span> <span class="ow">is</span> <span class="n">node</span><span class="p">:</span> +</span><span id="L-6651"><a href="#L-6651"><span class="linenos">6651</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">dot_or_id</span> +</span><span id="L-6652"><a href="#L-6652"><span class="linenos">6652</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6653"><a href="#L-6653"><span class="linenos">6653</span></a> <span class="n">column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> +</span><span id="L-6654"><a href="#L-6654"><span class="linenos">6654</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-6655"><a href="#L-6655"><span class="linenos">6655</span></a> +</span><span id="L-6656"><a href="#L-6656"><span class="linenos">6656</span></a> <span class="k">def</span> <span class="nf">_parse_truncate_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">]</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-6657"><a href="#L-6657"><span class="linenos">6657</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-6658"><a href="#L-6658"><span class="linenos">6658</span></a> +</span><span id="L-6659"><a href="#L-6659"><span class="linenos">6659</span></a> <span class="c1"># Not to be confused with TRUNCATE(number, decimals) function call</span> +</span><span id="L-6660"><a href="#L-6660"><span class="linenos">6660</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-6661"><a href="#L-6661"><span class="linenos">6661</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-6662"><a href="#L-6662"><span class="linenos">6662</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="L-6663"><a href="#L-6663"><span class="linenos">6663</span></a> +</span><span id="L-6664"><a href="#L-6664"><span class="linenos">6664</span></a> <span class="c1"># Clickhouse supports TRUNCATE DATABASE as well</span> +</span><span id="L-6665"><a href="#L-6665"><span class="linenos">6665</span></a> <span class="n">is_database</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">)</span> +</span><span id="L-6666"><a href="#L-6666"><span class="linenos">6666</span></a> +</span><span id="L-6667"><a href="#L-6667"><span class="linenos">6667</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> </span><span id="L-6668"><a href="#L-6668"><span class="linenos">6668</span></a> -</span><span id="L-6669"><a href="#L-6669"><span class="linenos">6669</span></a> <span class="k">def</span> <span class="nf">_parse_with_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6670"><a href="#L-6670"><span class="linenos">6670</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_opclass</span><span class="p">)</span> -</span><span id="L-6671"><a href="#L-6671"><span class="linenos">6671</span></a> -</span><span id="L-6672"><a href="#L-6672"><span class="linenos">6672</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-6673"><a href="#L-6673"><span class="linenos">6673</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-6669"><a href="#L-6669"><span class="linenos">6669</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-6670"><a href="#L-6670"><span class="linenos">6670</span></a> +</span><span id="L-6671"><a href="#L-6671"><span class="linenos">6671</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-6672"><a href="#L-6672"><span class="linenos">6672</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_database</span><span class="p">)</span> +</span><span id="L-6673"><a href="#L-6673"><span class="linenos">6673</span></a> <span class="p">)</span> </span><span id="L-6674"><a href="#L-6674"><span class="linenos">6674</span></a> -</span><span id="L-6675"><a href="#L-6675"><span class="linenos">6675</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6675"><a href="#L-6675"><span class="linenos">6675</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="L-6676"><a href="#L-6676"><span class="linenos">6676</span></a> -</span><span id="L-6677"><a href="#L-6677"><span class="linenos">6677</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithOperator</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">op</span><span class="o">=</span><span class="n">op</span><span class="p">)</span> -</span><span id="L-6678"><a href="#L-6678"><span class="linenos">6678</span></a> -</span><span id="L-6679"><a href="#L-6679"><span class="linenos">6679</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-6680"><a href="#L-6680"><span class="linenos">6680</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-6681"><a href="#L-6681"><span class="linenos">6681</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="L-6682"><a href="#L-6682"><span class="linenos">6682</span></a> -</span><span id="L-6683"><a href="#L-6683"><span class="linenos">6683</span></a> <span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6684"><a href="#L-6684"><span class="linenos">6684</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-6685"><a href="#L-6685"><span class="linenos">6685</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-6686"><a href="#L-6686"><span class="linenos">6686</span></a> <span class="c1"># The FORMAT_NAME can be set to an identifier for Snowflake and T-SQL,</span> -</span><span id="L-6687"><a href="#L-6687"><span class="linenos">6687</span></a> <span class="c1"># so we parse it separately to use _parse_field()</span> -</span><span id="L-6688"><a href="#L-6688"><span class="linenos">6688</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6689"><a href="#L-6689"><span class="linenos">6689</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-6690"><a href="#L-6690"><span class="linenos">6690</span></a> <span class="p">)</span> -</span><span id="L-6691"><a href="#L-6691"><span class="linenos">6691</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> -</span><span id="L-6692"><a href="#L-6692"><span class="linenos">6692</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6693"><a href="#L-6693"><span class="linenos">6693</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">())</span> +</span><span id="L-6677"><a href="#L-6677"><span class="linenos">6677</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTART"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> +</span><span id="L-6678"><a href="#L-6678"><span class="linenos">6678</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"RESTART"</span> +</span><span id="L-6679"><a href="#L-6679"><span class="linenos">6679</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTINUE"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> +</span><span id="L-6680"><a href="#L-6680"><span class="linenos">6680</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"CONTINUE"</span> +</span><span id="L-6681"><a href="#L-6681"><span class="linenos">6681</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6682"><a href="#L-6682"><span class="linenos">6682</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6683"><a href="#L-6683"><span class="linenos">6683</span></a> +</span><span id="L-6684"><a href="#L-6684"><span class="linenos">6684</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> +</span><span id="L-6685"><a href="#L-6685"><span class="linenos">6685</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-6686"><a href="#L-6686"><span class="linenos">6686</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6687"><a href="#L-6687"><span class="linenos">6687</span></a> <span class="n">option</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-6688"><a href="#L-6688"><span class="linenos">6688</span></a> +</span><span id="L-6689"><a href="#L-6689"><span class="linenos">6689</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span> +</span><span id="L-6690"><a href="#L-6690"><span class="linenos">6690</span></a> +</span><span id="L-6691"><a href="#L-6691"><span class="linenos">6691</span></a> <span class="c1"># Fallback case</span> +</span><span id="L-6692"><a href="#L-6692"><span class="linenos">6692</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6693"><a href="#L-6693"><span class="linenos">6693</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> </span><span id="L-6694"><a href="#L-6694"><span class="linenos">6694</span></a> -</span><span id="L-6695"><a href="#L-6695"><span class="linenos">6695</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-6696"><a href="#L-6696"><span class="linenos">6696</span></a> -</span><span id="L-6697"><a href="#L-6697"><span class="linenos">6697</span></a> <span class="k">return</span> <span class="n">opts</span> -</span><span id="L-6698"><a href="#L-6698"><span class="linenos">6698</span></a> -</span><span id="L-6699"><a href="#L-6699"><span class="linenos">6699</span></a> <span class="k">def</span> <span class="nf">_parse_copy_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">]:</span> -</span><span id="L-6700"><a href="#L-6700"><span class="linenos">6700</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-6701"><a href="#L-6701"><span class="linenos">6701</span></a> -</span><span id="L-6702"><a href="#L-6702"><span class="linenos">6702</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-6703"><a href="#L-6703"><span class="linenos">6703</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-6704"><a href="#L-6704"><span class="linenos">6704</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6705"><a href="#L-6705"><span class="linenos">6705</span></a> <span class="n">prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-6706"><a href="#L-6706"><span class="linenos">6706</span></a> -</span><span id="L-6707"><a href="#L-6707"><span class="linenos">6707</span></a> <span class="c1"># Different dialects might separate options and values by white space, "=" and "AS"</span> -</span><span id="L-6708"><a href="#L-6708"><span class="linenos">6708</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-6709"><a href="#L-6709"><span class="linenos">6709</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-6710"><a href="#L-6710"><span class="linenos">6710</span></a> -</span><span id="L-6711"><a href="#L-6711"><span class="linenos">6711</span></a> <span class="n">param</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">option</span><span class="p">)</span> -</span><span id="L-6712"><a href="#L-6712"><span class="linenos">6712</span></a> -</span><span id="L-6713"><a href="#L-6713"><span class="linenos">6713</span></a> <span class="k">if</span> <span class="n">prev</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span> -</span><span id="L-6714"><a href="#L-6714"><span class="linenos">6714</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> -</span><span id="L-6715"><a href="#L-6715"><span class="linenos">6715</span></a> <span class="p">):</span> -</span><span id="L-6716"><a href="#L-6716"><span class="linenos">6716</span></a> <span class="c1"># Snowflake FILE_FORMAT case, Databricks COPY & FORMAT options</span> -</span><span id="L-6717"><a href="#L-6717"><span class="linenos">6717</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="L-6718"><a href="#L-6718"><span class="linenos">6718</span></a> <span class="k">elif</span> <span class="n">prev</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span> -</span><span id="L-6719"><a href="#L-6719"><span class="linenos">6719</span></a> <span class="c1"># T-SQL's external file format case</span> -</span><span id="L-6720"><a href="#L-6720"><span class="linenos">6720</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6721"><a href="#L-6721"><span class="linenos">6721</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-6722"><a href="#L-6722"><span class="linenos">6722</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">())</span> -</span><span id="L-6723"><a href="#L-6723"><span class="linenos">6723</span></a> -</span><span id="L-6724"><a href="#L-6724"><span class="linenos">6724</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">param</span><span class="p">)</span> -</span><span id="L-6725"><a href="#L-6725"><span class="linenos">6725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span> -</span><span id="L-6726"><a href="#L-6726"><span class="linenos">6726</span></a> -</span><span id="L-6727"><a href="#L-6727"><span class="linenos">6727</span></a> <span class="k">return</span> <span class="n">options</span> -</span><span id="L-6728"><a href="#L-6728"><span class="linenos">6728</span></a> -</span><span id="L-6729"><a href="#L-6729"><span class="linenos">6729</span></a> <span class="k">def</span> <span class="nf">_parse_credentials</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">]:</span> -</span><span id="L-6730"><a href="#L-6730"><span class="linenos">6730</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> +</span><span id="L-6695"><a href="#L-6695"><span class="linenos">6695</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6696"><a href="#L-6696"><span class="linenos">6696</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">,</span> +</span><span id="L-6697"><a href="#L-6697"><span class="linenos">6697</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-6698"><a href="#L-6698"><span class="linenos">6698</span></a> <span class="n">is_database</span><span class="o">=</span><span class="n">is_database</span><span class="p">,</span> +</span><span id="L-6699"><a href="#L-6699"><span class="linenos">6699</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="L-6700"><a href="#L-6700"><span class="linenos">6700</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> +</span><span id="L-6701"><a href="#L-6701"><span class="linenos">6701</span></a> <span class="n">identity</span><span class="o">=</span><span class="n">identity</span><span class="p">,</span> +</span><span id="L-6702"><a href="#L-6702"><span class="linenos">6702</span></a> <span class="n">option</span><span class="o">=</span><span class="n">option</span><span class="p">,</span> +</span><span id="L-6703"><a href="#L-6703"><span class="linenos">6703</span></a> <span class="n">partition</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="L-6704"><a href="#L-6704"><span class="linenos">6704</span></a> <span class="p">)</span> +</span><span id="L-6705"><a href="#L-6705"><span class="linenos">6705</span></a> +</span><span id="L-6706"><a href="#L-6706"><span class="linenos">6706</span></a> <span class="k">def</span> <span class="nf">_parse_with_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6707"><a href="#L-6707"><span class="linenos">6707</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_opclass</span><span class="p">)</span> +</span><span id="L-6708"><a href="#L-6708"><span class="linenos">6708</span></a> +</span><span id="L-6709"><a href="#L-6709"><span class="linenos">6709</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-6710"><a href="#L-6710"><span class="linenos">6710</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-6711"><a href="#L-6711"><span class="linenos">6711</span></a> +</span><span id="L-6712"><a href="#L-6712"><span class="linenos">6712</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6713"><a href="#L-6713"><span class="linenos">6713</span></a> +</span><span id="L-6714"><a href="#L-6714"><span class="linenos">6714</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithOperator</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">op</span><span class="o">=</span><span class="n">op</span><span class="p">)</span> +</span><span id="L-6715"><a href="#L-6715"><span class="linenos">6715</span></a> +</span><span id="L-6716"><a href="#L-6716"><span class="linenos">6716</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-6717"><a href="#L-6717"><span class="linenos">6717</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-6718"><a href="#L-6718"><span class="linenos">6718</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="L-6719"><a href="#L-6719"><span class="linenos">6719</span></a> +</span><span id="L-6720"><a href="#L-6720"><span class="linenos">6720</span></a> <span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6721"><a href="#L-6721"><span class="linenos">6721</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-6722"><a href="#L-6722"><span class="linenos">6722</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-6723"><a href="#L-6723"><span class="linenos">6723</span></a> <span class="c1"># The FORMAT_NAME can be set to an identifier for Snowflake and T-SQL,</span> +</span><span id="L-6724"><a href="#L-6724"><span class="linenos">6724</span></a> <span class="c1"># so we parse it separately to use _parse_field()</span> +</span><span id="L-6725"><a href="#L-6725"><span class="linenos">6725</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6726"><a href="#L-6726"><span class="linenos">6726</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-6727"><a href="#L-6727"><span class="linenos">6727</span></a> <span class="p">)</span> +</span><span id="L-6728"><a href="#L-6728"><span class="linenos">6728</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> +</span><span id="L-6729"><a href="#L-6729"><span class="linenos">6729</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6730"><a href="#L-6730"><span class="linenos">6730</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">())</span> </span><span id="L-6731"><a href="#L-6731"><span class="linenos">6731</span></a> -</span><span id="L-6732"><a href="#L-6732"><span class="linenos">6732</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORAGE_INTEGRATION"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="L-6733"><a href="#L-6733"><span class="linenos">6733</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"storage"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6734"><a href="#L-6734"><span class="linenos">6734</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CREDENTIALS"</span><span class="p">):</span> -</span><span id="L-6735"><a href="#L-6735"><span class="linenos">6735</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...), Redshift case: CREDENTIALS <string></span> -</span><span id="L-6736"><a href="#L-6736"><span class="linenos">6736</span></a> <span class="n">creds</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-6737"><a href="#L-6737"><span class="linenos">6737</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-6738"><a href="#L-6738"><span class="linenos">6738</span></a> <span class="p">)</span> -</span><span id="L-6739"><a href="#L-6739"><span class="linenos">6739</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">,</span> <span class="n">creds</span><span class="p">)</span> -</span><span id="L-6740"><a href="#L-6740"><span class="linenos">6740</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCRYPTION"</span><span class="p">):</span> -</span><span id="L-6741"><a href="#L-6741"><span class="linenos">6741</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"encryption"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="L-6742"><a href="#L-6742"><span class="linenos">6742</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IAM_ROLE"</span><span class="p">):</span> -</span><span id="L-6743"><a href="#L-6743"><span class="linenos">6743</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"iam_role"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6744"><a href="#L-6744"><span class="linenos">6744</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REGION"</span><span class="p">):</span> -</span><span id="L-6745"><a href="#L-6745"><span class="linenos">6745</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"region"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-6746"><a href="#L-6746"><span class="linenos">6746</span></a> -</span><span id="L-6747"><a href="#L-6747"><span class="linenos">6747</span></a> <span class="k">return</span> <span class="n">expr</span> -</span><span id="L-6748"><a href="#L-6748"><span class="linenos">6748</span></a> -</span><span id="L-6749"><a href="#L-6749"><span class="linenos">6749</span></a> <span class="k">def</span> <span class="nf">_parse_file_location</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-6750"><a href="#L-6750"><span class="linenos">6750</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-6751"><a href="#L-6751"><span class="linenos">6751</span></a> -</span><span id="L-6752"><a href="#L-6752"><span class="linenos">6752</span></a> <span class="k">def</span> <span class="nf">_parse_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-6753"><a href="#L-6753"><span class="linenos">6753</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-6754"><a href="#L-6754"><span class="linenos">6754</span></a> -</span><span id="L-6755"><a href="#L-6755"><span class="linenos">6755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="L-6756"><a href="#L-6756"><span class="linenos">6756</span></a> -</span><span id="L-6757"><a href="#L-6757"><span class="linenos">6757</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-6758"><a href="#L-6758"><span class="linenos">6758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-6759"><a href="#L-6759"><span class="linenos">6759</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-6760"><a href="#L-6760"><span class="linenos">6760</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6761"><a href="#L-6761"><span class="linenos">6761</span></a> <span class="p">)</span> -</span><span id="L-6762"><a href="#L-6762"><span class="linenos">6762</span></a> -</span><span id="L-6763"><a href="#L-6763"><span class="linenos">6763</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="L-6764"><a href="#L-6764"><span class="linenos">6764</span></a> -</span><span id="L-6765"><a href="#L-6765"><span class="linenos">6765</span></a> <span class="n">files</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_file_location</span><span class="p">)</span> -</span><span id="L-6766"><a href="#L-6766"><span class="linenos">6766</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_credentials</span><span class="p">()</span> -</span><span id="L-6767"><a href="#L-6767"><span class="linenos">6767</span></a> -</span><span id="L-6768"><a href="#L-6768"><span class="linenos">6768</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> -</span><span id="L-6769"><a href="#L-6769"><span class="linenos">6769</span></a> -</span><span id="L-6770"><a href="#L-6770"><span class="linenos">6770</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_parameters</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-6771"><a href="#L-6771"><span class="linenos">6771</span></a> -</span><span id="L-6772"><a href="#L-6772"><span class="linenos">6772</span></a> <span class="c1"># Fallback case</span> -</span><span id="L-6773"><a href="#L-6773"><span class="linenos">6773</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-6774"><a href="#L-6774"><span class="linenos">6774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-6775"><a href="#L-6775"><span class="linenos">6775</span></a> -</span><span id="L-6776"><a href="#L-6776"><span class="linenos">6776</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-6777"><a href="#L-6777"><span class="linenos">6777</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">,</span> -</span><span id="L-6778"><a href="#L-6778"><span class="linenos">6778</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-6779"><a href="#L-6779"><span class="linenos">6779</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-6780"><a href="#L-6780"><span class="linenos">6780</span></a> <span class="n">credentials</span><span class="o">=</span><span class="n">credentials</span><span class="p">,</span> -</span><span id="L-6781"><a href="#L-6781"><span class="linenos">6781</span></a> <span class="n">files</span><span class="o">=</span><span class="n">files</span><span class="p">,</span> -</span><span id="L-6782"><a href="#L-6782"><span class="linenos">6782</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> -</span><span id="L-6783"><a href="#L-6783"><span class="linenos">6783</span></a> <span class="p">)</span> +</span><span id="L-6732"><a href="#L-6732"><span class="linenos">6732</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-6733"><a href="#L-6733"><span class="linenos">6733</span></a> +</span><span id="L-6734"><a href="#L-6734"><span class="linenos">6734</span></a> <span class="k">return</span> <span class="n">opts</span> +</span><span id="L-6735"><a href="#L-6735"><span class="linenos">6735</span></a> +</span><span id="L-6736"><a href="#L-6736"><span class="linenos">6736</span></a> <span class="k">def</span> <span class="nf">_parse_copy_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">]:</span> +</span><span id="L-6737"><a href="#L-6737"><span class="linenos">6737</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-6738"><a href="#L-6738"><span class="linenos">6738</span></a> +</span><span id="L-6739"><a href="#L-6739"><span class="linenos">6739</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-6740"><a href="#L-6740"><span class="linenos">6740</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-6741"><a href="#L-6741"><span class="linenos">6741</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6742"><a href="#L-6742"><span class="linenos">6742</span></a> <span class="n">prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-6743"><a href="#L-6743"><span class="linenos">6743</span></a> +</span><span id="L-6744"><a href="#L-6744"><span class="linenos">6744</span></a> <span class="c1"># Different dialects might separate options and values by white space, "=" and "AS"</span> +</span><span id="L-6745"><a href="#L-6745"><span class="linenos">6745</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-6746"><a href="#L-6746"><span class="linenos">6746</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-6747"><a href="#L-6747"><span class="linenos">6747</span></a> +</span><span id="L-6748"><a href="#L-6748"><span class="linenos">6748</span></a> <span class="n">param</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">option</span><span class="p">)</span> +</span><span id="L-6749"><a href="#L-6749"><span class="linenos">6749</span></a> +</span><span id="L-6750"><a href="#L-6750"><span class="linenos">6750</span></a> <span class="k">if</span> <span class="n">prev</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span> +</span><span id="L-6751"><a href="#L-6751"><span class="linenos">6751</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> +</span><span id="L-6752"><a href="#L-6752"><span class="linenos">6752</span></a> <span class="p">):</span> +</span><span id="L-6753"><a href="#L-6753"><span class="linenos">6753</span></a> <span class="c1"># Snowflake FILE_FORMAT case, Databricks COPY & FORMAT options</span> +</span><span id="L-6754"><a href="#L-6754"><span class="linenos">6754</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="L-6755"><a href="#L-6755"><span class="linenos">6755</span></a> <span class="k">elif</span> <span class="n">prev</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span> +</span><span id="L-6756"><a href="#L-6756"><span class="linenos">6756</span></a> <span class="c1"># T-SQL's external file format case</span> +</span><span id="L-6757"><a href="#L-6757"><span class="linenos">6757</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6758"><a href="#L-6758"><span class="linenos">6758</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-6759"><a href="#L-6759"><span class="linenos">6759</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">())</span> +</span><span id="L-6760"><a href="#L-6760"><span class="linenos">6760</span></a> +</span><span id="L-6761"><a href="#L-6761"><span class="linenos">6761</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">param</span><span class="p">)</span> +</span><span id="L-6762"><a href="#L-6762"><span class="linenos">6762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span> +</span><span id="L-6763"><a href="#L-6763"><span class="linenos">6763</span></a> +</span><span id="L-6764"><a href="#L-6764"><span class="linenos">6764</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="L-6765"><a href="#L-6765"><span class="linenos">6765</span></a> +</span><span id="L-6766"><a href="#L-6766"><span class="linenos">6766</span></a> <span class="k">def</span> <span class="nf">_parse_credentials</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">]:</span> +</span><span id="L-6767"><a href="#L-6767"><span class="linenos">6767</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> +</span><span id="L-6768"><a href="#L-6768"><span class="linenos">6768</span></a> +</span><span id="L-6769"><a href="#L-6769"><span class="linenos">6769</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORAGE_INTEGRATION"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="L-6770"><a href="#L-6770"><span class="linenos">6770</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"storage"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6771"><a href="#L-6771"><span class="linenos">6771</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CREDENTIALS"</span><span class="p">):</span> +</span><span id="L-6772"><a href="#L-6772"><span class="linenos">6772</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...), Redshift case: CREDENTIALS <string></span> +</span><span id="L-6773"><a href="#L-6773"><span class="linenos">6773</span></a> <span class="n">creds</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-6774"><a href="#L-6774"><span class="linenos">6774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-6775"><a href="#L-6775"><span class="linenos">6775</span></a> <span class="p">)</span> +</span><span id="L-6776"><a href="#L-6776"><span class="linenos">6776</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">,</span> <span class="n">creds</span><span class="p">)</span> +</span><span id="L-6777"><a href="#L-6777"><span class="linenos">6777</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCRYPTION"</span><span class="p">):</span> +</span><span id="L-6778"><a href="#L-6778"><span class="linenos">6778</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"encryption"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="L-6779"><a href="#L-6779"><span class="linenos">6779</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IAM_ROLE"</span><span class="p">):</span> +</span><span id="L-6780"><a href="#L-6780"><span class="linenos">6780</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"iam_role"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6781"><a href="#L-6781"><span class="linenos">6781</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REGION"</span><span class="p">):</span> +</span><span id="L-6782"><a href="#L-6782"><span class="linenos">6782</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"region"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-6783"><a href="#L-6783"><span class="linenos">6783</span></a> +</span><span id="L-6784"><a href="#L-6784"><span class="linenos">6784</span></a> <span class="k">return</span> <span class="n">expr</span> +</span><span id="L-6785"><a href="#L-6785"><span class="linenos">6785</span></a> +</span><span id="L-6786"><a href="#L-6786"><span class="linenos">6786</span></a> <span class="k">def</span> <span class="nf">_parse_file_location</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-6787"><a href="#L-6787"><span class="linenos">6787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-6788"><a href="#L-6788"><span class="linenos">6788</span></a> +</span><span id="L-6789"><a href="#L-6789"><span class="linenos">6789</span></a> <span class="k">def</span> <span class="nf">_parse_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-6790"><a href="#L-6790"><span class="linenos">6790</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-6791"><a href="#L-6791"><span class="linenos">6791</span></a> +</span><span id="L-6792"><a href="#L-6792"><span class="linenos">6792</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="L-6793"><a href="#L-6793"><span class="linenos">6793</span></a> +</span><span id="L-6794"><a href="#L-6794"><span class="linenos">6794</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-6795"><a href="#L-6795"><span class="linenos">6795</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-6796"><a href="#L-6796"><span class="linenos">6796</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-6797"><a href="#L-6797"><span class="linenos">6797</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6798"><a href="#L-6798"><span class="linenos">6798</span></a> <span class="p">)</span> +</span><span id="L-6799"><a href="#L-6799"><span class="linenos">6799</span></a> +</span><span id="L-6800"><a href="#L-6800"><span class="linenos">6800</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="L-6801"><a href="#L-6801"><span class="linenos">6801</span></a> +</span><span id="L-6802"><a href="#L-6802"><span class="linenos">6802</span></a> <span class="n">files</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_file_location</span><span class="p">)</span> +</span><span id="L-6803"><a href="#L-6803"><span class="linenos">6803</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_credentials</span><span class="p">()</span> +</span><span id="L-6804"><a href="#L-6804"><span class="linenos">6804</span></a> +</span><span id="L-6805"><a href="#L-6805"><span class="linenos">6805</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> +</span><span id="L-6806"><a href="#L-6806"><span class="linenos">6806</span></a> +</span><span id="L-6807"><a href="#L-6807"><span class="linenos">6807</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_parameters</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-6808"><a href="#L-6808"><span class="linenos">6808</span></a> +</span><span id="L-6809"><a href="#L-6809"><span class="linenos">6809</span></a> <span class="c1"># Fallback case</span> +</span><span id="L-6810"><a href="#L-6810"><span class="linenos">6810</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-6811"><a href="#L-6811"><span class="linenos">6811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-6812"><a href="#L-6812"><span class="linenos">6812</span></a> +</span><span id="L-6813"><a href="#L-6813"><span class="linenos">6813</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-6814"><a href="#L-6814"><span class="linenos">6814</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">,</span> +</span><span id="L-6815"><a href="#L-6815"><span class="linenos">6815</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-6816"><a href="#L-6816"><span class="linenos">6816</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-6817"><a href="#L-6817"><span class="linenos">6817</span></a> <span class="n">credentials</span><span class="o">=</span><span class="n">credentials</span><span class="p">,</span> +</span><span id="L-6818"><a href="#L-6818"><span class="linenos">6818</span></a> <span class="n">files</span><span class="o">=</span><span class="n">files</span><span class="p">,</span> +</span><span id="L-6819"><a href="#L-6819"><span class="linenos">6819</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> +</span><span id="L-6820"><a href="#L-6820"><span class="linenos">6820</span></a> <span class="p">)</span> </span></pre></div> @@ -7579,6594 +7619,6631 @@ </span><span id="Parser-194"><a href="#Parser-194"><span class="linenos"> 194</span></a> </span><span id="Parser-195"><a href="#Parser-195"><span class="linenos"> 195</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Parser-196"><a href="#Parser-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="Parser-197"><a href="#Parser-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span> -</span><span id="Parser-198"><a href="#Parser-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="Parser-199"><a href="#Parser-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> -</span><span id="Parser-200"><a href="#Parser-200"><span class="linenos"> 200</span></a> <span class="o">*</span><span class="n">STRUCT_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-201"><a href="#Parser-201"><span class="linenos"> 201</span></a> <span class="p">}</span> -</span><span id="Parser-202"><a href="#Parser-202"><span class="linenos"> 202</span></a> -</span><span id="Parser-203"><a href="#Parser-203"><span class="linenos"> 203</span></a> <span class="n">ENUM_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-204"><a href="#Parser-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> -</span><span id="Parser-205"><a href="#Parser-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span> -</span><span id="Parser-206"><a href="#Parser-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span> -</span><span id="Parser-207"><a href="#Parser-207"><span class="linenos"> 207</span></a> <span class="p">}</span> -</span><span id="Parser-208"><a href="#Parser-208"><span class="linenos"> 208</span></a> -</span><span id="Parser-209"><a href="#Parser-209"><span class="linenos"> 209</span></a> <span class="n">AGGREGATE_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-210"><a href="#Parser-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span> -</span><span id="Parser-211"><a href="#Parser-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">,</span> -</span><span id="Parser-212"><a href="#Parser-212"><span class="linenos"> 212</span></a> <span class="p">}</span> -</span><span id="Parser-213"><a href="#Parser-213"><span class="linenos"> 213</span></a> -</span><span id="Parser-214"><a href="#Parser-214"><span class="linenos"> 214</span></a> <span class="n">TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-215"><a href="#Parser-215"><span class="linenos"> 215</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> -</span><span id="Parser-216"><a href="#Parser-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> -</span><span id="Parser-217"><a href="#Parser-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="Parser-218"><a href="#Parser-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> -</span><span id="Parser-219"><a href="#Parser-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Parser-220"><a href="#Parser-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> -</span><span id="Parser-221"><a href="#Parser-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="Parser-222"><a href="#Parser-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> -</span><span id="Parser-223"><a href="#Parser-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Parser-224"><a href="#Parser-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> -</span><span id="Parser-225"><a href="#Parser-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> -</span><span id="Parser-226"><a href="#Parser-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> -</span><span id="Parser-227"><a href="#Parser-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> -</span><span id="Parser-228"><a href="#Parser-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> -</span><span id="Parser-229"><a href="#Parser-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> -</span><span id="Parser-230"><a href="#Parser-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> -</span><span id="Parser-231"><a href="#Parser-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span> -</span><span id="Parser-232"><a href="#Parser-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Parser-233"><a href="#Parser-233"><span class="linenos"> 233</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Parser-234"><a href="#Parser-234"><span class="linenos"> 234</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="Parser-235"><a href="#Parser-235"><span class="linenos"> 235</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="Parser-236"><a href="#Parser-236"><span class="linenos"> 236</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="Parser-237"><a href="#Parser-237"><span class="linenos"> 237</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="Parser-238"><a href="#Parser-238"><span class="linenos"> 238</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> -</span><span id="Parser-239"><a href="#Parser-239"><span class="linenos"> 239</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="Parser-240"><a href="#Parser-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> -</span><span id="Parser-241"><a href="#Parser-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> -</span><span id="Parser-242"><a href="#Parser-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> -</span><span id="Parser-243"><a href="#Parser-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> -</span><span id="Parser-244"><a href="#Parser-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> -</span><span id="Parser-245"><a href="#Parser-245"><span class="linenos"> 245</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="Parser-246"><a href="#Parser-246"><span class="linenos"> 246</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> -</span><span id="Parser-247"><a href="#Parser-247"><span class="linenos"> 247</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> -</span><span id="Parser-248"><a href="#Parser-248"><span class="linenos"> 248</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="Parser-249"><a href="#Parser-249"><span class="linenos"> 249</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> -</span><span id="Parser-250"><a href="#Parser-250"><span class="linenos"> 250</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> -</span><span id="Parser-251"><a href="#Parser-251"><span class="linenos"> 251</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="Parser-252"><a href="#Parser-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="Parser-253"><a href="#Parser-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-254"><a href="#Parser-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> -</span><span id="Parser-255"><a href="#Parser-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> -</span><span id="Parser-256"><a href="#Parser-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> -</span><span id="Parser-257"><a href="#Parser-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Parser-258"><a href="#Parser-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Parser-259"><a href="#Parser-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="Parser-260"><a href="#Parser-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="Parser-261"><a href="#Parser-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> -</span><span id="Parser-262"><a href="#Parser-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="Parser-263"><a href="#Parser-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> -</span><span id="Parser-264"><a href="#Parser-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> -</span><span id="Parser-265"><a href="#Parser-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> -</span><span id="Parser-266"><a href="#Parser-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> -</span><span id="Parser-267"><a href="#Parser-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> -</span><span id="Parser-268"><a href="#Parser-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> -</span><span id="Parser-269"><a href="#Parser-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> -</span><span id="Parser-270"><a href="#Parser-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> -</span><span id="Parser-271"><a href="#Parser-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> -</span><span id="Parser-272"><a href="#Parser-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> -</span><span id="Parser-273"><a href="#Parser-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> -</span><span id="Parser-274"><a href="#Parser-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> -</span><span id="Parser-275"><a href="#Parser-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> -</span><span id="Parser-276"><a href="#Parser-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Parser-277"><a href="#Parser-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> -</span><span id="Parser-278"><a href="#Parser-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="Parser-279"><a href="#Parser-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> -</span><span id="Parser-280"><a href="#Parser-280"><span class="linenos"> 280</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="Parser-281"><a href="#Parser-281"><span class="linenos"> 281</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> -</span><span id="Parser-282"><a href="#Parser-282"><span class="linenos"> 282</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span> -</span><span id="Parser-283"><a href="#Parser-283"><span class="linenos"> 283</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> -</span><span id="Parser-284"><a href="#Parser-284"><span class="linenos"> 284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> -</span><span id="Parser-285"><a href="#Parser-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SUPER</span><span class="p">,</span> -</span><span id="Parser-286"><a href="#Parser-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> -</span><span id="Parser-287"><a href="#Parser-287"><span class="linenos"> 287</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> -</span><span id="Parser-288"><a href="#Parser-288"><span class="linenos"> 288</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> -</span><span id="Parser-289"><a href="#Parser-289"><span class="linenos"> 289</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XML</span><span class="p">,</span> -</span><span id="Parser-290"><a href="#Parser-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">YEAR</span><span class="p">,</span> -</span><span id="Parser-291"><a href="#Parser-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUEIDENTIFIER</span><span class="p">,</span> -</span><span id="Parser-292"><a href="#Parser-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> -</span><span id="Parser-293"><a href="#Parser-293"><span class="linenos"> 293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> -</span><span id="Parser-294"><a href="#Parser-294"><span class="linenos"> 294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> -</span><span id="Parser-295"><a href="#Parser-295"><span class="linenos"> 295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">,</span> -</span><span id="Parser-296"><a href="#Parser-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IMAGE</span><span class="p">,</span> -</span><span id="Parser-297"><a href="#Parser-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> -</span><span id="Parser-298"><a href="#Parser-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="Parser-299"><a href="#Parser-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> -</span><span id="Parser-300"><a href="#Parser-300"><span class="linenos"> 300</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> -</span><span id="Parser-301"><a href="#Parser-301"><span class="linenos"> 301</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span> -</span><span id="Parser-302"><a href="#Parser-302"><span class="linenos"> 302</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span> -</span><span id="Parser-303"><a href="#Parser-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span> -</span><span id="Parser-304"><a href="#Parser-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span> -</span><span id="Parser-305"><a href="#Parser-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="Parser-306"><a href="#Parser-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="Parser-307"><a href="#Parser-307"><span class="linenos"> 307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> -</span><span id="Parser-308"><a href="#Parser-308"><span class="linenos"> 308</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span> -</span><span id="Parser-309"><a href="#Parser-309"><span class="linenos"> 309</span></a> <span class="o">*</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-310"><a href="#Parser-310"><span class="linenos"> 310</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-311"><a href="#Parser-311"><span class="linenos"> 311</span></a> <span class="o">*</span><span class="n">AGGREGATE_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-312"><a href="#Parser-312"><span class="linenos"> 312</span></a> <span class="p">}</span> -</span><span id="Parser-313"><a href="#Parser-313"><span class="linenos"> 313</span></a> -</span><span id="Parser-314"><a href="#Parser-314"><span class="linenos"> 314</span></a> <span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-315"><a href="#Parser-315"><span class="linenos"> 315</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</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="Parser-316"><a href="#Parser-316"><span class="linenos"> 316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</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="Parser-317"><a href="#Parser-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> -</span><span id="Parser-318"><a href="#Parser-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</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="Parser-319"><a href="#Parser-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</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="Parser-320"><a href="#Parser-320"><span class="linenos"> 320</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> -</span><span id="Parser-321"><a href="#Parser-321"><span class="linenos"> 321</span></a> <span class="p">}</span> -</span><span id="Parser-322"><a href="#Parser-322"><span class="linenos"> 322</span></a> -</span><span id="Parser-323"><a href="#Parser-323"><span class="linenos"> 323</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-324"><a href="#Parser-324"><span class="linenos"> 324</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="Parser-325"><a href="#Parser-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> -</span><span id="Parser-326"><a href="#Parser-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> -</span><span id="Parser-327"><a href="#Parser-327"><span class="linenos"> 327</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="Parser-328"><a href="#Parser-328"><span class="linenos"> 328</span></a> <span class="p">}</span> -</span><span id="Parser-329"><a href="#Parser-329"><span class="linenos"> 329</span></a> -</span><span id="Parser-330"><a href="#Parser-330"><span class="linenos"> 330</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-331"><a href="#Parser-331"><span class="linenos"> 331</span></a> <span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> -</span><span id="Parser-332"><a href="#Parser-332"><span class="linenos"> 332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> -</span><span id="Parser-333"><a href="#Parser-333"><span class="linenos"> 333</span></a> <span class="p">}</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">}</span> -</span><span id="Parser-334"><a href="#Parser-334"><span class="linenos"> 334</span></a> -</span><span id="Parser-335"><a href="#Parser-335"><span class="linenos"> 335</span></a> <span class="n">DB_CREATABLES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-336"><a href="#Parser-336"><span class="linenos"> 336</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> -</span><span id="Parser-337"><a href="#Parser-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> -</span><span id="Parser-338"><a href="#Parser-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> -</span><span id="Parser-339"><a href="#Parser-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="Parser-340"><a href="#Parser-340"><span class="linenos"> 340</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> -</span><span id="Parser-341"><a href="#Parser-341"><span class="linenos"> 341</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STORAGE_INTEGRATION</span><span class="p">,</span> -</span><span id="Parser-342"><a href="#Parser-342"><span class="linenos"> 342</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Parser-343"><a href="#Parser-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TAG</span><span class="p">,</span> -</span><span id="Parser-344"><a href="#Parser-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="Parser-345"><a href="#Parser-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WAREHOUSE</span><span class="p">,</span> -</span><span id="Parser-346"><a href="#Parser-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STREAMLIT</span><span class="p">,</span> -</span><span id="Parser-347"><a href="#Parser-347"><span class="linenos"> 347</span></a> <span class="p">}</span> -</span><span id="Parser-348"><a href="#Parser-348"><span class="linenos"> 348</span></a> -</span><span id="Parser-349"><a href="#Parser-349"><span class="linenos"> 349</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-350"><a href="#Parser-350"><span class="linenos"> 350</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="Parser-351"><a href="#Parser-351"><span class="linenos"> 351</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="Parser-352"><a href="#Parser-352"><span class="linenos"> 352</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> -</span><span id="Parser-353"><a href="#Parser-353"><span class="linenos"> 353</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="Parser-354"><a href="#Parser-354"><span class="linenos"> 354</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Parser-355"><a href="#Parser-355"><span class="linenos"> 355</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="Parser-356"><a href="#Parser-356"><span class="linenos"> 356</span></a> <span class="o">*</span><span class="n">DB_CREATABLES</span><span class="p">,</span> -</span><span id="Parser-357"><a href="#Parser-357"><span class="linenos"> 357</span></a> <span class="p">}</span> -</span><span id="Parser-358"><a href="#Parser-358"><span class="linenos"> 358</span></a> -</span><span id="Parser-359"><a href="#Parser-359"><span class="linenos"> 359</span></a> <span class="c1"># Tokens that can represent identifiers</span> -</span><span id="Parser-360"><a href="#Parser-360"><span class="linenos"> 360</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-361"><a href="#Parser-361"><span class="linenos"> 361</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="Parser-362"><a href="#Parser-362"><span class="linenos"> 362</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Parser-363"><a href="#Parser-363"><span class="linenos"> 363</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="Parser-364"><a href="#Parser-364"><span class="linenos"> 364</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> -</span><span id="Parser-365"><a href="#Parser-365"><span class="linenos"> 365</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="Parser-366"><a href="#Parser-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="Parser-367"><a href="#Parser-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="Parser-368"><a href="#Parser-368"><span class="linenos"> 368</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> -</span><span id="Parser-369"><a href="#Parser-369"><span class="linenos"> 369</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="Parser-370"><a href="#Parser-370"><span class="linenos"> 370</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> -</span><span id="Parser-371"><a href="#Parser-371"><span class="linenos"> 371</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="Parser-372"><a href="#Parser-372"><span class="linenos"> 372</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Parser-373"><a href="#Parser-373"><span class="linenos"> 373</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> -</span><span id="Parser-374"><a href="#Parser-374"><span class="linenos"> 374</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="Parser-375"><a href="#Parser-375"><span class="linenos"> 375</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="Parser-376"><a href="#Parser-376"><span class="linenos"> 376</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> -</span><span id="Parser-377"><a href="#Parser-377"><span class="linenos"> 377</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="Parser-378"><a href="#Parser-378"><span class="linenos"> 378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="Parser-379"><a href="#Parser-379"><span class="linenos"> 379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> -</span><span id="Parser-380"><a href="#Parser-380"><span class="linenos"> 380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="Parser-381"><a href="#Parser-381"><span class="linenos"> 381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> -</span><span id="Parser-382"><a href="#Parser-382"><span class="linenos"> 382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> -</span><span id="Parser-383"><a href="#Parser-383"><span class="linenos"> 383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="Parser-384"><a href="#Parser-384"><span class="linenos"> 384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="Parser-385"><a href="#Parser-385"><span class="linenos"> 385</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="Parser-386"><a href="#Parser-386"><span class="linenos"> 386</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="Parser-387"><a href="#Parser-387"><span class="linenos"> 387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="Parser-388"><a href="#Parser-388"><span class="linenos"> 388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="Parser-389"><a href="#Parser-389"><span class="linenos"> 389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span> -</span><span id="Parser-390"><a href="#Parser-390"><span class="linenos"> 390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="Parser-391"><a href="#Parser-391"><span class="linenos"> 391</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="Parser-392"><a href="#Parser-392"><span class="linenos"> 392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="Parser-393"><a href="#Parser-393"><span class="linenos"> 393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> -</span><span id="Parser-394"><a href="#Parser-394"><span class="linenos"> 394</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="Parser-395"><a href="#Parser-395"><span class="linenos"> 395</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="Parser-396"><a href="#Parser-396"><span class="linenos"> 396</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> -</span><span id="Parser-397"><a href="#Parser-397"><span class="linenos"> 397</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> -</span><span id="Parser-398"><a href="#Parser-398"><span class="linenos"> 398</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-399"><a href="#Parser-399"><span class="linenos"> 399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> -</span><span id="Parser-400"><a href="#Parser-400"><span class="linenos"> 400</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="Parser-401"><a href="#Parser-401"><span class="linenos"> 401</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Parser-402"><a href="#Parser-402"><span class="linenos"> 402</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="Parser-403"><a href="#Parser-403"><span class="linenos"> 403</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Parser-404"><a href="#Parser-404"><span class="linenos"> 404</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> -</span><span id="Parser-405"><a href="#Parser-405"><span class="linenos"> 405</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="Parser-406"><a href="#Parser-406"><span class="linenos"> 406</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> -</span><span id="Parser-407"><a href="#Parser-407"><span class="linenos"> 407</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> -</span><span id="Parser-408"><a href="#Parser-408"><span class="linenos"> 408</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> -</span><span id="Parser-409"><a href="#Parser-409"><span class="linenos"> 409</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="Parser-410"><a href="#Parser-410"><span class="linenos"> 410</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> -</span><span id="Parser-411"><a href="#Parser-411"><span class="linenos"> 411</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> -</span><span id="Parser-412"><a href="#Parser-412"><span class="linenos"> 412</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="Parser-413"><a href="#Parser-413"><span class="linenos"> 413</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> -</span><span id="Parser-414"><a href="#Parser-414"><span class="linenos"> 414</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="Parser-415"><a href="#Parser-415"><span class="linenos"> 415</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">,</span> -</span><span id="Parser-416"><a href="#Parser-416"><span class="linenos"> 416</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Parser-417"><a href="#Parser-417"><span class="linenos"> 417</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-418"><a href="#Parser-418"><span class="linenos"> 418</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> -</span><span id="Parser-419"><a href="#Parser-419"><span class="linenos"> 419</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="Parser-420"><a href="#Parser-420"><span class="linenos"> 420</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="Parser-421"><a href="#Parser-421"><span class="linenos"> 421</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Parser-422"><a href="#Parser-422"><span class="linenos"> 422</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="Parser-423"><a href="#Parser-423"><span class="linenos"> 423</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> -</span><span id="Parser-424"><a href="#Parser-424"><span class="linenos"> 424</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="Parser-425"><a href="#Parser-425"><span class="linenos"> 425</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Parser-426"><a href="#Parser-426"><span class="linenos"> 426</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> -</span><span id="Parser-427"><a href="#Parser-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="Parser-428"><a href="#Parser-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> -</span><span id="Parser-429"><a href="#Parser-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="Parser-430"><a href="#Parser-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="Parser-431"><a href="#Parser-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="Parser-432"><a href="#Parser-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> -</span><span id="Parser-433"><a href="#Parser-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> -</span><span id="Parser-434"><a href="#Parser-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="Parser-435"><a href="#Parser-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Parser-436"><a href="#Parser-436"><span class="linenos"> 436</span></a> <span class="o">*</span><span class="n">CREATABLES</span><span class="p">,</span> -</span><span id="Parser-437"><a href="#Parser-437"><span class="linenos"> 437</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="Parser-438"><a href="#Parser-438"><span class="linenos"> 438</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-439"><a href="#Parser-439"><span class="linenos"> 439</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> -</span><span id="Parser-440"><a href="#Parser-440"><span class="linenos"> 440</span></a> <span class="p">}</span> -</span><span id="Parser-441"><a href="#Parser-441"><span class="linenos"> 441</span></a> -</span><span id="Parser-442"><a href="#Parser-442"><span class="linenos"> 442</span></a> <span class="n">INTERVAL_VARS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">}</span> -</span><span id="Parser-443"><a href="#Parser-443"><span class="linenos"> 443</span></a> -</span><span id="Parser-444"><a href="#Parser-444"><span class="linenos"> 444</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> -</span><span id="Parser-445"><a href="#Parser-445"><span class="linenos"> 445</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Parser-446"><a href="#Parser-446"><span class="linenos"> 446</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="Parser-447"><a href="#Parser-447"><span class="linenos"> 447</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="Parser-448"><a href="#Parser-448"><span class="linenos"> 448</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="Parser-449"><a href="#Parser-449"><span class="linenos"> 449</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-450"><a href="#Parser-450"><span class="linenos"> 450</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> -</span><span id="Parser-451"><a href="#Parser-451"><span class="linenos"> 451</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Parser-452"><a href="#Parser-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Parser-453"><a href="#Parser-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-454"><a href="#Parser-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Parser-455"><a href="#Parser-455"><span class="linenos"> 455</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Parser-456"><a href="#Parser-456"><span class="linenos"> 456</span></a> <span class="p">}</span> -</span><span id="Parser-457"><a href="#Parser-457"><span class="linenos"> 457</span></a> -</span><span id="Parser-458"><a href="#Parser-458"><span class="linenos"> 458</span></a> <span class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> -</span><span id="Parser-459"><a href="#Parser-459"><span class="linenos"> 459</span></a> -</span><span id="Parser-460"><a href="#Parser-460"><span class="linenos"> 460</span></a> <span class="n">COMMENT_TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> -</span><span id="Parser-461"><a href="#Parser-461"><span class="linenos"> 461</span></a> -</span><span id="Parser-462"><a href="#Parser-462"><span class="linenos"> 462</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> -</span><span id="Parser-463"><a href="#Parser-463"><span class="linenos"> 463</span></a> -</span><span id="Parser-464"><a href="#Parser-464"><span class="linenos"> 464</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"LEADING"</span><span class="p">,</span> <span class="s2">"TRAILING"</span><span class="p">,</span> <span class="s2">"BOTH"</span><span class="p">}</span> +</span><span id="Parser-197"><a href="#Parser-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIST</span><span class="p">,</span> +</span><span id="Parser-198"><a href="#Parser-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOWCARDINALITY</span><span class="p">,</span> +</span><span id="Parser-199"><a href="#Parser-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="Parser-200"><a href="#Parser-200"><span class="linenos"> 200</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> +</span><span id="Parser-201"><a href="#Parser-201"><span class="linenos"> 201</span></a> <span class="o">*</span><span class="n">STRUCT_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-202"><a href="#Parser-202"><span class="linenos"> 202</span></a> <span class="p">}</span> +</span><span id="Parser-203"><a href="#Parser-203"><span class="linenos"> 203</span></a> +</span><span id="Parser-204"><a href="#Parser-204"><span class="linenos"> 204</span></a> <span class="n">ENUM_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-205"><a href="#Parser-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> +</span><span id="Parser-206"><a href="#Parser-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM8</span><span class="p">,</span> +</span><span id="Parser-207"><a href="#Parser-207"><span class="linenos"> 207</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM16</span><span class="p">,</span> +</span><span id="Parser-208"><a href="#Parser-208"><span class="linenos"> 208</span></a> <span class="p">}</span> +</span><span id="Parser-209"><a href="#Parser-209"><span class="linenos"> 209</span></a> +</span><span id="Parser-210"><a href="#Parser-210"><span class="linenos"> 210</span></a> <span class="n">AGGREGATE_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-211"><a href="#Parser-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AGGREGATEFUNCTION</span><span class="p">,</span> +</span><span id="Parser-212"><a href="#Parser-212"><span class="linenos"> 212</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMPLEAGGREGATEFUNCTION</span><span class="p">,</span> +</span><span id="Parser-213"><a href="#Parser-213"><span class="linenos"> 213</span></a> <span class="p">}</span> +</span><span id="Parser-214"><a href="#Parser-214"><span class="linenos"> 214</span></a> +</span><span id="Parser-215"><a href="#Parser-215"><span class="linenos"> 215</span></a> <span class="n">TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-216"><a href="#Parser-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> +</span><span id="Parser-217"><a href="#Parser-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> +</span><span id="Parser-218"><a href="#Parser-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="Parser-219"><a href="#Parser-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> +</span><span id="Parser-220"><a href="#Parser-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Parser-221"><a href="#Parser-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> +</span><span id="Parser-222"><a href="#Parser-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="Parser-223"><a href="#Parser-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> +</span><span id="Parser-224"><a href="#Parser-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Parser-225"><a href="#Parser-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> +</span><span id="Parser-226"><a href="#Parser-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> +</span><span id="Parser-227"><a href="#Parser-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT128</span><span class="p">,</span> +</span><span id="Parser-228"><a href="#Parser-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT256</span><span class="p">,</span> +</span><span id="Parser-229"><a href="#Parser-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT256</span><span class="p">,</span> +</span><span id="Parser-230"><a href="#Parser-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> +</span><span id="Parser-231"><a href="#Parser-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> +</span><span id="Parser-232"><a href="#Parser-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIXEDSTRING</span><span class="p">,</span> +</span><span id="Parser-233"><a href="#Parser-233"><span class="linenos"> 233</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Parser-234"><a href="#Parser-234"><span class="linenos"> 234</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Parser-235"><a href="#Parser-235"><span class="linenos"> 235</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="Parser-236"><a href="#Parser-236"><span class="linenos"> 236</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="Parser-237"><a href="#Parser-237"><span class="linenos"> 237</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="Parser-238"><a href="#Parser-238"><span class="linenos"> 238</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="Parser-239"><a href="#Parser-239"><span class="linenos"> 239</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> +</span><span id="Parser-240"><a href="#Parser-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="Parser-241"><a href="#Parser-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> +</span><span id="Parser-242"><a href="#Parser-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> +</span><span id="Parser-243"><a href="#Parser-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> +</span><span id="Parser-244"><a href="#Parser-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> +</span><span id="Parser-245"><a href="#Parser-245"><span class="linenos"> 245</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> +</span><span id="Parser-246"><a href="#Parser-246"><span class="linenos"> 246</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="Parser-247"><a href="#Parser-247"><span class="linenos"> 247</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> +</span><span id="Parser-248"><a href="#Parser-248"><span class="linenos"> 248</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> +</span><span id="Parser-249"><a href="#Parser-249"><span class="linenos"> 249</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="Parser-250"><a href="#Parser-250"><span class="linenos"> 250</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> +</span><span id="Parser-251"><a href="#Parser-251"><span class="linenos"> 251</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> +</span><span id="Parser-252"><a href="#Parser-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="Parser-253"><a href="#Parser-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="Parser-254"><a href="#Parser-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-255"><a href="#Parser-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">,</span> +</span><span id="Parser-256"><a href="#Parser-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">,</span> +</span><span id="Parser-257"><a href="#Parser-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">,</span> +</span><span id="Parser-258"><a href="#Parser-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Parser-259"><a href="#Parser-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Parser-260"><a href="#Parser-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="Parser-261"><a href="#Parser-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="Parser-262"><a href="#Parser-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME64</span><span class="p">,</span> +</span><span id="Parser-263"><a href="#Parser-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="Parser-264"><a href="#Parser-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE32</span><span class="p">,</span> +</span><span id="Parser-265"><a href="#Parser-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> +</span><span id="Parser-266"><a href="#Parser-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> +</span><span id="Parser-267"><a href="#Parser-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> +</span><span id="Parser-268"><a href="#Parser-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> +</span><span id="Parser-269"><a href="#Parser-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> +</span><span id="Parser-270"><a href="#Parser-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> +</span><span id="Parser-271"><a href="#Parser-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> +</span><span id="Parser-272"><a href="#Parser-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> +</span><span id="Parser-273"><a href="#Parser-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> +</span><span id="Parser-274"><a href="#Parser-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> +</span><span id="Parser-275"><a href="#Parser-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> +</span><span id="Parser-276"><a href="#Parser-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> +</span><span id="Parser-277"><a href="#Parser-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Parser-278"><a href="#Parser-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> +</span><span id="Parser-279"><a href="#Parser-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="Parser-280"><a href="#Parser-280"><span class="linenos"> 280</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> +</span><span id="Parser-281"><a href="#Parser-281"><span class="linenos"> 281</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="Parser-282"><a href="#Parser-282"><span class="linenos"> 282</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> +</span><span id="Parser-283"><a href="#Parser-283"><span class="linenos"> 283</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HLLSKETCH</span><span class="p">,</span> +</span><span id="Parser-284"><a href="#Parser-284"><span class="linenos"> 284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span> +</span><span id="Parser-285"><a href="#Parser-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span> +</span><span id="Parser-286"><a href="#Parser-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SUPER</span><span class="p">,</span> +</span><span id="Parser-287"><a href="#Parser-287"><span class="linenos"> 287</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span> +</span><span id="Parser-288"><a href="#Parser-288"><span class="linenos"> 288</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span> +</span><span id="Parser-289"><a href="#Parser-289"><span class="linenos"> 289</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span> +</span><span id="Parser-290"><a href="#Parser-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XML</span><span class="p">,</span> +</span><span id="Parser-291"><a href="#Parser-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">YEAR</span><span class="p">,</span> +</span><span id="Parser-292"><a href="#Parser-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUEIDENTIFIER</span><span class="p">,</span> +</span><span id="Parser-293"><a href="#Parser-293"><span class="linenos"> 293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> +</span><span id="Parser-294"><a href="#Parser-294"><span class="linenos"> 294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MONEY</span><span class="p">,</span> +</span><span id="Parser-295"><a href="#Parser-295"><span class="linenos"> 295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLMONEY</span><span class="p">,</span> +</span><span id="Parser-296"><a href="#Parser-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWVERSION</span><span class="p">,</span> +</span><span id="Parser-297"><a href="#Parser-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IMAGE</span><span class="p">,</span> +</span><span id="Parser-298"><a href="#Parser-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> +</span><span id="Parser-299"><a href="#Parser-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="Parser-300"><a href="#Parser-300"><span class="linenos"> 300</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">,</span> +</span><span id="Parser-301"><a href="#Parser-301"><span class="linenos"> 301</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="Parser-302"><a href="#Parser-302"><span class="linenos"> 302</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPADDRESS</span><span class="p">,</span> +</span><span id="Parser-303"><a href="#Parser-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPPREFIX</span><span class="p">,</span> +</span><span id="Parser-304"><a href="#Parser-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV4</span><span class="p">,</span> +</span><span id="Parser-305"><a href="#Parser-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IPV6</span><span class="p">,</span> +</span><span id="Parser-306"><a href="#Parser-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="Parser-307"><a href="#Parser-307"><span class="linenos"> 307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="Parser-308"><a href="#Parser-308"><span class="linenos"> 308</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> +</span><span id="Parser-309"><a href="#Parser-309"><span class="linenos"> 309</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TDIGEST</span><span class="p">,</span> +</span><span id="Parser-310"><a href="#Parser-310"><span class="linenos"> 310</span></a> <span class="o">*</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-311"><a href="#Parser-311"><span class="linenos"> 311</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-312"><a href="#Parser-312"><span class="linenos"> 312</span></a> <span class="o">*</span><span class="n">AGGREGATE_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-313"><a href="#Parser-313"><span class="linenos"> 313</span></a> <span class="p">}</span> +</span><span id="Parser-314"><a href="#Parser-314"><span class="linenos"> 314</span></a> +</span><span id="Parser-315"><a href="#Parser-315"><span class="linenos"> 315</span></a> <span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-316"><a href="#Parser-316"><span class="linenos"> 316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</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="Parser-317"><a href="#Parser-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</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="Parser-318"><a href="#Parser-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UMEDIUMINT</span><span class="p">,</span> +</span><span id="Parser-319"><a href="#Parser-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</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="Parser-320"><a href="#Parser-320"><span class="linenos"> 320</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</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="Parser-321"><a href="#Parser-321"><span class="linenos"> 321</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UDECIMAL</span><span class="p">,</span> +</span><span id="Parser-322"><a href="#Parser-322"><span class="linenos"> 322</span></a> <span class="p">}</span> +</span><span id="Parser-323"><a href="#Parser-323"><span class="linenos"> 323</span></a> +</span><span id="Parser-324"><a href="#Parser-324"><span class="linenos"> 324</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-325"><a href="#Parser-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="Parser-326"><a href="#Parser-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> +</span><span id="Parser-327"><a href="#Parser-327"><span class="linenos"> 327</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> +</span><span id="Parser-328"><a href="#Parser-328"><span class="linenos"> 328</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="Parser-329"><a href="#Parser-329"><span class="linenos"> 329</span></a> <span class="p">}</span> +</span><span id="Parser-330"><a href="#Parser-330"><span class="linenos"> 330</span></a> +</span><span id="Parser-331"><a href="#Parser-331"><span class="linenos"> 331</span></a> <span class="n">RESERVED_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-332"><a href="#Parser-332"><span class="linenos"> 332</span></a> <span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> +</span><span id="Parser-333"><a href="#Parser-333"><span class="linenos"> 333</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> +</span><span id="Parser-334"><a href="#Parser-334"><span class="linenos"> 334</span></a> <span class="p">}</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">}</span> +</span><span id="Parser-335"><a href="#Parser-335"><span class="linenos"> 335</span></a> +</span><span id="Parser-336"><a href="#Parser-336"><span class="linenos"> 336</span></a> <span class="n">DB_CREATABLES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-337"><a href="#Parser-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> +</span><span id="Parser-338"><a href="#Parser-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> +</span><span id="Parser-339"><a href="#Parser-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> +</span><span id="Parser-340"><a href="#Parser-340"><span class="linenos"> 340</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="Parser-341"><a href="#Parser-341"><span class="linenos"> 341</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> +</span><span id="Parser-342"><a href="#Parser-342"><span class="linenos"> 342</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STORAGE_INTEGRATION</span><span class="p">,</span> +</span><span id="Parser-343"><a href="#Parser-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Parser-344"><a href="#Parser-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TAG</span><span class="p">,</span> +</span><span id="Parser-345"><a href="#Parser-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="Parser-346"><a href="#Parser-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WAREHOUSE</span><span class="p">,</span> +</span><span id="Parser-347"><a href="#Parser-347"><span class="linenos"> 347</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STREAMLIT</span><span class="p">,</span> +</span><span id="Parser-348"><a href="#Parser-348"><span class="linenos"> 348</span></a> <span class="p">}</span> +</span><span id="Parser-349"><a href="#Parser-349"><span class="linenos"> 349</span></a> +</span><span id="Parser-350"><a href="#Parser-350"><span class="linenos"> 350</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-351"><a href="#Parser-351"><span class="linenos"> 351</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="Parser-352"><a href="#Parser-352"><span class="linenos"> 352</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="Parser-353"><a href="#Parser-353"><span class="linenos"> 353</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> +</span><span id="Parser-354"><a href="#Parser-354"><span class="linenos"> 354</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="Parser-355"><a href="#Parser-355"><span class="linenos"> 355</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Parser-356"><a href="#Parser-356"><span class="linenos"> 356</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="Parser-357"><a href="#Parser-357"><span class="linenos"> 357</span></a> <span class="o">*</span><span class="n">DB_CREATABLES</span><span class="p">,</span> +</span><span id="Parser-358"><a href="#Parser-358"><span class="linenos"> 358</span></a> <span class="p">}</span> +</span><span id="Parser-359"><a href="#Parser-359"><span class="linenos"> 359</span></a> +</span><span id="Parser-360"><a href="#Parser-360"><span class="linenos"> 360</span></a> <span class="c1"># Tokens that can represent identifiers</span> +</span><span id="Parser-361"><a href="#Parser-361"><span class="linenos"> 361</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-362"><a href="#Parser-362"><span class="linenos"> 362</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="Parser-363"><a href="#Parser-363"><span class="linenos"> 363</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Parser-364"><a href="#Parser-364"><span class="linenos"> 364</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="Parser-365"><a href="#Parser-365"><span class="linenos"> 365</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> +</span><span id="Parser-366"><a href="#Parser-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="Parser-367"><a href="#Parser-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="Parser-368"><a href="#Parser-368"><span class="linenos"> 368</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="Parser-369"><a href="#Parser-369"><span class="linenos"> 369</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> +</span><span id="Parser-370"><a href="#Parser-370"><span class="linenos"> 370</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="Parser-371"><a href="#Parser-371"><span class="linenos"> 371</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> +</span><span id="Parser-372"><a href="#Parser-372"><span class="linenos"> 372</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="Parser-373"><a href="#Parser-373"><span class="linenos"> 373</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Parser-374"><a href="#Parser-374"><span class="linenos"> 374</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> +</span><span id="Parser-375"><a href="#Parser-375"><span class="linenos"> 375</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="Parser-376"><a href="#Parser-376"><span class="linenos"> 376</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="Parser-377"><a href="#Parser-377"><span class="linenos"> 377</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> +</span><span id="Parser-378"><a href="#Parser-378"><span class="linenos"> 378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="Parser-379"><a href="#Parser-379"><span class="linenos"> 379</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="Parser-380"><a href="#Parser-380"><span class="linenos"> 380</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> +</span><span id="Parser-381"><a href="#Parser-381"><span class="linenos"> 381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="Parser-382"><a href="#Parser-382"><span class="linenos"> 382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DICTIONARY</span><span class="p">,</span> +</span><span id="Parser-383"><a href="#Parser-383"><span class="linenos"> 383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> +</span><span id="Parser-384"><a href="#Parser-384"><span class="linenos"> 384</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="Parser-385"><a href="#Parser-385"><span class="linenos"> 385</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="Parser-386"><a href="#Parser-386"><span class="linenos"> 386</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="Parser-387"><a href="#Parser-387"><span class="linenos"> 387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="Parser-388"><a href="#Parser-388"><span class="linenos"> 388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="Parser-389"><a href="#Parser-389"><span class="linenos"> 389</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="Parser-390"><a href="#Parser-390"><span class="linenos"> 390</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FINAL</span><span class="p">,</span> +</span><span id="Parser-391"><a href="#Parser-391"><span class="linenos"> 391</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="Parser-392"><a href="#Parser-392"><span class="linenos"> 392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Parser-393"><a href="#Parser-393"><span class="linenos"> 393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="Parser-394"><a href="#Parser-394"><span class="linenos"> 394</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> +</span><span id="Parser-395"><a href="#Parser-395"><span class="linenos"> 395</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="Parser-396"><a href="#Parser-396"><span class="linenos"> 396</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="Parser-397"><a href="#Parser-397"><span class="linenos"> 397</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> +</span><span id="Parser-398"><a href="#Parser-398"><span class="linenos"> 398</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> +</span><span id="Parser-399"><a href="#Parser-399"><span class="linenos"> 399</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-400"><a href="#Parser-400"><span class="linenos"> 400</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> +</span><span id="Parser-401"><a href="#Parser-401"><span class="linenos"> 401</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="Parser-402"><a href="#Parser-402"><span class="linenos"> 402</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Parser-403"><a href="#Parser-403"><span class="linenos"> 403</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="Parser-404"><a href="#Parser-404"><span class="linenos"> 404</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Parser-405"><a href="#Parser-405"><span class="linenos"> 405</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPERATOR</span><span class="p">,</span> +</span><span id="Parser-406"><a href="#Parser-406"><span class="linenos"> 406</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="Parser-407"><a href="#Parser-407"><span class="linenos"> 407</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> +</span><span id="Parser-408"><a href="#Parser-408"><span class="linenos"> 408</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> +</span><span id="Parser-409"><a href="#Parser-409"><span class="linenos"> 409</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> +</span><span id="Parser-410"><a href="#Parser-410"><span class="linenos"> 410</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="Parser-411"><a href="#Parser-411"><span class="linenos"> 411</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> +</span><span id="Parser-412"><a href="#Parser-412"><span class="linenos"> 412</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> +</span><span id="Parser-413"><a href="#Parser-413"><span class="linenos"> 413</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="Parser-414"><a href="#Parser-414"><span class="linenos"> 414</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> +</span><span id="Parser-415"><a href="#Parser-415"><span class="linenos"> 415</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="Parser-416"><a href="#Parser-416"><span class="linenos"> 416</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">,</span> +</span><span id="Parser-417"><a href="#Parser-417"><span class="linenos"> 417</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Parser-418"><a href="#Parser-418"><span class="linenos"> 418</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-419"><a href="#Parser-419"><span class="linenos"> 419</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> +</span><span id="Parser-420"><a href="#Parser-420"><span class="linenos"> 420</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="Parser-421"><a href="#Parser-421"><span class="linenos"> 421</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="Parser-422"><a href="#Parser-422"><span class="linenos"> 422</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Parser-423"><a href="#Parser-423"><span class="linenos"> 423</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="Parser-424"><a href="#Parser-424"><span class="linenos"> 424</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> +</span><span id="Parser-425"><a href="#Parser-425"><span class="linenos"> 425</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="Parser-426"><a href="#Parser-426"><span class="linenos"> 426</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Parser-427"><a href="#Parser-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> +</span><span id="Parser-428"><a href="#Parser-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="Parser-429"><a href="#Parser-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> +</span><span id="Parser-430"><a href="#Parser-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="Parser-431"><a href="#Parser-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="Parser-432"><a href="#Parser-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="Parser-433"><a href="#Parser-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> +</span><span id="Parser-434"><a href="#Parser-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> +</span><span id="Parser-435"><a href="#Parser-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="Parser-436"><a href="#Parser-436"><span class="linenos"> 436</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Parser-437"><a href="#Parser-437"><span class="linenos"> 437</span></a> <span class="o">*</span><span class="n">CREATABLES</span><span class="p">,</span> +</span><span id="Parser-438"><a href="#Parser-438"><span class="linenos"> 438</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="Parser-439"><a href="#Parser-439"><span class="linenos"> 439</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-440"><a href="#Parser-440"><span class="linenos"> 440</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> +</span><span id="Parser-441"><a href="#Parser-441"><span class="linenos"> 441</span></a> <span class="p">}</span> +</span><span id="Parser-442"><a href="#Parser-442"><span class="linenos"> 442</span></a> +</span><span id="Parser-443"><a href="#Parser-443"><span class="linenos"> 443</span></a> <span class="n">INTERVAL_VARS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">}</span> +</span><span id="Parser-444"><a href="#Parser-444"><span class="linenos"> 444</span></a> +</span><span id="Parser-445"><a href="#Parser-445"><span class="linenos"> 445</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> +</span><span id="Parser-446"><a href="#Parser-446"><span class="linenos"> 446</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Parser-447"><a href="#Parser-447"><span class="linenos"> 447</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="Parser-448"><a href="#Parser-448"><span class="linenos"> 448</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="Parser-449"><a href="#Parser-449"><span class="linenos"> 449</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Parser-450"><a href="#Parser-450"><span class="linenos"> 450</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-451"><a href="#Parser-451"><span class="linenos"> 451</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> +</span><span id="Parser-452"><a href="#Parser-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Parser-453"><a href="#Parser-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Parser-454"><a href="#Parser-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-455"><a href="#Parser-455"><span class="linenos"> 455</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Parser-456"><a href="#Parser-456"><span class="linenos"> 456</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Parser-457"><a href="#Parser-457"><span class="linenos"> 457</span></a> <span class="p">}</span> +</span><span id="Parser-458"><a href="#Parser-458"><span class="linenos"> 458</span></a> +</span><span id="Parser-459"><a href="#Parser-459"><span class="linenos"> 459</span></a> <span class="n">ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> +</span><span id="Parser-460"><a href="#Parser-460"><span class="linenos"> 460</span></a> +</span><span id="Parser-461"><a href="#Parser-461"><span class="linenos"> 461</span></a> <span class="n">ARRAY_CONSTRUCTORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-462"><a href="#Parser-462"><span class="linenos"> 462</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> +</span><span id="Parser-463"><a href="#Parser-463"><span class="linenos"> 463</span></a> <span class="s2">"LIST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> +</span><span id="Parser-464"><a href="#Parser-464"><span class="linenos"> 464</span></a> <span class="p">}</span> </span><span id="Parser-465"><a href="#Parser-465"><span class="linenos"> 465</span></a> -</span><span id="Parser-466"><a href="#Parser-466"><span class="linenos"> 466</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-467"><a href="#Parser-467"><span class="linenos"> 467</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="Parser-468"><a href="#Parser-468"><span class="linenos"> 468</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Parser-469"><a href="#Parser-469"><span class="linenos"> 469</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="Parser-470"><a href="#Parser-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="Parser-471"><a href="#Parser-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-472"><a href="#Parser-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="Parser-473"><a href="#Parser-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> -</span><span id="Parser-474"><a href="#Parser-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="Parser-475"><a href="#Parser-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="Parser-476"><a href="#Parser-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="Parser-477"><a href="#Parser-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> -</span><span id="Parser-478"><a href="#Parser-478"><span class="linenos"> 478</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="Parser-479"><a href="#Parser-479"><span class="linenos"> 479</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Parser-480"><a href="#Parser-480"><span class="linenos"> 480</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="Parser-481"><a href="#Parser-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="Parser-482"><a href="#Parser-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> -</span><span id="Parser-483"><a href="#Parser-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="Parser-484"><a href="#Parser-484"><span class="linenos"> 484</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="Parser-485"><a href="#Parser-485"><span class="linenos"> 485</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Parser-486"><a href="#Parser-486"><span class="linenos"> 486</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="Parser-487"><a href="#Parser-487"><span class="linenos"> 487</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="Parser-488"><a href="#Parser-488"><span class="linenos"> 488</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Parser-489"><a href="#Parser-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Parser-490"><a href="#Parser-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="Parser-491"><a href="#Parser-491"><span class="linenos"> 491</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="Parser-492"><a href="#Parser-492"><span class="linenos"> 492</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="Parser-493"><a href="#Parser-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-494"><a href="#Parser-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-495"><a href="#Parser-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> -</span><span id="Parser-496"><a href="#Parser-496"><span class="linenos"> 496</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="Parser-497"><a href="#Parser-497"><span class="linenos"> 497</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="Parser-498"><a href="#Parser-498"><span class="linenos"> 498</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Parser-499"><a href="#Parser-499"><span class="linenos"> 499</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-500"><a href="#Parser-500"><span class="linenos"> 500</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Parser-501"><a href="#Parser-501"><span class="linenos"> 501</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> -</span><span id="Parser-502"><a href="#Parser-502"><span class="linenos"> 502</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Parser-503"><a href="#Parser-503"><span class="linenos"> 503</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> -</span><span id="Parser-504"><a href="#Parser-504"><span class="linenos"> 504</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-505"><a href="#Parser-505"><span class="linenos"> 505</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="Parser-506"><a href="#Parser-506"><span class="linenos"> 506</span></a> <span class="p">}</span> -</span><span id="Parser-507"><a href="#Parser-507"><span class="linenos"> 507</span></a> -</span><span id="Parser-508"><a href="#Parser-508"><span class="linenos"> 508</span></a> <span class="n">CONJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-509"><a href="#Parser-509"><span class="linenos"> 509</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> -</span><span id="Parser-510"><a href="#Parser-510"><span class="linenos"> 510</span></a> <span class="p">}</span> -</span><span id="Parser-511"><a href="#Parser-511"><span class="linenos"> 511</span></a> -</span><span id="Parser-512"><a href="#Parser-512"><span class="linenos"> 512</span></a> <span class="n">ASSIGNMENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-513"><a href="#Parser-513"><span class="linenos"> 513</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> -</span><span id="Parser-514"><a href="#Parser-514"><span class="linenos"> 514</span></a> <span class="p">}</span> -</span><span id="Parser-515"><a href="#Parser-515"><span class="linenos"> 515</span></a> -</span><span id="Parser-516"><a href="#Parser-516"><span class="linenos"> 516</span></a> <span class="n">DISJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-517"><a href="#Parser-517"><span class="linenos"> 517</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> -</span><span id="Parser-518"><a href="#Parser-518"><span class="linenos"> 518</span></a> <span class="p">}</span> -</span><span id="Parser-519"><a href="#Parser-519"><span class="linenos"> 519</span></a> -</span><span id="Parser-520"><a href="#Parser-520"><span class="linenos"> 520</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-521"><a href="#Parser-521"><span class="linenos"> 521</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="Parser-522"><a href="#Parser-522"><span class="linenos"> 522</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="Parser-523"><a href="#Parser-523"><span class="linenos"> 523</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> +</span><span id="Parser-466"><a href="#Parser-466"><span class="linenos"> 466</span></a> <span class="n">COMMENT_TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> +</span><span id="Parser-467"><a href="#Parser-467"><span class="linenos"> 467</span></a> +</span><span id="Parser-468"><a href="#Parser-468"><span class="linenos"> 468</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> +</span><span id="Parser-469"><a href="#Parser-469"><span class="linenos"> 469</span></a> +</span><span id="Parser-470"><a href="#Parser-470"><span class="linenos"> 470</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"LEADING"</span><span class="p">,</span> <span class="s2">"TRAILING"</span><span class="p">,</span> <span class="s2">"BOTH"</span><span class="p">}</span> +</span><span id="Parser-471"><a href="#Parser-471"><span class="linenos"> 471</span></a> +</span><span id="Parser-472"><a href="#Parser-472"><span class="linenos"> 472</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-473"><a href="#Parser-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="Parser-474"><a href="#Parser-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Parser-475"><a href="#Parser-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="Parser-476"><a href="#Parser-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="Parser-477"><a href="#Parser-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-478"><a href="#Parser-478"><span class="linenos"> 478</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="Parser-479"><a href="#Parser-479"><span class="linenos"> 479</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> +</span><span id="Parser-480"><a href="#Parser-480"><span class="linenos"> 480</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="Parser-481"><a href="#Parser-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="Parser-482"><a href="#Parser-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="Parser-483"><a href="#Parser-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> +</span><span id="Parser-484"><a href="#Parser-484"><span class="linenos"> 484</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="Parser-485"><a href="#Parser-485"><span class="linenos"> 485</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Parser-486"><a href="#Parser-486"><span class="linenos"> 486</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="Parser-487"><a href="#Parser-487"><span class="linenos"> 487</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="Parser-488"><a href="#Parser-488"><span class="linenos"> 488</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> +</span><span id="Parser-489"><a href="#Parser-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="Parser-490"><a href="#Parser-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="Parser-491"><a href="#Parser-491"><span class="linenos"> 491</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Parser-492"><a href="#Parser-492"><span class="linenos"> 492</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="Parser-493"><a href="#Parser-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="Parser-494"><a href="#Parser-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Parser-495"><a href="#Parser-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Parser-496"><a href="#Parser-496"><span class="linenos"> 496</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="Parser-497"><a href="#Parser-497"><span class="linenos"> 497</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="Parser-498"><a href="#Parser-498"><span class="linenos"> 498</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="Parser-499"><a href="#Parser-499"><span class="linenos"> 499</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-500"><a href="#Parser-500"><span class="linenos"> 500</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-501"><a href="#Parser-501"><span class="linenos"> 501</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> +</span><span id="Parser-502"><a href="#Parser-502"><span class="linenos"> 502</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="Parser-503"><a href="#Parser-503"><span class="linenos"> 503</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="Parser-504"><a href="#Parser-504"><span class="linenos"> 504</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Parser-505"><a href="#Parser-505"><span class="linenos"> 505</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-506"><a href="#Parser-506"><span class="linenos"> 506</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Parser-507"><a href="#Parser-507"><span class="linenos"> 507</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> +</span><span id="Parser-508"><a href="#Parser-508"><span class="linenos"> 508</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Parser-509"><a href="#Parser-509"><span class="linenos"> 509</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> +</span><span id="Parser-510"><a href="#Parser-510"><span class="linenos"> 510</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-511"><a href="#Parser-511"><span class="linenos"> 511</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="Parser-512"><a href="#Parser-512"><span class="linenos"> 512</span></a> <span class="p">}</span> +</span><span id="Parser-513"><a href="#Parser-513"><span class="linenos"> 513</span></a> +</span><span id="Parser-514"><a href="#Parser-514"><span class="linenos"> 514</span></a> <span class="n">CONJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-515"><a href="#Parser-515"><span class="linenos"> 515</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> +</span><span id="Parser-516"><a href="#Parser-516"><span class="linenos"> 516</span></a> <span class="p">}</span> +</span><span id="Parser-517"><a href="#Parser-517"><span class="linenos"> 517</span></a> +</span><span id="Parser-518"><a href="#Parser-518"><span class="linenos"> 518</span></a> <span class="n">ASSIGNMENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-519"><a href="#Parser-519"><span class="linenos"> 519</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> +</span><span id="Parser-520"><a href="#Parser-520"><span class="linenos"> 520</span></a> <span class="p">}</span> +</span><span id="Parser-521"><a href="#Parser-521"><span class="linenos"> 521</span></a> +</span><span id="Parser-522"><a href="#Parser-522"><span class="linenos"> 522</span></a> <span class="n">DISJUNCTION</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-523"><a href="#Parser-523"><span class="linenos"> 523</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> </span><span id="Parser-524"><a href="#Parser-524"><span class="linenos"> 524</span></a> <span class="p">}</span> </span><span id="Parser-525"><a href="#Parser-525"><span class="linenos"> 525</span></a> -</span><span id="Parser-526"><a href="#Parser-526"><span class="linenos"> 526</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-527"><a href="#Parser-527"><span class="linenos"> 527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="Parser-528"><a href="#Parser-528"><span class="linenos"> 528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="Parser-529"><a href="#Parser-529"><span class="linenos"> 529</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="Parser-530"><a href="#Parser-530"><span class="linenos"> 530</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="Parser-531"><a href="#Parser-531"><span class="linenos"> 531</span></a> <span class="p">}</span> -</span><span id="Parser-532"><a href="#Parser-532"><span class="linenos"> 532</span></a> -</span><span id="Parser-533"><a href="#Parser-533"><span class="linenos"> 533</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-534"><a href="#Parser-534"><span class="linenos"> 534</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">,</span> -</span><span id="Parser-535"><a href="#Parser-535"><span class="linenos"> 535</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> -</span><span id="Parser-536"><a href="#Parser-536"><span class="linenos"> 536</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">,</span> +</span><span id="Parser-526"><a href="#Parser-526"><span class="linenos"> 526</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-527"><a href="#Parser-527"><span class="linenos"> 527</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="Parser-528"><a href="#Parser-528"><span class="linenos"> 528</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="Parser-529"><a href="#Parser-529"><span class="linenos"> 529</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> +</span><span id="Parser-530"><a href="#Parser-530"><span class="linenos"> 530</span></a> <span class="p">}</span> +</span><span id="Parser-531"><a href="#Parser-531"><span class="linenos"> 531</span></a> +</span><span id="Parser-532"><a href="#Parser-532"><span class="linenos"> 532</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-533"><a href="#Parser-533"><span class="linenos"> 533</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="Parser-534"><a href="#Parser-534"><span class="linenos"> 534</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="Parser-535"><a href="#Parser-535"><span class="linenos"> 535</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="Parser-536"><a href="#Parser-536"><span class="linenos"> 536</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> </span><span id="Parser-537"><a href="#Parser-537"><span class="linenos"> 537</span></a> <span class="p">}</span> </span><span id="Parser-538"><a href="#Parser-538"><span class="linenos"> 538</span></a> -</span><span id="Parser-539"><a href="#Parser-539"><span class="linenos"> 539</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-540"><a href="#Parser-540"><span class="linenos"> 540</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> -</span><span id="Parser-541"><a href="#Parser-541"><span class="linenos"> 541</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> -</span><span id="Parser-542"><a href="#Parser-542"><span class="linenos"> 542</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> -</span><span id="Parser-543"><a href="#Parser-543"><span class="linenos"> 543</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> -</span><span id="Parser-544"><a href="#Parser-544"><span class="linenos"> 544</span></a> <span class="p">}</span> -</span><span id="Parser-545"><a href="#Parser-545"><span class="linenos"> 545</span></a> -</span><span id="Parser-546"><a href="#Parser-546"><span class="linenos"> 546</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-547"><a href="#Parser-547"><span class="linenos"> 547</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> -</span><span id="Parser-548"><a href="#Parser-548"><span class="linenos"> 548</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> -</span><span id="Parser-549"><a href="#Parser-549"><span class="linenos"> 549</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> -</span><span id="Parser-550"><a href="#Parser-550"><span class="linenos"> 550</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> -</span><span id="Parser-551"><a href="#Parser-551"><span class="linenos"> 551</span></a> <span class="p">}</span> -</span><span id="Parser-552"><a href="#Parser-552"><span class="linenos"> 552</span></a> -</span><span id="Parser-553"><a href="#Parser-553"><span class="linenos"> 553</span></a> <span class="n">EXPONENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-554"><a href="#Parser-554"><span class="linenos"> 554</span></a> -</span><span id="Parser-555"><a href="#Parser-555"><span class="linenos"> 555</span></a> <span class="n">TIMES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-556"><a href="#Parser-556"><span class="linenos"> 556</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="Parser-557"><a href="#Parser-557"><span class="linenos"> 557</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="Parser-558"><a href="#Parser-558"><span class="linenos"> 558</span></a> <span class="p">}</span> -</span><span id="Parser-559"><a href="#Parser-559"><span class="linenos"> 559</span></a> -</span><span id="Parser-560"><a href="#Parser-560"><span class="linenos"> 560</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-561"><a href="#Parser-561"><span class="linenos"> 561</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-562"><a href="#Parser-562"><span class="linenos"> 562</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Parser-563"><a href="#Parser-563"><span class="linenos"> 563</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Parser-564"><a href="#Parser-564"><span class="linenos"> 564</span></a> <span class="o">*</span><span class="n">TIMES</span><span class="p">,</span> -</span><span id="Parser-565"><a href="#Parser-565"><span class="linenos"> 565</span></a> <span class="p">}</span> -</span><span id="Parser-566"><a href="#Parser-566"><span class="linenos"> 566</span></a> -</span><span id="Parser-567"><a href="#Parser-567"><span class="linenos"> 567</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-568"><a href="#Parser-568"><span class="linenos"> 568</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="Parser-569"><a href="#Parser-569"><span class="linenos"> 569</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="Parser-570"><a href="#Parser-570"><span class="linenos"> 570</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Parser-539"><a href="#Parser-539"><span class="linenos"> 539</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-540"><a href="#Parser-540"><span class="linenos"> 540</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseAnd</span><span class="p">,</span> +</span><span id="Parser-541"><a href="#Parser-541"><span class="linenos"> 541</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span> +</span><span id="Parser-542"><a href="#Parser-542"><span class="linenos"> 542</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseOr</span><span class="p">,</span> +</span><span id="Parser-543"><a href="#Parser-543"><span class="linenos"> 543</span></a> <span class="p">}</span> +</span><span id="Parser-544"><a href="#Parser-544"><span class="linenos"> 544</span></a> +</span><span id="Parser-545"><a href="#Parser-545"><span class="linenos"> 545</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-546"><a href="#Parser-546"><span class="linenos"> 546</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> +</span><span id="Parser-547"><a href="#Parser-547"><span class="linenos"> 547</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> +</span><span id="Parser-548"><a href="#Parser-548"><span class="linenos"> 548</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> +</span><span id="Parser-549"><a href="#Parser-549"><span class="linenos"> 549</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> +</span><span id="Parser-550"><a href="#Parser-550"><span class="linenos"> 550</span></a> <span class="p">}</span> +</span><span id="Parser-551"><a href="#Parser-551"><span class="linenos"> 551</span></a> +</span><span id="Parser-552"><a href="#Parser-552"><span class="linenos"> 552</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-553"><a href="#Parser-553"><span class="linenos"> 553</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> +</span><span id="Parser-554"><a href="#Parser-554"><span class="linenos"> 554</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> +</span><span id="Parser-555"><a href="#Parser-555"><span class="linenos"> 555</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> +</span><span id="Parser-556"><a href="#Parser-556"><span class="linenos"> 556</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> +</span><span id="Parser-557"><a href="#Parser-557"><span class="linenos"> 557</span></a> <span class="p">}</span> +</span><span id="Parser-558"><a href="#Parser-558"><span class="linenos"> 558</span></a> +</span><span id="Parser-559"><a href="#Parser-559"><span class="linenos"> 559</span></a> <span class="n">EXPONENT</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">TokenType</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-560"><a href="#Parser-560"><span class="linenos"> 560</span></a> +</span><span id="Parser-561"><a href="#Parser-561"><span class="linenos"> 561</span></a> <span class="n">TIMES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-562"><a href="#Parser-562"><span class="linenos"> 562</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="Parser-563"><a href="#Parser-563"><span class="linenos"> 563</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="Parser-564"><a href="#Parser-564"><span class="linenos"> 564</span></a> <span class="p">}</span> +</span><span id="Parser-565"><a href="#Parser-565"><span class="linenos"> 565</span></a> +</span><span id="Parser-566"><a href="#Parser-566"><span class="linenos"> 566</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-567"><a href="#Parser-567"><span class="linenos"> 567</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-568"><a href="#Parser-568"><span class="linenos"> 568</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Parser-569"><a href="#Parser-569"><span class="linenos"> 569</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Parser-570"><a href="#Parser-570"><span class="linenos"> 570</span></a> <span class="o">*</span><span class="n">TIMES</span><span class="p">,</span> </span><span id="Parser-571"><a href="#Parser-571"><span class="linenos"> 571</span></a> <span class="p">}</span> </span><span id="Parser-572"><a href="#Parser-572"><span class="linenos"> 572</span></a> -</span><span id="Parser-573"><a href="#Parser-573"><span class="linenos"> 573</span></a> <span class="n">JOIN_METHODS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-574"><a href="#Parser-574"><span class="linenos"> 574</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="Parser-575"><a href="#Parser-575"><span class="linenos"> 575</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Parser-576"><a href="#Parser-576"><span class="linenos"> 576</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">POSITIONAL</span><span class="p">,</span> +</span><span id="Parser-573"><a href="#Parser-573"><span class="linenos"> 573</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-574"><a href="#Parser-574"><span class="linenos"> 574</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="Parser-575"><a href="#Parser-575"><span class="linenos"> 575</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="Parser-576"><a href="#Parser-576"><span class="linenos"> 576</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> </span><span id="Parser-577"><a href="#Parser-577"><span class="linenos"> 577</span></a> <span class="p">}</span> </span><span id="Parser-578"><a href="#Parser-578"><span class="linenos"> 578</span></a> -</span><span id="Parser-579"><a href="#Parser-579"><span class="linenos"> 579</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-580"><a href="#Parser-580"><span class="linenos"> 580</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-581"><a href="#Parser-581"><span class="linenos"> 581</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-582"><a href="#Parser-582"><span class="linenos"> 582</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Parser-579"><a href="#Parser-579"><span class="linenos"> 579</span></a> <span class="n">JOIN_METHODS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-580"><a href="#Parser-580"><span class="linenos"> 580</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="Parser-581"><a href="#Parser-581"><span class="linenos"> 581</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Parser-582"><a href="#Parser-582"><span class="linenos"> 582</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">POSITIONAL</span><span class="p">,</span> </span><span id="Parser-583"><a href="#Parser-583"><span class="linenos"> 583</span></a> <span class="p">}</span> </span><span id="Parser-584"><a href="#Parser-584"><span class="linenos"> 584</span></a> -</span><span id="Parser-585"><a href="#Parser-585"><span class="linenos"> 585</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-586"><a href="#Parser-586"><span class="linenos"> 586</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="Parser-587"><a href="#Parser-587"><span class="linenos"> 587</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="Parser-588"><a href="#Parser-588"><span class="linenos"> 588</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="Parser-589"><a href="#Parser-589"><span class="linenos"> 589</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Parser-590"><a href="#Parser-590"><span class="linenos"> 590</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Parser-591"><a href="#Parser-591"><span class="linenos"> 591</span></a> <span class="p">}</span> -</span><span id="Parser-592"><a href="#Parser-592"><span class="linenos"> 592</span></a> -</span><span id="Parser-593"><a href="#Parser-593"><span class="linenos"> 593</span></a> <span class="n">JOIN_HINTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Parser-594"><a href="#Parser-594"><span class="linenos"> 594</span></a> -</span><span id="Parser-595"><a href="#Parser-595"><span class="linenos"> 595</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-596"><a href="#Parser-596"><span class="linenos"> 596</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-597"><a href="#Parser-597"><span class="linenos"> 597</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">,</span> -</span><span id="Parser-598"><a href="#Parser-598"><span class="linenos"> 598</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">(</span> -</span><span id="Parser-599"><a href="#Parser-599"><span class="linenos"> 599</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-600"><a href="#Parser-600"><span class="linenos"> 600</span></a> <span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-601"><a href="#Parser-601"><span class="linenos"> 601</span></a> <span class="p">),</span> -</span><span id="Parser-602"><a href="#Parser-602"><span class="linenos"> 602</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-603"><a href="#Parser-603"><span class="linenos"> 603</span></a> <span class="p">),</span> -</span><span id="Parser-604"><a href="#Parser-604"><span class="linenos"> 604</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-605"><a href="#Parser-605"><span class="linenos"> 605</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> -</span><span id="Parser-606"><a href="#Parser-606"><span class="linenos"> 606</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> -</span><span id="Parser-607"><a href="#Parser-607"><span class="linenos"> 607</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-608"><a href="#Parser-608"><span class="linenos"> 608</span></a> <span class="p">),</span> -</span><span id="Parser-609"><a href="#Parser-609"><span class="linenos"> 609</span></a> <span class="p">}</span> -</span><span id="Parser-610"><a href="#Parser-610"><span class="linenos"> 610</span></a> -</span><span id="Parser-611"><a href="#Parser-611"><span class="linenos"> 611</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-612"><a href="#Parser-612"><span class="linenos"> 612</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-613"><a href="#Parser-613"><span class="linenos"> 613</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-614"><a href="#Parser-614"><span class="linenos"> 614</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> -</span><span id="Parser-615"><a href="#Parser-615"><span class="linenos"> 615</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-616"><a href="#Parser-616"><span class="linenos"> 616</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> -</span><span id="Parser-617"><a href="#Parser-617"><span class="linenos"> 617</span></a> <span class="p">),</span> -</span><span id="Parser-618"><a href="#Parser-618"><span class="linenos"> 618</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-619"><a href="#Parser-619"><span class="linenos"> 619</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> -</span><span id="Parser-620"><a href="#Parser-620"><span class="linenos"> 620</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-621"><a href="#Parser-621"><span class="linenos"> 621</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> -</span><span id="Parser-622"><a href="#Parser-622"><span class="linenos"> 622</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span><span class="p">,</span> +</span><span id="Parser-585"><a href="#Parser-585"><span class="linenos"> 585</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-586"><a href="#Parser-586"><span class="linenos"> 586</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-587"><a href="#Parser-587"><span class="linenos"> 587</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-588"><a href="#Parser-588"><span class="linenos"> 588</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Parser-589"><a href="#Parser-589"><span class="linenos"> 589</span></a> <span class="p">}</span> +</span><span id="Parser-590"><a href="#Parser-590"><span class="linenos"> 590</span></a> +</span><span id="Parser-591"><a href="#Parser-591"><span class="linenos"> 591</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-592"><a href="#Parser-592"><span class="linenos"> 592</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="Parser-593"><a href="#Parser-593"><span class="linenos"> 593</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="Parser-594"><a href="#Parser-594"><span class="linenos"> 594</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="Parser-595"><a href="#Parser-595"><span class="linenos"> 595</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Parser-596"><a href="#Parser-596"><span class="linenos"> 596</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Parser-597"><a href="#Parser-597"><span class="linenos"> 597</span></a> <span class="p">}</span> +</span><span id="Parser-598"><a href="#Parser-598"><span class="linenos"> 598</span></a> +</span><span id="Parser-599"><a href="#Parser-599"><span class="linenos"> 599</span></a> <span class="n">JOIN_HINTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Parser-600"><a href="#Parser-600"><span class="linenos"> 600</span></a> +</span><span id="Parser-601"><a href="#Parser-601"><span class="linenos"> 601</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-602"><a href="#Parser-602"><span class="linenos"> 602</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-603"><a href="#Parser-603"><span class="linenos"> 603</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">,</span> +</span><span id="Parser-604"><a href="#Parser-604"><span class="linenos"> 604</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">(</span> +</span><span id="Parser-605"><a href="#Parser-605"><span class="linenos"> 605</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-606"><a href="#Parser-606"><span class="linenos"> 606</span></a> <span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-607"><a href="#Parser-607"><span class="linenos"> 607</span></a> <span class="p">),</span> +</span><span id="Parser-608"><a href="#Parser-608"><span class="linenos"> 608</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-609"><a href="#Parser-609"><span class="linenos"> 609</span></a> <span class="p">),</span> +</span><span id="Parser-610"><a href="#Parser-610"><span class="linenos"> 610</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-611"><a href="#Parser-611"><span class="linenos"> 611</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> +</span><span id="Parser-612"><a href="#Parser-612"><span class="linenos"> 612</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> +</span><span id="Parser-613"><a href="#Parser-613"><span class="linenos"> 613</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-614"><a href="#Parser-614"><span class="linenos"> 614</span></a> <span class="p">),</span> +</span><span id="Parser-615"><a href="#Parser-615"><span class="linenos"> 615</span></a> <span class="p">}</span> +</span><span id="Parser-616"><a href="#Parser-616"><span class="linenos"> 616</span></a> +</span><span id="Parser-617"><a href="#Parser-617"><span class="linenos"> 617</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-618"><a href="#Parser-618"><span class="linenos"> 618</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-619"><a href="#Parser-619"><span class="linenos"> 619</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-620"><a href="#Parser-620"><span class="linenos"> 620</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> +</span><span id="Parser-621"><a href="#Parser-621"><span class="linenos"> 621</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-622"><a href="#Parser-622"><span class="linenos"> 622</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> </span><span id="Parser-623"><a href="#Parser-623"><span class="linenos"> 623</span></a> <span class="p">),</span> -</span><span id="Parser-624"><a href="#Parser-624"><span class="linenos"> 624</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-625"><a href="#Parser-625"><span class="linenos"> 625</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> +</span><span id="Parser-624"><a href="#Parser-624"><span class="linenos"> 624</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-625"><a href="#Parser-625"><span class="linenos"> 625</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> </span><span id="Parser-626"><a href="#Parser-626"><span class="linenos"> 626</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> </span><span id="Parser-627"><a href="#Parser-627"><span class="linenos"> 627</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> </span><span id="Parser-628"><a href="#Parser-628"><span class="linenos"> 628</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span><span class="p">,</span> </span><span id="Parser-629"><a href="#Parser-629"><span class="linenos"> 629</span></a> <span class="p">),</span> -</span><span id="Parser-630"><a href="#Parser-630"><span class="linenos"> 630</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-631"><a href="#Parser-631"><span class="linenos"> 631</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> +</span><span id="Parser-630"><a href="#Parser-630"><span class="linenos"> 630</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-631"><a href="#Parser-631"><span class="linenos"> 631</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> </span><span id="Parser-632"><a href="#Parser-632"><span class="linenos"> 632</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-633"><a href="#Parser-633"><span class="linenos"> 633</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-634"><a href="#Parser-634"><span class="linenos"> 634</span></a> <span class="p">),</span> -</span><span id="Parser-635"><a href="#Parser-635"><span class="linenos"> 635</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-636"><a href="#Parser-636"><span class="linenos"> 636</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> -</span><span id="Parser-637"><a href="#Parser-637"><span class="linenos"> 637</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-638"><a href="#Parser-638"><span class="linenos"> 638</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-639"><a href="#Parser-639"><span class="linenos"> 639</span></a> <span class="p">),</span> -</span><span id="Parser-640"><a href="#Parser-640"><span class="linenos"> 640</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-641"><a href="#Parser-641"><span class="linenos"> 641</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> -</span><span id="Parser-642"><a href="#Parser-642"><span class="linenos"> 642</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-643"><a href="#Parser-643"><span class="linenos"> 643</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> -</span><span id="Parser-644"><a href="#Parser-644"><span class="linenos"> 644</span></a> <span class="p">),</span> -</span><span id="Parser-645"><a href="#Parser-645"><span class="linenos"> 645</span></a> <span class="p">}</span> -</span><span id="Parser-646"><a href="#Parser-646"><span class="linenos"> 646</span></a> -</span><span id="Parser-647"><a href="#Parser-647"><span class="linenos"> 647</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-648"><a href="#Parser-648"><span class="linenos"> 648</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> -</span><span id="Parser-649"><a href="#Parser-649"><span class="linenos"> 649</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> -</span><span id="Parser-650"><a href="#Parser-650"><span class="linenos"> 650</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-651"><a href="#Parser-651"><span class="linenos"> 651</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-652"><a href="#Parser-652"><span class="linenos"> 652</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> -</span><span id="Parser-653"><a href="#Parser-653"><span class="linenos"> 653</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-654"><a href="#Parser-654"><span class="linenos"> 654</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> -</span><span id="Parser-655"><a href="#Parser-655"><span class="linenos"> 655</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> -</span><span id="Parser-656"><a href="#Parser-656"><span class="linenos"> 656</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="Parser-657"><a href="#Parser-657"><span class="linenos"> 657</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(),</span> -</span><span id="Parser-658"><a href="#Parser-658"><span class="linenos"> 658</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(),</span> -</span><span id="Parser-659"><a href="#Parser-659"><span class="linenos"> 659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> -</span><span id="Parser-660"><a href="#Parser-660"><span class="linenos"> 660</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="Parser-661"><a href="#Parser-661"><span class="linenos"> 661</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> -</span><span id="Parser-662"><a href="#Parser-662"><span class="linenos"> 662</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="Parser-663"><a href="#Parser-663"><span class="linenos"> 663</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(),</span> -</span><span id="Parser-664"><a href="#Parser-664"><span class="linenos"> 664</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(),</span> -</span><span id="Parser-665"><a href="#Parser-665"><span class="linenos"> 665</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> -</span><span id="Parser-666"><a href="#Parser-666"><span class="linenos"> 666</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="Parser-667"><a href="#Parser-667"><span class="linenos"> 667</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">),</span> -</span><span id="Parser-668"><a href="#Parser-668"><span class="linenos"> 668</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(),</span> -</span><span id="Parser-669"><a href="#Parser-669"><span class="linenos"> 669</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="Parser-670"><a href="#Parser-670"><span class="linenos"> 670</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="Parser-671"><a href="#Parser-671"><span class="linenos"> 671</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-672"><a href="#Parser-672"><span class="linenos"> 672</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> -</span><span id="Parser-673"><a href="#Parser-673"><span class="linenos"> 673</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">(),</span> -</span><span id="Parser-674"><a href="#Parser-674"><span class="linenos"> 674</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">(),</span> -</span><span id="Parser-675"><a href="#Parser-675"><span class="linenos"> 675</span></a> <span class="p">}</span> -</span><span id="Parser-676"><a href="#Parser-676"><span class="linenos"> 676</span></a> -</span><span id="Parser-677"><a href="#Parser-677"><span class="linenos"> 677</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-678"><a href="#Parser-678"><span class="linenos"> 678</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> -</span><span id="Parser-679"><a href="#Parser-679"><span class="linenos"> 679</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> -</span><span id="Parser-680"><a href="#Parser-680"><span class="linenos"> 680</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> -</span><span id="Parser-681"><a href="#Parser-681"><span class="linenos"> 681</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comment</span><span class="p">(),</span> -</span><span id="Parser-682"><a href="#Parser-682"><span class="linenos"> 682</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Parser-683"><a href="#Parser-683"><span class="linenos"> 683</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy</span><span class="p">(),</span> -</span><span id="Parser-684"><a href="#Parser-684"><span class="linenos"> 684</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> -</span><span id="Parser-685"><a href="#Parser-685"><span class="linenos"> 685</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> -</span><span id="Parser-686"><a href="#Parser-686"><span class="linenos"> 686</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="Parser-687"><a href="#Parser-687"><span class="linenos"> 687</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="Parser-688"><a href="#Parser-688"><span class="linenos"> 688</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> -</span><span id="Parser-689"><a href="#Parser-689"><span class="linenos"> 689</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> -</span><span id="Parser-690"><a href="#Parser-690"><span class="linenos"> 690</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_kill</span><span class="p">(),</span> -</span><span id="Parser-691"><a href="#Parser-691"><span class="linenos"> 691</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load</span><span class="p">(),</span> -</span><span id="Parser-692"><a href="#Parser-692"><span class="linenos"> 692</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> -</span><span id="Parser-693"><a href="#Parser-693"><span class="linenos"> 693</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">(),</span> -</span><span id="Parser-694"><a href="#Parser-694"><span class="linenos"> 694</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pragma</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span> -</span><span id="Parser-695"><a href="#Parser-695"><span class="linenos"> 695</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_refresh</span><span class="p">(),</span> -</span><span id="Parser-696"><a href="#Parser-696"><span class="linenos"> 696</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Parser-697"><a href="#Parser-697"><span class="linenos"> 697</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">(),</span> -</span><span id="Parser-698"><a href="#Parser-698"><span class="linenos"> 698</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_truncate_table</span><span class="p">(),</span> -</span><span id="Parser-699"><a href="#Parser-699"><span class="linenos"> 699</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> -</span><span id="Parser-700"><a href="#Parser-700"><span class="linenos"> 700</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> -</span><span id="Parser-701"><a href="#Parser-701"><span class="linenos"> 701</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-702"><a href="#Parser-702"><span class="linenos"> 702</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Use</span><span class="p">,</span> -</span><span id="Parser-703"><a href="#Parser-703"><span class="linenos"> 703</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">USABLES</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-704"><a href="#Parser-704"><span class="linenos"> 704</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-705"><a href="#Parser-705"><span class="linenos"> 705</span></a> <span class="p">),</span> -</span><span id="Parser-706"><a href="#Parser-706"><span class="linenos"> 706</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">),</span> -</span><span id="Parser-707"><a href="#Parser-707"><span class="linenos"> 707</span></a> <span class="p">}</span> -</span><span id="Parser-708"><a href="#Parser-708"><span class="linenos"> 708</span></a> -</span><span id="Parser-709"><a href="#Parser-709"><span class="linenos"> 709</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-710"><a href="#Parser-710"><span class="linenos"> 710</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> -</span><span id="Parser-711"><a href="#Parser-711"><span class="linenos"> 711</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> -</span><span id="Parser-712"><a href="#Parser-712"><span class="linenos"> 712</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="Parser-713"><a href="#Parser-713"><span class="linenos"> 713</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="Parser-714"><a href="#Parser-714"><span class="linenos"> 714</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sqrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="Parser-715"><a href="#Parser-715"><span class="linenos"> 715</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cbrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="Parser-716"><a href="#Parser-716"><span class="linenos"> 716</span></a> <span class="p">}</span> -</span><span id="Parser-717"><a href="#Parser-717"><span class="linenos"> 717</span></a> -</span><span id="Parser-718"><a href="#Parser-718"><span class="linenos"> 718</span></a> <span class="n">STRING_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-719"><a href="#Parser-719"><span class="linenos"> 719</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-720"><a href="#Parser-720"><span class="linenos"> 720</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-721"><a href="#Parser-721"><span class="linenos"> 721</span></a> <span class="p">),</span> -</span><span id="Parser-722"><a href="#Parser-722"><span class="linenos"> 722</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-723"><a href="#Parser-723"><span class="linenos"> 723</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-724"><a href="#Parser-724"><span class="linenos"> 724</span></a> <span class="p">),</span> -</span><span id="Parser-725"><a href="#Parser-725"><span class="linenos"> 725</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-726"><a href="#Parser-726"><span class="linenos"> 726</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-727"><a href="#Parser-727"><span class="linenos"> 727</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> -</span><span id="Parser-728"><a href="#Parser-728"><span class="linenos"> 728</span></a> <span class="p">),</span> -</span><span id="Parser-729"><a href="#Parser-729"><span class="linenos"> 729</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-730"><a href="#Parser-730"><span class="linenos"> 730</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnicodeString</span><span class="p">,</span> -</span><span id="Parser-731"><a href="#Parser-731"><span class="linenos"> 731</span></a> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="Parser-732"><a href="#Parser-732"><span class="linenos"> 732</span></a> <span class="n">escape</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UESCAPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="Parser-733"><a href="#Parser-733"><span class="linenos"> 733</span></a> <span class="p">),</span> -</span><span id="Parser-734"><a href="#Parser-734"><span class="linenos"> 734</span></a> <span class="p">}</span> -</span><span id="Parser-735"><a href="#Parser-735"><span class="linenos"> 735</span></a> -</span><span id="Parser-736"><a href="#Parser-736"><span class="linenos"> 736</span></a> <span class="n">NUMERIC_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-737"><a href="#Parser-737"><span class="linenos"> 737</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-738"><a href="#Parser-738"><span class="linenos"> 738</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-739"><a href="#Parser-739"><span class="linenos"> 739</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-740"><a href="#Parser-740"><span class="linenos"> 740</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-741"><a href="#Parser-741"><span class="linenos"> 741</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> -</span><span id="Parser-742"><a href="#Parser-742"><span class="linenos"> 742</span></a> <span class="p">),</span> -</span><span id="Parser-743"><a href="#Parser-743"><span class="linenos"> 743</span></a> <span class="p">}</span> -</span><span id="Parser-744"><a href="#Parser-744"><span class="linenos"> 744</span></a> -</span><span id="Parser-745"><a href="#Parser-745"><span class="linenos"> 745</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-746"><a href="#Parser-746"><span class="linenos"> 746</span></a> <span class="o">**</span><span class="n">STRING_PARSERS</span><span class="p">,</span> -</span><span id="Parser-747"><a href="#Parser-747"><span class="linenos"> 747</span></a> <span class="o">**</span><span class="n">NUMERIC_PARSERS</span><span class="p">,</span> -</span><span id="Parser-748"><a href="#Parser-748"><span class="linenos"> 748</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> -</span><span id="Parser-749"><a href="#Parser-749"><span class="linenos"> 749</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> -</span><span id="Parser-750"><a href="#Parser-750"><span class="linenos"> 750</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-751"><a href="#Parser-751"><span class="linenos"> 751</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-752"><a href="#Parser-752"><span class="linenos"> 752</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> -</span><span id="Parser-753"><a href="#Parser-753"><span class="linenos"> 753</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-754"><a href="#Parser-754"><span class="linenos"> 754</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> -</span><span id="Parser-755"><a href="#Parser-755"><span class="linenos"> 755</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="Parser-756"><a href="#Parser-756"><span class="linenos"> 756</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"EXCEPT"</span><span class="p">,</span> <span class="s2">"EXCLUDE"</span><span class="p">),</span> -</span><span id="Parser-757"><a href="#Parser-757"><span class="linenos"> 757</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"REPLACE"</span><span class="p">),</span> -</span><span id="Parser-758"><a href="#Parser-758"><span class="linenos"> 758</span></a> <span class="s2">"rename"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">),</span> -</span><span id="Parser-759"><a href="#Parser-759"><span class="linenos"> 759</span></a> <span class="p">},</span> -</span><span id="Parser-760"><a href="#Parser-760"><span class="linenos"> 760</span></a> <span class="p">),</span> -</span><span id="Parser-761"><a href="#Parser-761"><span class="linenos"> 761</span></a> <span class="p">}</span> -</span><span id="Parser-762"><a href="#Parser-762"><span class="linenos"> 762</span></a> -</span><span id="Parser-763"><a href="#Parser-763"><span class="linenos"> 763</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-764"><a href="#Parser-764"><span class="linenos"> 764</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> -</span><span id="Parser-765"><a href="#Parser-765"><span class="linenos"> 765</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> -</span><span id="Parser-766"><a href="#Parser-766"><span class="linenos"> 766</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-767"><a href="#Parser-767"><span class="linenos"> 767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-768"><a href="#Parser-768"><span class="linenos"> 768</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> -</span><span id="Parser-769"><a href="#Parser-769"><span class="linenos"> 769</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-770"><a href="#Parser-770"><span class="linenos"> 770</span></a> <span class="p">),</span> -</span><span id="Parser-771"><a href="#Parser-771"><span class="linenos"> 771</span></a> <span class="p">}</span> -</span><span id="Parser-772"><a href="#Parser-772"><span class="linenos"> 772</span></a> -</span><span id="Parser-773"><a href="#Parser-773"><span class="linenos"> 773</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-774"><a href="#Parser-774"><span class="linenos"> 774</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-775"><a href="#Parser-775"><span class="linenos"> 775</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">),</span> -</span><span id="Parser-776"><a href="#Parser-776"><span class="linenos"> 776</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">),</span> -</span><span id="Parser-777"><a href="#Parser-777"><span class="linenos"> 777</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-778"><a href="#Parser-778"><span class="linenos"> 778</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">),</span> -</span><span id="Parser-779"><a href="#Parser-779"><span class="linenos"> 779</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-780"><a href="#Parser-780"><span class="linenos"> 780</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">),</span> -</span><span id="Parser-781"><a href="#Parser-781"><span class="linenos"> 781</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Overlaps</span><span class="p">),</span> -</span><span id="Parser-782"><a href="#Parser-782"><span class="linenos"> 782</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">),</span> -</span><span id="Parser-783"><a href="#Parser-783"><span class="linenos"> 783</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">),</span> -</span><span id="Parser-784"><a href="#Parser-784"><span class="linenos"> 784</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comprehension</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-785"><a href="#Parser-785"><span class="linenos"> 785</span></a> <span class="p">}</span> -</span><span id="Parser-786"><a href="#Parser-786"><span class="linenos"> 786</span></a> -</span><span id="Parser-787"><a href="#Parser-787"><span class="linenos"> 787</span></a> <span class="n">PROPERTY_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-788"><a href="#Parser-788"><span class="linenos"> 788</span></a> <span class="s2">"ALLOWED_VALUES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-789"><a href="#Parser-789"><span class="linenos"> 789</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AllowedValuesProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> -</span><span id="Parser-790"><a href="#Parser-790"><span class="linenos"> 790</span></a> <span class="p">),</span> -</span><span id="Parser-791"><a href="#Parser-791"><span class="linenos"> 791</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> -</span><span id="Parser-792"><a href="#Parser-792"><span class="linenos"> 792</span></a> <span class="s2">"AUTO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_property</span><span class="p">(),</span> -</span><span id="Parser-793"><a href="#Parser-793"><span class="linenos"> 793</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> -</span><span id="Parser-794"><a href="#Parser-794"><span class="linenos"> 794</span></a> <span class="s2">"BACKUP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-795"><a href="#Parser-795"><span class="linenos"> 795</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BackupProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-633"><a href="#Parser-633"><span class="linenos"> 633</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> +</span><span id="Parser-634"><a href="#Parser-634"><span class="linenos"> 634</span></a> <span class="n">only_json_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span><span class="p">,</span> +</span><span id="Parser-635"><a href="#Parser-635"><span class="linenos"> 635</span></a> <span class="p">),</span> +</span><span id="Parser-636"><a href="#Parser-636"><span class="linenos"> 636</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-637"><a href="#Parser-637"><span class="linenos"> 637</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> +</span><span id="Parser-638"><a href="#Parser-638"><span class="linenos"> 638</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-639"><a href="#Parser-639"><span class="linenos"> 639</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-640"><a href="#Parser-640"><span class="linenos"> 640</span></a> <span class="p">),</span> +</span><span id="Parser-641"><a href="#Parser-641"><span class="linenos"> 641</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-642"><a href="#Parser-642"><span class="linenos"> 642</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> +</span><span id="Parser-643"><a href="#Parser-643"><span class="linenos"> 643</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-644"><a href="#Parser-644"><span class="linenos"> 644</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-645"><a href="#Parser-645"><span class="linenos"> 645</span></a> <span class="p">),</span> +</span><span id="Parser-646"><a href="#Parser-646"><span class="linenos"> 646</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-647"><a href="#Parser-647"><span class="linenos"> 647</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> +</span><span id="Parser-648"><a href="#Parser-648"><span class="linenos"> 648</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-649"><a href="#Parser-649"><span class="linenos"> 649</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> +</span><span id="Parser-650"><a href="#Parser-650"><span class="linenos"> 650</span></a> <span class="p">),</span> +</span><span id="Parser-651"><a href="#Parser-651"><span class="linenos"> 651</span></a> <span class="p">}</span> +</span><span id="Parser-652"><a href="#Parser-652"><span class="linenos"> 652</span></a> +</span><span id="Parser-653"><a href="#Parser-653"><span class="linenos"> 653</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-654"><a href="#Parser-654"><span class="linenos"> 654</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> +</span><span id="Parser-655"><a href="#Parser-655"><span class="linenos"> 655</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> +</span><span id="Parser-656"><a href="#Parser-656"><span class="linenos"> 656</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-657"><a href="#Parser-657"><span class="linenos"> 657</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-658"><a href="#Parser-658"><span class="linenos"> 658</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> +</span><span id="Parser-659"><a href="#Parser-659"><span class="linenos"> 659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-660"><a href="#Parser-660"><span class="linenos"> 660</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> +</span><span id="Parser-661"><a href="#Parser-661"><span class="linenos"> 661</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> +</span><span id="Parser-662"><a href="#Parser-662"><span class="linenos"> 662</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="Parser-663"><a href="#Parser-663"><span class="linenos"> 663</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(),</span> +</span><span id="Parser-664"><a href="#Parser-664"><span class="linenos"> 664</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(),</span> +</span><span id="Parser-665"><a href="#Parser-665"><span class="linenos"> 665</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> +</span><span id="Parser-666"><a href="#Parser-666"><span class="linenos"> 666</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="Parser-667"><a href="#Parser-667"><span class="linenos"> 667</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> +</span><span id="Parser-668"><a href="#Parser-668"><span class="linenos"> 668</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="Parser-669"><a href="#Parser-669"><span class="linenos"> 669</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(),</span> +</span><span id="Parser-670"><a href="#Parser-670"><span class="linenos"> 670</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(),</span> +</span><span id="Parser-671"><a href="#Parser-671"><span class="linenos"> 671</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> +</span><span id="Parser-672"><a href="#Parser-672"><span class="linenos"> 672</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="Parser-673"><a href="#Parser-673"><span class="linenos"> 673</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">),</span> +</span><span id="Parser-674"><a href="#Parser-674"><span class="linenos"> 674</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(),</span> +</span><span id="Parser-675"><a href="#Parser-675"><span class="linenos"> 675</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="Parser-676"><a href="#Parser-676"><span class="linenos"> 676</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="Parser-677"><a href="#Parser-677"><span class="linenos"> 677</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-678"><a href="#Parser-678"><span class="linenos"> 678</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> +</span><span id="Parser-679"><a href="#Parser-679"><span class="linenos"> 679</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">(),</span> +</span><span id="Parser-680"><a href="#Parser-680"><span class="linenos"> 680</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">(),</span> +</span><span id="Parser-681"><a href="#Parser-681"><span class="linenos"> 681</span></a> <span class="p">}</span> +</span><span id="Parser-682"><a href="#Parser-682"><span class="linenos"> 682</span></a> +</span><span id="Parser-683"><a href="#Parser-683"><span class="linenos"> 683</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-684"><a href="#Parser-684"><span class="linenos"> 684</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> +</span><span id="Parser-685"><a href="#Parser-685"><span class="linenos"> 685</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> +</span><span id="Parser-686"><a href="#Parser-686"><span class="linenos"> 686</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> +</span><span id="Parser-687"><a href="#Parser-687"><span class="linenos"> 687</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comment</span><span class="p">(),</span> +</span><span id="Parser-688"><a href="#Parser-688"><span class="linenos"> 688</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Parser-689"><a href="#Parser-689"><span class="linenos"> 689</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy</span><span class="p">(),</span> +</span><span id="Parser-690"><a href="#Parser-690"><span class="linenos"> 690</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> +</span><span id="Parser-691"><a href="#Parser-691"><span class="linenos"> 691</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> +</span><span id="Parser-692"><a href="#Parser-692"><span class="linenos"> 692</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="Parser-693"><a href="#Parser-693"><span class="linenos"> 693</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="Parser-694"><a href="#Parser-694"><span class="linenos"> 694</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> +</span><span id="Parser-695"><a href="#Parser-695"><span class="linenos"> 695</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> +</span><span id="Parser-696"><a href="#Parser-696"><span class="linenos"> 696</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_kill</span><span class="p">(),</span> +</span><span id="Parser-697"><a href="#Parser-697"><span class="linenos"> 697</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load</span><span class="p">(),</span> +</span><span id="Parser-698"><a href="#Parser-698"><span class="linenos"> 698</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> +</span><span id="Parser-699"><a href="#Parser-699"><span class="linenos"> 699</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">(),</span> +</span><span id="Parser-700"><a href="#Parser-700"><span class="linenos"> 700</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pragma</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()),</span> +</span><span id="Parser-701"><a href="#Parser-701"><span class="linenos"> 701</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFRESH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_refresh</span><span class="p">(),</span> +</span><span id="Parser-702"><a href="#Parser-702"><span class="linenos"> 702</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Parser-703"><a href="#Parser-703"><span class="linenos"> 703</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set</span><span class="p">(),</span> +</span><span id="Parser-704"><a href="#Parser-704"><span class="linenos"> 704</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_truncate_table</span><span class="p">(),</span> +</span><span id="Parser-705"><a href="#Parser-705"><span class="linenos"> 705</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> +</span><span id="Parser-706"><a href="#Parser-706"><span class="linenos"> 706</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> +</span><span id="Parser-707"><a href="#Parser-707"><span class="linenos"> 707</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-708"><a href="#Parser-708"><span class="linenos"> 708</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Use</span><span class="p">,</span> +</span><span id="Parser-709"><a href="#Parser-709"><span class="linenos"> 709</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">USABLES</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-710"><a href="#Parser-710"><span class="linenos"> 710</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-711"><a href="#Parser-711"><span class="linenos"> 711</span></a> <span class="p">),</span> +</span><span id="Parser-712"><a href="#Parser-712"><span class="linenos"> 712</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">),</span> +</span><span id="Parser-713"><a href="#Parser-713"><span class="linenos"> 713</span></a> <span class="p">}</span> +</span><span id="Parser-714"><a href="#Parser-714"><span class="linenos"> 714</span></a> +</span><span id="Parser-715"><a href="#Parser-715"><span class="linenos"> 715</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-716"><a href="#Parser-716"><span class="linenos"> 716</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> +</span><span id="Parser-717"><a href="#Parser-717"><span class="linenos"> 717</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> +</span><span id="Parser-718"><a href="#Parser-718"><span class="linenos"> 718</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="Parser-719"><a href="#Parser-719"><span class="linenos"> 719</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="Parser-720"><a href="#Parser-720"><span class="linenos"> 720</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sqrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="Parser-721"><a href="#Parser-721"><span class="linenos"> 721</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE_SLASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cbrt</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="Parser-722"><a href="#Parser-722"><span class="linenos"> 722</span></a> <span class="p">}</span> +</span><span id="Parser-723"><a href="#Parser-723"><span class="linenos"> 723</span></a> +</span><span id="Parser-724"><a href="#Parser-724"><span class="linenos"> 724</span></a> <span class="n">STRING_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-725"><a href="#Parser-725"><span class="linenos"> 725</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-726"><a href="#Parser-726"><span class="linenos"> 726</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-727"><a href="#Parser-727"><span class="linenos"> 727</span></a> <span class="p">),</span> +</span><span id="Parser-728"><a href="#Parser-728"><span class="linenos"> 728</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-729"><a href="#Parser-729"><span class="linenos"> 729</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-730"><a href="#Parser-730"><span class="linenos"> 730</span></a> <span class="p">),</span> +</span><span id="Parser-731"><a href="#Parser-731"><span class="linenos"> 731</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RawString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-732"><a href="#Parser-732"><span class="linenos"> 732</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-733"><a href="#Parser-733"><span class="linenos"> 733</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> +</span><span id="Parser-734"><a href="#Parser-734"><span class="linenos"> 734</span></a> <span class="p">),</span> +</span><span id="Parser-735"><a href="#Parser-735"><span class="linenos"> 735</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-736"><a href="#Parser-736"><span class="linenos"> 736</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnicodeString</span><span class="p">,</span> +</span><span id="Parser-737"><a href="#Parser-737"><span class="linenos"> 737</span></a> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="Parser-738"><a href="#Parser-738"><span class="linenos"> 738</span></a> <span class="n">escape</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UESCAPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="Parser-739"><a href="#Parser-739"><span class="linenos"> 739</span></a> <span class="p">),</span> +</span><span id="Parser-740"><a href="#Parser-740"><span class="linenos"> 740</span></a> <span class="p">}</span> +</span><span id="Parser-741"><a href="#Parser-741"><span class="linenos"> 741</span></a> +</span><span id="Parser-742"><a href="#Parser-742"><span class="linenos"> 742</span></a> <span class="n">NUMERIC_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-743"><a href="#Parser-743"><span class="linenos"> 743</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-744"><a href="#Parser-744"><span class="linenos"> 744</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-745"><a href="#Parser-745"><span class="linenos"> 745</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-746"><a href="#Parser-746"><span class="linenos"> 746</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-747"><a href="#Parser-747"><span class="linenos"> 747</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> +</span><span id="Parser-748"><a href="#Parser-748"><span class="linenos"> 748</span></a> <span class="p">),</span> +</span><span id="Parser-749"><a href="#Parser-749"><span class="linenos"> 749</span></a> <span class="p">}</span> +</span><span id="Parser-750"><a href="#Parser-750"><span class="linenos"> 750</span></a> +</span><span id="Parser-751"><a href="#Parser-751"><span class="linenos"> 751</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-752"><a href="#Parser-752"><span class="linenos"> 752</span></a> <span class="o">**</span><span class="n">STRING_PARSERS</span><span class="p">,</span> +</span><span id="Parser-753"><a href="#Parser-753"><span class="linenos"> 753</span></a> <span class="o">**</span><span class="n">NUMERIC_PARSERS</span><span class="p">,</span> +</span><span id="Parser-754"><a href="#Parser-754"><span class="linenos"> 754</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> +</span><span id="Parser-755"><a href="#Parser-755"><span class="linenos"> 755</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> +</span><span id="Parser-756"><a href="#Parser-756"><span class="linenos"> 756</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-757"><a href="#Parser-757"><span class="linenos"> 757</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-758"><a href="#Parser-758"><span class="linenos"> 758</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> +</span><span id="Parser-759"><a href="#Parser-759"><span class="linenos"> 759</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-760"><a href="#Parser-760"><span class="linenos"> 760</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> +</span><span id="Parser-761"><a href="#Parser-761"><span class="linenos"> 761</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="Parser-762"><a href="#Parser-762"><span class="linenos"> 762</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"EXCEPT"</span><span class="p">,</span> <span class="s2">"EXCLUDE"</span><span class="p">),</span> +</span><span id="Parser-763"><a href="#Parser-763"><span class="linenos"> 763</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"REPLACE"</span><span class="p">),</span> +</span><span id="Parser-764"><a href="#Parser-764"><span class="linenos"> 764</span></a> <span class="s2">"rename"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star_op</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">),</span> +</span><span id="Parser-765"><a href="#Parser-765"><span class="linenos"> 765</span></a> <span class="p">},</span> +</span><span id="Parser-766"><a href="#Parser-766"><span class="linenos"> 766</span></a> <span class="p">),</span> +</span><span id="Parser-767"><a href="#Parser-767"><span class="linenos"> 767</span></a> <span class="p">}</span> +</span><span id="Parser-768"><a href="#Parser-768"><span class="linenos"> 768</span></a> +</span><span id="Parser-769"><a href="#Parser-769"><span class="linenos"> 769</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-770"><a href="#Parser-770"><span class="linenos"> 770</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> +</span><span id="Parser-771"><a href="#Parser-771"><span class="linenos"> 771</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> +</span><span id="Parser-772"><a href="#Parser-772"><span class="linenos"> 772</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-773"><a href="#Parser-773"><span class="linenos"> 773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-774"><a href="#Parser-774"><span class="linenos"> 774</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> +</span><span id="Parser-775"><a href="#Parser-775"><span class="linenos"> 775</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-776"><a href="#Parser-776"><span class="linenos"> 776</span></a> <span class="p">),</span> +</span><span id="Parser-777"><a href="#Parser-777"><span class="linenos"> 777</span></a> <span class="p">}</span> +</span><span id="Parser-778"><a href="#Parser-778"><span class="linenos"> 778</span></a> +</span><span id="Parser-779"><a href="#Parser-779"><span class="linenos"> 779</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-780"><a href="#Parser-780"><span class="linenos"> 780</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-781"><a href="#Parser-781"><span class="linenos"> 781</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">),</span> +</span><span id="Parser-782"><a href="#Parser-782"><span class="linenos"> 782</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">),</span> +</span><span id="Parser-783"><a href="#Parser-783"><span class="linenos"> 783</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-784"><a href="#Parser-784"><span class="linenos"> 784</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">),</span> +</span><span id="Parser-785"><a href="#Parser-785"><span class="linenos"> 785</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-786"><a href="#Parser-786"><span class="linenos"> 786</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">),</span> +</span><span id="Parser-787"><a href="#Parser-787"><span class="linenos"> 787</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Overlaps</span><span class="p">),</span> +</span><span id="Parser-788"><a href="#Parser-788"><span class="linenos"> 788</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">),</span> +</span><span id="Parser-789"><a href="#Parser-789"><span class="linenos"> 789</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">),</span> +</span><span id="Parser-790"><a href="#Parser-790"><span class="linenos"> 790</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_comprehension</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-791"><a href="#Parser-791"><span class="linenos"> 791</span></a> <span class="p">}</span> +</span><span id="Parser-792"><a href="#Parser-792"><span class="linenos"> 792</span></a> +</span><span id="Parser-793"><a href="#Parser-793"><span class="linenos"> 793</span></a> <span class="n">PROPERTY_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-794"><a href="#Parser-794"><span class="linenos"> 794</span></a> <span class="s2">"ALLOWED_VALUES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-795"><a href="#Parser-795"><span class="linenos"> 795</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AllowedValuesProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> </span><span id="Parser-796"><a href="#Parser-796"><span class="linenos"> 796</span></a> <span class="p">),</span> -</span><span id="Parser-797"><a href="#Parser-797"><span class="linenos"> 797</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> -</span><span id="Parser-798"><a href="#Parser-798"><span class="linenos"> 798</span></a> <span class="s2">"CHARSET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-799"><a href="#Parser-799"><span class="linenos"> 799</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-800"><a href="#Parser-800"><span class="linenos"> 800</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> -</span><span id="Parser-801"><a href="#Parser-801"><span class="linenos"> 801</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(),</span> -</span><span id="Parser-802"><a href="#Parser-802"><span class="linenos"> 802</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_clustered_by</span><span class="p">(),</span> -</span><span id="Parser-803"><a href="#Parser-803"><span class="linenos"> 803</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span> -</span><span id="Parser-804"><a href="#Parser-804"><span class="linenos"> 804</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="Parser-805"><a href="#Parser-805"><span class="linenos"> 805</span></a> <span class="p">),</span> -</span><span id="Parser-806"><a href="#Parser-806"><span class="linenos"> 806</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> -</span><span id="Parser-807"><a href="#Parser-807"><span class="linenos"> 807</span></a> <span class="s2">"CONTAINS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_contains_property</span><span class="p">(),</span> -</span><span id="Parser-808"><a href="#Parser-808"><span class="linenos"> 808</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_property</span><span class="p">(),</span> -</span><span id="Parser-809"><a href="#Parser-809"><span class="linenos"> 809</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-810"><a href="#Parser-810"><span class="linenos"> 810</span></a> <span class="s2">"DATA_DELETION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_data_deletion_property</span><span class="p">(),</span> -</span><span id="Parser-811"><a href="#Parser-811"><span class="linenos"> 811</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> -</span><span id="Parser-812"><a href="#Parser-812"><span class="linenos"> 812</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-813"><a href="#Parser-813"><span class="linenos"> 813</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="Parser-814"><a href="#Parser-814"><span class="linenos"> 814</span></a> <span class="p">),</span> -</span><span id="Parser-815"><a href="#Parser-815"><span class="linenos"> 815</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> -</span><span id="Parser-816"><a href="#Parser-816"><span class="linenos"> 816</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> -</span><span id="Parser-817"><a href="#Parser-817"><span class="linenos"> 817</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">),</span> -</span><span id="Parser-818"><a href="#Parser-818"><span class="linenos"> 818</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> -</span><span id="Parser-819"><a href="#Parser-819"><span class="linenos"> 819</span></a> <span class="s2">"EXTERNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">),</span> -</span><span id="Parser-820"><a href="#Parser-820"><span class="linenos"> 820</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-821"><a href="#Parser-821"><span class="linenos"> 821</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="Parser-822"><a href="#Parser-822"><span class="linenos"> 822</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> -</span><span id="Parser-823"><a href="#Parser-823"><span class="linenos"> 823</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GlobalProperty</span><span class="p">),</span> -</span><span id="Parser-824"><a href="#Parser-824"><span class="linenos"> 824</span></a> <span class="s2">"HEAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HeapProperty</span><span class="p">),</span> -</span><span id="Parser-825"><a href="#Parser-825"><span class="linenos"> 825</span></a> <span class="s2">"ICEBERG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IcebergProperty</span><span class="p">),</span> -</span><span id="Parser-826"><a href="#Parser-826"><span class="linenos"> 826</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-827"><a href="#Parser-827"><span class="linenos"> 827</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="Parser-828"><a href="#Parser-828"><span class="linenos"> 828</span></a> <span class="p">),</span> -</span><span id="Parser-829"><a href="#Parser-829"><span class="linenos"> 829</span></a> <span class="s2">"INHERITS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-830"><a href="#Parser-830"><span class="linenos"> 830</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InheritsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="Parser-831"><a href="#Parser-831"><span class="linenos"> 831</span></a> <span class="p">),</span> -</span><span id="Parser-832"><a href="#Parser-832"><span class="linenos"> 832</span></a> <span class="s2">"INPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> -</span><span id="Parser-833"><a href="#Parser-833"><span class="linenos"> 833</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-834"><a href="#Parser-834"><span class="linenos"> 834</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> -</span><span id="Parser-835"><a href="#Parser-835"><span class="linenos"> 835</span></a> <span class="s2">"LAYOUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LAYOUT"</span><span class="p">),</span> -</span><span id="Parser-836"><a href="#Parser-836"><span class="linenos"> 836</span></a> <span class="s2">"LIFETIME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LIFETIME"</span><span class="p">),</span> -</span><span id="Parser-837"><a href="#Parser-837"><span class="linenos"> 837</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="Parser-838"><a href="#Parser-838"><span class="linenos"> 838</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> -</span><span id="Parser-839"><a href="#Parser-839"><span class="linenos"> 839</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="Parser-840"><a href="#Parser-840"><span class="linenos"> 840</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="Parser-841"><a href="#Parser-841"><span class="linenos"> 841</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-842"><a href="#Parser-842"><span class="linenos"> 842</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">),</span> -</span><span id="Parser-843"><a href="#Parser-843"><span class="linenos"> 843</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> -</span><span id="Parser-844"><a href="#Parser-844"><span class="linenos"> 844</span></a> <span class="s2">"MODIFIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_modifies_property</span><span class="p">(),</span> -</span><span id="Parser-845"><a href="#Parser-845"><span class="linenos"> 845</span></a> <span class="s2">"MULTISET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-846"><a href="#Parser-846"><span class="linenos"> 846</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_no_property</span><span class="p">(),</span> -</span><span id="Parser-847"><a href="#Parser-847"><span class="linenos"> 847</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">(),</span> -</span><span id="Parser-848"><a href="#Parser-848"><span class="linenos"> 848</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">skip_order_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-849"><a href="#Parser-849"><span class="linenos"> 849</span></a> <span class="s2">"OUTPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OutputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> -</span><span id="Parser-850"><a href="#Parser-850"><span class="linenos"> 850</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_of</span><span class="p">(),</span> -</span><span id="Parser-851"><a href="#Parser-851"><span class="linenos"> 851</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="Parser-852"><a href="#Parser-852"><span class="linenos"> 852</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="Parser-853"><a href="#Parser-853"><span class="linenos"> 853</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="Parser-854"><a href="#Parser-854"><span class="linenos"> 854</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span><span class="n">in_props</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-855"><a href="#Parser-855"><span class="linenos"> 855</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"RANGE"</span><span class="p">),</span> -</span><span id="Parser-856"><a href="#Parser-856"><span class="linenos"> 856</span></a> <span class="s2">"READS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_reads_property</span><span class="p">(),</span> -</span><span id="Parser-857"><a href="#Parser-857"><span class="linenos"> 857</span></a> <span class="s2">"REMOTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_remote_with_connection</span><span class="p">(),</span> -</span><span id="Parser-858"><a href="#Parser-858"><span class="linenos"> 858</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> -</span><span id="Parser-859"><a href="#Parser-859"><span class="linenos"> 859</span></a> <span class="s2">"STRICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrictProperty</span><span class="p">),</span> -</span><span id="Parser-860"><a href="#Parser-860"><span class="linenos"> 860</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> -</span><span id="Parser-861"><a href="#Parser-861"><span class="linenos"> 861</span></a> <span class="s2">"ROW_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatProperty</span><span class="p">),</span> -</span><span id="Parser-862"><a href="#Parser-862"><span class="linenos"> 862</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-863"><a href="#Parser-863"><span class="linenos"> 863</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SampleProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-864"><a href="#Parser-864"><span class="linenos"> 864</span></a> <span class="p">),</span> -</span><span id="Parser-865"><a href="#Parser-865"><span class="linenos"> 865</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-866"><a href="#Parser-866"><span class="linenos"> 866</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-867"><a href="#Parser-867"><span class="linenos"> 867</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SettingsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> -</span><span id="Parser-868"><a href="#Parser-868"><span class="linenos"> 868</span></a> <span class="p">),</span> -</span><span id="Parser-869"><a href="#Parser-869"><span class="linenos"> 869</span></a> <span class="s2">"SHARING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SharingProperty</span><span class="p">),</span> -</span><span id="Parser-870"><a href="#Parser-870"><span class="linenos"> 870</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> -</span><span id="Parser-871"><a href="#Parser-871"><span class="linenos"> 871</span></a> <span class="s2">"SOURCE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"SOURCE"</span><span class="p">),</span> -</span><span id="Parser-872"><a href="#Parser-872"><span class="linenos"> 872</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-873"><a href="#Parser-873"><span class="linenos"> 873</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> +</span><span id="Parser-797"><a href="#Parser-797"><span class="linenos"> 797</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> +</span><span id="Parser-798"><a href="#Parser-798"><span class="linenos"> 798</span></a> <span class="s2">"AUTO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_property</span><span class="p">(),</span> +</span><span id="Parser-799"><a href="#Parser-799"><span class="linenos"> 799</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> +</span><span id="Parser-800"><a href="#Parser-800"><span class="linenos"> 800</span></a> <span class="s2">"BACKUP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-801"><a href="#Parser-801"><span class="linenos"> 801</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BackupProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-802"><a href="#Parser-802"><span class="linenos"> 802</span></a> <span class="p">),</span> +</span><span id="Parser-803"><a href="#Parser-803"><span class="linenos"> 803</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> +</span><span id="Parser-804"><a href="#Parser-804"><span class="linenos"> 804</span></a> <span class="s2">"CHARSET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-805"><a href="#Parser-805"><span class="linenos"> 805</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-806"><a href="#Parser-806"><span class="linenos"> 806</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> +</span><span id="Parser-807"><a href="#Parser-807"><span class="linenos"> 807</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(),</span> +</span><span id="Parser-808"><a href="#Parser-808"><span class="linenos"> 808</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_clustered_by</span><span class="p">(),</span> +</span><span id="Parser-809"><a href="#Parser-809"><span class="linenos"> 809</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span> +</span><span id="Parser-810"><a href="#Parser-810"><span class="linenos"> 810</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="Parser-811"><a href="#Parser-811"><span class="linenos"> 811</span></a> <span class="p">),</span> +</span><span id="Parser-812"><a href="#Parser-812"><span class="linenos"> 812</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> +</span><span id="Parser-813"><a href="#Parser-813"><span class="linenos"> 813</span></a> <span class="s2">"CONTAINS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_contains_property</span><span class="p">(),</span> +</span><span id="Parser-814"><a href="#Parser-814"><span class="linenos"> 814</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_property</span><span class="p">(),</span> +</span><span id="Parser-815"><a href="#Parser-815"><span class="linenos"> 815</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-816"><a href="#Parser-816"><span class="linenos"> 816</span></a> <span class="s2">"DATA_DELETION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_data_deletion_property</span><span class="p">(),</span> +</span><span id="Parser-817"><a href="#Parser-817"><span class="linenos"> 817</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> +</span><span id="Parser-818"><a href="#Parser-818"><span class="linenos"> 818</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-819"><a href="#Parser-819"><span class="linenos"> 819</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> +</span><span id="Parser-820"><a href="#Parser-820"><span class="linenos"> 820</span></a> <span class="p">),</span> +</span><span id="Parser-821"><a href="#Parser-821"><span class="linenos"> 821</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> +</span><span id="Parser-822"><a href="#Parser-822"><span class="linenos"> 822</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> +</span><span id="Parser-823"><a href="#Parser-823"><span class="linenos"> 823</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">),</span> +</span><span id="Parser-824"><a href="#Parser-824"><span class="linenos"> 824</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> +</span><span id="Parser-825"><a href="#Parser-825"><span class="linenos"> 825</span></a> <span class="s2">"EXTERNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">),</span> +</span><span id="Parser-826"><a href="#Parser-826"><span class="linenos"> 826</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-827"><a href="#Parser-827"><span class="linenos"> 827</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="Parser-828"><a href="#Parser-828"><span class="linenos"> 828</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> +</span><span id="Parser-829"><a href="#Parser-829"><span class="linenos"> 829</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GlobalProperty</span><span class="p">),</span> +</span><span id="Parser-830"><a href="#Parser-830"><span class="linenos"> 830</span></a> <span class="s2">"HEAP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HeapProperty</span><span class="p">),</span> +</span><span id="Parser-831"><a href="#Parser-831"><span class="linenos"> 831</span></a> <span class="s2">"ICEBERG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IcebergProperty</span><span class="p">),</span> +</span><span id="Parser-832"><a href="#Parser-832"><span class="linenos"> 832</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-833"><a href="#Parser-833"><span class="linenos"> 833</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> +</span><span id="Parser-834"><a href="#Parser-834"><span class="linenos"> 834</span></a> <span class="p">),</span> +</span><span id="Parser-835"><a href="#Parser-835"><span class="linenos"> 835</span></a> <span class="s2">"INHERITS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-836"><a href="#Parser-836"><span class="linenos"> 836</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InheritsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="Parser-837"><a href="#Parser-837"><span class="linenos"> 837</span></a> <span class="p">),</span> +</span><span id="Parser-838"><a href="#Parser-838"><span class="linenos"> 838</span></a> <span class="s2">"INPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> +</span><span id="Parser-839"><a href="#Parser-839"><span class="linenos"> 839</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-840"><a href="#Parser-840"><span class="linenos"> 840</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> +</span><span id="Parser-841"><a href="#Parser-841"><span class="linenos"> 841</span></a> <span class="s2">"LAYOUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LAYOUT"</span><span class="p">),</span> +</span><span id="Parser-842"><a href="#Parser-842"><span class="linenos"> 842</span></a> <span class="s2">"LIFETIME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"LIFETIME"</span><span class="p">),</span> +</span><span id="Parser-843"><a href="#Parser-843"><span class="linenos"> 843</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="Parser-844"><a href="#Parser-844"><span class="linenos"> 844</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> +</span><span id="Parser-845"><a href="#Parser-845"><span class="linenos"> 845</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="Parser-846"><a href="#Parser-846"><span class="linenos"> 846</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="Parser-847"><a href="#Parser-847"><span class="linenos"> 847</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-848"><a href="#Parser-848"><span class="linenos"> 848</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">),</span> +</span><span id="Parser-849"><a href="#Parser-849"><span class="linenos"> 849</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> +</span><span id="Parser-850"><a href="#Parser-850"><span class="linenos"> 850</span></a> <span class="s2">"MODIFIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_modifies_property</span><span class="p">(),</span> +</span><span id="Parser-851"><a href="#Parser-851"><span class="linenos"> 851</span></a> <span class="s2">"MULTISET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-852"><a href="#Parser-852"><span class="linenos"> 852</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_no_property</span><span class="p">(),</span> +</span><span id="Parser-853"><a href="#Parser-853"><span class="linenos"> 853</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">(),</span> +</span><span id="Parser-854"><a href="#Parser-854"><span class="linenos"> 854</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">skip_order_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-855"><a href="#Parser-855"><span class="linenos"> 855</span></a> <span class="s2">"OUTPUT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OutputModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()),</span> +</span><span id="Parser-856"><a href="#Parser-856"><span class="linenos"> 856</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_of</span><span class="p">(),</span> +</span><span id="Parser-857"><a href="#Parser-857"><span class="linenos"> 857</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="Parser-858"><a href="#Parser-858"><span class="linenos"> 858</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="Parser-859"><a href="#Parser-859"><span class="linenos"> 859</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="Parser-860"><a href="#Parser-860"><span class="linenos"> 860</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(</span><span class="n">in_props</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-861"><a href="#Parser-861"><span class="linenos"> 861</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_range</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"RANGE"</span><span class="p">),</span> +</span><span id="Parser-862"><a href="#Parser-862"><span class="linenos"> 862</span></a> <span class="s2">"READS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_reads_property</span><span class="p">(),</span> +</span><span id="Parser-863"><a href="#Parser-863"><span class="linenos"> 863</span></a> <span class="s2">"REMOTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_remote_with_connection</span><span class="p">(),</span> +</span><span id="Parser-864"><a href="#Parser-864"><span class="linenos"> 864</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> +</span><span id="Parser-865"><a href="#Parser-865"><span class="linenos"> 865</span></a> <span class="s2">"STRICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrictProperty</span><span class="p">),</span> +</span><span id="Parser-866"><a href="#Parser-866"><span class="linenos"> 866</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> +</span><span id="Parser-867"><a href="#Parser-867"><span class="linenos"> 867</span></a> <span class="s2">"ROW_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatProperty</span><span class="p">),</span> +</span><span id="Parser-868"><a href="#Parser-868"><span class="linenos"> 868</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-869"><a href="#Parser-869"><span class="linenos"> 869</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SampleProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-870"><a href="#Parser-870"><span class="linenos"> 870</span></a> <span class="p">),</span> +</span><span id="Parser-871"><a href="#Parser-871"><span class="linenos"> 871</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-872"><a href="#Parser-872"><span class="linenos"> 872</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-873"><a href="#Parser-873"><span class="linenos"> 873</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SettingsProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> </span><span id="Parser-874"><a href="#Parser-874"><span class="linenos"> 874</span></a> <span class="p">),</span> -</span><span id="Parser-875"><a href="#Parser-875"><span class="linenos"> 875</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> -</span><span id="Parser-876"><a href="#Parser-876"><span class="linenos"> 876</span></a> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(),</span> -</span><span id="Parser-877"><a href="#Parser-877"><span class="linenos"> 877</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> -</span><span id="Parser-878"><a href="#Parser-878"><span class="linenos"> 878</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> -</span><span id="Parser-879"><a href="#Parser-879"><span class="linenos"> 879</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> -</span><span id="Parser-880"><a href="#Parser-880"><span class="linenos"> 880</span></a> <span class="s2">"TO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_to_table</span><span class="p">(),</span> -</span><span id="Parser-881"><a href="#Parser-881"><span class="linenos"> 881</span></a> <span class="s2">"TRANSIENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">),</span> -</span><span id="Parser-882"><a href="#Parser-882"><span class="linenos"> 882</span></a> <span class="s2">"TRANSFORM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-883"><a href="#Parser-883"><span class="linenos"> 883</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransformModelProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="Parser-884"><a href="#Parser-884"><span class="linenos"> 884</span></a> <span class="p">),</span> -</span><span id="Parser-885"><a href="#Parser-885"><span class="linenos"> 885</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ttl</span><span class="p">(),</span> -</span><span id="Parser-886"><a href="#Parser-886"><span class="linenos"> 886</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="Parser-887"><a href="#Parser-887"><span class="linenos"> 887</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UnloggedProperty</span><span class="p">),</span> -</span><span id="Parser-888"><a href="#Parser-888"><span class="linenos"> 888</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_volatile_property</span><span class="p">(),</span> -</span><span id="Parser-889"><a href="#Parser-889"><span class="linenos"> 889</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> -</span><span id="Parser-890"><a href="#Parser-890"><span class="linenos"> 890</span></a> <span class="p">}</span> -</span><span id="Parser-891"><a href="#Parser-891"><span class="linenos"> 891</span></a> -</span><span id="Parser-892"><a href="#Parser-892"><span class="linenos"> 892</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-893"><a href="#Parser-893"><span class="linenos"> 893</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="Parser-894"><a href="#Parser-894"><span class="linenos"> 894</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="Parser-895"><a href="#Parser-895"><span class="linenos"> 895</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-896"><a href="#Parser-896"><span class="linenos"> 896</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-897"><a href="#Parser-897"><span class="linenos"> 897</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="Parser-898"><a href="#Parser-898"><span class="linenos"> 898</span></a> <span class="p">),</span> -</span><span id="Parser-899"><a href="#Parser-899"><span class="linenos"> 899</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-900"><a href="#Parser-900"><span class="linenos"> 900</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> -</span><span id="Parser-901"><a href="#Parser-901"><span class="linenos"> 901</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span> -</span><span id="Parser-902"><a href="#Parser-902"><span class="linenos"> 902</span></a> <span class="n">enforced</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">),</span> -</span><span id="Parser-903"><a href="#Parser-903"><span class="linenos"> 903</span></a> <span class="p">),</span> -</span><span id="Parser-904"><a href="#Parser-904"><span class="linenos"> 904</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-905"><a href="#Parser-905"><span class="linenos"> 905</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-906"><a href="#Parser-906"><span class="linenos"> 906</span></a> <span class="p">),</span> -</span><span id="Parser-907"><a href="#Parser-907"><span class="linenos"> 907</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-908"><a href="#Parser-908"><span class="linenos"> 908</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-875"><a href="#Parser-875"><span class="linenos"> 875</span></a> <span class="s2">"SHARING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SharingProperty</span><span class="p">),</span> +</span><span id="Parser-876"><a href="#Parser-876"><span class="linenos"> 876</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> +</span><span id="Parser-877"><a href="#Parser-877"><span class="linenos"> 877</span></a> <span class="s2">"SOURCE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_dict_property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"SOURCE"</span><span class="p">),</span> +</span><span id="Parser-878"><a href="#Parser-878"><span class="linenos"> 878</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-879"><a href="#Parser-879"><span class="linenos"> 879</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> +</span><span id="Parser-880"><a href="#Parser-880"><span class="linenos"> 880</span></a> <span class="p">),</span> +</span><span id="Parser-881"><a href="#Parser-881"><span class="linenos"> 881</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> +</span><span id="Parser-882"><a href="#Parser-882"><span class="linenos"> 882</span></a> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(),</span> +</span><span id="Parser-883"><a href="#Parser-883"><span class="linenos"> 883</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> +</span><span id="Parser-884"><a href="#Parser-884"><span class="linenos"> 884</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> +</span><span id="Parser-885"><a href="#Parser-885"><span class="linenos"> 885</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">),</span> +</span><span id="Parser-886"><a href="#Parser-886"><span class="linenos"> 886</span></a> <span class="s2">"TO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_to_table</span><span class="p">(),</span> +</span><span id="Parser-887"><a href="#Parser-887"><span class="linenos"> 887</span></a> <span class="s2">"TRANSIENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">),</span> +</span><span id="Parser-888"><a href="#Parser-888"><span class="linenos"> 888</span></a> <span class="s2">"TRANSFORM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-889"><a href="#Parser-889"><span class="linenos"> 889</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransformModelProperty</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-890"><a href="#Parser-890"><span class="linenos"> 890</span></a> <span class="p">),</span> +</span><span id="Parser-891"><a href="#Parser-891"><span class="linenos"> 891</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ttl</span><span class="p">(),</span> +</span><span id="Parser-892"><a href="#Parser-892"><span class="linenos"> 892</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="Parser-893"><a href="#Parser-893"><span class="linenos"> 893</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UnloggedProperty</span><span class="p">),</span> +</span><span id="Parser-894"><a href="#Parser-894"><span class="linenos"> 894</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_volatile_property</span><span class="p">(),</span> +</span><span id="Parser-895"><a href="#Parser-895"><span class="linenos"> 895</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> +</span><span id="Parser-896"><a href="#Parser-896"><span class="linenos"> 896</span></a> <span class="p">}</span> +</span><span id="Parser-897"><a href="#Parser-897"><span class="linenos"> 897</span></a> +</span><span id="Parser-898"><a href="#Parser-898"><span class="linenos"> 898</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-899"><a href="#Parser-899"><span class="linenos"> 899</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="Parser-900"><a href="#Parser-900"><span class="linenos"> 900</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="Parser-901"><a href="#Parser-901"><span class="linenos"> 901</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-902"><a href="#Parser-902"><span class="linenos"> 902</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-903"><a href="#Parser-903"><span class="linenos"> 903</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-904"><a href="#Parser-904"><span class="linenos"> 904</span></a> <span class="p">),</span> +</span><span id="Parser-905"><a href="#Parser-905"><span class="linenos"> 905</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-906"><a href="#Parser-906"><span class="linenos"> 906</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> +</span><span id="Parser-907"><a href="#Parser-907"><span class="linenos"> 907</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">),</span> +</span><span id="Parser-908"><a href="#Parser-908"><span class="linenos"> 908</span></a> <span class="n">enforced</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">),</span> </span><span id="Parser-909"><a href="#Parser-909"><span class="linenos"> 909</span></a> <span class="p">),</span> -</span><span id="Parser-910"><a href="#Parser-910"><span class="linenos"> 910</span></a> <span class="s2">"COMPRESS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span> -</span><span id="Parser-911"><a href="#Parser-911"><span class="linenos"> 911</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-912"><a href="#Parser-912"><span class="linenos"> 912</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-913"><a href="#Parser-913"><span class="linenos"> 913</span></a> <span class="p">),</span> -</span><span id="Parser-914"><a href="#Parser-914"><span class="linenos"> 914</span></a> <span class="s2">"NONCLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-915"><a href="#Parser-915"><span class="linenos"> 915</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NonClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-916"><a href="#Parser-916"><span class="linenos"> 916</span></a> <span class="p">),</span> -</span><span id="Parser-917"><a href="#Parser-917"><span class="linenos"> 917</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-918"><a href="#Parser-918"><span class="linenos"> 918</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-910"><a href="#Parser-910"><span class="linenos"> 910</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-911"><a href="#Parser-911"><span class="linenos"> 911</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-912"><a href="#Parser-912"><span class="linenos"> 912</span></a> <span class="p">),</span> +</span><span id="Parser-913"><a href="#Parser-913"><span class="linenos"> 913</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-914"><a href="#Parser-914"><span class="linenos"> 914</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-915"><a href="#Parser-915"><span class="linenos"> 915</span></a> <span class="p">),</span> +</span><span id="Parser-916"><a href="#Parser-916"><span class="linenos"> 916</span></a> <span class="s2">"COMPRESS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span> +</span><span id="Parser-917"><a href="#Parser-917"><span class="linenos"> 917</span></a> <span class="s2">"CLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-918"><a href="#Parser-918"><span class="linenos"> 918</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> </span><span id="Parser-919"><a href="#Parser-919"><span class="linenos"> 919</span></a> <span class="p">),</span> -</span><span id="Parser-920"><a href="#Parser-920"><span class="linenos"> 920</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> -</span><span id="Parser-921"><a href="#Parser-921"><span class="linenos"> 921</span></a> <span class="s2">"EPHEMERAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-922"><a href="#Parser-922"><span class="linenos"> 922</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EphemeralColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-923"><a href="#Parser-923"><span class="linenos"> 923</span></a> <span class="p">),</span> -</span><span id="Parser-924"><a href="#Parser-924"><span class="linenos"> 924</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-925"><a href="#Parser-925"><span class="linenos"> 925</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExcludeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> -</span><span id="Parser-926"><a href="#Parser-926"><span class="linenos"> 926</span></a> <span class="p">),</span> -</span><span id="Parser-927"><a href="#Parser-927"><span class="linenos"> 927</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> -</span><span id="Parser-928"><a href="#Parser-928"><span class="linenos"> 928</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-929"><a href="#Parser-929"><span class="linenos"> 929</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="Parser-930"><a href="#Parser-930"><span class="linenos"> 930</span></a> <span class="p">),</span> -</span><span id="Parser-931"><a href="#Parser-931"><span class="linenos"> 931</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> -</span><span id="Parser-932"><a href="#Parser-932"><span class="linenos"> 932</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="Parser-933"><a href="#Parser-933"><span class="linenos"> 933</span></a> <span class="s2">"INLINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_inline</span><span class="p">(),</span> -</span><span id="Parser-934"><a href="#Parser-934"><span class="linenos"> 934</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="Parser-935"><a href="#Parser-935"><span class="linenos"> 935</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> -</span><span id="Parser-936"><a href="#Parser-936"><span class="linenos"> 936</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-937"><a href="#Parser-937"><span class="linenos"> 937</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-938"><a href="#Parser-938"><span class="linenos"> 938</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)</span> -</span><span id="Parser-939"><a href="#Parser-939"><span class="linenos"> 939</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnUpdateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> -</span><span id="Parser-940"><a href="#Parser-940"><span class="linenos"> 940</span></a> <span class="p">)</span> -</span><span id="Parser-941"><a href="#Parser-941"><span class="linenos"> 941</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> -</span><span id="Parser-942"><a href="#Parser-942"><span class="linenos"> 942</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> -</span><span id="Parser-943"><a href="#Parser-943"><span class="linenos"> 943</span></a> <span class="s2">"PERIOD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_period_for_system_time</span><span class="p">(),</span> -</span><span id="Parser-944"><a href="#Parser-944"><span class="linenos"> 944</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> -</span><span id="Parser-945"><a href="#Parser-945"><span class="linenos"> 945</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">(</span><span class="n">match</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-946"><a href="#Parser-946"><span class="linenos"> 946</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-947"><a href="#Parser-947"><span class="linenos"> 947</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="Parser-948"><a href="#Parser-948"><span class="linenos"> 948</span></a> <span class="p">),</span> -</span><span id="Parser-949"><a href="#Parser-949"><span class="linenos"> 949</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]),</span> -</span><span id="Parser-950"><a href="#Parser-950"><span class="linenos"> 950</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> -</span><span id="Parser-951"><a href="#Parser-951"><span class="linenos"> 951</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> -</span><span id="Parser-952"><a href="#Parser-952"><span class="linenos"> 952</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-953"><a href="#Parser-953"><span class="linenos"> 953</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> +</span><span id="Parser-920"><a href="#Parser-920"><span class="linenos"> 920</span></a> <span class="s2">"NONCLUSTERED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-921"><a href="#Parser-921"><span class="linenos"> 921</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NonClusteredColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="Parser-922"><a href="#Parser-922"><span class="linenos"> 922</span></a> <span class="p">),</span> +</span><span id="Parser-923"><a href="#Parser-923"><span class="linenos"> 923</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-924"><a href="#Parser-924"><span class="linenos"> 924</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-925"><a href="#Parser-925"><span class="linenos"> 925</span></a> <span class="p">),</span> +</span><span id="Parser-926"><a href="#Parser-926"><span class="linenos"> 926</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> +</span><span id="Parser-927"><a href="#Parser-927"><span class="linenos"> 927</span></a> <span class="s2">"EPHEMERAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-928"><a href="#Parser-928"><span class="linenos"> 928</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EphemeralColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-929"><a href="#Parser-929"><span class="linenos"> 929</span></a> <span class="p">),</span> +</span><span id="Parser-930"><a href="#Parser-930"><span class="linenos"> 930</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-931"><a href="#Parser-931"><span class="linenos"> 931</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExcludeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> +</span><span id="Parser-932"><a href="#Parser-932"><span class="linenos"> 932</span></a> <span class="p">),</span> +</span><span id="Parser-933"><a href="#Parser-933"><span class="linenos"> 933</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> +</span><span id="Parser-934"><a href="#Parser-934"><span class="linenos"> 934</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-935"><a href="#Parser-935"><span class="linenos"> 935</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-936"><a href="#Parser-936"><span class="linenos"> 936</span></a> <span class="p">),</span> +</span><span id="Parser-937"><a href="#Parser-937"><span class="linenos"> 937</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> +</span><span id="Parser-938"><a href="#Parser-938"><span class="linenos"> 938</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="Parser-939"><a href="#Parser-939"><span class="linenos"> 939</span></a> <span class="s2">"INLINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_inline</span><span class="p">(),</span> +</span><span id="Parser-940"><a href="#Parser-940"><span class="linenos"> 940</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="Parser-941"><a href="#Parser-941"><span class="linenos"> 941</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> +</span><span id="Parser-942"><a href="#Parser-942"><span class="linenos"> 942</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-943"><a href="#Parser-943"><span class="linenos"> 943</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-944"><a href="#Parser-944"><span class="linenos"> 944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)</span> +</span><span id="Parser-945"><a href="#Parser-945"><span class="linenos"> 945</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnUpdateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> +</span><span id="Parser-946"><a href="#Parser-946"><span class="linenos"> 946</span></a> <span class="p">)</span> +</span><span id="Parser-947"><a href="#Parser-947"><span class="linenos"> 947</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> +</span><span id="Parser-948"><a href="#Parser-948"><span class="linenos"> 948</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> +</span><span id="Parser-949"><a href="#Parser-949"><span class="linenos"> 949</span></a> <span class="s2">"PERIOD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_period_for_system_time</span><span class="p">(),</span> +</span><span id="Parser-950"><a href="#Parser-950"><span class="linenos"> 950</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> +</span><span id="Parser-951"><a href="#Parser-951"><span class="linenos"> 951</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">(</span><span class="n">match</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-952"><a href="#Parser-952"><span class="linenos"> 952</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-953"><a href="#Parser-953"><span class="linenos"> 953</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> </span><span id="Parser-954"><a href="#Parser-954"><span class="linenos"> 954</span></a> <span class="p">),</span> -</span><span id="Parser-955"><a href="#Parser-955"><span class="linenos"> 955</span></a> <span class="p">}</span> -</span><span id="Parser-956"><a href="#Parser-956"><span class="linenos"> 956</span></a> -</span><span id="Parser-957"><a href="#Parser-957"><span class="linenos"> 957</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-958"><a href="#Parser-958"><span class="linenos"> 958</span></a> <span class="s2">"ADD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_add</span><span class="p">(),</span> -</span><span id="Parser-959"><a href="#Parser-959"><span class="linenos"> 959</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_alter</span><span class="p">(),</span> -</span><span id="Parser-960"><a href="#Parser-960"><span class="linenos"> 960</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(</span><span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-961"><a href="#Parser-961"><span class="linenos"> 961</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> -</span><span id="Parser-962"><a href="#Parser-962"><span class="linenos"> 962</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_drop</span><span class="p">(),</span> -</span><span id="Parser-963"><a href="#Parser-963"><span class="linenos"> 963</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_rename</span><span class="p">(),</span> -</span><span id="Parser-964"><a href="#Parser-964"><span class="linenos"> 964</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_set</span><span class="p">(),</span> -</span><span id="Parser-965"><a href="#Parser-965"><span class="linenos"> 965</span></a> <span class="p">}</span> -</span><span id="Parser-966"><a href="#Parser-966"><span class="linenos"> 966</span></a> -</span><span id="Parser-967"><a href="#Parser-967"><span class="linenos"> 967</span></a> <span class="n">ALTER_ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-968"><a href="#Parser-968"><span class="linenos"> 968</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> -</span><span id="Parser-969"><a href="#Parser-969"><span class="linenos"> 969</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> -</span><span id="Parser-970"><a href="#Parser-970"><span class="linenos"> 970</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(),</span> -</span><span id="Parser-971"><a href="#Parser-971"><span class="linenos"> 971</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-972"><a href="#Parser-972"><span class="linenos"> 972</span></a> <span class="p">}</span> -</span><span id="Parser-973"><a href="#Parser-973"><span class="linenos"> 973</span></a> -</span><span id="Parser-974"><a href="#Parser-974"><span class="linenos"> 974</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-975"><a href="#Parser-975"><span class="linenos"> 975</span></a> <span class="s2">"CHECK"</span><span class="p">,</span> -</span><span id="Parser-976"><a href="#Parser-976"><span class="linenos"> 976</span></a> <span class="s2">"EXCLUDE"</span><span class="p">,</span> -</span><span id="Parser-977"><a href="#Parser-977"><span class="linenos"> 977</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> -</span><span id="Parser-978"><a href="#Parser-978"><span class="linenos"> 978</span></a> <span class="s2">"LIKE"</span><span class="p">,</span> -</span><span id="Parser-979"><a href="#Parser-979"><span class="linenos"> 979</span></a> <span class="s2">"PERIOD"</span><span class="p">,</span> -</span><span id="Parser-980"><a href="#Parser-980"><span class="linenos"> 980</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> -</span><span id="Parser-981"><a href="#Parser-981"><span class="linenos"> 981</span></a> <span class="s2">"UNIQUE"</span><span class="p">,</span> -</span><span id="Parser-982"><a href="#Parser-982"><span class="linenos"> 982</span></a> <span class="p">}</span> -</span><span id="Parser-983"><a href="#Parser-983"><span class="linenos"> 983</span></a> -</span><span id="Parser-984"><a href="#Parser-984"><span class="linenos"> 984</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-985"><a href="#Parser-985"><span class="linenos"> 985</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> -</span><span id="Parser-986"><a href="#Parser-986"><span class="linenos"> 986</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> -</span><span id="Parser-987"><a href="#Parser-987"><span class="linenos"> 987</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> -</span><span id="Parser-988"><a href="#Parser-988"><span class="linenos"> 988</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_next_value_for</span><span class="p">(),</span> -</span><span id="Parser-989"><a href="#Parser-989"><span class="linenos"> 989</span></a> <span class="p">}</span> -</span><span id="Parser-990"><a href="#Parser-990"><span class="linenos"> 990</span></a> -</span><span id="Parser-991"><a href="#Parser-991"><span class="linenos"> 991</span></a> <span class="n">INVALID_FUNC_NAME_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-992"><a href="#Parser-992"><span class="linenos"> 992</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="Parser-993"><a href="#Parser-993"><span class="linenos"> 993</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> -</span><span id="Parser-994"><a href="#Parser-994"><span class="linenos"> 994</span></a> <span class="p">}</span> -</span><span id="Parser-995"><a href="#Parser-995"><span class="linenos"> 995</span></a> -</span><span id="Parser-996"><a href="#Parser-996"><span class="linenos"> 996</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"STRUCT"</span><span class="p">}</span> -</span><span id="Parser-997"><a href="#Parser-997"><span class="linenos"> 997</span></a> -</span><span id="Parser-998"><a href="#Parser-998"><span class="linenos"> 998</span></a> <span class="n">KEY_VALUE_DEFINITIONS</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">)</span> -</span><span id="Parser-999"><a href="#Parser-999"><span class="linenos"> 999</span></a> -</span><span id="Parser-1000"><a href="#Parser-1000"><span class="linenos">1000</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1001"><a href="#Parser-1001"><span class="linenos">1001</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="Parser-1002"><a href="#Parser-1002"><span class="linenos">1002</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="Parser-1003"><a href="#Parser-1003"><span class="linenos">1003</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_decode</span><span class="p">(),</span> -</span><span id="Parser-1004"><a href="#Parser-1004"><span class="linenos">1004</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> -</span><span id="Parser-1005"><a href="#Parser-1005"><span class="linenos">1005</span></a> <span class="s2">"GAP_FILL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_gap_fill</span><span class="p">(),</span> -</span><span id="Parser-1006"><a href="#Parser-1006"><span class="linenos">1006</span></a> <span class="s2">"JSON_OBJECT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(),</span> -</span><span id="Parser-1007"><a href="#Parser-1007"><span class="linenos">1007</span></a> <span class="s2">"JSON_OBJECTAGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(</span><span class="n">agg</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1008"><a href="#Parser-1008"><span class="linenos">1008</span></a> <span class="s2">"JSON_TABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_table</span><span class="p">(),</span> -</span><span id="Parser-1009"><a href="#Parser-1009"><span class="linenos">1009</span></a> <span class="s2">"MATCH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_against</span><span class="p">(),</span> -</span><span id="Parser-1010"><a href="#Parser-1010"><span class="linenos">1010</span></a> <span class="s2">"OPENJSON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_open_json</span><span class="p">(),</span> -</span><span id="Parser-1011"><a href="#Parser-1011"><span class="linenos">1011</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> -</span><span id="Parser-1012"><a href="#Parser-1012"><span class="linenos">1012</span></a> <span class="s2">"PREDICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_predict</span><span class="p">(),</span> -</span><span id="Parser-1013"><a href="#Parser-1013"><span class="linenos">1013</span></a> <span class="s2">"SAFE_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1014"><a href="#Parser-1014"><span class="linenos">1014</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> -</span><span id="Parser-1015"><a href="#Parser-1015"><span class="linenos">1015</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> -</span><span id="Parser-1016"><a href="#Parser-1016"><span class="linenos">1016</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> -</span><span id="Parser-1017"><a href="#Parser-1017"><span class="linenos">1017</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1018"><a href="#Parser-1018"><span class="linenos">1018</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1019"><a href="#Parser-1019"><span class="linenos">1019</span></a> <span class="p">}</span> -</span><span id="Parser-1020"><a href="#Parser-1020"><span class="linenos">1020</span></a> -</span><span id="Parser-1021"><a href="#Parser-1021"><span class="linenos">1021</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1022"><a href="#Parser-1022"><span class="linenos">1022</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"match"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">()),</span> -</span><span id="Parser-1023"><a href="#Parser-1023"><span class="linenos">1023</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"prewhere"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_prewhere</span><span class="p">()),</span> -</span><span id="Parser-1024"><a href="#Parser-1024"><span class="linenos">1024</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"where"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> -</span><span id="Parser-1025"><a href="#Parser-1025"><span class="linenos">1025</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"group"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()),</span> -</span><span id="Parser-1026"><a href="#Parser-1026"><span class="linenos">1026</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"having"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">()),</span> -</span><span id="Parser-1027"><a href="#Parser-1027"><span class="linenos">1027</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"qualify"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">()),</span> -</span><span id="Parser-1028"><a href="#Parser-1028"><span class="linenos">1028</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"windows"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">()),</span> -</span><span id="Parser-1029"><a href="#Parser-1029"><span class="linenos">1029</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"order"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()),</span> -</span><span id="Parser-1030"><a href="#Parser-1030"><span class="linenos">1030</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> -</span><span id="Parser-1031"><a href="#Parser-1031"><span class="linenos">1031</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> -</span><span id="Parser-1032"><a href="#Parser-1032"><span class="linenos">1032</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">()),</span> -</span><span id="Parser-1033"><a href="#Parser-1033"><span class="linenos">1033</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> -</span><span id="Parser-1034"><a href="#Parser-1034"><span class="linenos">1034</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> -</span><span id="Parser-1035"><a href="#Parser-1035"><span class="linenos">1035</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="Parser-1036"><a href="#Parser-1036"><span class="linenos">1036</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="Parser-1037"><a href="#Parser-1037"><span class="linenos">1037</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-1038"><a href="#Parser-1038"><span class="linenos">1038</span></a> <span class="s2">"cluster"</span><span class="p">,</span> -</span><span id="Parser-1039"><a href="#Parser-1039"><span class="linenos">1039</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> -</span><span id="Parser-1040"><a href="#Parser-1040"><span class="linenos">1040</span></a> <span class="p">),</span> -</span><span id="Parser-1041"><a href="#Parser-1041"><span class="linenos">1041</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-1042"><a href="#Parser-1042"><span class="linenos">1042</span></a> <span class="s2">"distribute"</span><span class="p">,</span> -</span><span id="Parser-1043"><a href="#Parser-1043"><span class="linenos">1043</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">),</span> -</span><span id="Parser-1044"><a href="#Parser-1044"><span class="linenos">1044</span></a> <span class="p">),</span> -</span><span id="Parser-1045"><a href="#Parser-1045"><span class="linenos">1045</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sort"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">)),</span> -</span><span id="Parser-1046"><a href="#Parser-1046"><span class="linenos">1046</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">(</span><span class="n">skip_start_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="Parser-1047"><a href="#Parser-1047"><span class="linenos">1047</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">()),</span> -</span><span id="Parser-1048"><a href="#Parser-1048"><span class="linenos">1048</span></a> <span class="p">}</span> -</span><span id="Parser-1049"><a href="#Parser-1049"><span class="linenos">1049</span></a> -</span><span id="Parser-1050"><a href="#Parser-1050"><span class="linenos">1050</span></a> <span class="n">SET_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1051"><a href="#Parser-1051"><span class="linenos">1051</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">),</span> -</span><span id="Parser-1052"><a href="#Parser-1052"><span class="linenos">1052</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">),</span> -</span><span id="Parser-1053"><a href="#Parser-1053"><span class="linenos">1053</span></a> <span class="s2">"SESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"SESSION"</span><span class="p">),</span> -</span><span id="Parser-1054"><a href="#Parser-1054"><span class="linenos">1054</span></a> <span class="s2">"TRANSACTION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(),</span> -</span><span id="Parser-1055"><a href="#Parser-1055"><span class="linenos">1055</span></a> <span class="p">}</span> -</span><span id="Parser-1056"><a href="#Parser-1056"><span class="linenos">1056</span></a> -</span><span id="Parser-1057"><a href="#Parser-1057"><span class="linenos">1057</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-1058"><a href="#Parser-1058"><span class="linenos">1058</span></a> -</span><span id="Parser-1059"><a href="#Parser-1059"><span class="linenos">1059</span></a> <span class="n">TYPE_LITERAL_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1060"><a href="#Parser-1060"><span class="linenos">1060</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-955"><a href="#Parser-955"><span class="linenos"> 955</span></a> <span class="s2">"TTL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()]),</span> +</span><span id="Parser-956"><a href="#Parser-956"><span class="linenos"> 956</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> +</span><span id="Parser-957"><a href="#Parser-957"><span class="linenos"> 957</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> +</span><span id="Parser-958"><a href="#Parser-958"><span class="linenos"> 958</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-959"><a href="#Parser-959"><span class="linenos"> 959</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> +</span><span id="Parser-960"><a href="#Parser-960"><span class="linenos"> 960</span></a> <span class="p">),</span> +</span><span id="Parser-961"><a href="#Parser-961"><span class="linenos"> 961</span></a> <span class="p">}</span> +</span><span id="Parser-962"><a href="#Parser-962"><span class="linenos"> 962</span></a> +</span><span id="Parser-963"><a href="#Parser-963"><span class="linenos"> 963</span></a> <span class="n">ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-964"><a href="#Parser-964"><span class="linenos"> 964</span></a> <span class="s2">"ADD"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_add</span><span class="p">(),</span> +</span><span id="Parser-965"><a href="#Parser-965"><span class="linenos"> 965</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_alter</span><span class="p">(),</span> +</span><span id="Parser-966"><a href="#Parser-966"><span class="linenos"> 966</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cluster</span><span class="p">(</span><span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-967"><a href="#Parser-967"><span class="linenos"> 967</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> +</span><span id="Parser-968"><a href="#Parser-968"><span class="linenos"> 968</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_drop</span><span class="p">(),</span> +</span><span id="Parser-969"><a href="#Parser-969"><span class="linenos"> 969</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_rename</span><span class="p">(),</span> +</span><span id="Parser-970"><a href="#Parser-970"><span class="linenos"> 970</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_table_set</span><span class="p">(),</span> +</span><span id="Parser-971"><a href="#Parser-971"><span class="linenos"> 971</span></a> <span class="p">}</span> +</span><span id="Parser-972"><a href="#Parser-972"><span class="linenos"> 972</span></a> +</span><span id="Parser-973"><a href="#Parser-973"><span class="linenos"> 973</span></a> <span class="n">ALTER_ALTER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-974"><a href="#Parser-974"><span class="linenos"> 974</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> +</span><span id="Parser-975"><a href="#Parser-975"><span class="linenos"> 975</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_diststyle</span><span class="p">(),</span> +</span><span id="Parser-976"><a href="#Parser-976"><span class="linenos"> 976</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(),</span> +</span><span id="Parser-977"><a href="#Parser-977"><span class="linenos"> 977</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-978"><a href="#Parser-978"><span class="linenos"> 978</span></a> <span class="p">}</span> +</span><span id="Parser-979"><a href="#Parser-979"><span class="linenos"> 979</span></a> +</span><span id="Parser-980"><a href="#Parser-980"><span class="linenos"> 980</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-981"><a href="#Parser-981"><span class="linenos"> 981</span></a> <span class="s2">"CHECK"</span><span class="p">,</span> +</span><span id="Parser-982"><a href="#Parser-982"><span class="linenos"> 982</span></a> <span class="s2">"EXCLUDE"</span><span class="p">,</span> +</span><span id="Parser-983"><a href="#Parser-983"><span class="linenos"> 983</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> +</span><span id="Parser-984"><a href="#Parser-984"><span class="linenos"> 984</span></a> <span class="s2">"LIKE"</span><span class="p">,</span> +</span><span id="Parser-985"><a href="#Parser-985"><span class="linenos"> 985</span></a> <span class="s2">"PERIOD"</span><span class="p">,</span> +</span><span id="Parser-986"><a href="#Parser-986"><span class="linenos"> 986</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> +</span><span id="Parser-987"><a href="#Parser-987"><span class="linenos"> 987</span></a> <span class="s2">"UNIQUE"</span><span class="p">,</span> +</span><span id="Parser-988"><a href="#Parser-988"><span class="linenos"> 988</span></a> <span class="p">}</span> +</span><span id="Parser-989"><a href="#Parser-989"><span class="linenos"> 989</span></a> +</span><span id="Parser-990"><a href="#Parser-990"><span class="linenos"> 990</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-991"><a href="#Parser-991"><span class="linenos"> 991</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> +</span><span id="Parser-992"><a href="#Parser-992"><span class="linenos"> 992</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> +</span><span id="Parser-993"><a href="#Parser-993"><span class="linenos"> 993</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> +</span><span id="Parser-994"><a href="#Parser-994"><span class="linenos"> 994</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_next_value_for</span><span class="p">(),</span> +</span><span id="Parser-995"><a href="#Parser-995"><span class="linenos"> 995</span></a> <span class="p">}</span> +</span><span id="Parser-996"><a href="#Parser-996"><span class="linenos"> 996</span></a> +</span><span id="Parser-997"><a href="#Parser-997"><span class="linenos"> 997</span></a> <span class="n">INVALID_FUNC_NAME_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-998"><a href="#Parser-998"><span class="linenos"> 998</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="Parser-999"><a href="#Parser-999"><span class="linenos"> 999</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> +</span><span id="Parser-1000"><a href="#Parser-1000"><span class="linenos">1000</span></a> <span class="p">}</span> +</span><span id="Parser-1001"><a href="#Parser-1001"><span class="linenos">1001</span></a> +</span><span id="Parser-1002"><a href="#Parser-1002"><span class="linenos">1002</span></a> <span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"STRUCT"</span><span class="p">}</span> +</span><span id="Parser-1003"><a href="#Parser-1003"><span class="linenos">1003</span></a> +</span><span id="Parser-1004"><a href="#Parser-1004"><span class="linenos">1004</span></a> <span class="n">KEY_VALUE_DEFINITIONS</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">)</span> +</span><span id="Parser-1005"><a href="#Parser-1005"><span class="linenos">1005</span></a> +</span><span id="Parser-1006"><a href="#Parser-1006"><span class="linenos">1006</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1007"><a href="#Parser-1007"><span class="linenos">1007</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="Parser-1008"><a href="#Parser-1008"><span class="linenos">1008</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="Parser-1009"><a href="#Parser-1009"><span class="linenos">1009</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_decode</span><span class="p">(),</span> +</span><span id="Parser-1010"><a href="#Parser-1010"><span class="linenos">1010</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> +</span><span id="Parser-1011"><a href="#Parser-1011"><span class="linenos">1011</span></a> <span class="s2">"GAP_FILL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_gap_fill</span><span class="p">(),</span> +</span><span id="Parser-1012"><a href="#Parser-1012"><span class="linenos">1012</span></a> <span class="s2">"JSON_OBJECT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(),</span> +</span><span id="Parser-1013"><a href="#Parser-1013"><span class="linenos">1013</span></a> <span class="s2">"JSON_OBJECTAGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_object</span><span class="p">(</span><span class="n">agg</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1014"><a href="#Parser-1014"><span class="linenos">1014</span></a> <span class="s2">"JSON_TABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_table</span><span class="p">(),</span> +</span><span id="Parser-1015"><a href="#Parser-1015"><span class="linenos">1015</span></a> <span class="s2">"MATCH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_against</span><span class="p">(),</span> +</span><span id="Parser-1016"><a href="#Parser-1016"><span class="linenos">1016</span></a> <span class="s2">"OPENJSON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_open_json</span><span class="p">(),</span> +</span><span id="Parser-1017"><a href="#Parser-1017"><span class="linenos">1017</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> +</span><span id="Parser-1018"><a href="#Parser-1018"><span class="linenos">1018</span></a> <span class="s2">"PREDICT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_predict</span><span class="p">(),</span> +</span><span id="Parser-1019"><a href="#Parser-1019"><span class="linenos">1019</span></a> <span class="s2">"SAFE_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1020"><a href="#Parser-1020"><span class="linenos">1020</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> +</span><span id="Parser-1021"><a href="#Parser-1021"><span class="linenos">1021</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> +</span><span id="Parser-1022"><a href="#Parser-1022"><span class="linenos">1022</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> +</span><span id="Parser-1023"><a href="#Parser-1023"><span class="linenos">1023</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1024"><a href="#Parser-1024"><span class="linenos">1024</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1025"><a href="#Parser-1025"><span class="linenos">1025</span></a> <span class="p">}</span> +</span><span id="Parser-1026"><a href="#Parser-1026"><span class="linenos">1026</span></a> +</span><span id="Parser-1027"><a href="#Parser-1027"><span class="linenos">1027</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1028"><a href="#Parser-1028"><span class="linenos">1028</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"match"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">()),</span> +</span><span id="Parser-1029"><a href="#Parser-1029"><span class="linenos">1029</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"prewhere"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_prewhere</span><span class="p">()),</span> +</span><span id="Parser-1030"><a href="#Parser-1030"><span class="linenos">1030</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"where"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()),</span> +</span><span id="Parser-1031"><a href="#Parser-1031"><span class="linenos">1031</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"group"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()),</span> +</span><span id="Parser-1032"><a href="#Parser-1032"><span class="linenos">1032</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"having"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">()),</span> +</span><span id="Parser-1033"><a href="#Parser-1033"><span class="linenos">1033</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"qualify"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">()),</span> +</span><span id="Parser-1034"><a href="#Parser-1034"><span class="linenos">1034</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"windows"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">()),</span> +</span><span id="Parser-1035"><a href="#Parser-1035"><span class="linenos">1035</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"order"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()),</span> +</span><span id="Parser-1036"><a href="#Parser-1036"><span class="linenos">1036</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> +</span><span id="Parser-1037"><a href="#Parser-1037"><span class="linenos">1037</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">()),</span> +</span><span id="Parser-1038"><a href="#Parser-1038"><span class="linenos">1038</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">()),</span> +</span><span id="Parser-1039"><a href="#Parser-1039"><span class="linenos">1039</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> +</span><span id="Parser-1040"><a href="#Parser-1040"><span class="linenos">1040</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locks</span><span class="p">()),</span> +</span><span id="Parser-1041"><a href="#Parser-1041"><span class="linenos">1041</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="Parser-1042"><a href="#Parser-1042"><span class="linenos">1042</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sample"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">(</span><span class="n">as_modifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="Parser-1043"><a href="#Parser-1043"><span class="linenos">1043</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-1044"><a href="#Parser-1044"><span class="linenos">1044</span></a> <span class="s2">"cluster"</span><span class="p">,</span> +</span><span id="Parser-1045"><a href="#Parser-1045"><span class="linenos">1045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">),</span> +</span><span id="Parser-1046"><a href="#Parser-1046"><span class="linenos">1046</span></a> <span class="p">),</span> +</span><span id="Parser-1047"><a href="#Parser-1047"><span class="linenos">1047</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-1048"><a href="#Parser-1048"><span class="linenos">1048</span></a> <span class="s2">"distribute"</span><span class="p">,</span> +</span><span id="Parser-1049"><a href="#Parser-1049"><span class="linenos">1049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">),</span> +</span><span id="Parser-1050"><a href="#Parser-1050"><span class="linenos">1050</span></a> <span class="p">),</span> +</span><span id="Parser-1051"><a href="#Parser-1051"><span class="linenos">1051</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"sort"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">)),</span> +</span><span id="Parser-1052"><a href="#Parser-1052"><span class="linenos">1052</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">(</span><span class="n">skip_start_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="Parser-1053"><a href="#Parser-1053"><span class="linenos">1053</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="p">(</span><span class="s2">"connect"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_connect</span><span class="p">()),</span> +</span><span id="Parser-1054"><a href="#Parser-1054"><span class="linenos">1054</span></a> <span class="p">}</span> +</span><span id="Parser-1055"><a href="#Parser-1055"><span class="linenos">1055</span></a> +</span><span id="Parser-1056"><a href="#Parser-1056"><span class="linenos">1056</span></a> <span class="n">SET_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1057"><a href="#Parser-1057"><span class="linenos">1057</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">),</span> +</span><span id="Parser-1058"><a href="#Parser-1058"><span class="linenos">1058</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">),</span> +</span><span id="Parser-1059"><a href="#Parser-1059"><span class="linenos">1059</span></a> <span class="s2">"SESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="s2">"SESSION"</span><span class="p">),</span> +</span><span id="Parser-1060"><a href="#Parser-1060"><span class="linenos">1060</span></a> <span class="s2">"TRANSACTION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(),</span> </span><span id="Parser-1061"><a href="#Parser-1061"><span class="linenos">1061</span></a> <span class="p">}</span> </span><span id="Parser-1062"><a href="#Parser-1062"><span class="linenos">1062</span></a> -</span><span id="Parser-1063"><a href="#Parser-1063"><span class="linenos">1063</span></a> <span class="n">TYPE_CONVERTER</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-1063"><a href="#Parser-1063"><span class="linenos">1063</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="Parser-1064"><a href="#Parser-1064"><span class="linenos">1064</span></a> -</span><span id="Parser-1065"><a href="#Parser-1065"><span class="linenos">1065</span></a> <span class="n">DDL_SELECT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">}</span> -</span><span id="Parser-1066"><a href="#Parser-1066"><span class="linenos">1066</span></a> -</span><span id="Parser-1067"><a href="#Parser-1067"><span class="linenos">1067</span></a> <span class="n">PRE_VOLATILE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">}</span> +</span><span id="Parser-1065"><a href="#Parser-1065"><span class="linenos">1065</span></a> <span class="n">TYPE_LITERAL_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1066"><a href="#Parser-1066"><span class="linenos">1066</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">JSON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-1067"><a href="#Parser-1067"><span class="linenos">1067</span></a> <span class="p">}</span> </span><span id="Parser-1068"><a href="#Parser-1068"><span class="linenos">1068</span></a> -</span><span id="Parser-1069"><a href="#Parser-1069"><span class="linenos">1069</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> -</span><span id="Parser-1070"><a href="#Parser-1070"><span class="linenos">1070</span></a> <span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1071"><a href="#Parser-1071"><span class="linenos">1071</span></a> <span class="s2">"ISOLATION"</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-1072"><a href="#Parser-1072"><span class="linenos">1072</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">),</span> -</span><span id="Parser-1073"><a href="#Parser-1073"><span class="linenos">1073</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"COMMITTED"</span><span class="p">),</span> -</span><span id="Parser-1074"><a href="#Parser-1074"><span class="linenos">1074</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"UNCOMITTED"</span><span class="p">),</span> -</span><span id="Parser-1075"><a href="#Parser-1075"><span class="linenos">1075</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"SERIALIZABLE"</span><span class="p">),</span> -</span><span id="Parser-1076"><a href="#Parser-1076"><span class="linenos">1076</span></a> <span class="p">),</span> -</span><span id="Parser-1077"><a href="#Parser-1077"><span class="linenos">1077</span></a> <span class="s2">"READ"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"WRITE"</span><span class="p">,</span> <span class="s2">"ONLY"</span><span class="p">),</span> -</span><span id="Parser-1078"><a href="#Parser-1078"><span class="linenos">1078</span></a> <span class="p">}</span> -</span><span id="Parser-1079"><a href="#Parser-1079"><span class="linenos">1079</span></a> -</span><span id="Parser-1080"><a href="#Parser-1080"><span class="linenos">1080</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> -</span><span id="Parser-1081"><a href="#Parser-1081"><span class="linenos">1081</span></a> <span class="p">(</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">()</span> -</span><span id="Parser-1082"><a href="#Parser-1082"><span class="linenos">1082</span></a> <span class="p">)</span> -</span><span id="Parser-1083"><a href="#Parser-1083"><span class="linenos">1083</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">[</span><span class="s2">"DO"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"NOTHING"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">)</span> -</span><span id="Parser-1084"><a href="#Parser-1084"><span class="linenos">1084</span></a> -</span><span id="Parser-1085"><a href="#Parser-1085"><span class="linenos">1085</span></a> <span class="n">CREATE_SEQUENCE</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1086"><a href="#Parser-1086"><span class="linenos">1086</span></a> <span class="s2">"SCALE"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> -</span><span id="Parser-1087"><a href="#Parser-1087"><span class="linenos">1087</span></a> <span class="s2">"SHARD"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> -</span><span id="Parser-1088"><a href="#Parser-1088"><span class="linenos">1088</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">,</span> <span class="s2">"CACHE"</span><span class="p">,</span> <span class="s2">"MAXVALUE"</span><span class="p">,</span> <span class="s2">"MINVALUE"</span><span class="p">),</span> -</span><span id="Parser-1089"><a href="#Parser-1089"><span class="linenos">1089</span></a> <span class="o">**</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> -</span><span id="Parser-1090"><a href="#Parser-1090"><span class="linenos">1090</span></a> <span class="p">(</span> -</span><span id="Parser-1091"><a href="#Parser-1091"><span class="linenos">1091</span></a> <span class="s2">"SESSION"</span><span class="p">,</span> -</span><span id="Parser-1092"><a href="#Parser-1092"><span class="linenos">1092</span></a> <span class="s2">"GLOBAL"</span><span class="p">,</span> -</span><span id="Parser-1093"><a href="#Parser-1093"><span class="linenos">1093</span></a> <span class="s2">"KEEP"</span><span class="p">,</span> -</span><span id="Parser-1094"><a href="#Parser-1094"><span class="linenos">1094</span></a> <span class="s2">"NOKEEP"</span><span class="p">,</span> -</span><span id="Parser-1095"><a href="#Parser-1095"><span class="linenos">1095</span></a> <span class="s2">"ORDER"</span><span class="p">,</span> -</span><span id="Parser-1096"><a href="#Parser-1096"><span class="linenos">1096</span></a> <span class="s2">"NOORDER"</span><span class="p">,</span> -</span><span id="Parser-1097"><a href="#Parser-1097"><span class="linenos">1097</span></a> <span class="s2">"NOCACHE"</span><span class="p">,</span> -</span><span id="Parser-1098"><a href="#Parser-1098"><span class="linenos">1098</span></a> <span class="s2">"CYCLE"</span><span class="p">,</span> -</span><span id="Parser-1099"><a href="#Parser-1099"><span class="linenos">1099</span></a> <span class="s2">"NOCYCLE"</span><span class="p">,</span> -</span><span id="Parser-1100"><a href="#Parser-1100"><span class="linenos">1100</span></a> <span class="s2">"NOMINVALUE"</span><span class="p">,</span> -</span><span id="Parser-1101"><a href="#Parser-1101"><span class="linenos">1101</span></a> <span class="s2">"NOMAXVALUE"</span><span class="p">,</span> -</span><span id="Parser-1102"><a href="#Parser-1102"><span class="linenos">1102</span></a> <span class="s2">"NOSCALE"</span><span class="p">,</span> -</span><span id="Parser-1103"><a href="#Parser-1103"><span class="linenos">1103</span></a> <span class="s2">"NOSHARD"</span><span class="p">,</span> -</span><span id="Parser-1104"><a href="#Parser-1104"><span class="linenos">1104</span></a> <span class="p">),</span> -</span><span id="Parser-1105"><a href="#Parser-1105"><span class="linenos">1105</span></a> <span class="nb">tuple</span><span class="p">(),</span> -</span><span id="Parser-1106"><a href="#Parser-1106"><span class="linenos">1106</span></a> <span class="p">),</span> -</span><span id="Parser-1107"><a href="#Parser-1107"><span class="linenos">1107</span></a> <span class="p">}</span> -</span><span id="Parser-1108"><a href="#Parser-1108"><span class="linenos">1108</span></a> -</span><span id="Parser-1109"><a href="#Parser-1109"><span class="linenos">1109</span></a> <span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOR"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)}</span> -</span><span id="Parser-1110"><a href="#Parser-1110"><span class="linenos">1110</span></a> -</span><span id="Parser-1111"><a href="#Parser-1111"><span class="linenos">1111</span></a> <span class="n">USABLES</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">())</span> -</span><span id="Parser-1112"><a href="#Parser-1112"><span class="linenos">1112</span></a> -</span><span id="Parser-1113"><a href="#Parser-1113"><span class="linenos">1113</span></a> <span class="n">CAST_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,))</span> +</span><span id="Parser-1069"><a href="#Parser-1069"><span class="linenos">1069</span></a> <span class="n">TYPE_CONVERTER</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-1070"><a href="#Parser-1070"><span class="linenos">1070</span></a> +</span><span id="Parser-1071"><a href="#Parser-1071"><span class="linenos">1071</span></a> <span class="n">DDL_SELECT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">}</span> +</span><span id="Parser-1072"><a href="#Parser-1072"><span class="linenos">1072</span></a> +</span><span id="Parser-1073"><a href="#Parser-1073"><span class="linenos">1073</span></a> <span class="n">PRE_VOLATILE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">}</span> +</span><span id="Parser-1074"><a href="#Parser-1074"><span class="linenos">1074</span></a> +</span><span id="Parser-1075"><a href="#Parser-1075"><span class="linenos">1075</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> +</span><span id="Parser-1076"><a href="#Parser-1076"><span class="linenos">1076</span></a> <span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1077"><a href="#Parser-1077"><span class="linenos">1077</span></a> <span class="s2">"ISOLATION"</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-1078"><a href="#Parser-1078"><span class="linenos">1078</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">),</span> +</span><span id="Parser-1079"><a href="#Parser-1079"><span class="linenos">1079</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"COMMITTED"</span><span class="p">),</span> +</span><span id="Parser-1080"><a href="#Parser-1080"><span class="linenos">1080</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"READ"</span><span class="p">,</span> <span class="s2">"UNCOMITTED"</span><span class="p">),</span> +</span><span id="Parser-1081"><a href="#Parser-1081"><span class="linenos">1081</span></a> <span class="p">(</span><span class="s2">"LEVEL"</span><span class="p">,</span> <span class="s2">"SERIALIZABLE"</span><span class="p">),</span> +</span><span id="Parser-1082"><a href="#Parser-1082"><span class="linenos">1082</span></a> <span class="p">),</span> +</span><span id="Parser-1083"><a href="#Parser-1083"><span class="linenos">1083</span></a> <span class="s2">"READ"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"WRITE"</span><span class="p">,</span> <span class="s2">"ONLY"</span><span class="p">),</span> +</span><span id="Parser-1084"><a href="#Parser-1084"><span class="linenos">1084</span></a> <span class="p">}</span> +</span><span id="Parser-1085"><a href="#Parser-1085"><span class="linenos">1085</span></a> +</span><span id="Parser-1086"><a href="#Parser-1086"><span class="linenos">1086</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> +</span><span id="Parser-1087"><a href="#Parser-1087"><span class="linenos">1087</span></a> <span class="p">(</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">()</span> +</span><span id="Parser-1088"><a href="#Parser-1088"><span class="linenos">1088</span></a> <span class="p">)</span> +</span><span id="Parser-1089"><a href="#Parser-1089"><span class="linenos">1089</span></a> <span class="n">CONFLICT_ACTIONS</span><span class="p">[</span><span class="s2">"DO"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"NOTHING"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">)</span> +</span><span id="Parser-1090"><a href="#Parser-1090"><span class="linenos">1090</span></a> +</span><span id="Parser-1091"><a href="#Parser-1091"><span class="linenos">1091</span></a> <span class="n">CREATE_SEQUENCE</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1092"><a href="#Parser-1092"><span class="linenos">1092</span></a> <span class="s2">"SCALE"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> +</span><span id="Parser-1093"><a href="#Parser-1093"><span class="linenos">1093</span></a> <span class="s2">"SHARD"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"EXTEND"</span><span class="p">,</span> <span class="s2">"NOEXTEND"</span><span class="p">),</span> +</span><span id="Parser-1094"><a href="#Parser-1094"><span class="linenos">1094</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">,</span> <span class="s2">"CACHE"</span><span class="p">,</span> <span class="s2">"MAXVALUE"</span><span class="p">,</span> <span class="s2">"MINVALUE"</span><span class="p">),</span> +</span><span id="Parser-1095"><a href="#Parser-1095"><span class="linenos">1095</span></a> <span class="o">**</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span> +</span><span id="Parser-1096"><a href="#Parser-1096"><span class="linenos">1096</span></a> <span class="p">(</span> +</span><span id="Parser-1097"><a href="#Parser-1097"><span class="linenos">1097</span></a> <span class="s2">"SESSION"</span><span class="p">,</span> +</span><span id="Parser-1098"><a href="#Parser-1098"><span class="linenos">1098</span></a> <span class="s2">"GLOBAL"</span><span class="p">,</span> +</span><span id="Parser-1099"><a href="#Parser-1099"><span class="linenos">1099</span></a> <span class="s2">"KEEP"</span><span class="p">,</span> +</span><span id="Parser-1100"><a href="#Parser-1100"><span class="linenos">1100</span></a> <span class="s2">"NOKEEP"</span><span class="p">,</span> +</span><span id="Parser-1101"><a href="#Parser-1101"><span class="linenos">1101</span></a> <span class="s2">"ORDER"</span><span class="p">,</span> +</span><span id="Parser-1102"><a href="#Parser-1102"><span class="linenos">1102</span></a> <span class="s2">"NOORDER"</span><span class="p">,</span> +</span><span id="Parser-1103"><a href="#Parser-1103"><span class="linenos">1103</span></a> <span class="s2">"NOCACHE"</span><span class="p">,</span> +</span><span id="Parser-1104"><a href="#Parser-1104"><span class="linenos">1104</span></a> <span class="s2">"CYCLE"</span><span class="p">,</span> +</span><span id="Parser-1105"><a href="#Parser-1105"><span class="linenos">1105</span></a> <span class="s2">"NOCYCLE"</span><span class="p">,</span> +</span><span id="Parser-1106"><a href="#Parser-1106"><span class="linenos">1106</span></a> <span class="s2">"NOMINVALUE"</span><span class="p">,</span> +</span><span id="Parser-1107"><a href="#Parser-1107"><span class="linenos">1107</span></a> <span class="s2">"NOMAXVALUE"</span><span class="p">,</span> +</span><span id="Parser-1108"><a href="#Parser-1108"><span class="linenos">1108</span></a> <span class="s2">"NOSCALE"</span><span class="p">,</span> +</span><span id="Parser-1109"><a href="#Parser-1109"><span class="linenos">1109</span></a> <span class="s2">"NOSHARD"</span><span class="p">,</span> +</span><span id="Parser-1110"><a href="#Parser-1110"><span class="linenos">1110</span></a> <span class="p">),</span> +</span><span id="Parser-1111"><a href="#Parser-1111"><span class="linenos">1111</span></a> <span class="nb">tuple</span><span class="p">(),</span> +</span><span id="Parser-1112"><a href="#Parser-1112"><span class="linenos">1112</span></a> <span class="p">),</span> +</span><span id="Parser-1113"><a href="#Parser-1113"><span class="linenos">1113</span></a> <span class="p">}</span> </span><span id="Parser-1114"><a href="#Parser-1114"><span class="linenos">1114</span></a> -</span><span id="Parser-1115"><a href="#Parser-1115"><span class="linenos">1115</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> +</span><span id="Parser-1115"><a href="#Parser-1115"><span class="linenos">1115</span></a> <span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOR"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)}</span> </span><span id="Parser-1116"><a href="#Parser-1116"><span class="linenos">1116</span></a> -</span><span id="Parser-1117"><a href="#Parser-1117"><span class="linenos">1117</span></a> <span class="n">CLONE_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CLONE"</span><span class="p">,</span> <span class="s2">"COPY"</span><span class="p">}</span> -</span><span id="Parser-1118"><a href="#Parser-1118"><span class="linenos">1118</span></a> <span class="n">HISTORICAL_DATA_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"OFFSET"</span><span class="p">,</span> <span class="s2">"STATEMENT"</span><span class="p">,</span> <span class="s2">"STREAM"</span><span class="p">}</span> -</span><span id="Parser-1119"><a href="#Parser-1119"><span class="linenos">1119</span></a> -</span><span id="Parser-1120"><a href="#Parser-1120"><span class="linenos">1120</span></a> <span class="n">OPCLASS_FOLLOW_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ASC"</span><span class="p">,</span> <span class="s2">"DESC"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">}</span> -</span><span id="Parser-1121"><a href="#Parser-1121"><span class="linenos">1121</span></a> -</span><span id="Parser-1122"><a href="#Parser-1122"><span class="linenos">1122</span></a> <span class="n">OPTYPE_FOLLOW_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">}</span> -</span><span id="Parser-1123"><a href="#Parser-1123"><span class="linenos">1123</span></a> -</span><span id="Parser-1124"><a href="#Parser-1124"><span class="linenos">1124</span></a> <span class="n">TABLE_INDEX_HINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORCE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">}</span> +</span><span id="Parser-1117"><a href="#Parser-1117"><span class="linenos">1117</span></a> <span class="n">USABLES</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">())</span> +</span><span id="Parser-1118"><a href="#Parser-1118"><span class="linenos">1118</span></a> +</span><span id="Parser-1119"><a href="#Parser-1119"><span class="linenos">1119</span></a> <span class="n">CAST_ACTIONS</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">((</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,))</span> +</span><span id="Parser-1120"><a href="#Parser-1120"><span class="linenos">1120</span></a> +</span><span id="Parser-1121"><a href="#Parser-1121"><span class="linenos">1121</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> +</span><span id="Parser-1122"><a href="#Parser-1122"><span class="linenos">1122</span></a> +</span><span id="Parser-1123"><a href="#Parser-1123"><span class="linenos">1123</span></a> <span class="n">CLONE_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CLONE"</span><span class="p">,</span> <span class="s2">"COPY"</span><span class="p">}</span> +</span><span id="Parser-1124"><a href="#Parser-1124"><span class="linenos">1124</span></a> <span class="n">HISTORICAL_DATA_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"OFFSET"</span><span class="p">,</span> <span class="s2">"STATEMENT"</span><span class="p">,</span> <span class="s2">"STREAM"</span><span class="p">}</span> </span><span id="Parser-1125"><a href="#Parser-1125"><span class="linenos">1125</span></a> -</span><span id="Parser-1126"><a href="#Parser-1126"><span class="linenos">1126</span></a> <span class="n">VIEW_ATTRIBUTES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ENCRYPTION"</span><span class="p">,</span> <span class="s2">"SCHEMABINDING"</span><span class="p">,</span> <span class="s2">"VIEW_METADATA"</span><span class="p">}</span> +</span><span id="Parser-1126"><a href="#Parser-1126"><span class="linenos">1126</span></a> <span class="n">OPCLASS_FOLLOW_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ASC"</span><span class="p">,</span> <span class="s2">"DESC"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">}</span> </span><span id="Parser-1127"><a href="#Parser-1127"><span class="linenos">1127</span></a> -</span><span id="Parser-1128"><a href="#Parser-1128"><span class="linenos">1128</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> -</span><span id="Parser-1129"><a href="#Parser-1129"><span class="linenos">1129</span></a> <span class="n">WINDOW_BEFORE_PAREN_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">}</span> -</span><span id="Parser-1130"><a href="#Parser-1130"><span class="linenos">1130</span></a> <span class="n">WINDOW_SIDES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOLLOWING"</span><span class="p">,</span> <span class="s2">"PRECEDING"</span><span class="p">}</span> +</span><span id="Parser-1128"><a href="#Parser-1128"><span class="linenos">1128</span></a> <span class="n">OPTYPE_FOLLOW_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">}</span> +</span><span id="Parser-1129"><a href="#Parser-1129"><span class="linenos">1129</span></a> +</span><span id="Parser-1130"><a href="#Parser-1130"><span class="linenos">1130</span></a> <span class="n">TABLE_INDEX_HINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORCE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">}</span> </span><span id="Parser-1131"><a href="#Parser-1131"><span class="linenos">1131</span></a> -</span><span id="Parser-1132"><a href="#Parser-1132"><span class="linenos">1132</span></a> <span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> +</span><span id="Parser-1132"><a href="#Parser-1132"><span class="linenos">1132</span></a> <span class="n">VIEW_ATTRIBUTES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ENCRYPTION"</span><span class="p">,</span> <span class="s2">"SCHEMABINDING"</span><span class="p">,</span> <span class="s2">"VIEW_METADATA"</span><span class="p">}</span> </span><span id="Parser-1133"><a href="#Parser-1133"><span class="linenos">1133</span></a> -</span><span id="Parser-1134"><a href="#Parser-1134"><span class="linenos">1134</span></a> <span class="n">FETCH_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">}</span> -</span><span id="Parser-1135"><a href="#Parser-1135"><span class="linenos">1135</span></a> -</span><span id="Parser-1136"><a href="#Parser-1136"><span class="linenos">1136</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> +</span><span id="Parser-1134"><a href="#Parser-1134"><span class="linenos">1134</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> +</span><span id="Parser-1135"><a href="#Parser-1135"><span class="linenos">1135</span></a> <span class="n">WINDOW_BEFORE_PAREN_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">}</span> +</span><span id="Parser-1136"><a href="#Parser-1136"><span class="linenos">1136</span></a> <span class="n">WINDOW_SIDES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FOLLOWING"</span><span class="p">,</span> <span class="s2">"PRECEDING"</span><span class="p">}</span> </span><span id="Parser-1137"><a href="#Parser-1137"><span class="linenos">1137</span></a> -</span><span id="Parser-1138"><a href="#Parser-1138"><span class="linenos">1138</span></a> <span class="n">DISTINCT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">}</span> +</span><span id="Parser-1138"><a href="#Parser-1138"><span class="linenos">1138</span></a> <span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">}</span> </span><span id="Parser-1139"><a href="#Parser-1139"><span class="linenos">1139</span></a> -</span><span id="Parser-1140"><a href="#Parser-1140"><span class="linenos">1140</span></a> <span class="n">NULL_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">}</span> +</span><span id="Parser-1140"><a href="#Parser-1140"><span class="linenos">1140</span></a> <span class="n">FETCH_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">}</span> </span><span id="Parser-1141"><a href="#Parser-1141"><span class="linenos">1141</span></a> -</span><span id="Parser-1142"><a href="#Parser-1142"><span class="linenos">1142</span></a> <span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="n">SET_OPERATIONS</span> +</span><span id="Parser-1142"><a href="#Parser-1142"><span class="linenos">1142</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> </span><span id="Parser-1143"><a href="#Parser-1143"><span class="linenos">1143</span></a> -</span><span id="Parser-1144"><a href="#Parser-1144"><span class="linenos">1144</span></a> <span class="n">SELECT_START_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> +</span><span id="Parser-1144"><a href="#Parser-1144"><span class="linenos">1144</span></a> <span class="n">DISTINCT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">}</span> </span><span id="Parser-1145"><a href="#Parser-1145"><span class="linenos">1145</span></a> -</span><span id="Parser-1146"><a href="#Parser-1146"><span class="linenos">1146</span></a> <span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FILE_FORMAT"</span><span class="p">,</span> <span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">,</span> <span class="s2">"CREDENTIAL"</span><span class="p">}</span> +</span><span id="Parser-1146"><a href="#Parser-1146"><span class="linenos">1146</span></a> <span class="n">NULL_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">}</span> </span><span id="Parser-1147"><a href="#Parser-1147"><span class="linenos">1147</span></a> -</span><span id="Parser-1148"><a href="#Parser-1148"><span class="linenos">1148</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1148"><a href="#Parser-1148"><span class="linenos">1148</span></a> <span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="n">SET_OPERATIONS</span> </span><span id="Parser-1149"><a href="#Parser-1149"><span class="linenos">1149</span></a> -</span><span id="Parser-1150"><a href="#Parser-1150"><span class="linenos">1150</span></a> <span class="n">PREFIXED_PIVOT_COLUMNS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1151"><a href="#Parser-1151"><span class="linenos">1151</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1152"><a href="#Parser-1152"><span class="linenos">1152</span></a> -</span><span id="Parser-1153"><a href="#Parser-1153"><span class="linenos">1153</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1154"><a href="#Parser-1154"><span class="linenos">1154</span></a> -</span><span id="Parser-1155"><a href="#Parser-1155"><span class="linenos">1155</span></a> <span class="c1"># Whether ADD is present for each column added by ALTER TABLE</span> -</span><span id="Parser-1156"><a href="#Parser-1156"><span class="linenos">1156</span></a> <span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1157"><a href="#Parser-1157"><span class="linenos">1157</span></a> -</span><span id="Parser-1158"><a href="#Parser-1158"><span class="linenos">1158</span></a> <span class="c1"># Whether the table sample clause expects CSV syntax</span> -</span><span id="Parser-1159"><a href="#Parser-1159"><span class="linenos">1159</span></a> <span class="n">TABLESAMPLE_CSV</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1150"><a href="#Parser-1150"><span class="linenos">1150</span></a> <span class="n">SELECT_START_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> +</span><span id="Parser-1151"><a href="#Parser-1151"><span class="linenos">1151</span></a> +</span><span id="Parser-1152"><a href="#Parser-1152"><span class="linenos">1152</span></a> <span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"FILE_FORMAT"</span><span class="p">,</span> <span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">,</span> <span class="s2">"CREDENTIAL"</span><span class="p">}</span> +</span><span id="Parser-1153"><a href="#Parser-1153"><span class="linenos">1153</span></a> +</span><span id="Parser-1154"><a href="#Parser-1154"><span class="linenos">1154</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1155"><a href="#Parser-1155"><span class="linenos">1155</span></a> +</span><span id="Parser-1156"><a href="#Parser-1156"><span class="linenos">1156</span></a> <span class="n">PREFIXED_PIVOT_COLUMNS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1157"><a href="#Parser-1157"><span class="linenos">1157</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1158"><a href="#Parser-1158"><span class="linenos">1158</span></a> +</span><span id="Parser-1159"><a href="#Parser-1159"><span class="linenos">1159</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Parser-1160"><a href="#Parser-1160"><span class="linenos">1160</span></a> -</span><span id="Parser-1161"><a href="#Parser-1161"><span class="linenos">1161</span></a> <span class="c1"># The default method used for table sampling</span> -</span><span id="Parser-1162"><a href="#Parser-1162"><span class="linenos">1162</span></a> <span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1161"><a href="#Parser-1161"><span class="linenos">1161</span></a> <span class="c1"># Whether ADD is present for each column added by ALTER TABLE</span> +</span><span id="Parser-1162"><a href="#Parser-1162"><span class="linenos">1162</span></a> <span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Parser-1163"><a href="#Parser-1163"><span class="linenos">1163</span></a> -</span><span id="Parser-1164"><a href="#Parser-1164"><span class="linenos">1164</span></a> <span class="c1"># Whether the SET command needs a delimiter (e.g. "=") for assignments</span> -</span><span id="Parser-1165"><a href="#Parser-1165"><span class="linenos">1165</span></a> <span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1164"><a href="#Parser-1164"><span class="linenos">1164</span></a> <span class="c1"># Whether the table sample clause expects CSV syntax</span> +</span><span id="Parser-1165"><a href="#Parser-1165"><span class="linenos">1165</span></a> <span class="n">TABLESAMPLE_CSV</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Parser-1166"><a href="#Parser-1166"><span class="linenos">1166</span></a> -</span><span id="Parser-1167"><a href="#Parser-1167"><span class="linenos">1167</span></a> <span class="c1"># Whether the TRIM function expects the characters to trim as its first argument</span> -</span><span id="Parser-1168"><a href="#Parser-1168"><span class="linenos">1168</span></a> <span class="n">TRIM_PATTERN_FIRST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1167"><a href="#Parser-1167"><span class="linenos">1167</span></a> <span class="c1"># The default method used for table sampling</span> +</span><span id="Parser-1168"><a href="#Parser-1168"><span class="linenos">1168</span></a> <span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-1169"><a href="#Parser-1169"><span class="linenos">1169</span></a> -</span><span id="Parser-1170"><a href="#Parser-1170"><span class="linenos">1170</span></a> <span class="c1"># Whether string aliases are supported `SELECT COUNT(*) 'count'`</span> -</span><span id="Parser-1171"><a href="#Parser-1171"><span class="linenos">1171</span></a> <span class="n">STRING_ALIASES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1170"><a href="#Parser-1170"><span class="linenos">1170</span></a> <span class="c1"># Whether the SET command needs a delimiter (e.g. "=") for assignments</span> +</span><span id="Parser-1171"><a href="#Parser-1171"><span class="linenos">1171</span></a> <span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Parser-1172"><a href="#Parser-1172"><span class="linenos">1172</span></a> -</span><span id="Parser-1173"><a href="#Parser-1173"><span class="linenos">1173</span></a> <span class="c1"># Whether query modifiers such as LIMIT are attached to the UNION node (vs its right operand)</span> -</span><span id="Parser-1174"><a href="#Parser-1174"><span class="linenos">1174</span></a> <span class="n">MODIFIERS_ATTACHED_TO_UNION</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1175"><a href="#Parser-1175"><span class="linenos">1175</span></a> <span class="n">UNION_MODIFIERS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"order"</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">}</span> -</span><span id="Parser-1176"><a href="#Parser-1176"><span class="linenos">1176</span></a> -</span><span id="Parser-1177"><a href="#Parser-1177"><span class="linenos">1177</span></a> <span class="c1"># Whether to parse IF statements that aren't followed by a left parenthesis as commands</span> -</span><span id="Parser-1178"><a href="#Parser-1178"><span class="linenos">1178</span></a> <span class="n">NO_PAREN_IF_COMMANDS</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1179"><a href="#Parser-1179"><span class="linenos">1179</span></a> -</span><span id="Parser-1180"><a href="#Parser-1180"><span class="linenos">1180</span></a> <span class="c1"># Whether the -> and ->> operators expect documents of type JSON (e.g. Postgres)</span> -</span><span id="Parser-1181"><a href="#Parser-1181"><span class="linenos">1181</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1173"><a href="#Parser-1173"><span class="linenos">1173</span></a> <span class="c1"># Whether the TRIM function expects the characters to trim as its first argument</span> +</span><span id="Parser-1174"><a href="#Parser-1174"><span class="linenos">1174</span></a> <span class="n">TRIM_PATTERN_FIRST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1175"><a href="#Parser-1175"><span class="linenos">1175</span></a> +</span><span id="Parser-1176"><a href="#Parser-1176"><span class="linenos">1176</span></a> <span class="c1"># Whether string aliases are supported `SELECT COUNT(*) 'count'`</span> +</span><span id="Parser-1177"><a href="#Parser-1177"><span class="linenos">1177</span></a> <span class="n">STRING_ALIASES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1178"><a href="#Parser-1178"><span class="linenos">1178</span></a> +</span><span id="Parser-1179"><a href="#Parser-1179"><span class="linenos">1179</span></a> <span class="c1"># Whether query modifiers such as LIMIT are attached to the UNION node (vs its right operand)</span> +</span><span id="Parser-1180"><a href="#Parser-1180"><span class="linenos">1180</span></a> <span class="n">MODIFIERS_ATTACHED_TO_UNION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1181"><a href="#Parser-1181"><span class="linenos">1181</span></a> <span class="n">UNION_MODIFIERS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"order"</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">}</span> </span><span id="Parser-1182"><a href="#Parser-1182"><span class="linenos">1182</span></a> -</span><span id="Parser-1183"><a href="#Parser-1183"><span class="linenos">1183</span></a> <span class="c1"># Whether the `:` operator is used to extract a value from a JSON document</span> -</span><span id="Parser-1184"><a href="#Parser-1184"><span class="linenos">1184</span></a> <span class="n">COLON_IS_JSON_EXTRACT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1183"><a href="#Parser-1183"><span class="linenos">1183</span></a> <span class="c1"># Whether to parse IF statements that aren't followed by a left parenthesis as commands</span> +</span><span id="Parser-1184"><a href="#Parser-1184"><span class="linenos">1184</span></a> <span class="n">NO_PAREN_IF_COMMANDS</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Parser-1185"><a href="#Parser-1185"><span class="linenos">1185</span></a> -</span><span id="Parser-1186"><a href="#Parser-1186"><span class="linenos">1186</span></a> <span class="c1"># Whether or not a VALUES keyword needs to be followed by '(' to form a VALUES clause.</span> -</span><span id="Parser-1187"><a href="#Parser-1187"><span class="linenos">1187</span></a> <span class="c1"># If this is True and '(' is not found, the keyword will be treated as an identifier</span> -</span><span id="Parser-1188"><a href="#Parser-1188"><span class="linenos">1188</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1189"><a href="#Parser-1189"><span class="linenos">1189</span></a> -</span><span id="Parser-1190"><a href="#Parser-1190"><span class="linenos">1190</span></a> <span class="c1"># Whether implicit unnesting is supported, e.g. SELECT 1 FROM y.z AS z, z.a (Redshift)</span> -</span><span id="Parser-1191"><a href="#Parser-1191"><span class="linenos">1191</span></a> <span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1192"><a href="#Parser-1192"><span class="linenos">1192</span></a> -</span><span id="Parser-1193"><a href="#Parser-1193"><span class="linenos">1193</span></a> <span class="c1"># Whether or not interval spans are supported, INTERVAL 1 YEAR TO MONTHS</span> -</span><span id="Parser-1194"><a href="#Parser-1194"><span class="linenos">1194</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1186"><a href="#Parser-1186"><span class="linenos">1186</span></a> <span class="c1"># Whether the -> and ->> operators expect documents of type JSON (e.g. Postgres)</span> +</span><span id="Parser-1187"><a href="#Parser-1187"><span class="linenos">1187</span></a> <span class="n">JSON_ARROWS_REQUIRE_JSON_TYPE</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1188"><a href="#Parser-1188"><span class="linenos">1188</span></a> +</span><span id="Parser-1189"><a href="#Parser-1189"><span class="linenos">1189</span></a> <span class="c1"># Whether the `:` operator is used to extract a value from a JSON document</span> +</span><span id="Parser-1190"><a href="#Parser-1190"><span class="linenos">1190</span></a> <span class="n">COLON_IS_JSON_EXTRACT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1191"><a href="#Parser-1191"><span class="linenos">1191</span></a> +</span><span id="Parser-1192"><a href="#Parser-1192"><span class="linenos">1192</span></a> <span class="c1"># Whether or not a VALUES keyword needs to be followed by '(' to form a VALUES clause.</span> +</span><span id="Parser-1193"><a href="#Parser-1193"><span class="linenos">1193</span></a> <span class="c1"># If this is True and '(' is not found, the keyword will be treated as an identifier</span> +</span><span id="Parser-1194"><a href="#Parser-1194"><span class="linenos">1194</span></a> <span class="n">VALUES_FOLLOWED_BY_PAREN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Parser-1195"><a href="#Parser-1195"><span class="linenos">1195</span></a> -</span><span id="Parser-1196"><a href="#Parser-1196"><span class="linenos">1196</span></a> <span class="c1"># Whether a PARTITION clause can follow a table reference</span> -</span><span id="Parser-1197"><a href="#Parser-1197"><span class="linenos">1197</span></a> <span class="n">SUPPORTS_PARTITION_SELECTION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1196"><a href="#Parser-1196"><span class="linenos">1196</span></a> <span class="c1"># Whether implicit unnesting is supported, e.g. SELECT 1 FROM y.z AS z, z.a (Redshift)</span> +</span><span id="Parser-1197"><a href="#Parser-1197"><span class="linenos">1197</span></a> <span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Parser-1198"><a href="#Parser-1198"><span class="linenos">1198</span></a> -</span><span id="Parser-1199"><a href="#Parser-1199"><span class="linenos">1199</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-1200"><a href="#Parser-1200"><span class="linenos">1200</span></a> <span class="s2">"error_level"</span><span class="p">,</span> -</span><span id="Parser-1201"><a href="#Parser-1201"><span class="linenos">1201</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> -</span><span id="Parser-1202"><a href="#Parser-1202"><span class="linenos">1202</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> -</span><span id="Parser-1203"><a href="#Parser-1203"><span class="linenos">1203</span></a> <span class="s2">"dialect"</span><span class="p">,</span> -</span><span id="Parser-1204"><a href="#Parser-1204"><span class="linenos">1204</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="Parser-1205"><a href="#Parser-1205"><span class="linenos">1205</span></a> <span class="s2">"errors"</span><span class="p">,</span> -</span><span id="Parser-1206"><a href="#Parser-1206"><span class="linenos">1206</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> -</span><span id="Parser-1207"><a href="#Parser-1207"><span class="linenos">1207</span></a> <span class="s2">"_index"</span><span class="p">,</span> -</span><span id="Parser-1208"><a href="#Parser-1208"><span class="linenos">1208</span></a> <span class="s2">"_curr"</span><span class="p">,</span> -</span><span id="Parser-1209"><a href="#Parser-1209"><span class="linenos">1209</span></a> <span class="s2">"_next"</span><span class="p">,</span> -</span><span id="Parser-1210"><a href="#Parser-1210"><span class="linenos">1210</span></a> <span class="s2">"_prev"</span><span class="p">,</span> -</span><span id="Parser-1211"><a href="#Parser-1211"><span class="linenos">1211</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> -</span><span id="Parser-1212"><a href="#Parser-1212"><span class="linenos">1212</span></a> <span class="p">)</span> -</span><span id="Parser-1213"><a href="#Parser-1213"><span class="linenos">1213</span></a> -</span><span id="Parser-1214"><a href="#Parser-1214"><span class="linenos">1214</span></a> <span class="c1"># Autofilled</span> -</span><span id="Parser-1215"><a href="#Parser-1215"><span class="linenos">1215</span></a> <span class="n">SHOW_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-1216"><a href="#Parser-1216"><span class="linenos">1216</span></a> <span class="n">SET_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-1217"><a href="#Parser-1217"><span class="linenos">1217</span></a> -</span><span id="Parser-1218"><a href="#Parser-1218"><span class="linenos">1218</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Parser-1219"><a href="#Parser-1219"><span class="linenos">1219</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-1220"><a href="#Parser-1220"><span class="linenos">1220</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-1221"><a href="#Parser-1221"><span class="linenos">1221</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> -</span><span id="Parser-1222"><a href="#Parser-1222"><span class="linenos">1222</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> -</span><span id="Parser-1223"><a href="#Parser-1223"><span class="linenos">1223</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="Parser-1224"><a href="#Parser-1224"><span class="linenos">1224</span></a> <span class="p">):</span> -</span><span id="Parser-1225"><a href="#Parser-1225"><span class="linenos">1225</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="Parser-1226"><a href="#Parser-1226"><span class="linenos">1226</span></a> -</span><span id="Parser-1227"><a href="#Parser-1227"><span class="linenos">1227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="Parser-1228"><a href="#Parser-1228"><span class="linenos">1228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> -</span><span id="Parser-1229"><a href="#Parser-1229"><span class="linenos">1229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> -</span><span id="Parser-1230"><a href="#Parser-1230"><span class="linenos">1230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="Parser-1231"><a href="#Parser-1231"><span class="linenos">1231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Parser-1199"><a href="#Parser-1199"><span class="linenos">1199</span></a> <span class="c1"># Whether or not interval spans are supported, INTERVAL 1 YEAR TO MONTHS</span> +</span><span id="Parser-1200"><a href="#Parser-1200"><span class="linenos">1200</span></a> <span class="n">INTERVAL_SPANS</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1201"><a href="#Parser-1201"><span class="linenos">1201</span></a> +</span><span id="Parser-1202"><a href="#Parser-1202"><span class="linenos">1202</span></a> <span class="c1"># Whether a PARTITION clause can follow a table reference</span> +</span><span id="Parser-1203"><a href="#Parser-1203"><span class="linenos">1203</span></a> <span class="n">SUPPORTS_PARTITION_SELECTION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1204"><a href="#Parser-1204"><span class="linenos">1204</span></a> +</span><span id="Parser-1205"><a href="#Parser-1205"><span class="linenos">1205</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-1206"><a href="#Parser-1206"><span class="linenos">1206</span></a> <span class="s2">"error_level"</span><span class="p">,</span> +</span><span id="Parser-1207"><a href="#Parser-1207"><span class="linenos">1207</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> +</span><span id="Parser-1208"><a href="#Parser-1208"><span class="linenos">1208</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> +</span><span id="Parser-1209"><a href="#Parser-1209"><span class="linenos">1209</span></a> <span class="s2">"dialect"</span><span class="p">,</span> +</span><span id="Parser-1210"><a href="#Parser-1210"><span class="linenos">1210</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="Parser-1211"><a href="#Parser-1211"><span class="linenos">1211</span></a> <span class="s2">"errors"</span><span class="p">,</span> +</span><span id="Parser-1212"><a href="#Parser-1212"><span class="linenos">1212</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> +</span><span id="Parser-1213"><a href="#Parser-1213"><span class="linenos">1213</span></a> <span class="s2">"_index"</span><span class="p">,</span> +</span><span id="Parser-1214"><a href="#Parser-1214"><span class="linenos">1214</span></a> <span class="s2">"_curr"</span><span class="p">,</span> +</span><span id="Parser-1215"><a href="#Parser-1215"><span class="linenos">1215</span></a> <span class="s2">"_next"</span><span class="p">,</span> +</span><span id="Parser-1216"><a href="#Parser-1216"><span class="linenos">1216</span></a> <span class="s2">"_prev"</span><span class="p">,</span> +</span><span id="Parser-1217"><a href="#Parser-1217"><span class="linenos">1217</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> +</span><span id="Parser-1218"><a href="#Parser-1218"><span class="linenos">1218</span></a> <span class="p">)</span> +</span><span id="Parser-1219"><a href="#Parser-1219"><span class="linenos">1219</span></a> +</span><span id="Parser-1220"><a href="#Parser-1220"><span class="linenos">1220</span></a> <span class="c1"># Autofilled</span> +</span><span id="Parser-1221"><a href="#Parser-1221"><span class="linenos">1221</span></a> <span class="n">SHOW_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-1222"><a href="#Parser-1222"><span class="linenos">1222</span></a> <span class="n">SET_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-1223"><a href="#Parser-1223"><span class="linenos">1223</span></a> +</span><span id="Parser-1224"><a href="#Parser-1224"><span class="linenos">1224</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Parser-1225"><a href="#Parser-1225"><span class="linenos">1225</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-1226"><a href="#Parser-1226"><span class="linenos">1226</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-1227"><a href="#Parser-1227"><span class="linenos">1227</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> +</span><span id="Parser-1228"><a href="#Parser-1228"><span class="linenos">1228</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> +</span><span id="Parser-1229"><a href="#Parser-1229"><span class="linenos">1229</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="Parser-1230"><a href="#Parser-1230"><span class="linenos">1230</span></a> <span class="p">):</span> +</span><span id="Parser-1231"><a href="#Parser-1231"><span class="linenos">1231</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> </span><span id="Parser-1232"><a href="#Parser-1232"><span class="linenos">1232</span></a> -</span><span id="Parser-1233"><a href="#Parser-1233"><span class="linenos">1233</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Parser-1234"><a href="#Parser-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Parser-1235"><a href="#Parser-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1236"><a href="#Parser-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1237"><a href="#Parser-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Parser-1238"><a href="#Parser-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1239"><a href="#Parser-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1240"><a href="#Parser-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1241"><a href="#Parser-1241"><span class="linenos">1241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1242"><a href="#Parser-1242"><span class="linenos">1242</span></a> -</span><span id="Parser-1243"><a href="#Parser-1243"><span class="linenos">1243</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> -</span><span id="Parser-1244"><a href="#Parser-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1245"><a href="#Parser-1245"><span class="linenos">1245</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-1246"><a href="#Parser-1246"><span class="linenos">1246</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-1247"><a href="#Parser-1247"><span class="linenos">1247</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> -</span><span id="Parser-1248"><a href="#Parser-1248"><span class="linenos">1248</span></a><span class="sd"> per parsed SQL statement.</span> -</span><span id="Parser-1249"><a href="#Parser-1249"><span class="linenos">1249</span></a> -</span><span id="Parser-1250"><a href="#Parser-1250"><span class="linenos">1250</span></a><span class="sd"> Args:</span> -</span><span id="Parser-1251"><a href="#Parser-1251"><span class="linenos">1251</span></a><span class="sd"> raw_tokens: The list of tokens.</span> -</span><span id="Parser-1252"><a href="#Parser-1252"><span class="linenos">1252</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser-1253"><a href="#Parser-1253"><span class="linenos">1253</span></a> -</span><span id="Parser-1254"><a href="#Parser-1254"><span class="linenos">1254</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-1255"><a href="#Parser-1255"><span class="linenos">1255</span></a><span class="sd"> The list of the produced syntax trees.</span> -</span><span id="Parser-1256"><a href="#Parser-1256"><span class="linenos">1256</span></a><span class="sd"> """</span> -</span><span id="Parser-1257"><a href="#Parser-1257"><span class="linenos">1257</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> -</span><span id="Parser-1258"><a href="#Parser-1258"><span class="linenos">1258</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> -</span><span id="Parser-1259"><a href="#Parser-1259"><span class="linenos">1259</span></a> <span class="p">)</span> -</span><span id="Parser-1260"><a href="#Parser-1260"><span class="linenos">1260</span></a> -</span><span id="Parser-1261"><a href="#Parser-1261"><span class="linenos">1261</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="Parser-1262"><a href="#Parser-1262"><span class="linenos">1262</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-1263"><a href="#Parser-1263"><span class="linenos">1263</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> -</span><span id="Parser-1264"><a href="#Parser-1264"><span class="linenos">1264</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="Parser-1265"><a href="#Parser-1265"><span class="linenos">1265</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-1266"><a href="#Parser-1266"><span class="linenos">1266</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-1267"><a href="#Parser-1267"><span class="linenos">1267</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-1268"><a href="#Parser-1268"><span class="linenos">1268</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> -</span><span id="Parser-1269"><a href="#Parser-1269"><span class="linenos">1269</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> -</span><span id="Parser-1270"><a href="#Parser-1270"><span class="linenos">1270</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> -</span><span id="Parser-1271"><a href="#Parser-1271"><span class="linenos">1271</span></a> -</span><span id="Parser-1272"><a href="#Parser-1272"><span class="linenos">1272</span></a><span class="sd"> Args:</span> -</span><span id="Parser-1273"><a href="#Parser-1273"><span class="linenos">1273</span></a><span class="sd"> expression_types: The expression type(s) to try and parse the token list into.</span> -</span><span id="Parser-1274"><a href="#Parser-1274"><span class="linenos">1274</span></a><span class="sd"> raw_tokens: The list of tokens.</span> -</span><span id="Parser-1275"><a href="#Parser-1275"><span class="linenos">1275</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser-1276"><a href="#Parser-1276"><span class="linenos">1276</span></a> -</span><span id="Parser-1277"><a href="#Parser-1277"><span class="linenos">1277</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-1278"><a href="#Parser-1278"><span class="linenos">1278</span></a><span class="sd"> The target Expression.</span> -</span><span id="Parser-1279"><a href="#Parser-1279"><span class="linenos">1279</span></a><span class="sd"> """</span> -</span><span id="Parser-1280"><a href="#Parser-1280"><span class="linenos">1280</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1281"><a href="#Parser-1281"><span class="linenos">1281</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="Parser-1282"><a href="#Parser-1282"><span class="linenos">1282</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> -</span><span id="Parser-1283"><a href="#Parser-1283"><span class="linenos">1283</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-1284"><a href="#Parser-1284"><span class="linenos">1284</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-1285"><a href="#Parser-1285"><span class="linenos">1285</span></a> -</span><span id="Parser-1286"><a href="#Parser-1286"><span class="linenos">1286</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Parser-1287"><a href="#Parser-1287"><span class="linenos">1287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Parser-1288"><a href="#Parser-1288"><span class="linenos">1288</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Parser-1289"><a href="#Parser-1289"><span class="linenos">1289</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> -</span><span id="Parser-1290"><a href="#Parser-1290"><span class="linenos">1290</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="Parser-1233"><a href="#Parser-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="Parser-1234"><a href="#Parser-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> +</span><span id="Parser-1235"><a href="#Parser-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> +</span><span id="Parser-1236"><a href="#Parser-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Parser-1237"><a href="#Parser-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Parser-1238"><a href="#Parser-1238"><span class="linenos">1238</span></a> +</span><span id="Parser-1239"><a href="#Parser-1239"><span class="linenos">1239</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Parser-1240"><a href="#Parser-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Parser-1241"><a href="#Parser-1241"><span class="linenos">1241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1242"><a href="#Parser-1242"><span class="linenos">1242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1243"><a href="#Parser-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Parser-1244"><a href="#Parser-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1245"><a href="#Parser-1245"><span class="linenos">1245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1246"><a href="#Parser-1246"><span class="linenos">1246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1247"><a href="#Parser-1247"><span class="linenos">1247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1248"><a href="#Parser-1248"><span class="linenos">1248</span></a> +</span><span id="Parser-1249"><a href="#Parser-1249"><span class="linenos">1249</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> +</span><span id="Parser-1250"><a href="#Parser-1250"><span class="linenos">1250</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1251"><a href="#Parser-1251"><span class="linenos">1251</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-1252"><a href="#Parser-1252"><span class="linenos">1252</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-1253"><a href="#Parser-1253"><span class="linenos">1253</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> +</span><span id="Parser-1254"><a href="#Parser-1254"><span class="linenos">1254</span></a><span class="sd"> per parsed SQL statement.</span> +</span><span id="Parser-1255"><a href="#Parser-1255"><span class="linenos">1255</span></a> +</span><span id="Parser-1256"><a href="#Parser-1256"><span class="linenos">1256</span></a><span class="sd"> Args:</span> +</span><span id="Parser-1257"><a href="#Parser-1257"><span class="linenos">1257</span></a><span class="sd"> raw_tokens: The list of tokens.</span> +</span><span id="Parser-1258"><a href="#Parser-1258"><span class="linenos">1258</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser-1259"><a href="#Parser-1259"><span class="linenos">1259</span></a> +</span><span id="Parser-1260"><a href="#Parser-1260"><span class="linenos">1260</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-1261"><a href="#Parser-1261"><span class="linenos">1261</span></a><span class="sd"> The list of the produced syntax trees.</span> +</span><span id="Parser-1262"><a href="#Parser-1262"><span class="linenos">1262</span></a><span class="sd"> """</span> +</span><span id="Parser-1263"><a href="#Parser-1263"><span class="linenos">1263</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> +</span><span id="Parser-1264"><a href="#Parser-1264"><span class="linenos">1264</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> +</span><span id="Parser-1265"><a href="#Parser-1265"><span class="linenos">1265</span></a> <span class="p">)</span> +</span><span id="Parser-1266"><a href="#Parser-1266"><span class="linenos">1266</span></a> +</span><span id="Parser-1267"><a href="#Parser-1267"><span class="linenos">1267</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="Parser-1268"><a href="#Parser-1268"><span class="linenos">1268</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-1269"><a href="#Parser-1269"><span class="linenos">1269</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> +</span><span id="Parser-1270"><a href="#Parser-1270"><span class="linenos">1270</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="Parser-1271"><a href="#Parser-1271"><span class="linenos">1271</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-1272"><a href="#Parser-1272"><span class="linenos">1272</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-1273"><a href="#Parser-1273"><span class="linenos">1273</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-1274"><a href="#Parser-1274"><span class="linenos">1274</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> +</span><span id="Parser-1275"><a href="#Parser-1275"><span class="linenos">1275</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> +</span><span id="Parser-1276"><a href="#Parser-1276"><span class="linenos">1276</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> +</span><span id="Parser-1277"><a href="#Parser-1277"><span class="linenos">1277</span></a> +</span><span id="Parser-1278"><a href="#Parser-1278"><span class="linenos">1278</span></a><span class="sd"> Args:</span> +</span><span id="Parser-1279"><a href="#Parser-1279"><span class="linenos">1279</span></a><span class="sd"> expression_types: The expression type(s) to try and parse the token list into.</span> +</span><span id="Parser-1280"><a href="#Parser-1280"><span class="linenos">1280</span></a><span class="sd"> raw_tokens: The list of tokens.</span> +</span><span id="Parser-1281"><a href="#Parser-1281"><span class="linenos">1281</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser-1282"><a href="#Parser-1282"><span class="linenos">1282</span></a> +</span><span id="Parser-1283"><a href="#Parser-1283"><span class="linenos">1283</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-1284"><a href="#Parser-1284"><span class="linenos">1284</span></a><span class="sd"> The target Expression.</span> +</span><span id="Parser-1285"><a href="#Parser-1285"><span class="linenos">1285</span></a><span class="sd"> """</span> +</span><span id="Parser-1286"><a href="#Parser-1286"><span class="linenos">1286</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1287"><a href="#Parser-1287"><span class="linenos">1287</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="Parser-1288"><a href="#Parser-1288"><span class="linenos">1288</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> +</span><span id="Parser-1289"><a href="#Parser-1289"><span class="linenos">1289</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-1290"><a href="#Parser-1290"><span class="linenos">1290</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Parser-1291"><a href="#Parser-1291"><span class="linenos">1291</span></a> -</span><span id="Parser-1292"><a href="#Parser-1292"><span class="linenos">1292</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser-1293"><a href="#Parser-1293"><span class="linenos">1293</span></a> <span class="sa">f</span><span class="s2">"Failed to parse '</span><span class="si">{</span><span class="n">sql</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">raw_tokens</span><span class="si">}</span><span class="s2">' into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser-1294"><a href="#Parser-1294"><span class="linenos">1294</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser-1295"><a href="#Parser-1295"><span class="linenos">1295</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-1296"><a href="#Parser-1296"><span class="linenos">1296</span></a> -</span><span id="Parser-1297"><a href="#Parser-1297"><span class="linenos">1297</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> -</span><span id="Parser-1298"><a href="#Parser-1298"><span class="linenos">1298</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-1299"><a href="#Parser-1299"><span class="linenos">1299</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> -</span><span id="Parser-1300"><a href="#Parser-1300"><span class="linenos">1300</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="Parser-1301"><a href="#Parser-1301"><span class="linenos">1301</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-1302"><a href="#Parser-1302"><span class="linenos">1302</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-1303"><a href="#Parser-1303"><span class="linenos">1303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Parser-1304"><a href="#Parser-1304"><span class="linenos">1304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Parser-1305"><a href="#Parser-1305"><span class="linenos">1305</span></a> -</span><span id="Parser-1306"><a href="#Parser-1306"><span class="linenos">1306</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> -</span><span id="Parser-1307"><a href="#Parser-1307"><span class="linenos">1307</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> -</span><span id="Parser-1308"><a href="#Parser-1308"><span class="linenos">1308</span></a> -</span><span id="Parser-1309"><a href="#Parser-1309"><span class="linenos">1309</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> -</span><span id="Parser-1310"><a href="#Parser-1310"><span class="linenos">1310</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> -</span><span id="Parser-1311"><a href="#Parser-1311"><span class="linenos">1311</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> -</span><span id="Parser-1312"><a href="#Parser-1312"><span class="linenos">1312</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">token</span><span class="p">])</span> -</span><span id="Parser-1313"><a href="#Parser-1313"><span class="linenos">1313</span></a> -</span><span id="Parser-1314"><a href="#Parser-1314"><span class="linenos">1314</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-1315"><a href="#Parser-1315"><span class="linenos">1315</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> -</span><span id="Parser-1316"><a href="#Parser-1316"><span class="linenos">1316</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1317"><a href="#Parser-1317"><span class="linenos">1317</span></a> <span class="n">chunks</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">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="Parser-1318"><a href="#Parser-1318"><span class="linenos">1318</span></a> -</span><span id="Parser-1319"><a href="#Parser-1319"><span class="linenos">1319</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1320"><a href="#Parser-1320"><span class="linenos">1320</span></a> -</span><span id="Parser-1321"><a href="#Parser-1321"><span class="linenos">1321</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> -</span><span id="Parser-1322"><a href="#Parser-1322"><span class="linenos">1322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="Parser-1323"><a href="#Parser-1323"><span class="linenos">1323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> -</span><span id="Parser-1324"><a href="#Parser-1324"><span class="linenos">1324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-1325"><a href="#Parser-1325"><span class="linenos">1325</span></a> -</span><span id="Parser-1326"><a href="#Parser-1326"><span class="linenos">1326</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="Parser-1327"><a href="#Parser-1327"><span class="linenos">1327</span></a> -</span><span id="Parser-1328"><a href="#Parser-1328"><span class="linenos">1328</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> -</span><span id="Parser-1329"><a href="#Parser-1329"><span class="linenos">1329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> -</span><span id="Parser-1330"><a href="#Parser-1330"><span class="linenos">1330</span></a> -</span><span id="Parser-1331"><a href="#Parser-1331"><span class="linenos">1331</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> -</span><span id="Parser-1332"><a href="#Parser-1332"><span class="linenos">1332</span></a> -</span><span id="Parser-1333"><a href="#Parser-1333"><span class="linenos">1333</span></a> <span class="k">return</span> <span class="n">expressions</span> -</span><span id="Parser-1334"><a href="#Parser-1334"><span class="linenos">1334</span></a> -</span><span id="Parser-1335"><a href="#Parser-1335"><span class="linenos">1335</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1336"><a href="#Parser-1336"><span class="linenos">1336</span></a><span class="w"> </span><span class="sd">"""Logs or raises any found errors, depending on the chosen error level setting."""</span> -</span><span id="Parser-1337"><a href="#Parser-1337"><span class="linenos">1337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="Parser-1338"><a href="#Parser-1338"><span class="linenos">1338</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser-1339"><a href="#Parser-1339"><span class="linenos">1339</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> -</span><span id="Parser-1340"><a href="#Parser-1340"><span class="linenos">1340</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser-1341"><a href="#Parser-1341"><span class="linenos">1341</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser-1342"><a href="#Parser-1342"><span class="linenos">1342</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> -</span><span id="Parser-1343"><a href="#Parser-1343"><span class="linenos">1343</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser-1344"><a href="#Parser-1344"><span class="linenos">1344</span></a> <span class="p">)</span> -</span><span id="Parser-1345"><a href="#Parser-1345"><span class="linenos">1345</span></a> -</span><span id="Parser-1346"><a href="#Parser-1346"><span class="linenos">1346</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</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">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1347"><a href="#Parser-1347"><span class="linenos">1347</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-1348"><a href="#Parser-1348"><span class="linenos">1348</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> -</span><span id="Parser-1349"><a href="#Parser-1349"><span class="linenos">1349</span></a><span class="sd"> error level setting.</span> -</span><span id="Parser-1350"><a href="#Parser-1350"><span class="linenos">1350</span></a><span class="sd"> """</span> -</span><span id="Parser-1351"><a href="#Parser-1351"><span class="linenos">1351</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Parser-1352"><a href="#Parser-1352"><span class="linenos">1352</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">start</span> -</span><span id="Parser-1353"><a href="#Parser-1353"><span class="linenos">1353</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="Parser-1354"><a href="#Parser-1354"><span class="linenos">1354</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> -</span><span id="Parser-1355"><a href="#Parser-1355"><span class="linenos">1355</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Parser-1356"><a href="#Parser-1356"><span class="linenos">1356</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> -</span><span id="Parser-1357"><a href="#Parser-1357"><span class="linenos">1357</span></a> -</span><span id="Parser-1358"><a href="#Parser-1358"><span class="linenos">1358</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> -</span><span id="Parser-1359"><a href="#Parser-1359"><span class="linenos">1359</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="Parser-1360"><a href="#Parser-1360"><span class="linenos">1360</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser-1361"><a href="#Parser-1361"><span class="linenos">1361</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> -</span><span id="Parser-1362"><a href="#Parser-1362"><span class="linenos">1362</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> -</span><span id="Parser-1363"><a href="#Parser-1363"><span class="linenos">1363</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> -</span><span id="Parser-1364"><a href="#Parser-1364"><span class="linenos">1364</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> -</span><span id="Parser-1365"><a href="#Parser-1365"><span class="linenos">1365</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> -</span><span id="Parser-1366"><a href="#Parser-1366"><span class="linenos">1366</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> -</span><span id="Parser-1367"><a href="#Parser-1367"><span class="linenos">1367</span></a> <span class="p">)</span> -</span><span id="Parser-1368"><a href="#Parser-1368"><span class="linenos">1368</span></a> -</span><span id="Parser-1369"><a href="#Parser-1369"><span class="linenos">1369</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="Parser-1370"><a href="#Parser-1370"><span class="linenos">1370</span></a> <span class="k">raise</span> <span class="n">error</span> -</span><span id="Parser-1371"><a href="#Parser-1371"><span class="linenos">1371</span></a> -</span><span id="Parser-1372"><a href="#Parser-1372"><span class="linenos">1372</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> -</span><span id="Parser-1373"><a href="#Parser-1373"><span class="linenos">1373</span></a> -</span><span id="Parser-1374"><a href="#Parser-1374"><span class="linenos">1374</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> -</span><span id="Parser-1375"><a href="#Parser-1375"><span class="linenos">1375</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">comments</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 class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="Parser-1376"><a href="#Parser-1376"><span class="linenos">1376</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Parser-1377"><a href="#Parser-1377"><span class="linenos">1377</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-1378"><a href="#Parser-1378"><span class="linenos">1378</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="Parser-1292"><a href="#Parser-1292"><span class="linenos">1292</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Parser-1293"><a href="#Parser-1293"><span class="linenos">1293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Parser-1294"><a href="#Parser-1294"><span class="linenos">1294</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Parser-1295"><a href="#Parser-1295"><span class="linenos">1295</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> +</span><span id="Parser-1296"><a href="#Parser-1296"><span class="linenos">1296</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="Parser-1297"><a href="#Parser-1297"><span class="linenos">1297</span></a> +</span><span id="Parser-1298"><a href="#Parser-1298"><span class="linenos">1298</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser-1299"><a href="#Parser-1299"><span class="linenos">1299</span></a> <span class="sa">f</span><span class="s2">"Failed to parse '</span><span class="si">{</span><span class="n">sql</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">raw_tokens</span><span class="si">}</span><span class="s2">' into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser-1300"><a href="#Parser-1300"><span class="linenos">1300</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser-1301"><a href="#Parser-1301"><span class="linenos">1301</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-1302"><a href="#Parser-1302"><span class="linenos">1302</span></a> +</span><span id="Parser-1303"><a href="#Parser-1303"><span class="linenos">1303</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> +</span><span id="Parser-1304"><a href="#Parser-1304"><span class="linenos">1304</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-1305"><a href="#Parser-1305"><span class="linenos">1305</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> +</span><span id="Parser-1306"><a href="#Parser-1306"><span class="linenos">1306</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="Parser-1307"><a href="#Parser-1307"><span class="linenos">1307</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-1308"><a href="#Parser-1308"><span class="linenos">1308</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-1309"><a href="#Parser-1309"><span class="linenos">1309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Parser-1310"><a href="#Parser-1310"><span class="linenos">1310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Parser-1311"><a href="#Parser-1311"><span class="linenos">1311</span></a> +</span><span id="Parser-1312"><a href="#Parser-1312"><span class="linenos">1312</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> +</span><span id="Parser-1313"><a href="#Parser-1313"><span class="linenos">1313</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> +</span><span id="Parser-1314"><a href="#Parser-1314"><span class="linenos">1314</span></a> +</span><span id="Parser-1315"><a href="#Parser-1315"><span class="linenos">1315</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> +</span><span id="Parser-1316"><a href="#Parser-1316"><span class="linenos">1316</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> +</span><span id="Parser-1317"><a href="#Parser-1317"><span class="linenos">1317</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> +</span><span id="Parser-1318"><a href="#Parser-1318"><span class="linenos">1318</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">token</span><span class="p">])</span> +</span><span id="Parser-1319"><a href="#Parser-1319"><span class="linenos">1319</span></a> +</span><span id="Parser-1320"><a href="#Parser-1320"><span class="linenos">1320</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-1321"><a href="#Parser-1321"><span class="linenos">1321</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> +</span><span id="Parser-1322"><a href="#Parser-1322"><span class="linenos">1322</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1323"><a href="#Parser-1323"><span class="linenos">1323</span></a> <span class="n">chunks</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">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> +</span><span id="Parser-1324"><a href="#Parser-1324"><span class="linenos">1324</span></a> +</span><span id="Parser-1325"><a href="#Parser-1325"><span class="linenos">1325</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1326"><a href="#Parser-1326"><span class="linenos">1326</span></a> +</span><span id="Parser-1327"><a href="#Parser-1327"><span class="linenos">1327</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> +</span><span id="Parser-1328"><a href="#Parser-1328"><span class="linenos">1328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="Parser-1329"><a href="#Parser-1329"><span class="linenos">1329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> +</span><span id="Parser-1330"><a href="#Parser-1330"><span class="linenos">1330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-1331"><a href="#Parser-1331"><span class="linenos">1331</span></a> +</span><span id="Parser-1332"><a href="#Parser-1332"><span class="linenos">1332</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="Parser-1333"><a href="#Parser-1333"><span class="linenos">1333</span></a> +</span><span id="Parser-1334"><a href="#Parser-1334"><span class="linenos">1334</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> +</span><span id="Parser-1335"><a href="#Parser-1335"><span class="linenos">1335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> +</span><span id="Parser-1336"><a href="#Parser-1336"><span class="linenos">1336</span></a> +</span><span id="Parser-1337"><a href="#Parser-1337"><span class="linenos">1337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> +</span><span id="Parser-1338"><a href="#Parser-1338"><span class="linenos">1338</span></a> +</span><span id="Parser-1339"><a href="#Parser-1339"><span class="linenos">1339</span></a> <span class="k">return</span> <span class="n">expressions</span> +</span><span id="Parser-1340"><a href="#Parser-1340"><span class="linenos">1340</span></a> +</span><span id="Parser-1341"><a href="#Parser-1341"><span class="linenos">1341</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1342"><a href="#Parser-1342"><span class="linenos">1342</span></a><span class="w"> </span><span class="sd">"""Logs or raises any found errors, depending on the chosen error level setting."""</span> +</span><span id="Parser-1343"><a href="#Parser-1343"><span class="linenos">1343</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="Parser-1344"><a href="#Parser-1344"><span class="linenos">1344</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser-1345"><a href="#Parser-1345"><span class="linenos">1345</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> +</span><span id="Parser-1346"><a href="#Parser-1346"><span class="linenos">1346</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser-1347"><a href="#Parser-1347"><span class="linenos">1347</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser-1348"><a href="#Parser-1348"><span class="linenos">1348</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> +</span><span id="Parser-1349"><a href="#Parser-1349"><span class="linenos">1349</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser-1350"><a href="#Parser-1350"><span class="linenos">1350</span></a> <span class="p">)</span> +</span><span id="Parser-1351"><a href="#Parser-1351"><span class="linenos">1351</span></a> +</span><span id="Parser-1352"><a href="#Parser-1352"><span class="linenos">1352</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</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">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1353"><a href="#Parser-1353"><span class="linenos">1353</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-1354"><a href="#Parser-1354"><span class="linenos">1354</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> +</span><span id="Parser-1355"><a href="#Parser-1355"><span class="linenos">1355</span></a><span class="sd"> error level setting.</span> +</span><span id="Parser-1356"><a href="#Parser-1356"><span class="linenos">1356</span></a><span class="sd"> """</span> +</span><span id="Parser-1357"><a href="#Parser-1357"><span class="linenos">1357</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Parser-1358"><a href="#Parser-1358"><span class="linenos">1358</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">start</span> +</span><span id="Parser-1359"><a href="#Parser-1359"><span class="linenos">1359</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="Parser-1360"><a href="#Parser-1360"><span class="linenos">1360</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> +</span><span id="Parser-1361"><a href="#Parser-1361"><span class="linenos">1361</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Parser-1362"><a href="#Parser-1362"><span class="linenos">1362</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="Parser-1363"><a href="#Parser-1363"><span class="linenos">1363</span></a> +</span><span id="Parser-1364"><a href="#Parser-1364"><span class="linenos">1364</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> +</span><span id="Parser-1365"><a href="#Parser-1365"><span class="linenos">1365</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="Parser-1366"><a href="#Parser-1366"><span class="linenos">1366</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser-1367"><a href="#Parser-1367"><span class="linenos">1367</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> +</span><span id="Parser-1368"><a href="#Parser-1368"><span class="linenos">1368</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> +</span><span id="Parser-1369"><a href="#Parser-1369"><span class="linenos">1369</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> +</span><span id="Parser-1370"><a href="#Parser-1370"><span class="linenos">1370</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> +</span><span id="Parser-1371"><a href="#Parser-1371"><span class="linenos">1371</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> +</span><span id="Parser-1372"><a href="#Parser-1372"><span class="linenos">1372</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> +</span><span id="Parser-1373"><a href="#Parser-1373"><span class="linenos">1373</span></a> <span class="p">)</span> +</span><span id="Parser-1374"><a href="#Parser-1374"><span class="linenos">1374</span></a> +</span><span id="Parser-1375"><a href="#Parser-1375"><span class="linenos">1375</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="Parser-1376"><a href="#Parser-1376"><span class="linenos">1376</span></a> <span class="k">raise</span> <span class="n">error</span> +</span><span id="Parser-1377"><a href="#Parser-1377"><span class="linenos">1377</span></a> +</span><span id="Parser-1378"><a href="#Parser-1378"><span class="linenos">1378</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> </span><span id="Parser-1379"><a href="#Parser-1379"><span class="linenos">1379</span></a> -</span><span id="Parser-1380"><a href="#Parser-1380"><span class="linenos">1380</span></a><span class="sd"> Args:</span> -</span><span id="Parser-1381"><a href="#Parser-1381"><span class="linenos">1381</span></a><span class="sd"> exp_class: The expression class to instantiate.</span> -</span><span id="Parser-1382"><a href="#Parser-1382"><span class="linenos">1382</span></a><span class="sd"> comments: An optional list of comments to attach to the expression.</span> -</span><span id="Parser-1383"><a href="#Parser-1383"><span class="linenos">1383</span></a><span class="sd"> kwargs: The arguments to set for the expression along with their respective values.</span> -</span><span id="Parser-1384"><a href="#Parser-1384"><span class="linenos">1384</span></a> -</span><span id="Parser-1385"><a href="#Parser-1385"><span class="linenos">1385</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-1386"><a href="#Parser-1386"><span class="linenos">1386</span></a><span class="sd"> The target expression.</span> -</span><span id="Parser-1387"><a href="#Parser-1387"><span class="linenos">1387</span></a><span class="sd"> """</span> -</span><span id="Parser-1388"><a href="#Parser-1388"><span class="linenos">1388</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Parser-1389"><a href="#Parser-1389"><span class="linenos">1389</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> <span class="k">if</span> <span class="n">comments</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="Parser-1390"><a href="#Parser-1390"><span class="linenos">1390</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="Parser-1391"><a href="#Parser-1391"><span class="linenos">1391</span></a> -</span><span id="Parser-1392"><a href="#Parser-1392"><span class="linenos">1392</span></a> <span class="k">def</span> <span class="nf">_add_comments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1393"><a href="#Parser-1393"><span class="linenos">1393</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="Parser-1394"><a href="#Parser-1394"><span class="linenos">1394</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> -</span><span id="Parser-1395"><a href="#Parser-1395"><span class="linenos">1395</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1396"><a href="#Parser-1396"><span class="linenos">1396</span></a> -</span><span id="Parser-1397"><a href="#Parser-1397"><span class="linenos">1397</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">args</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Parser-1398"><a href="#Parser-1398"><span class="linenos">1398</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-1399"><a href="#Parser-1399"><span class="linenos">1399</span></a><span class="sd"> Validates an Expression, making sure that all its mandatory arguments are set.</span> -</span><span id="Parser-1400"><a href="#Parser-1400"><span class="linenos">1400</span></a> -</span><span id="Parser-1401"><a href="#Parser-1401"><span class="linenos">1401</span></a><span class="sd"> Args:</span> -</span><span id="Parser-1402"><a href="#Parser-1402"><span class="linenos">1402</span></a><span class="sd"> expression: The expression to validate.</span> -</span><span id="Parser-1403"><a href="#Parser-1403"><span class="linenos">1403</span></a><span class="sd"> args: An optional list of items that was used to instantiate the expression, if it's a Func.</span> -</span><span id="Parser-1404"><a href="#Parser-1404"><span class="linenos">1404</span></a> -</span><span id="Parser-1405"><a href="#Parser-1405"><span class="linenos">1405</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-1406"><a href="#Parser-1406"><span class="linenos">1406</span></a><span class="sd"> The validated expression.</span> -</span><span id="Parser-1407"><a href="#Parser-1407"><span class="linenos">1407</span></a><span class="sd"> """</span> -</span><span id="Parser-1408"><a href="#Parser-1408"><span class="linenos">1408</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">!=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="Parser-1409"><a href="#Parser-1409"><span class="linenos">1409</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="Parser-1410"><a href="#Parser-1410"><span class="linenos">1410</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="Parser-1411"><a href="#Parser-1411"><span class="linenos">1411</span></a> -</span><span id="Parser-1412"><a href="#Parser-1412"><span class="linenos">1412</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Parser-1413"><a href="#Parser-1413"><span class="linenos">1413</span></a> -</span><span id="Parser-1414"><a href="#Parser-1414"><span class="linenos">1414</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Parser-1415"><a href="#Parser-1415"><span class="linenos">1415</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="o">.</span><span class="n">start</span> <span class="p">:</span> <span class="n">end</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-1416"><a href="#Parser-1416"><span class="linenos">1416</span></a> -</span><span id="Parser-1417"><a href="#Parser-1417"><span class="linenos">1417</span></a> <span class="k">def</span> <span class="nf">_is_connected</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Parser-1418"><a href="#Parser-1418"><span class="linenos">1418</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">start</span> +</span><span id="Parser-1380"><a href="#Parser-1380"><span class="linenos">1380</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> +</span><span id="Parser-1381"><a href="#Parser-1381"><span class="linenos">1381</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">comments</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 class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="Parser-1382"><a href="#Parser-1382"><span class="linenos">1382</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Parser-1383"><a href="#Parser-1383"><span class="linenos">1383</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-1384"><a href="#Parser-1384"><span class="linenos">1384</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="Parser-1385"><a href="#Parser-1385"><span class="linenos">1385</span></a> +</span><span id="Parser-1386"><a href="#Parser-1386"><span class="linenos">1386</span></a><span class="sd"> Args:</span> +</span><span id="Parser-1387"><a href="#Parser-1387"><span class="linenos">1387</span></a><span class="sd"> exp_class: The expression class to instantiate.</span> +</span><span id="Parser-1388"><a href="#Parser-1388"><span class="linenos">1388</span></a><span class="sd"> comments: An optional list of comments to attach to the expression.</span> +</span><span id="Parser-1389"><a href="#Parser-1389"><span class="linenos">1389</span></a><span class="sd"> kwargs: The arguments to set for the expression along with their respective values.</span> +</span><span id="Parser-1390"><a href="#Parser-1390"><span class="linenos">1390</span></a> +</span><span id="Parser-1391"><a href="#Parser-1391"><span class="linenos">1391</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-1392"><a href="#Parser-1392"><span class="linenos">1392</span></a><span class="sd"> The target expression.</span> +</span><span id="Parser-1393"><a href="#Parser-1393"><span class="linenos">1393</span></a><span class="sd"> """</span> +</span><span id="Parser-1394"><a href="#Parser-1394"><span class="linenos">1394</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser-1395"><a href="#Parser-1395"><span class="linenos">1395</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> <span class="k">if</span> <span class="n">comments</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="Parser-1396"><a href="#Parser-1396"><span class="linenos">1396</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="Parser-1397"><a href="#Parser-1397"><span class="linenos">1397</span></a> +</span><span id="Parser-1398"><a href="#Parser-1398"><span class="linenos">1398</span></a> <span class="k">def</span> <span class="nf">_add_comments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1399"><a href="#Parser-1399"><span class="linenos">1399</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="Parser-1400"><a href="#Parser-1400"><span class="linenos">1400</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> +</span><span id="Parser-1401"><a href="#Parser-1401"><span class="linenos">1401</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1402"><a href="#Parser-1402"><span class="linenos">1402</span></a> +</span><span id="Parser-1403"><a href="#Parser-1403"><span class="linenos">1403</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">args</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Parser-1404"><a href="#Parser-1404"><span class="linenos">1404</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-1405"><a href="#Parser-1405"><span class="linenos">1405</span></a><span class="sd"> Validates an Expression, making sure that all its mandatory arguments are set.</span> +</span><span id="Parser-1406"><a href="#Parser-1406"><span class="linenos">1406</span></a> +</span><span id="Parser-1407"><a href="#Parser-1407"><span class="linenos">1407</span></a><span class="sd"> Args:</span> +</span><span id="Parser-1408"><a href="#Parser-1408"><span class="linenos">1408</span></a><span class="sd"> expression: The expression to validate.</span> +</span><span id="Parser-1409"><a href="#Parser-1409"><span class="linenos">1409</span></a><span class="sd"> args: An optional list of items that was used to instantiate the expression, if it's a Func.</span> +</span><span id="Parser-1410"><a href="#Parser-1410"><span class="linenos">1410</span></a> +</span><span id="Parser-1411"><a href="#Parser-1411"><span class="linenos">1411</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-1412"><a href="#Parser-1412"><span class="linenos">1412</span></a><span class="sd"> The validated expression.</span> +</span><span id="Parser-1413"><a href="#Parser-1413"><span class="linenos">1413</span></a><span class="sd"> """</span> +</span><span id="Parser-1414"><a href="#Parser-1414"><span class="linenos">1414</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">!=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="Parser-1415"><a href="#Parser-1415"><span class="linenos">1415</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="Parser-1416"><a href="#Parser-1416"><span class="linenos">1416</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="Parser-1417"><a href="#Parser-1417"><span class="linenos">1417</span></a> +</span><span id="Parser-1418"><a href="#Parser-1418"><span class="linenos">1418</span></a> <span class="k">return</span> <span class="n">expression</span> </span><span id="Parser-1419"><a href="#Parser-1419"><span class="linenos">1419</span></a> -</span><span id="Parser-1420"><a href="#Parser-1420"><span class="linenos">1420</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1421"><a href="#Parser-1421"><span class="linenos">1421</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> -</span><span id="Parser-1422"><a href="#Parser-1422"><span class="linenos">1422</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="Parser-1423"><a href="#Parser-1423"><span class="linenos">1423</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-1424"><a href="#Parser-1424"><span class="linenos">1424</span></a> -</span><span id="Parser-1425"><a href="#Parser-1425"><span class="linenos">1425</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-1426"><a href="#Parser-1426"><span class="linenos">1426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-1427"><a href="#Parser-1427"><span class="linenos">1427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> -</span><span id="Parser-1428"><a href="#Parser-1428"><span class="linenos">1428</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1429"><a href="#Parser-1429"><span class="linenos">1429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1430"><a href="#Parser-1430"><span class="linenos">1430</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1431"><a href="#Parser-1431"><span class="linenos">1431</span></a> -</span><span id="Parser-1432"><a href="#Parser-1432"><span class="linenos">1432</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1433"><a href="#Parser-1433"><span class="linenos">1433</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">:</span> -</span><span id="Parser-1434"><a href="#Parser-1434"><span class="linenos">1434</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="Parser-1435"><a href="#Parser-1435"><span class="linenos">1435</span></a> -</span><span id="Parser-1436"><a href="#Parser-1436"><span class="linenos">1436</span></a> <span class="k">def</span> <span class="nf">_warn_unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1437"><a href="#Parser-1437"><span class="linenos">1437</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-1438"><a href="#Parser-1438"><span class="linenos">1438</span></a> <span class="k">return</span> -</span><span id="Parser-1439"><a href="#Parser-1439"><span class="linenos">1439</span></a> -</span><span id="Parser-1440"><a href="#Parser-1440"><span class="linenos">1440</span></a> <span class="c1"># We use _find_sql because self.sql may comprise multiple chunks, and we're only</span> -</span><span id="Parser-1441"><a href="#Parser-1441"><span class="linenos">1441</span></a> <span class="c1"># interested in emitting a warning for the one being currently processed.</span> -</span><span id="Parser-1442"><a href="#Parser-1442"><span class="linenos">1442</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> -</span><span id="Parser-1443"><a href="#Parser-1443"><span class="linenos">1443</span></a> -</span><span id="Parser-1444"><a href="#Parser-1444"><span class="linenos">1444</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> -</span><span id="Parser-1445"><a href="#Parser-1445"><span class="linenos">1445</span></a> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">' contains unsupported syntax. Falling back to parsing as a 'Command'."</span> -</span><span id="Parser-1446"><a href="#Parser-1446"><span class="linenos">1446</span></a> <span class="p">)</span> -</span><span id="Parser-1447"><a href="#Parser-1447"><span class="linenos">1447</span></a> -</span><span id="Parser-1448"><a href="#Parser-1448"><span class="linenos">1448</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-1449"><a href="#Parser-1449"><span class="linenos">1449</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> -</span><span id="Parser-1450"><a href="#Parser-1450"><span class="linenos">1450</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1451"><a href="#Parser-1451"><span class="linenos">1451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1420"><a href="#Parser-1420"><span class="linenos">1420</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Parser-1421"><a href="#Parser-1421"><span class="linenos">1421</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="o">.</span><span class="n">start</span> <span class="p">:</span> <span class="n">end</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-1422"><a href="#Parser-1422"><span class="linenos">1422</span></a> +</span><span id="Parser-1423"><a href="#Parser-1423"><span class="linenos">1423</span></a> <span class="k">def</span> <span class="nf">_is_connected</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Parser-1424"><a href="#Parser-1424"><span class="linenos">1424</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">start</span> +</span><span id="Parser-1425"><a href="#Parser-1425"><span class="linenos">1425</span></a> +</span><span id="Parser-1426"><a href="#Parser-1426"><span class="linenos">1426</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1427"><a href="#Parser-1427"><span class="linenos">1427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> +</span><span id="Parser-1428"><a href="#Parser-1428"><span class="linenos">1428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="Parser-1429"><a href="#Parser-1429"><span class="linenos">1429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-1430"><a href="#Parser-1430"><span class="linenos">1430</span></a> +</span><span id="Parser-1431"><a href="#Parser-1431"><span class="linenos">1431</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-1432"><a href="#Parser-1432"><span class="linenos">1432</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-1433"><a href="#Parser-1433"><span class="linenos">1433</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> +</span><span id="Parser-1434"><a href="#Parser-1434"><span class="linenos">1434</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1435"><a href="#Parser-1435"><span class="linenos">1435</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1436"><a href="#Parser-1436"><span class="linenos">1436</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1437"><a href="#Parser-1437"><span class="linenos">1437</span></a> +</span><span id="Parser-1438"><a href="#Parser-1438"><span class="linenos">1438</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1439"><a href="#Parser-1439"><span class="linenos">1439</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">:</span> +</span><span id="Parser-1440"><a href="#Parser-1440"><span class="linenos">1440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="Parser-1441"><a href="#Parser-1441"><span class="linenos">1441</span></a> +</span><span id="Parser-1442"><a href="#Parser-1442"><span class="linenos">1442</span></a> <span class="k">def</span> <span class="nf">_warn_unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1443"><a href="#Parser-1443"><span class="linenos">1443</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-1444"><a href="#Parser-1444"><span class="linenos">1444</span></a> <span class="k">return</span> +</span><span id="Parser-1445"><a href="#Parser-1445"><span class="linenos">1445</span></a> +</span><span id="Parser-1446"><a href="#Parser-1446"><span class="linenos">1446</span></a> <span class="c1"># We use _find_sql because self.sql may comprise multiple chunks, and we're only</span> +</span><span id="Parser-1447"><a href="#Parser-1447"><span class="linenos">1447</span></a> <span class="c1"># interested in emitting a warning for the one being currently processed.</span> +</span><span id="Parser-1448"><a href="#Parser-1448"><span class="linenos">1448</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="Parser-1449"><a href="#Parser-1449"><span class="linenos">1449</span></a> +</span><span id="Parser-1450"><a href="#Parser-1450"><span class="linenos">1450</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> +</span><span id="Parser-1451"><a href="#Parser-1451"><span class="linenos">1451</span></a> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">' contains unsupported syntax. Falling back to parsing as a 'Command'."</span> </span><span id="Parser-1452"><a href="#Parser-1452"><span class="linenos">1452</span></a> <span class="p">)</span> </span><span id="Parser-1453"><a href="#Parser-1453"><span class="linenos">1453</span></a> -</span><span id="Parser-1454"><a href="#Parser-1454"><span class="linenos">1454</span></a> <span class="k">def</span> <span class="nf">_try_parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[],</span> <span class="n">T</span><span class="p">],</span> <span class="n">retreat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="p">]:</span> -</span><span id="Parser-1455"><a href="#Parser-1455"><span class="linenos">1455</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-1456"><a href="#Parser-1456"><span class="linenos">1456</span></a><span class="sd"> Attemps to backtrack if a parse function that contains a try/catch internally raises an error. This behavior can</span> -</span><span id="Parser-1457"><a href="#Parser-1457"><span class="linenos">1457</span></a><span class="sd"> be different depending on the uset-set ErrorLevel, so _try_parse aims to solve this by setting & resetting</span> -</span><span id="Parser-1458"><a href="#Parser-1458"><span class="linenos">1458</span></a><span class="sd"> the parser state accordingly</span> -</span><span id="Parser-1459"><a href="#Parser-1459"><span class="linenos">1459</span></a><span class="sd"> """</span> -</span><span id="Parser-1460"><a href="#Parser-1460"><span class="linenos">1460</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-1461"><a href="#Parser-1461"><span class="linenos">1461</span></a> <span class="n">error_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> -</span><span id="Parser-1462"><a href="#Parser-1462"><span class="linenos">1462</span></a> -</span><span id="Parser-1463"><a href="#Parser-1463"><span class="linenos">1463</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="Parser-1464"><a href="#Parser-1464"><span class="linenos">1464</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Parser-1465"><a href="#Parser-1465"><span class="linenos">1465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-1466"><a href="#Parser-1466"><span class="linenos">1466</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="Parser-1467"><a href="#Parser-1467"><span class="linenos">1467</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1468"><a href="#Parser-1468"><span class="linenos">1468</span></a> <span class="k">finally</span><span class="p">:</span> -</span><span id="Parser-1469"><a href="#Parser-1469"><span class="linenos">1469</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">retreat</span><span class="p">:</span> -</span><span id="Parser-1470"><a href="#Parser-1470"><span class="linenos">1470</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-1471"><a href="#Parser-1471"><span class="linenos">1471</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> -</span><span id="Parser-1472"><a href="#Parser-1472"><span class="linenos">1472</span></a> -</span><span id="Parser-1473"><a href="#Parser-1473"><span class="linenos">1473</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-1474"><a href="#Parser-1474"><span class="linenos">1474</span></a> -</span><span id="Parser-1475"><a href="#Parser-1475"><span class="linenos">1475</span></a> <span class="k">def</span> <span class="nf">_parse_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">allow_exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1476"><a href="#Parser-1476"><span class="linenos">1476</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-1477"><a href="#Parser-1477"><span class="linenos">1477</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> <span class="k">if</span> <span class="n">allow_exists</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1454"><a href="#Parser-1454"><span class="linenos">1454</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-1455"><a href="#Parser-1455"><span class="linenos">1455</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> +</span><span id="Parser-1456"><a href="#Parser-1456"><span class="linenos">1456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1457"><a href="#Parser-1457"><span class="linenos">1457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1458"><a href="#Parser-1458"><span class="linenos">1458</span></a> <span class="p">)</span> +</span><span id="Parser-1459"><a href="#Parser-1459"><span class="linenos">1459</span></a> +</span><span id="Parser-1460"><a href="#Parser-1460"><span class="linenos">1460</span></a> <span class="k">def</span> <span class="nf">_try_parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[],</span> <span class="n">T</span><span class="p">],</span> <span class="n">retreat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="p">]:</span> +</span><span id="Parser-1461"><a href="#Parser-1461"><span class="linenos">1461</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-1462"><a href="#Parser-1462"><span class="linenos">1462</span></a><span class="sd"> Attemps to backtrack if a parse function that contains a try/catch internally raises an error. This behavior can</span> +</span><span id="Parser-1463"><a href="#Parser-1463"><span class="linenos">1463</span></a><span class="sd"> be different depending on the uset-set ErrorLevel, so _try_parse aims to solve this by setting & resetting</span> +</span><span id="Parser-1464"><a href="#Parser-1464"><span class="linenos">1464</span></a><span class="sd"> the parser state accordingly</span> +</span><span id="Parser-1465"><a href="#Parser-1465"><span class="linenos">1465</span></a><span class="sd"> """</span> +</span><span id="Parser-1466"><a href="#Parser-1466"><span class="linenos">1466</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-1467"><a href="#Parser-1467"><span class="linenos">1467</span></a> <span class="n">error_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> +</span><span id="Parser-1468"><a href="#Parser-1468"><span class="linenos">1468</span></a> +</span><span id="Parser-1469"><a href="#Parser-1469"><span class="linenos">1469</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="Parser-1470"><a href="#Parser-1470"><span class="linenos">1470</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Parser-1471"><a href="#Parser-1471"><span class="linenos">1471</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-1472"><a href="#Parser-1472"><span class="linenos">1472</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="Parser-1473"><a href="#Parser-1473"><span class="linenos">1473</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1474"><a href="#Parser-1474"><span class="linenos">1474</span></a> <span class="k">finally</span><span class="p">:</span> +</span><span id="Parser-1475"><a href="#Parser-1475"><span class="linenos">1475</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">retreat</span><span class="p">:</span> +</span><span id="Parser-1476"><a href="#Parser-1476"><span class="linenos">1476</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-1477"><a href="#Parser-1477"><span class="linenos">1477</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> </span><span id="Parser-1478"><a href="#Parser-1478"><span class="linenos">1478</span></a> -</span><span id="Parser-1479"><a href="#Parser-1479"><span class="linenos">1479</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-1479"><a href="#Parser-1479"><span class="linenos">1479</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-1480"><a href="#Parser-1480"><span class="linenos">1480</span></a> -</span><span id="Parser-1481"><a href="#Parser-1481"><span class="linenos">1481</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> -</span><span id="Parser-1482"><a href="#Parser-1482"><span class="linenos">1482</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-1483"><a href="#Parser-1483"><span class="linenos">1483</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-1484"><a href="#Parser-1484"><span class="linenos">1484</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-1485"><a href="#Parser-1485"><span class="linenos">1485</span></a> -</span><span id="Parser-1486"><a href="#Parser-1486"><span class="linenos">1486</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> -</span><span id="Parser-1487"><a href="#Parser-1487"><span class="linenos">1487</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="Parser-1488"><a href="#Parser-1488"><span class="linenos">1488</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> -</span><span id="Parser-1489"><a href="#Parser-1489"><span class="linenos">1489</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COMMENT_TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-1490"><a href="#Parser-1490"><span class="linenos">1490</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">:</span> -</span><span id="Parser-1491"><a href="#Parser-1491"><span class="linenos">1491</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-1492"><a href="#Parser-1492"><span class="linenos">1492</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1493"><a href="#Parser-1493"><span class="linenos">1493</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1494"><a href="#Parser-1494"><span class="linenos">1494</span></a> -</span><span id="Parser-1495"><a href="#Parser-1495"><span class="linenos">1495</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">)</span> -</span><span id="Parser-1496"><a href="#Parser-1496"><span class="linenos">1496</span></a> -</span><span id="Parser-1497"><a href="#Parser-1497"><span class="linenos">1497</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1498"><a href="#Parser-1498"><span class="linenos">1498</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comment</span><span class="p">,</span> -</span><span id="Parser-1499"><a href="#Parser-1499"><span class="linenos">1499</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1500"><a href="#Parser-1500"><span class="linenos">1500</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="Parser-1501"><a href="#Parser-1501"><span class="linenos">1501</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="Parser-1502"><a href="#Parser-1502"><span class="linenos">1502</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="Parser-1503"><a href="#Parser-1503"><span class="linenos">1503</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="Parser-1504"><a href="#Parser-1504"><span class="linenos">1504</span></a> <span class="p">)</span> -</span><span id="Parser-1505"><a href="#Parser-1505"><span class="linenos">1505</span></a> -</span><span id="Parser-1506"><a href="#Parser-1506"><span class="linenos">1506</span></a> <span class="k">def</span> <span class="nf">_parse_to_table</span><span class="p">(</span> -</span><span id="Parser-1507"><a href="#Parser-1507"><span class="linenos">1507</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-1508"><a href="#Parser-1508"><span class="linenos">1508</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> -</span><span id="Parser-1509"><a href="#Parser-1509"><span class="linenos">1509</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1510"><a href="#Parser-1510"><span class="linenos">1510</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">)</span> +</span><span id="Parser-1481"><a href="#Parser-1481"><span class="linenos">1481</span></a> <span class="k">def</span> <span class="nf">_parse_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">allow_exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1482"><a href="#Parser-1482"><span class="linenos">1482</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1483"><a href="#Parser-1483"><span class="linenos">1483</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> <span class="k">if</span> <span class="n">allow_exists</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1484"><a href="#Parser-1484"><span class="linenos">1484</span></a> +</span><span id="Parser-1485"><a href="#Parser-1485"><span class="linenos">1485</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-1486"><a href="#Parser-1486"><span class="linenos">1486</span></a> +</span><span id="Parser-1487"><a href="#Parser-1487"><span class="linenos">1487</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> +</span><span id="Parser-1488"><a href="#Parser-1488"><span class="linenos">1488</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1489"><a href="#Parser-1489"><span class="linenos">1489</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-1490"><a href="#Parser-1490"><span class="linenos">1490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-1491"><a href="#Parser-1491"><span class="linenos">1491</span></a> +</span><span id="Parser-1492"><a href="#Parser-1492"><span class="linenos">1492</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> +</span><span id="Parser-1493"><a href="#Parser-1493"><span class="linenos">1493</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="Parser-1494"><a href="#Parser-1494"><span class="linenos">1494</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> +</span><span id="Parser-1495"><a href="#Parser-1495"><span class="linenos">1495</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COMMENT_TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-1496"><a href="#Parser-1496"><span class="linenos">1496</span></a> <span class="k">elif</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">:</span> +</span><span id="Parser-1497"><a href="#Parser-1497"><span class="linenos">1497</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-1498"><a href="#Parser-1498"><span class="linenos">1498</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1499"><a href="#Parser-1499"><span class="linenos">1499</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-1500"><a href="#Parser-1500"><span class="linenos">1500</span></a> +</span><span id="Parser-1501"><a href="#Parser-1501"><span class="linenos">1501</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">)</span> +</span><span id="Parser-1502"><a href="#Parser-1502"><span class="linenos">1502</span></a> +</span><span id="Parser-1503"><a href="#Parser-1503"><span class="linenos">1503</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1504"><a href="#Parser-1504"><span class="linenos">1504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comment</span><span class="p">,</span> +</span><span id="Parser-1505"><a href="#Parser-1505"><span class="linenos">1505</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1506"><a href="#Parser-1506"><span class="linenos">1506</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="Parser-1507"><a href="#Parser-1507"><span class="linenos">1507</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="Parser-1508"><a href="#Parser-1508"><span class="linenos">1508</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="Parser-1509"><a href="#Parser-1509"><span class="linenos">1509</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="Parser-1510"><a href="#Parser-1510"><span class="linenos">1510</span></a> <span class="p">)</span> </span><span id="Parser-1511"><a href="#Parser-1511"><span class="linenos">1511</span></a> -</span><span id="Parser-1512"><a href="#Parser-1512"><span class="linenos">1512</span></a> <span class="c1"># https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-table-ttl</span> -</span><span id="Parser-1513"><a href="#Parser-1513"><span class="linenos">1513</span></a> <span class="k">def</span> <span class="nf">_parse_ttl</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1514"><a href="#Parser-1514"><span class="linenos">1514</span></a> <span class="k">def</span> <span class="nf">_parse_ttl_action</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1515"><a href="#Parser-1515"><span class="linenos">1515</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-1516"><a href="#Parser-1516"><span class="linenos">1516</span></a> -</span><span id="Parser-1517"><a href="#Parser-1517"><span class="linenos">1517</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELETE"</span><span class="p">):</span> -</span><span id="Parser-1518"><a href="#Parser-1518"><span class="linenos">1518</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1519"><a href="#Parser-1519"><span class="linenos">1519</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RECOMPRESS"</span><span class="p">):</span> -</span><span id="Parser-1520"><a href="#Parser-1520"><span class="linenos">1520</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1521"><a href="#Parser-1521"><span class="linenos">1521</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">recompress</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-1522"><a href="#Parser-1522"><span class="linenos">1522</span></a> <span class="p">)</span> -</span><span id="Parser-1523"><a href="#Parser-1523"><span class="linenos">1523</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"DISK"</span><span class="p">):</span> -</span><span id="Parser-1524"><a href="#Parser-1524"><span class="linenos">1524</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1525"><a href="#Parser-1525"><span class="linenos">1525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_disk</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1526"><a href="#Parser-1526"><span class="linenos">1526</span></a> <span class="p">)</span> -</span><span id="Parser-1527"><a href="#Parser-1527"><span class="linenos">1527</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"VOLUME"</span><span class="p">):</span> -</span><span id="Parser-1528"><a href="#Parser-1528"><span class="linenos">1528</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1529"><a href="#Parser-1529"><span class="linenos">1529</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_volume</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1530"><a href="#Parser-1530"><span class="linenos">1530</span></a> <span class="p">)</span> -</span><span id="Parser-1531"><a href="#Parser-1531"><span class="linenos">1531</span></a> -</span><span id="Parser-1532"><a href="#Parser-1532"><span class="linenos">1532</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-1533"><a href="#Parser-1533"><span class="linenos">1533</span></a> -</span><span id="Parser-1534"><a href="#Parser-1534"><span class="linenos">1534</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_ttl_action</span><span class="p">)</span> -</span><span id="Parser-1535"><a href="#Parser-1535"><span class="linenos">1535</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> -</span><span id="Parser-1536"><a href="#Parser-1536"><span class="linenos">1536</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> +</span><span id="Parser-1512"><a href="#Parser-1512"><span class="linenos">1512</span></a> <span class="k">def</span> <span class="nf">_parse_to_table</span><span class="p">(</span> +</span><span id="Parser-1513"><a href="#Parser-1513"><span class="linenos">1513</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-1514"><a href="#Parser-1514"><span class="linenos">1514</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">:</span> +</span><span id="Parser-1515"><a href="#Parser-1515"><span class="linenos">1515</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1516"><a href="#Parser-1516"><span class="linenos">1516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ToTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">)</span> +</span><span id="Parser-1517"><a href="#Parser-1517"><span class="linenos">1517</span></a> +</span><span id="Parser-1518"><a href="#Parser-1518"><span class="linenos">1518</span></a> <span class="c1"># https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-table-ttl</span> +</span><span id="Parser-1519"><a href="#Parser-1519"><span class="linenos">1519</span></a> <span class="k">def</span> <span class="nf">_parse_ttl</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1520"><a href="#Parser-1520"><span class="linenos">1520</span></a> <span class="k">def</span> <span class="nf">_parse_ttl_action</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1521"><a href="#Parser-1521"><span class="linenos">1521</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-1522"><a href="#Parser-1522"><span class="linenos">1522</span></a> +</span><span id="Parser-1523"><a href="#Parser-1523"><span class="linenos">1523</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELETE"</span><span class="p">):</span> +</span><span id="Parser-1524"><a href="#Parser-1524"><span class="linenos">1524</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1525"><a href="#Parser-1525"><span class="linenos">1525</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RECOMPRESS"</span><span class="p">):</span> +</span><span id="Parser-1526"><a href="#Parser-1526"><span class="linenos">1526</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1527"><a href="#Parser-1527"><span class="linenos">1527</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">recompress</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-1528"><a href="#Parser-1528"><span class="linenos">1528</span></a> <span class="p">)</span> +</span><span id="Parser-1529"><a href="#Parser-1529"><span class="linenos">1529</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"DISK"</span><span class="p">):</span> +</span><span id="Parser-1530"><a href="#Parser-1530"><span class="linenos">1530</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1531"><a href="#Parser-1531"><span class="linenos">1531</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_disk</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1532"><a href="#Parser-1532"><span class="linenos">1532</span></a> <span class="p">)</span> +</span><span id="Parser-1533"><a href="#Parser-1533"><span class="linenos">1533</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"VOLUME"</span><span class="p">):</span> +</span><span id="Parser-1534"><a href="#Parser-1534"><span class="linenos">1534</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1535"><a href="#Parser-1535"><span class="linenos">1535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTLAction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to_volume</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1536"><a href="#Parser-1536"><span class="linenos">1536</span></a> <span class="p">)</span> </span><span id="Parser-1537"><a href="#Parser-1537"><span class="linenos">1537</span></a> -</span><span id="Parser-1538"><a href="#Parser-1538"><span class="linenos">1538</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1539"><a href="#Parser-1539"><span class="linenos">1539</span></a> <span class="k">if</span> <span class="n">group</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> -</span><span id="Parser-1540"><a href="#Parser-1540"><span class="linenos">1540</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> -</span><span id="Parser-1541"><a href="#Parser-1541"><span class="linenos">1541</span></a> -</span><span id="Parser-1542"><a href="#Parser-1542"><span class="linenos">1542</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1543"><a href="#Parser-1543"><span class="linenos">1543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> -</span><span id="Parser-1544"><a href="#Parser-1544"><span class="linenos">1544</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-1545"><a href="#Parser-1545"><span class="linenos">1545</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> -</span><span id="Parser-1546"><a href="#Parser-1546"><span class="linenos">1546</span></a> <span class="n">group</span><span class="o">=</span><span class="n">group</span><span class="p">,</span> -</span><span id="Parser-1547"><a href="#Parser-1547"><span class="linenos">1547</span></a> <span class="n">aggregates</span><span class="o">=</span><span class="n">aggregates</span><span class="p">,</span> -</span><span id="Parser-1548"><a href="#Parser-1548"><span class="linenos">1548</span></a> <span class="p">)</span> -</span><span id="Parser-1549"><a href="#Parser-1549"><span class="linenos">1549</span></a> -</span><span id="Parser-1550"><a href="#Parser-1550"><span class="linenos">1550</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1551"><a href="#Parser-1551"><span class="linenos">1551</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1552"><a href="#Parser-1552"><span class="linenos">1552</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1553"><a href="#Parser-1553"><span class="linenos">1553</span></a> -</span><span id="Parser-1554"><a href="#Parser-1554"><span class="linenos">1554</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> -</span><span id="Parser-1555"><a href="#Parser-1555"><span class="linenos">1555</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-1556"><a href="#Parser-1556"><span class="linenos">1556</span></a> -</span><span id="Parser-1557"><a href="#Parser-1557"><span class="linenos">1557</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> -</span><span id="Parser-1558"><a href="#Parser-1558"><span class="linenos">1558</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> +</span><span id="Parser-1538"><a href="#Parser-1538"><span class="linenos">1538</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-1539"><a href="#Parser-1539"><span class="linenos">1539</span></a> +</span><span id="Parser-1540"><a href="#Parser-1540"><span class="linenos">1540</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_ttl_action</span><span class="p">)</span> +</span><span id="Parser-1541"><a href="#Parser-1541"><span class="linenos">1541</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> +</span><span id="Parser-1542"><a href="#Parser-1542"><span class="linenos">1542</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> +</span><span id="Parser-1543"><a href="#Parser-1543"><span class="linenos">1543</span></a> +</span><span id="Parser-1544"><a href="#Parser-1544"><span class="linenos">1544</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1545"><a href="#Parser-1545"><span class="linenos">1545</span></a> <span class="k">if</span> <span class="n">group</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> +</span><span id="Parser-1546"><a href="#Parser-1546"><span class="linenos">1546</span></a> <span class="n">aggregates</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">)</span> +</span><span id="Parser-1547"><a href="#Parser-1547"><span class="linenos">1547</span></a> +</span><span id="Parser-1548"><a href="#Parser-1548"><span class="linenos">1548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1549"><a href="#Parser-1549"><span class="linenos">1549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeTreeTTL</span><span class="p">,</span> +</span><span id="Parser-1550"><a href="#Parser-1550"><span class="linenos">1550</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-1551"><a href="#Parser-1551"><span class="linenos">1551</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> +</span><span id="Parser-1552"><a href="#Parser-1552"><span class="linenos">1552</span></a> <span class="n">group</span><span class="o">=</span><span class="n">group</span><span class="p">,</span> +</span><span id="Parser-1553"><a href="#Parser-1553"><span class="linenos">1553</span></a> <span class="n">aggregates</span><span class="o">=</span><span class="n">aggregates</span><span class="p">,</span> +</span><span id="Parser-1554"><a href="#Parser-1554"><span class="linenos">1554</span></a> <span class="p">)</span> +</span><span id="Parser-1555"><a href="#Parser-1555"><span class="linenos">1555</span></a> +</span><span id="Parser-1556"><a href="#Parser-1556"><span class="linenos">1556</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1557"><a href="#Parser-1557"><span class="linenos">1557</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1558"><a href="#Parser-1558"><span class="linenos">1558</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-1559"><a href="#Parser-1559"><span class="linenos">1559</span></a> -</span><span id="Parser-1560"><a href="#Parser-1560"><span class="linenos">1560</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="Parser-1561"><a href="#Parser-1561"><span class="linenos">1561</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="Parser-1562"><a href="#Parser-1562"><span class="linenos">1562</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-1563"><a href="#Parser-1563"><span class="linenos">1563</span></a> -</span><span id="Parser-1564"><a href="#Parser-1564"><span class="linenos">1564</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-1565"><a href="#Parser-1565"><span class="linenos">1565</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-1566"><a href="#Parser-1566"><span class="linenos">1566</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="Parser-1567"><a href="#Parser-1567"><span class="linenos">1567</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> -</span><span id="Parser-1568"><a href="#Parser-1568"><span class="linenos">1568</span></a> -</span><span id="Parser-1569"><a href="#Parser-1569"><span class="linenos">1569</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-1570"><a href="#Parser-1570"><span class="linenos">1570</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-1571"><a href="#Parser-1571"><span class="linenos">1571</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-1572"><a href="#Parser-1572"><span class="linenos">1572</span></a> -</span><span id="Parser-1573"><a href="#Parser-1573"><span class="linenos">1573</span></a> <span class="n">if_exists</span> <span class="o">=</span> <span class="n">exists</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="Parser-1574"><a href="#Parser-1574"><span class="linenos">1574</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> -</span><span id="Parser-1575"><a href="#Parser-1575"><span class="linenos">1575</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> -</span><span id="Parser-1576"><a href="#Parser-1576"><span class="linenos">1576</span></a> <span class="p">)</span> -</span><span id="Parser-1577"><a href="#Parser-1577"><span class="linenos">1577</span></a> -</span><span id="Parser-1578"><a href="#Parser-1578"><span class="linenos">1578</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-1579"><a href="#Parser-1579"><span class="linenos">1579</span></a> -</span><span id="Parser-1580"><a href="#Parser-1580"><span class="linenos">1580</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1581"><a href="#Parser-1581"><span class="linenos">1581</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> -</span><span id="Parser-1582"><a href="#Parser-1582"><span class="linenos">1582</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1583"><a href="#Parser-1583"><span class="linenos">1583</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1584"><a href="#Parser-1584"><span class="linenos">1584</span></a> -</span><span id="Parser-1585"><a href="#Parser-1585"><span class="linenos">1585</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1586"><a href="#Parser-1586"><span class="linenos">1586</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="Parser-1587"><a href="#Parser-1587"><span class="linenos">1587</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">start</span><span class="o">.</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-1588"><a href="#Parser-1588"><span class="linenos">1588</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">if_exists</span><span class="p">,</span> -</span><span id="Parser-1589"><a href="#Parser-1589"><span class="linenos">1589</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="Parser-1590"><a href="#Parser-1590"><span class="linenos">1590</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-1591"><a href="#Parser-1591"><span class="linenos">1591</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> -</span><span id="Parser-1592"><a href="#Parser-1592"><span class="linenos">1592</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> -</span><span id="Parser-1593"><a href="#Parser-1593"><span class="linenos">1593</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="Parser-1594"><a href="#Parser-1594"><span class="linenos">1594</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">),</span> -</span><span id="Parser-1595"><a href="#Parser-1595"><span class="linenos">1595</span></a> <span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONSTRAINTS"</span><span class="p">),</span> -</span><span id="Parser-1596"><a href="#Parser-1596"><span class="linenos">1596</span></a> <span class="n">purge</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PURGE"</span><span class="p">),</span> -</span><span id="Parser-1597"><a href="#Parser-1597"><span class="linenos">1597</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> -</span><span id="Parser-1598"><a href="#Parser-1598"><span class="linenos">1598</span></a> <span class="p">)</span> -</span><span id="Parser-1599"><a href="#Parser-1599"><span class="linenos">1599</span></a> -</span><span id="Parser-1600"><a href="#Parser-1600"><span class="linenos">1600</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="nb">bool</span><span class="p">]:</span> -</span><span id="Parser-1601"><a href="#Parser-1601"><span class="linenos">1601</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Parser-1602"><a href="#Parser-1602"><span class="linenos">1602</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> -</span><span id="Parser-1603"><a href="#Parser-1603"><span class="linenos">1603</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> -</span><span id="Parser-1604"><a href="#Parser-1604"><span class="linenos">1604</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> -</span><span id="Parser-1605"><a href="#Parser-1605"><span class="linenos">1605</span></a> <span class="p">)</span> -</span><span id="Parser-1606"><a href="#Parser-1606"><span class="linenos">1606</span></a> -</span><span id="Parser-1607"><a href="#Parser-1607"><span class="linenos">1607</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-1608"><a href="#Parser-1608"><span class="linenos">1608</span></a> <span class="c1"># Note: this can't be None because we've matched a statement parser</span> -</span><span id="Parser-1609"><a href="#Parser-1609"><span class="linenos">1609</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-1610"><a href="#Parser-1610"><span class="linenos">1610</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-1611"><a href="#Parser-1611"><span class="linenos">1611</span></a> -</span><span id="Parser-1612"><a href="#Parser-1612"><span class="linenos">1612</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-1613"><a href="#Parser-1613"><span class="linenos">1613</span></a> <span class="n">start</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> -</span><span id="Parser-1614"><a href="#Parser-1614"><span class="linenos">1614</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">)</span> -</span><span id="Parser-1615"><a href="#Parser-1615"><span class="linenos">1615</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">)</span> -</span><span id="Parser-1616"><a href="#Parser-1616"><span class="linenos">1616</span></a> <span class="p">)</span> +</span><span id="Parser-1560"><a href="#Parser-1560"><span class="linenos">1560</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> +</span><span id="Parser-1561"><a href="#Parser-1561"><span class="linenos">1561</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-1562"><a href="#Parser-1562"><span class="linenos">1562</span></a> +</span><span id="Parser-1563"><a href="#Parser-1563"><span class="linenos">1563</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> +</span><span id="Parser-1564"><a href="#Parser-1564"><span class="linenos">1564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> +</span><span id="Parser-1565"><a href="#Parser-1565"><span class="linenos">1565</span></a> +</span><span id="Parser-1566"><a href="#Parser-1566"><span class="linenos">1566</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="Parser-1567"><a href="#Parser-1567"><span class="linenos">1567</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="Parser-1568"><a href="#Parser-1568"><span class="linenos">1568</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-1569"><a href="#Parser-1569"><span class="linenos">1569</span></a> +</span><span id="Parser-1570"><a href="#Parser-1570"><span class="linenos">1570</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-1571"><a href="#Parser-1571"><span class="linenos">1571</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1572"><a href="#Parser-1572"><span class="linenos">1572</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="Parser-1573"><a href="#Parser-1573"><span class="linenos">1573</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">)</span> +</span><span id="Parser-1574"><a href="#Parser-1574"><span class="linenos">1574</span></a> +</span><span id="Parser-1575"><a href="#Parser-1575"><span class="linenos">1575</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-1576"><a href="#Parser-1576"><span class="linenos">1576</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-1577"><a href="#Parser-1577"><span class="linenos">1577</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-1578"><a href="#Parser-1578"><span class="linenos">1578</span></a> +</span><span id="Parser-1579"><a href="#Parser-1579"><span class="linenos">1579</span></a> <span class="n">if_exists</span> <span class="o">=</span> <span class="n">exists</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-1580"><a href="#Parser-1580"><span class="linenos">1580</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> +</span><span id="Parser-1581"><a href="#Parser-1581"><span class="linenos">1581</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> +</span><span id="Parser-1582"><a href="#Parser-1582"><span class="linenos">1582</span></a> <span class="p">)</span> +</span><span id="Parser-1583"><a href="#Parser-1583"><span class="linenos">1583</span></a> +</span><span id="Parser-1584"><a href="#Parser-1584"><span class="linenos">1584</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1585"><a href="#Parser-1585"><span class="linenos">1585</span></a> +</span><span id="Parser-1586"><a href="#Parser-1586"><span class="linenos">1586</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1587"><a href="#Parser-1587"><span class="linenos">1587</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> +</span><span id="Parser-1588"><a href="#Parser-1588"><span class="linenos">1588</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1589"><a href="#Parser-1589"><span class="linenos">1589</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1590"><a href="#Parser-1590"><span class="linenos">1590</span></a> +</span><span id="Parser-1591"><a href="#Parser-1591"><span class="linenos">1591</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1592"><a href="#Parser-1592"><span class="linenos">1592</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="Parser-1593"><a href="#Parser-1593"><span class="linenos">1593</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">start</span><span class="o">.</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-1594"><a href="#Parser-1594"><span class="linenos">1594</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">if_exists</span><span class="p">,</span> +</span><span id="Parser-1595"><a href="#Parser-1595"><span class="linenos">1595</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="Parser-1596"><a href="#Parser-1596"><span class="linenos">1596</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-1597"><a href="#Parser-1597"><span class="linenos">1597</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> +</span><span id="Parser-1598"><a href="#Parser-1598"><span class="linenos">1598</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> +</span><span id="Parser-1599"><a href="#Parser-1599"><span class="linenos">1599</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="Parser-1600"><a href="#Parser-1600"><span class="linenos">1600</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">),</span> +</span><span id="Parser-1601"><a href="#Parser-1601"><span class="linenos">1601</span></a> <span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONSTRAINTS"</span><span class="p">),</span> +</span><span id="Parser-1602"><a href="#Parser-1602"><span class="linenos">1602</span></a> <span class="n">purge</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PURGE"</span><span class="p">),</span> +</span><span id="Parser-1603"><a href="#Parser-1603"><span class="linenos">1603</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> +</span><span id="Parser-1604"><a href="#Parser-1604"><span class="linenos">1604</span></a> <span class="p">)</span> +</span><span id="Parser-1605"><a href="#Parser-1605"><span class="linenos">1605</span></a> +</span><span id="Parser-1606"><a href="#Parser-1606"><span class="linenos">1606</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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="nb">bool</span><span class="p">]:</span> +</span><span id="Parser-1607"><a href="#Parser-1607"><span class="linenos">1607</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Parser-1608"><a href="#Parser-1608"><span class="linenos">1608</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> +</span><span id="Parser-1609"><a href="#Parser-1609"><span class="linenos">1609</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> +</span><span id="Parser-1610"><a href="#Parser-1610"><span class="linenos">1610</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> +</span><span id="Parser-1611"><a href="#Parser-1611"><span class="linenos">1611</span></a> <span class="p">)</span> +</span><span id="Parser-1612"><a href="#Parser-1612"><span class="linenos">1612</span></a> +</span><span id="Parser-1613"><a href="#Parser-1613"><span class="linenos">1613</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-1614"><a href="#Parser-1614"><span class="linenos">1614</span></a> <span class="c1"># Note: this can't be None because we've matched a statement parser</span> +</span><span id="Parser-1615"><a href="#Parser-1615"><span class="linenos">1615</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1616"><a href="#Parser-1616"><span class="linenos">1616</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> </span><span id="Parser-1617"><a href="#Parser-1617"><span class="linenos">1617</span></a> -</span><span id="Parser-1618"><a href="#Parser-1618"><span class="linenos">1618</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="Parser-1619"><a href="#Parser-1619"><span class="linenos">1619</span></a> -</span><span id="Parser-1620"><a href="#Parser-1620"><span class="linenos">1620</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1621"><a href="#Parser-1621"><span class="linenos">1621</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-1622"><a href="#Parser-1622"><span class="linenos">1622</span></a> -</span><span id="Parser-1623"><a href="#Parser-1623"><span class="linenos">1623</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1624"><a href="#Parser-1624"><span class="linenos">1624</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1618"><a href="#Parser-1618"><span class="linenos">1618</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-1619"><a href="#Parser-1619"><span class="linenos">1619</span></a> <span class="n">start</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> +</span><span id="Parser-1620"><a href="#Parser-1620"><span class="linenos">1620</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">)</span> +</span><span id="Parser-1621"><a href="#Parser-1621"><span class="linenos">1621</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">)</span> +</span><span id="Parser-1622"><a href="#Parser-1622"><span class="linenos">1622</span></a> <span class="p">)</span> +</span><span id="Parser-1623"><a href="#Parser-1623"><span class="linenos">1623</span></a> +</span><span id="Parser-1624"><a href="#Parser-1624"><span class="linenos">1624</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> </span><span id="Parser-1625"><a href="#Parser-1625"><span class="linenos">1625</span></a> -</span><span id="Parser-1626"><a href="#Parser-1626"><span class="linenos">1626</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="Parser-1627"><a href="#Parser-1627"><span class="linenos">1627</span></a> <span class="c1"># exp.Properties.Location.POST_CREATE</span> -</span><span id="Parser-1628"><a href="#Parser-1628"><span class="linenos">1628</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="Parser-1629"><a href="#Parser-1629"><span class="linenos">1629</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-1630"><a href="#Parser-1630"><span class="linenos">1630</span></a> -</span><span id="Parser-1631"><a href="#Parser-1631"><span class="linenos">1631</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="Parser-1632"><a href="#Parser-1632"><span class="linenos">1632</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-1633"><a href="#Parser-1633"><span class="linenos">1633</span></a> -</span><span id="Parser-1634"><a href="#Parser-1634"><span class="linenos">1634</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1635"><a href="#Parser-1635"><span class="linenos">1635</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1636"><a href="#Parser-1636"><span class="linenos">1636</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1637"><a href="#Parser-1637"><span class="linenos">1637</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1638"><a href="#Parser-1638"><span class="linenos">1638</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1639"><a href="#Parser-1639"><span class="linenos">1639</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1640"><a href="#Parser-1640"><span class="linenos">1640</span></a> <span class="n">end</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1641"><a href="#Parser-1641"><span class="linenos">1641</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1642"><a href="#Parser-1642"><span class="linenos">1642</span></a> -</span><span id="Parser-1643"><a href="#Parser-1643"><span class="linenos">1643</span></a> <span class="k">def</span> <span class="nf">extend_props</span><span class="p">(</span><span class="n">temp_props</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1644"><a href="#Parser-1644"><span class="linenos">1644</span></a> <span class="k">nonlocal</span> <span class="n">properties</span> -</span><span id="Parser-1645"><a href="#Parser-1645"><span class="linenos">1645</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_props</span><span class="p">:</span> -</span><span id="Parser-1646"><a href="#Parser-1646"><span class="linenos">1646</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">temp_props</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-1647"><a href="#Parser-1647"><span class="linenos">1647</span></a> <span class="k">elif</span> <span class="n">temp_props</span><span class="p">:</span> -</span><span id="Parser-1648"><a href="#Parser-1648"><span class="linenos">1648</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_props</span> -</span><span id="Parser-1649"><a href="#Parser-1649"><span class="linenos">1649</span></a> -</span><span id="Parser-1650"><a href="#Parser-1650"><span class="linenos">1650</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> -</span><span id="Parser-1651"><a href="#Parser-1651"><span class="linenos">1651</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="Parser-1652"><a href="#Parser-1652"><span class="linenos">1652</span></a> -</span><span id="Parser-1653"><a href="#Parser-1653"><span class="linenos">1653</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA ("schema" here is the UDF's type signature)</span> -</span><span id="Parser-1654"><a href="#Parser-1654"><span class="linenos">1654</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1626"><a href="#Parser-1626"><span class="linenos">1626</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1627"><a href="#Parser-1627"><span class="linenos">1627</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-1628"><a href="#Parser-1628"><span class="linenos">1628</span></a> +</span><span id="Parser-1629"><a href="#Parser-1629"><span class="linenos">1629</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1630"><a href="#Parser-1630"><span class="linenos">1630</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1631"><a href="#Parser-1631"><span class="linenos">1631</span></a> +</span><span id="Parser-1632"><a href="#Parser-1632"><span class="linenos">1632</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="Parser-1633"><a href="#Parser-1633"><span class="linenos">1633</span></a> <span class="c1"># exp.Properties.Location.POST_CREATE</span> +</span><span id="Parser-1634"><a href="#Parser-1634"><span class="linenos">1634</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="Parser-1635"><a href="#Parser-1635"><span class="linenos">1635</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1636"><a href="#Parser-1636"><span class="linenos">1636</span></a> +</span><span id="Parser-1637"><a href="#Parser-1637"><span class="linenos">1637</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="Parser-1638"><a href="#Parser-1638"><span class="linenos">1638</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-1639"><a href="#Parser-1639"><span class="linenos">1639</span></a> +</span><span id="Parser-1640"><a href="#Parser-1640"><span class="linenos">1640</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1641"><a href="#Parser-1641"><span class="linenos">1641</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1642"><a href="#Parser-1642"><span class="linenos">1642</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1643"><a href="#Parser-1643"><span class="linenos">1643</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1644"><a href="#Parser-1644"><span class="linenos">1644</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1645"><a href="#Parser-1645"><span class="linenos">1645</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1646"><a href="#Parser-1646"><span class="linenos">1646</span></a> <span class="n">end</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1647"><a href="#Parser-1647"><span class="linenos">1647</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1648"><a href="#Parser-1648"><span class="linenos">1648</span></a> +</span><span id="Parser-1649"><a href="#Parser-1649"><span class="linenos">1649</span></a> <span class="k">def</span> <span class="nf">extend_props</span><span class="p">(</span><span class="n">temp_props</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1650"><a href="#Parser-1650"><span class="linenos">1650</span></a> <span class="k">nonlocal</span> <span class="n">properties</span> +</span><span id="Parser-1651"><a href="#Parser-1651"><span class="linenos">1651</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_props</span><span class="p">:</span> +</span><span id="Parser-1652"><a href="#Parser-1652"><span class="linenos">1652</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">temp_props</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1653"><a href="#Parser-1653"><span class="linenos">1653</span></a> <span class="k">elif</span> <span class="n">temp_props</span><span class="p">:</span> +</span><span id="Parser-1654"><a href="#Parser-1654"><span class="linenos">1654</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_props</span> </span><span id="Parser-1655"><a href="#Parser-1655"><span class="linenos">1655</span></a> -</span><span id="Parser-1656"><a href="#Parser-1656"><span class="linenos">1656</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_heredoc</span><span class="p">()</span> -</span><span id="Parser-1657"><a href="#Parser-1657"><span class="linenos">1657</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1656"><a href="#Parser-1656"><span class="linenos">1656</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> +</span><span id="Parser-1657"><a href="#Parser-1657"><span class="linenos">1657</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> </span><span id="Parser-1658"><a href="#Parser-1658"><span class="linenos">1658</span></a> -</span><span id="Parser-1659"><a href="#Parser-1659"><span class="linenos">1659</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-1660"><a href="#Parser-1660"><span class="linenos">1660</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">):</span> -</span><span id="Parser-1661"><a href="#Parser-1661"><span class="linenos">1661</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-1662"><a href="#Parser-1662"><span class="linenos">1662</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1663"><a href="#Parser-1663"><span class="linenos">1663</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> -</span><span id="Parser-1664"><a href="#Parser-1664"><span class="linenos">1664</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> -</span><span id="Parser-1665"><a href="#Parser-1665"><span class="linenos">1665</span></a> -</span><span id="Parser-1666"><a href="#Parser-1666"><span class="linenos">1666</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1667"><a href="#Parser-1667"><span class="linenos">1667</span></a> <span class="c1"># Takes care of BigQuery's JavaScript UDF definitions that end in an OPTIONS property</span> -</span><span id="Parser-1668"><a href="#Parser-1668"><span class="linenos">1668</span></a> <span class="c1"># # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_function_statement</span> -</span><span id="Parser-1669"><a href="#Parser-1669"><span class="linenos">1669</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1670"><a href="#Parser-1670"><span class="linenos">1670</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="Parser-1671"><a href="#Parser-1671"><span class="linenos">1671</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1672"><a href="#Parser-1672"><span class="linenos">1672</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> -</span><span id="Parser-1673"><a href="#Parser-1673"><span class="linenos">1673</span></a> -</span><span id="Parser-1674"><a href="#Parser-1674"><span class="linenos">1674</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> -</span><span id="Parser-1675"><a href="#Parser-1675"><span class="linenos">1675</span></a> -</span><span id="Parser-1676"><a href="#Parser-1676"><span class="linenos">1676</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> -</span><span id="Parser-1677"><a href="#Parser-1677"><span class="linenos">1677</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-1678"><a href="#Parser-1678"><span class="linenos">1678</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> -</span><span id="Parser-1679"><a href="#Parser-1679"><span class="linenos">1679</span></a> <span class="c1"># Postgres allows anonymous indexes, eg. CREATE INDEX IF NOT EXISTS ON t(c)</span> -</span><span id="Parser-1680"><a href="#Parser-1680"><span class="linenos">1680</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-1681"><a href="#Parser-1681"><span class="linenos">1681</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1682"><a href="#Parser-1682"><span class="linenos">1682</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1683"><a href="#Parser-1683"><span class="linenos">1683</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1684"><a href="#Parser-1684"><span class="linenos">1684</span></a> <span class="n">index</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1685"><a href="#Parser-1685"><span class="linenos">1685</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1686"><a href="#Parser-1686"><span class="linenos">1686</span></a> -</span><span id="Parser-1687"><a href="#Parser-1687"><span class="linenos">1687</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">)</span> -</span><span id="Parser-1688"><a href="#Parser-1688"><span class="linenos">1688</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">DB_CREATABLES</span><span class="p">:</span> -</span><span id="Parser-1689"><a href="#Parser-1689"><span class="linenos">1689</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> -</span><span id="Parser-1690"><a href="#Parser-1690"><span class="linenos">1690</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> -</span><span id="Parser-1691"><a href="#Parser-1691"><span class="linenos">1691</span></a> <span class="p">)</span> +</span><span id="Parser-1659"><a href="#Parser-1659"><span class="linenos">1659</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA ("schema" here is the UDF's type signature)</span> +</span><span id="Parser-1660"><a href="#Parser-1660"><span class="linenos">1660</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1661"><a href="#Parser-1661"><span class="linenos">1661</span></a> +</span><span id="Parser-1662"><a href="#Parser-1662"><span class="linenos">1662</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_heredoc</span><span class="p">()</span> +</span><span id="Parser-1663"><a href="#Parser-1663"><span class="linenos">1663</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1664"><a href="#Parser-1664"><span class="linenos">1664</span></a> +</span><span id="Parser-1665"><a href="#Parser-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-1666"><a href="#Parser-1666"><span class="linenos">1666</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">):</span> +</span><span id="Parser-1667"><a href="#Parser-1667"><span class="linenos">1667</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-1668"><a href="#Parser-1668"><span class="linenos">1668</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1669"><a href="#Parser-1669"><span class="linenos">1669</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> +</span><span id="Parser-1670"><a href="#Parser-1670"><span class="linenos">1670</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> +</span><span id="Parser-1671"><a href="#Parser-1671"><span class="linenos">1671</span></a> +</span><span id="Parser-1672"><a href="#Parser-1672"><span class="linenos">1672</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1673"><a href="#Parser-1673"><span class="linenos">1673</span></a> <span class="c1"># Takes care of BigQuery's JavaScript UDF definitions that end in an OPTIONS property</span> +</span><span id="Parser-1674"><a href="#Parser-1674"><span class="linenos">1674</span></a> <span class="c1"># # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_function_statement</span> +</span><span id="Parser-1675"><a href="#Parser-1675"><span class="linenos">1675</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1676"><a href="#Parser-1676"><span class="linenos">1676</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1677"><a href="#Parser-1677"><span class="linenos">1677</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1678"><a href="#Parser-1678"><span class="linenos">1678</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="Parser-1679"><a href="#Parser-1679"><span class="linenos">1679</span></a> +</span><span id="Parser-1680"><a href="#Parser-1680"><span class="linenos">1680</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> +</span><span id="Parser-1681"><a href="#Parser-1681"><span class="linenos">1681</span></a> +</span><span id="Parser-1682"><a href="#Parser-1682"><span class="linenos">1682</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> +</span><span id="Parser-1683"><a href="#Parser-1683"><span class="linenos">1683</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-1684"><a href="#Parser-1684"><span class="linenos">1684</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> +</span><span id="Parser-1685"><a href="#Parser-1685"><span class="linenos">1685</span></a> <span class="c1"># Postgres allows anonymous indexes, eg. CREATE INDEX IF NOT EXISTS ON t(c)</span> +</span><span id="Parser-1686"><a href="#Parser-1686"><span class="linenos">1686</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-1687"><a href="#Parser-1687"><span class="linenos">1687</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-1688"><a href="#Parser-1688"><span class="linenos">1688</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1689"><a href="#Parser-1689"><span class="linenos">1689</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1690"><a href="#Parser-1690"><span class="linenos">1690</span></a> <span class="n">index</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1691"><a href="#Parser-1691"><span class="linenos">1691</span></a> <span class="n">anonymous</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Parser-1692"><a href="#Parser-1692"><span class="linenos">1692</span></a> -</span><span id="Parser-1693"><a href="#Parser-1693"><span class="linenos">1693</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> -</span><span id="Parser-1694"><a href="#Parser-1694"><span class="linenos">1694</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1695"><a href="#Parser-1695"><span class="linenos">1695</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-1696"><a href="#Parser-1696"><span class="linenos">1696</span></a> -</span><span id="Parser-1697"><a href="#Parser-1697"><span class="linenos">1697</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> +</span><span id="Parser-1693"><a href="#Parser-1693"><span class="linenos">1693</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">)</span> +</span><span id="Parser-1694"><a href="#Parser-1694"><span class="linenos">1694</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">DB_CREATABLES</span><span class="p">:</span> +</span><span id="Parser-1695"><a href="#Parser-1695"><span class="linenos">1695</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span> +</span><span id="Parser-1696"><a href="#Parser-1696"><span class="linenos">1696</span></a> <span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span> +</span><span id="Parser-1697"><a href="#Parser-1697"><span class="linenos">1697</span></a> <span class="p">)</span> </span><span id="Parser-1698"><a href="#Parser-1698"><span class="linenos">1698</span></a> -</span><span id="Parser-1699"><a href="#Parser-1699"><span class="linenos">1699</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> -</span><span id="Parser-1700"><a href="#Parser-1700"><span class="linenos">1700</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="Parser-1701"><a href="#Parser-1701"><span class="linenos">1701</span></a> -</span><span id="Parser-1702"><a href="#Parser-1702"><span class="linenos">1702</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1703"><a href="#Parser-1703"><span class="linenos">1703</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DDL_SELECT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1704"><a href="#Parser-1704"><span class="linenos">1704</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> -</span><span id="Parser-1705"><a href="#Parser-1705"><span class="linenos">1705</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="Parser-1706"><a href="#Parser-1706"><span class="linenos">1706</span></a> -</span><span id="Parser-1707"><a href="#Parser-1707"><span class="linenos">1707</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">:</span> -</span><span id="Parser-1708"><a href="#Parser-1708"><span class="linenos">1708</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-1709"><a href="#Parser-1709"><span class="linenos">1709</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="Parser-1710"><a href="#Parser-1710"><span class="linenos">1710</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1711"><a href="#Parser-1711"><span class="linenos">1711</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> +</span><span id="Parser-1699"><a href="#Parser-1699"><span class="linenos">1699</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> +</span><span id="Parser-1700"><a href="#Parser-1700"><span class="linenos">1700</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1701"><a href="#Parser-1701"><span class="linenos">1701</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-1702"><a href="#Parser-1702"><span class="linenos">1702</span></a> +</span><span id="Parser-1703"><a href="#Parser-1703"><span class="linenos">1703</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> +</span><span id="Parser-1704"><a href="#Parser-1704"><span class="linenos">1704</span></a> +</span><span id="Parser-1705"><a href="#Parser-1705"><span class="linenos">1705</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> +</span><span id="Parser-1706"><a href="#Parser-1706"><span class="linenos">1706</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1707"><a href="#Parser-1707"><span class="linenos">1707</span></a> +</span><span id="Parser-1708"><a href="#Parser-1708"><span class="linenos">1708</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1709"><a href="#Parser-1709"><span class="linenos">1709</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DDL_SELECT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1710"><a href="#Parser-1710"><span class="linenos">1710</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> +</span><span id="Parser-1711"><a href="#Parser-1711"><span class="linenos">1711</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> </span><span id="Parser-1712"><a href="#Parser-1712"><span class="linenos">1712</span></a> -</span><span id="Parser-1713"><a href="#Parser-1713"><span class="linenos">1713</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> -</span><span id="Parser-1714"><a href="#Parser-1714"><span class="linenos">1714</span></a> <span class="c1"># exp.Properties.Location.POST_EXPRESSION</span> +</span><span id="Parser-1713"><a href="#Parser-1713"><span class="linenos">1713</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">:</span> +</span><span id="Parser-1714"><a href="#Parser-1714"><span class="linenos">1714</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> </span><span id="Parser-1715"><a href="#Parser-1715"><span class="linenos">1715</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="Parser-1716"><a href="#Parser-1716"><span class="linenos">1716</span></a> -</span><span id="Parser-1717"><a href="#Parser-1717"><span class="linenos">1717</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1718"><a href="#Parser-1718"><span class="linenos">1718</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-1719"><a href="#Parser-1719"><span class="linenos">1719</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> -</span><span id="Parser-1720"><a href="#Parser-1720"><span class="linenos">1720</span></a> -</span><span id="Parser-1721"><a href="#Parser-1721"><span class="linenos">1721</span></a> <span class="c1"># exp.Properties.Location.POST_INDEX</span> -</span><span id="Parser-1722"><a href="#Parser-1722"><span class="linenos">1722</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> -</span><span id="Parser-1723"><a href="#Parser-1723"><span class="linenos">1723</span></a> -</span><span id="Parser-1724"><a href="#Parser-1724"><span class="linenos">1724</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index</span><span class="p">:</span> -</span><span id="Parser-1725"><a href="#Parser-1725"><span class="linenos">1725</span></a> <span class="k">break</span> -</span><span id="Parser-1726"><a href="#Parser-1726"><span class="linenos">1726</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1727"><a href="#Parser-1727"><span class="linenos">1727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1728"><a href="#Parser-1728"><span class="linenos">1728</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-1729"><a href="#Parser-1729"><span class="linenos">1729</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">:</span> -</span><span id="Parser-1730"><a href="#Parser-1730"><span class="linenos">1730</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">,</span> <span class="s2">"BINDING"</span><span class="p">):</span> -</span><span id="Parser-1731"><a href="#Parser-1731"><span class="linenos">1731</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1732"><a href="#Parser-1732"><span class="linenos">1732</span></a> -</span><span id="Parser-1733"><a href="#Parser-1733"><span class="linenos">1733</span></a> <span class="n">shallow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHALLOW"</span><span class="p">)</span> -</span><span id="Parser-1734"><a href="#Parser-1734"><span class="linenos">1734</span></a> -</span><span id="Parser-1735"><a href="#Parser-1735"><span class="linenos">1735</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CLONE_KEYWORDS</span><span class="p">):</span> -</span><span id="Parser-1736"><a href="#Parser-1736"><span class="linenos">1736</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"copy"</span> -</span><span id="Parser-1737"><a href="#Parser-1737"><span class="linenos">1737</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1738"><a href="#Parser-1738"><span class="linenos">1738</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Clone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">shallow</span><span class="o">=</span><span class="n">shallow</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span> -</span><span id="Parser-1739"><a href="#Parser-1739"><span class="linenos">1739</span></a> <span class="p">)</span> +</span><span id="Parser-1716"><a href="#Parser-1716"><span class="linenos">1716</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1717"><a href="#Parser-1717"><span class="linenos">1717</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> +</span><span id="Parser-1718"><a href="#Parser-1718"><span class="linenos">1718</span></a> +</span><span id="Parser-1719"><a href="#Parser-1719"><span class="linenos">1719</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> +</span><span id="Parser-1720"><a href="#Parser-1720"><span class="linenos">1720</span></a> <span class="c1"># exp.Properties.Location.POST_EXPRESSION</span> +</span><span id="Parser-1721"><a href="#Parser-1721"><span class="linenos">1721</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1722"><a href="#Parser-1722"><span class="linenos">1722</span></a> +</span><span id="Parser-1723"><a href="#Parser-1723"><span class="linenos">1723</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1724"><a href="#Parser-1724"><span class="linenos">1724</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-1725"><a href="#Parser-1725"><span class="linenos">1725</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> +</span><span id="Parser-1726"><a href="#Parser-1726"><span class="linenos">1726</span></a> +</span><span id="Parser-1727"><a href="#Parser-1727"><span class="linenos">1727</span></a> <span class="c1"># exp.Properties.Location.POST_INDEX</span> +</span><span id="Parser-1728"><a href="#Parser-1728"><span class="linenos">1728</span></a> <span class="n">extend_props</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">())</span> +</span><span id="Parser-1729"><a href="#Parser-1729"><span class="linenos">1729</span></a> +</span><span id="Parser-1730"><a href="#Parser-1730"><span class="linenos">1730</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index</span><span class="p">:</span> +</span><span id="Parser-1731"><a href="#Parser-1731"><span class="linenos">1731</span></a> <span class="k">break</span> +</span><span id="Parser-1732"><a href="#Parser-1732"><span class="linenos">1732</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1733"><a href="#Parser-1733"><span class="linenos">1733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1734"><a href="#Parser-1734"><span class="linenos">1734</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-1735"><a href="#Parser-1735"><span class="linenos">1735</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">:</span> +</span><span id="Parser-1736"><a href="#Parser-1736"><span class="linenos">1736</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">,</span> <span class="s2">"BINDING"</span><span class="p">):</span> +</span><span id="Parser-1737"><a href="#Parser-1737"><span class="linenos">1737</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1738"><a href="#Parser-1738"><span class="linenos">1738</span></a> +</span><span id="Parser-1739"><a href="#Parser-1739"><span class="linenos">1739</span></a> <span class="n">shallow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHALLOW"</span><span class="p">)</span> </span><span id="Parser-1740"><a href="#Parser-1740"><span class="linenos">1740</span></a> -</span><span id="Parser-1741"><a href="#Parser-1741"><span class="linenos">1741</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1742"><a href="#Parser-1742"><span class="linenos">1742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-1743"><a href="#Parser-1743"><span class="linenos">1743</span></a> -</span><span id="Parser-1744"><a href="#Parser-1744"><span class="linenos">1744</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1745"><a href="#Parser-1745"><span class="linenos">1745</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> -</span><span id="Parser-1746"><a href="#Parser-1746"><span class="linenos">1746</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-1747"><a href="#Parser-1747"><span class="linenos">1747</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1748"><a href="#Parser-1748"><span class="linenos">1748</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> -</span><span id="Parser-1749"><a href="#Parser-1749"><span class="linenos">1749</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> -</span><span id="Parser-1750"><a href="#Parser-1750"><span class="linenos">1750</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="Parser-1751"><a href="#Parser-1751"><span class="linenos">1751</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-1752"><a href="#Parser-1752"><span class="linenos">1752</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="Parser-1753"><a href="#Parser-1753"><span class="linenos">1753</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> -</span><span id="Parser-1754"><a href="#Parser-1754"><span class="linenos">1754</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> -</span><span id="Parser-1755"><a href="#Parser-1755"><span class="linenos">1755</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> -</span><span id="Parser-1756"><a href="#Parser-1756"><span class="linenos">1756</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> -</span><span id="Parser-1757"><a href="#Parser-1757"><span class="linenos">1757</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">,</span> -</span><span id="Parser-1758"><a href="#Parser-1758"><span class="linenos">1758</span></a> <span class="n">clone</span><span class="o">=</span><span class="n">clone</span><span class="p">,</span> -</span><span id="Parser-1759"><a href="#Parser-1759"><span class="linenos">1759</span></a> <span class="p">)</span> -</span><span id="Parser-1760"><a href="#Parser-1760"><span class="linenos">1760</span></a> -</span><span id="Parser-1761"><a href="#Parser-1761"><span class="linenos">1761</span></a> <span class="k">def</span> <span class="nf">_parse_sequence_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">]:</span> -</span><span id="Parser-1762"><a href="#Parser-1762"><span class="linenos">1762</span></a> <span class="n">seq</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">()</span> -</span><span id="Parser-1763"><a href="#Parser-1763"><span class="linenos">1763</span></a> -</span><span id="Parser-1764"><a href="#Parser-1764"><span class="linenos">1764</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1765"><a href="#Parser-1765"><span class="linenos">1765</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-1741"><a href="#Parser-1741"><span class="linenos">1741</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CLONE_KEYWORDS</span><span class="p">):</span> +</span><span id="Parser-1742"><a href="#Parser-1742"><span class="linenos">1742</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"copy"</span> +</span><span id="Parser-1743"><a href="#Parser-1743"><span class="linenos">1743</span></a> <span class="n">clone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1744"><a href="#Parser-1744"><span class="linenos">1744</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Clone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">shallow</span><span class="o">=</span><span class="n">shallow</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span> +</span><span id="Parser-1745"><a href="#Parser-1745"><span class="linenos">1745</span></a> <span class="p">)</span> +</span><span id="Parser-1746"><a href="#Parser-1746"><span class="linenos">1746</span></a> +</span><span id="Parser-1747"><a href="#Parser-1747"><span class="linenos">1747</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1748"><a href="#Parser-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-1749"><a href="#Parser-1749"><span class="linenos">1749</span></a> +</span><span id="Parser-1750"><a href="#Parser-1750"><span class="linenos">1750</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1751"><a href="#Parser-1751"><span class="linenos">1751</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> +</span><span id="Parser-1752"><a href="#Parser-1752"><span class="linenos">1752</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-1753"><a href="#Parser-1753"><span class="linenos">1753</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1754"><a href="#Parser-1754"><span class="linenos">1754</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> +</span><span id="Parser-1755"><a href="#Parser-1755"><span class="linenos">1755</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> +</span><span id="Parser-1756"><a href="#Parser-1756"><span class="linenos">1756</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="Parser-1757"><a href="#Parser-1757"><span class="linenos">1757</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-1758"><a href="#Parser-1758"><span class="linenos">1758</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="Parser-1759"><a href="#Parser-1759"><span class="linenos">1759</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> +</span><span id="Parser-1760"><a href="#Parser-1760"><span class="linenos">1760</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> +</span><span id="Parser-1761"><a href="#Parser-1761"><span class="linenos">1761</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> +</span><span id="Parser-1762"><a href="#Parser-1762"><span class="linenos">1762</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> +</span><span id="Parser-1763"><a href="#Parser-1763"><span class="linenos">1763</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">,</span> +</span><span id="Parser-1764"><a href="#Parser-1764"><span class="linenos">1764</span></a> <span class="n">clone</span><span class="o">=</span><span class="n">clone</span><span class="p">,</span> +</span><span id="Parser-1765"><a href="#Parser-1765"><span class="linenos">1765</span></a> <span class="p">)</span> </span><span id="Parser-1766"><a href="#Parser-1766"><span class="linenos">1766</span></a> -</span><span id="Parser-1767"><a href="#Parser-1767"><span class="linenos">1767</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-1768"><a href="#Parser-1768"><span class="linenos">1768</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1769"><a href="#Parser-1769"><span class="linenos">1769</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">):</span> -</span><span id="Parser-1770"><a href="#Parser-1770"><span class="linenos">1770</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> -</span><span id="Parser-1771"><a href="#Parser-1771"><span class="linenos">1771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> -</span><span id="Parser-1772"><a href="#Parser-1772"><span class="linenos">1772</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="Parser-1773"><a href="#Parser-1773"><span class="linenos">1773</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="Parser-1774"><a href="#Parser-1774"><span class="linenos">1774</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="Parser-1775"><a href="#Parser-1775"><span class="linenos">1775</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="Parser-1776"><a href="#Parser-1776"><span class="linenos">1776</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="Parser-1777"><a href="#Parser-1777"><span class="linenos">1777</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> -</span><span id="Parser-1778"><a href="#Parser-1778"><span class="linenos">1778</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> -</span><span id="Parser-1779"><a href="#Parser-1779"><span class="linenos">1779</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="Parser-1780"><a href="#Parser-1780"><span class="linenos">1780</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CACHE"</span><span class="p">):</span> -</span><span id="Parser-1781"><a href="#Parser-1781"><span class="linenos">1781</span></a> <span class="c1"># T-SQL allows empty CACHE which is initialized dynamically</span> -</span><span id="Parser-1782"><a href="#Parser-1782"><span class="linenos">1782</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1783"><a href="#Parser-1783"><span class="linenos">1783</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OWNED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-1784"><a href="#Parser-1784"><span class="linenos">1784</span></a> <span class="c1"># "OWNED BY NONE" is the default</span> -</span><span id="Parser-1785"><a href="#Parser-1785"><span class="linenos">1785</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"owned"</span><span class="p">,</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NONE"</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="Parser-1786"><a href="#Parser-1786"><span class="linenos">1786</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1787"><a href="#Parser-1787"><span class="linenos">1787</span></a> <span class="n">opt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATE_SEQUENCE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1788"><a href="#Parser-1788"><span class="linenos">1788</span></a> <span class="k">if</span> <span class="n">opt</span><span class="p">:</span> -</span><span id="Parser-1789"><a href="#Parser-1789"><span class="linenos">1789</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">opt</span><span class="p">)</span> -</span><span id="Parser-1790"><a href="#Parser-1790"><span class="linenos">1790</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1791"><a href="#Parser-1791"><span class="linenos">1791</span></a> <span class="k">break</span> -</span><span id="Parser-1792"><a href="#Parser-1792"><span class="linenos">1792</span></a> -</span><span id="Parser-1793"><a href="#Parser-1793"><span class="linenos">1793</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="n">options</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-1794"><a href="#Parser-1794"><span class="linenos">1794</span></a> <span class="k">return</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">==</span> <span class="n">index</span> <span class="k">else</span> <span class="n">seq</span> -</span><span id="Parser-1795"><a href="#Parser-1795"><span class="linenos">1795</span></a> -</span><span id="Parser-1796"><a href="#Parser-1796"><span class="linenos">1796</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1797"><a href="#Parser-1797"><span class="linenos">1797</span></a> <span class="c1"># only used for teradata currently</span> -</span><span id="Parser-1798"><a href="#Parser-1798"><span class="linenos">1798</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1799"><a href="#Parser-1799"><span class="linenos">1799</span></a> -</span><span id="Parser-1800"><a href="#Parser-1800"><span class="linenos">1800</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-1801"><a href="#Parser-1801"><span class="linenos">1801</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">),</span> -</span><span id="Parser-1802"><a href="#Parser-1802"><span class="linenos">1802</span></a> <span class="s2">"dual"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">),</span> -</span><span id="Parser-1803"><a href="#Parser-1803"><span class="linenos">1803</span></a> <span class="s2">"before"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">),</span> -</span><span id="Parser-1804"><a href="#Parser-1804"><span class="linenos">1804</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">),</span> -</span><span id="Parser-1805"><a href="#Parser-1805"><span class="linenos">1805</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="Parser-1806"><a href="#Parser-1806"><span class="linenos">1806</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"NOT LOCAL"</span><span class="p">),</span> -</span><span id="Parser-1807"><a href="#Parser-1807"><span class="linenos">1807</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">),</span> -</span><span id="Parser-1808"><a href="#Parser-1808"><span class="linenos">1808</span></a> <span class="s2">"minimum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)),</span> -</span><span id="Parser-1809"><a href="#Parser-1809"><span class="linenos">1809</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)),</span> -</span><span id="Parser-1810"><a href="#Parser-1810"><span class="linenos">1810</span></a> <span class="p">}</span> -</span><span id="Parser-1811"><a href="#Parser-1811"><span class="linenos">1811</span></a> -</span><span id="Parser-1812"><a href="#Parser-1812"><span class="linenos">1812</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-1813"><a href="#Parser-1813"><span class="linenos">1813</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()]</span> -</span><span id="Parser-1814"><a href="#Parser-1814"><span class="linenos">1814</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Parser-1815"><a href="#Parser-1815"><span class="linenos">1815</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span><span class="p">})</span> -</span><span id="Parser-1816"><a href="#Parser-1816"><span class="linenos">1816</span></a> <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span> -</span><span id="Parser-1817"><a href="#Parser-1817"><span class="linenos">1817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse property '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> -</span><span id="Parser-1818"><a href="#Parser-1818"><span class="linenos">1818</span></a> -</span><span id="Parser-1819"><a href="#Parser-1819"><span class="linenos">1819</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1820"><a href="#Parser-1820"><span class="linenos">1820</span></a> -</span><span id="Parser-1821"><a href="#Parser-1821"><span class="linenos">1821</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1822"><a href="#Parser-1822"><span class="linenos">1822</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> -</span><span id="Parser-1823"><a href="#Parser-1823"><span class="linenos">1823</span></a> -</span><span id="Parser-1824"><a href="#Parser-1824"><span class="linenos">1824</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1825"><a href="#Parser-1825"><span class="linenos">1825</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-1826"><a href="#Parser-1826"><span class="linenos">1826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-1827"><a href="#Parser-1827"><span class="linenos">1827</span></a> -</span><span id="Parser-1828"><a href="#Parser-1828"><span class="linenos">1828</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-1829"><a href="#Parser-1829"><span class="linenos">1829</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1830"><a href="#Parser-1830"><span class="linenos">1830</span></a> -</span><span id="Parser-1831"><a href="#Parser-1831"><span class="linenos">1831</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMPOUND"</span><span class="p">,</span> <span class="s2">"SORTKEY"</span><span class="p">):</span> -</span><span id="Parser-1832"><a href="#Parser-1832"><span class="linenos">1832</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1767"><a href="#Parser-1767"><span class="linenos">1767</span></a> <span class="k">def</span> <span class="nf">_parse_sequence_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">]:</span> +</span><span id="Parser-1768"><a href="#Parser-1768"><span class="linenos">1768</span></a> <span class="n">seq</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">SequenceProperties</span><span class="p">()</span> +</span><span id="Parser-1769"><a href="#Parser-1769"><span class="linenos">1769</span></a> +</span><span id="Parser-1770"><a href="#Parser-1770"><span class="linenos">1770</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1771"><a href="#Parser-1771"><span class="linenos">1771</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-1772"><a href="#Parser-1772"><span class="linenos">1772</span></a> +</span><span id="Parser-1773"><a href="#Parser-1773"><span class="linenos">1773</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-1774"><a href="#Parser-1774"><span class="linenos">1774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1775"><a href="#Parser-1775"><span class="linenos">1775</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">):</span> +</span><span id="Parser-1776"><a href="#Parser-1776"><span class="linenos">1776</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> +</span><span id="Parser-1777"><a href="#Parser-1777"><span class="linenos">1777</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> +</span><span id="Parser-1778"><a href="#Parser-1778"><span class="linenos">1778</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="Parser-1779"><a href="#Parser-1779"><span class="linenos">1779</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="Parser-1780"><a href="#Parser-1780"><span class="linenos">1780</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="Parser-1781"><a href="#Parser-1781"><span class="linenos">1781</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="Parser-1782"><a href="#Parser-1782"><span class="linenos">1782</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="Parser-1783"><a href="#Parser-1783"><span class="linenos">1783</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> +</span><span id="Parser-1784"><a href="#Parser-1784"><span class="linenos">1784</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> +</span><span id="Parser-1785"><a href="#Parser-1785"><span class="linenos">1785</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="Parser-1786"><a href="#Parser-1786"><span class="linenos">1786</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CACHE"</span><span class="p">):</span> +</span><span id="Parser-1787"><a href="#Parser-1787"><span class="linenos">1787</span></a> <span class="c1"># T-SQL allows empty CACHE which is initialized dynamically</span> +</span><span id="Parser-1788"><a href="#Parser-1788"><span class="linenos">1788</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1789"><a href="#Parser-1789"><span class="linenos">1789</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OWNED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-1790"><a href="#Parser-1790"><span class="linenos">1790</span></a> <span class="c1"># "OWNED BY NONE" is the default</span> +</span><span id="Parser-1791"><a href="#Parser-1791"><span class="linenos">1791</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"owned"</span><span class="p">,</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NONE"</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="Parser-1792"><a href="#Parser-1792"><span class="linenos">1792</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1793"><a href="#Parser-1793"><span class="linenos">1793</span></a> <span class="n">opt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATE_SEQUENCE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1794"><a href="#Parser-1794"><span class="linenos">1794</span></a> <span class="k">if</span> <span class="n">opt</span><span class="p">:</span> +</span><span id="Parser-1795"><a href="#Parser-1795"><span class="linenos">1795</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">opt</span><span class="p">)</span> +</span><span id="Parser-1796"><a href="#Parser-1796"><span class="linenos">1796</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1797"><a href="#Parser-1797"><span class="linenos">1797</span></a> <span class="k">break</span> +</span><span id="Parser-1798"><a href="#Parser-1798"><span class="linenos">1798</span></a> +</span><span id="Parser-1799"><a href="#Parser-1799"><span class="linenos">1799</span></a> <span class="n">seq</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="n">options</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-1800"><a href="#Parser-1800"><span class="linenos">1800</span></a> <span class="k">return</span> <span class="kc">None</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">==</span> <span class="n">index</span> <span class="k">else</span> <span class="n">seq</span> +</span><span id="Parser-1801"><a href="#Parser-1801"><span class="linenos">1801</span></a> +</span><span id="Parser-1802"><a href="#Parser-1802"><span class="linenos">1802</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1803"><a href="#Parser-1803"><span class="linenos">1803</span></a> <span class="c1"># only used for teradata currently</span> +</span><span id="Parser-1804"><a href="#Parser-1804"><span class="linenos">1804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1805"><a href="#Parser-1805"><span class="linenos">1805</span></a> +</span><span id="Parser-1806"><a href="#Parser-1806"><span class="linenos">1806</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-1807"><a href="#Parser-1807"><span class="linenos">1807</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">),</span> +</span><span id="Parser-1808"><a href="#Parser-1808"><span class="linenos">1808</span></a> <span class="s2">"dual"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">),</span> +</span><span id="Parser-1809"><a href="#Parser-1809"><span class="linenos">1809</span></a> <span class="s2">"before"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">),</span> +</span><span id="Parser-1810"><a href="#Parser-1810"><span class="linenos">1810</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">),</span> +</span><span id="Parser-1811"><a href="#Parser-1811"><span class="linenos">1811</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="Parser-1812"><a href="#Parser-1812"><span class="linenos">1812</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"NOT LOCAL"</span><span class="p">),</span> +</span><span id="Parser-1813"><a href="#Parser-1813"><span class="linenos">1813</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">),</span> +</span><span id="Parser-1814"><a href="#Parser-1814"><span class="linenos">1814</span></a> <span class="s2">"minimum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)),</span> +</span><span id="Parser-1815"><a href="#Parser-1815"><span class="linenos">1815</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)),</span> +</span><span id="Parser-1816"><a href="#Parser-1816"><span class="linenos">1816</span></a> <span class="p">}</span> +</span><span id="Parser-1817"><a href="#Parser-1817"><span class="linenos">1817</span></a> +</span><span id="Parser-1818"><a href="#Parser-1818"><span class="linenos">1818</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-1819"><a href="#Parser-1819"><span class="linenos">1819</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()]</span> +</span><span id="Parser-1820"><a href="#Parser-1820"><span class="linenos">1820</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Parser-1821"><a href="#Parser-1821"><span class="linenos">1821</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span><span class="p">})</span> +</span><span id="Parser-1822"><a href="#Parser-1822"><span class="linenos">1822</span></a> <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span> +</span><span id="Parser-1823"><a href="#Parser-1823"><span class="linenos">1823</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse property '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="Parser-1824"><a href="#Parser-1824"><span class="linenos">1824</span></a> +</span><span id="Parser-1825"><a href="#Parser-1825"><span class="linenos">1825</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1826"><a href="#Parser-1826"><span class="linenos">1826</span></a> +</span><span id="Parser-1827"><a href="#Parser-1827"><span class="linenos">1827</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1828"><a href="#Parser-1828"><span class="linenos">1828</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> +</span><span id="Parser-1829"><a href="#Parser-1829"><span class="linenos">1829</span></a> +</span><span id="Parser-1830"><a href="#Parser-1830"><span class="linenos">1830</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1831"><a href="#Parser-1831"><span class="linenos">1831</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-1832"><a href="#Parser-1832"><span class="linenos">1832</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> </span><span id="Parser-1833"><a href="#Parser-1833"><span class="linenos">1833</span></a> -</span><span id="Parser-1834"><a href="#Parser-1834"><span class="linenos">1834</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> -</span><span id="Parser-1835"><a href="#Parser-1835"><span class="linenos">1835</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="Parser-1834"><a href="#Parser-1834"><span class="linenos">1834</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-1835"><a href="#Parser-1835"><span class="linenos">1835</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-1836"><a href="#Parser-1836"><span class="linenos">1836</span></a> -</span><span id="Parser-1837"><a href="#Parser-1837"><span class="linenos">1837</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-1838"><a href="#Parser-1838"><span class="linenos">1838</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-1837"><a href="#Parser-1837"><span class="linenos">1837</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMPOUND"</span><span class="p">,</span> <span class="s2">"SORTKEY"</span><span class="p">):</span> +</span><span id="Parser-1838"><a href="#Parser-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-1839"><a href="#Parser-1839"><span class="linenos">1839</span></a> -</span><span id="Parser-1840"><a href="#Parser-1840"><span class="linenos">1840</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> -</span><span id="Parser-1841"><a href="#Parser-1841"><span class="linenos">1841</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-1842"><a href="#Parser-1842"><span class="linenos">1842</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sequence_properties</span><span class="p">()</span> -</span><span id="Parser-1843"><a href="#Parser-1843"><span class="linenos">1843</span></a> -</span><span id="Parser-1844"><a href="#Parser-1844"><span class="linenos">1844</span></a> <span class="c1"># Transform the key to exp.Dot if it's dotted identifiers wrapped in exp.Column or to exp.Var otherwise</span> -</span><span id="Parser-1845"><a href="#Parser-1845"><span class="linenos">1845</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-1846"><a href="#Parser-1846"><span class="linenos">1846</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-1847"><a href="#Parser-1847"><span class="linenos">1847</span></a> -</span><span id="Parser-1848"><a href="#Parser-1848"><span class="linenos">1848</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1840"><a href="#Parser-1840"><span class="linenos">1840</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> +</span><span id="Parser-1841"><a href="#Parser-1841"><span class="linenos">1841</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="Parser-1842"><a href="#Parser-1842"><span class="linenos">1842</span></a> +</span><span id="Parser-1843"><a href="#Parser-1843"><span class="linenos">1843</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-1844"><a href="#Parser-1844"><span class="linenos">1844</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-1845"><a href="#Parser-1845"><span class="linenos">1845</span></a> +</span><span id="Parser-1846"><a href="#Parser-1846"><span class="linenos">1846</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> +</span><span id="Parser-1847"><a href="#Parser-1847"><span class="linenos">1847</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-1848"><a href="#Parser-1848"><span class="linenos">1848</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sequence_properties</span><span class="p">()</span> </span><span id="Parser-1849"><a href="#Parser-1849"><span class="linenos">1849</span></a> -</span><span id="Parser-1850"><a href="#Parser-1850"><span class="linenos">1850</span></a> <span class="c1"># Transform the value to exp.Var if it was parsed as exp.Column(exp.Identifier())</span> -</span><span id="Parser-1851"><a href="#Parser-1851"><span class="linenos">1851</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-1852"><a href="#Parser-1852"><span class="linenos">1852</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-1850"><a href="#Parser-1850"><span class="linenos">1850</span></a> <span class="c1"># Transform the key to exp.Dot if it's dotted identifiers wrapped in exp.Column or to exp.Var otherwise</span> +</span><span id="Parser-1851"><a href="#Parser-1851"><span class="linenos">1851</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-1852"><a href="#Parser-1852"><span class="linenos">1852</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> </span><span id="Parser-1853"><a href="#Parser-1853"><span class="linenos">1853</span></a> -</span><span id="Parser-1854"><a href="#Parser-1854"><span class="linenos">1854</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="Parser-1854"><a href="#Parser-1854"><span class="linenos">1854</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-1855"><a href="#Parser-1855"><span class="linenos">1855</span></a> -</span><span id="Parser-1856"><a href="#Parser-1856"><span class="linenos">1856</span></a> <span class="k">def</span> <span class="nf">_parse_stored</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> -</span><span id="Parser-1857"><a href="#Parser-1857"><span class="linenos">1857</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1858"><a href="#Parser-1858"><span class="linenos">1858</span></a> -</span><span id="Parser-1859"><a href="#Parser-1859"><span class="linenos">1859</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-1860"><a href="#Parser-1860"><span class="linenos">1860</span></a> <span class="n">output_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUTPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1856"><a href="#Parser-1856"><span class="linenos">1856</span></a> <span class="c1"># Transform the value to exp.Var if it was parsed as exp.Column(exp.Identifier())</span> +</span><span id="Parser-1857"><a href="#Parser-1857"><span class="linenos">1857</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-1858"><a href="#Parser-1858"><span class="linenos">1858</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-1859"><a href="#Parser-1859"><span class="linenos">1859</span></a> +</span><span id="Parser-1860"><a href="#Parser-1860"><span class="linenos">1860</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> </span><span id="Parser-1861"><a href="#Parser-1861"><span class="linenos">1861</span></a> -</span><span id="Parser-1862"><a href="#Parser-1862"><span class="linenos">1862</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1863"><a href="#Parser-1863"><span class="linenos">1863</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">,</span> -</span><span id="Parser-1864"><a href="#Parser-1864"><span class="linenos">1864</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span> -</span><span id="Parser-1865"><a href="#Parser-1865"><span class="linenos">1865</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1866"><a href="#Parser-1866"><span class="linenos">1866</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InputOutputFormat</span><span class="p">,</span> <span class="n">input_format</span><span class="o">=</span><span class="n">input_format</span><span class="p">,</span> <span class="n">output_format</span><span class="o">=</span><span class="n">output_format</span> -</span><span id="Parser-1867"><a href="#Parser-1867"><span class="linenos">1867</span></a> <span class="p">)</span> -</span><span id="Parser-1868"><a href="#Parser-1868"><span class="linenos">1868</span></a> <span class="k">if</span> <span class="n">input_format</span> <span class="ow">or</span> <span class="n">output_format</span> -</span><span id="Parser-1869"><a href="#Parser-1869"><span class="linenos">1869</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1870"><a href="#Parser-1870"><span class="linenos">1870</span></a> <span class="p">),</span> -</span><span id="Parser-1871"><a href="#Parser-1871"><span class="linenos">1871</span></a> <span class="p">)</span> -</span><span id="Parser-1872"><a href="#Parser-1872"><span class="linenos">1872</span></a> -</span><span id="Parser-1873"><a href="#Parser-1873"><span class="linenos">1873</span></a> <span class="k">def</span> <span class="nf">_parse_unquoted_field</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1874"><a href="#Parser-1874"><span class="linenos">1874</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-1875"><a href="#Parser-1875"><span class="linenos">1875</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">field</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span> -</span><span id="Parser-1876"><a href="#Parser-1876"><span class="linenos">1876</span></a> <span class="n">field</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> -</span><span id="Parser-1877"><a href="#Parser-1877"><span class="linenos">1877</span></a> -</span><span id="Parser-1878"><a href="#Parser-1878"><span class="linenos">1878</span></a> <span class="k">return</span> <span class="n">field</span> -</span><span id="Parser-1879"><a href="#Parser-1879"><span class="linenos">1879</span></a> -</span><span id="Parser-1880"><a href="#Parser-1880"><span class="linenos">1880</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</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">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Parser-1881"><a href="#Parser-1881"><span class="linenos">1881</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1882"><a href="#Parser-1882"><span class="linenos">1882</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1862"><a href="#Parser-1862"><span class="linenos">1862</span></a> <span class="k">def</span> <span class="nf">_parse_stored</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> +</span><span id="Parser-1863"><a href="#Parser-1863"><span class="linenos">1863</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1864"><a href="#Parser-1864"><span class="linenos">1864</span></a> +</span><span id="Parser-1865"><a href="#Parser-1865"><span class="linenos">1865</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1866"><a href="#Parser-1866"><span class="linenos">1866</span></a> <span class="n">output_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUTPUTFORMAT"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1867"><a href="#Parser-1867"><span class="linenos">1867</span></a> +</span><span id="Parser-1868"><a href="#Parser-1868"><span class="linenos">1868</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1869"><a href="#Parser-1869"><span class="linenos">1869</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">,</span> +</span><span id="Parser-1870"><a href="#Parser-1870"><span class="linenos">1870</span></a> <span class="n">this</span><span class="o">=</span><span class="p">(</span> +</span><span id="Parser-1871"><a href="#Parser-1871"><span class="linenos">1871</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1872"><a href="#Parser-1872"><span class="linenos">1872</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InputOutputFormat</span><span class="p">,</span> <span class="n">input_format</span><span class="o">=</span><span class="n">input_format</span><span class="p">,</span> <span class="n">output_format</span><span class="o">=</span><span class="n">output_format</span> +</span><span id="Parser-1873"><a href="#Parser-1873"><span class="linenos">1873</span></a> <span class="p">)</span> +</span><span id="Parser-1874"><a href="#Parser-1874"><span class="linenos">1874</span></a> <span class="k">if</span> <span class="n">input_format</span> <span class="ow">or</span> <span class="n">output_format</span> +</span><span id="Parser-1875"><a href="#Parser-1875"><span class="linenos">1875</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-1876"><a href="#Parser-1876"><span class="linenos">1876</span></a> <span class="p">),</span> +</span><span id="Parser-1877"><a href="#Parser-1877"><span class="linenos">1877</span></a> <span class="p">)</span> +</span><span id="Parser-1878"><a href="#Parser-1878"><span class="linenos">1878</span></a> +</span><span id="Parser-1879"><a href="#Parser-1879"><span class="linenos">1879</span></a> <span class="k">def</span> <span class="nf">_parse_unquoted_field</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1880"><a href="#Parser-1880"><span class="linenos">1880</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-1881"><a href="#Parser-1881"><span class="linenos">1881</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">field</span><span class="o">.</span><span class="n">quoted</span><span class="p">:</span> +</span><span id="Parser-1882"><a href="#Parser-1882"><span class="linenos">1882</span></a> <span class="n">field</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> </span><span id="Parser-1883"><a href="#Parser-1883"><span class="linenos">1883</span></a> -</span><span id="Parser-1884"><a href="#Parser-1884"><span class="linenos">1884</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">(),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser-1884"><a href="#Parser-1884"><span class="linenos">1884</span></a> <span class="k">return</span> <span class="n">field</span> </span><span id="Parser-1885"><a href="#Parser-1885"><span class="linenos">1885</span></a> -</span><span id="Parser-1886"><a href="#Parser-1886"><span class="linenos">1886</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</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">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">]:</span> -</span><span id="Parser-1887"><a href="#Parser-1887"><span class="linenos">1887</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1888"><a href="#Parser-1888"><span class="linenos">1888</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-1889"><a href="#Parser-1889"><span class="linenos">1889</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> -</span><span id="Parser-1890"><a href="#Parser-1890"><span class="linenos">1890</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> -</span><span id="Parser-1891"><a href="#Parser-1891"><span class="linenos">1891</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1892"><a href="#Parser-1892"><span class="linenos">1892</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> -</span><span id="Parser-1893"><a href="#Parser-1893"><span class="linenos">1893</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">prop</span><span class="p">:</span> -</span><span id="Parser-1894"><a href="#Parser-1894"><span class="linenos">1894</span></a> <span class="k">break</span> -</span><span id="Parser-1895"><a href="#Parser-1895"><span class="linenos">1895</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">prop</span><span class="p">):</span> -</span><span id="Parser-1896"><a href="#Parser-1896"><span class="linenos">1896</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Parser-1897"><a href="#Parser-1897"><span class="linenos">1897</span></a> -</span><span id="Parser-1898"><a href="#Parser-1898"><span class="linenos">1898</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="Parser-1899"><a href="#Parser-1899"><span class="linenos">1899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> -</span><span id="Parser-1900"><a href="#Parser-1900"><span class="linenos">1900</span></a> -</span><span id="Parser-1901"><a href="#Parser-1901"><span class="linenos">1901</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1902"><a href="#Parser-1902"><span class="linenos">1902</span></a> -</span><span id="Parser-1903"><a href="#Parser-1903"><span class="linenos">1903</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> -</span><span id="Parser-1904"><a href="#Parser-1904"><span class="linenos">1904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1905"><a href="#Parser-1905"><span class="linenos">1905</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> -</span><span id="Parser-1906"><a href="#Parser-1906"><span class="linenos">1906</span></a> <span class="p">)</span> -</span><span id="Parser-1907"><a href="#Parser-1907"><span class="linenos">1907</span></a> -</span><span id="Parser-1908"><a href="#Parser-1908"><span class="linenos">1908</span></a> <span class="k">def</span> <span class="nf">_parse_volatile_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">:</span> -</span><span id="Parser-1909"><a href="#Parser-1909"><span class="linenos">1909</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="Parser-1910"><a href="#Parser-1910"><span class="linenos">1910</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> -</span><span id="Parser-1911"><a href="#Parser-1911"><span class="linenos">1911</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1912"><a href="#Parser-1912"><span class="linenos">1912</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1886"><a href="#Parser-1886"><span class="linenos">1886</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</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">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Parser-1887"><a href="#Parser-1887"><span class="linenos">1887</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1888"><a href="#Parser-1888"><span class="linenos">1888</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1889"><a href="#Parser-1889"><span class="linenos">1889</span></a> +</span><span id="Parser-1890"><a href="#Parser-1890"><span class="linenos">1890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">(),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser-1891"><a href="#Parser-1891"><span class="linenos">1891</span></a> +</span><span id="Parser-1892"><a href="#Parser-1892"><span class="linenos">1892</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</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">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">]:</span> +</span><span id="Parser-1893"><a href="#Parser-1893"><span class="linenos">1893</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1894"><a href="#Parser-1894"><span class="linenos">1894</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-1895"><a href="#Parser-1895"><span class="linenos">1895</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> +</span><span id="Parser-1896"><a href="#Parser-1896"><span class="linenos">1896</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> +</span><span id="Parser-1897"><a href="#Parser-1897"><span class="linenos">1897</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1898"><a href="#Parser-1898"><span class="linenos">1898</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> +</span><span id="Parser-1899"><a href="#Parser-1899"><span class="linenos">1899</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">prop</span><span class="p">:</span> +</span><span id="Parser-1900"><a href="#Parser-1900"><span class="linenos">1900</span></a> <span class="k">break</span> +</span><span id="Parser-1901"><a href="#Parser-1901"><span class="linenos">1901</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">prop</span><span class="p">):</span> +</span><span id="Parser-1902"><a href="#Parser-1902"><span class="linenos">1902</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Parser-1903"><a href="#Parser-1903"><span class="linenos">1903</span></a> +</span><span id="Parser-1904"><a href="#Parser-1904"><span class="linenos">1904</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="Parser-1905"><a href="#Parser-1905"><span class="linenos">1905</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> +</span><span id="Parser-1906"><a href="#Parser-1906"><span class="linenos">1906</span></a> +</span><span id="Parser-1907"><a href="#Parser-1907"><span class="linenos">1907</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1908"><a href="#Parser-1908"><span class="linenos">1908</span></a> +</span><span id="Parser-1909"><a href="#Parser-1909"><span class="linenos">1909</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> +</span><span id="Parser-1910"><a href="#Parser-1910"><span class="linenos">1910</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1911"><a href="#Parser-1911"><span class="linenos">1911</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> +</span><span id="Parser-1912"><a href="#Parser-1912"><span class="linenos">1912</span></a> <span class="p">)</span> </span><span id="Parser-1913"><a href="#Parser-1913"><span class="linenos">1913</span></a> -</span><span id="Parser-1914"><a href="#Parser-1914"><span class="linenos">1914</span></a> <span class="k">if</span> <span class="n">pre_volatile_token</span> <span class="ow">and</span> <span class="n">pre_volatile_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRE_VOLATILE_TOKENS</span><span class="p">:</span> -</span><span id="Parser-1915"><a href="#Parser-1915"><span class="linenos">1915</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">()</span> -</span><span id="Parser-1916"><a href="#Parser-1916"><span class="linenos">1916</span></a> -</span><span id="Parser-1917"><a href="#Parser-1917"><span class="linenos">1917</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">))</span> -</span><span id="Parser-1918"><a href="#Parser-1918"><span class="linenos">1918</span></a> -</span><span id="Parser-1919"><a href="#Parser-1919"><span class="linenos">1919</span></a> <span class="k">def</span> <span class="nf">_parse_retention_period</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">:</span> -</span><span id="Parser-1920"><a href="#Parser-1920"><span class="linenos">1920</span></a> <span class="c1"># Parse TSQL's HISTORY_RETENTION_PERIOD: {INFINITE | <number> DAY | DAYS | MONTH ...}</span> -</span><span id="Parser-1921"><a href="#Parser-1921"><span class="linenos">1921</span></a> <span class="n">number</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-1922"><a href="#Parser-1922"><span class="linenos">1922</span></a> <span class="n">number_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">number</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Parser-1923"><a href="#Parser-1923"><span class="linenos">1923</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1924"><a href="#Parser-1924"><span class="linenos">1924</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number_str</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-1925"><a href="#Parser-1925"><span class="linenos">1925</span></a> -</span><span id="Parser-1926"><a href="#Parser-1926"><span class="linenos">1926</span></a> <span class="k">def</span> <span class="nf">_parse_system_versioning_property</span><span class="p">(</span> -</span><span id="Parser-1927"><a href="#Parser-1927"><span class="linenos">1927</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1928"><a href="#Parser-1928"><span class="linenos">1928</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">:</span> -</span><span id="Parser-1929"><a href="#Parser-1929"><span class="linenos">1929</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1930"><a href="#Parser-1930"><span class="linenos">1930</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1931"><a href="#Parser-1931"><span class="linenos">1931</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">,</span> -</span><span id="Parser-1932"><a href="#Parser-1932"><span class="linenos">1932</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-1933"><a href="#Parser-1933"><span class="linenos">1933</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-1934"><a href="#Parser-1934"><span class="linenos">1934</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> -</span><span id="Parser-1935"><a href="#Parser-1935"><span class="linenos">1935</span></a> <span class="p">},</span> -</span><span id="Parser-1936"><a href="#Parser-1936"><span class="linenos">1936</span></a> <span class="p">)</span> -</span><span id="Parser-1937"><a href="#Parser-1937"><span class="linenos">1937</span></a> -</span><span id="Parser-1938"><a href="#Parser-1938"><span class="linenos">1938</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> -</span><span id="Parser-1939"><a href="#Parser-1939"><span class="linenos">1939</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1940"><a href="#Parser-1940"><span class="linenos">1940</span></a> <span class="k">return</span> <span class="n">prop</span> -</span><span id="Parser-1941"><a href="#Parser-1941"><span class="linenos">1941</span></a> -</span><span id="Parser-1942"><a href="#Parser-1942"><span class="linenos">1942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-1943"><a href="#Parser-1943"><span class="linenos">1943</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-1944"><a href="#Parser-1944"><span class="linenos">1944</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-1945"><a href="#Parser-1945"><span class="linenos">1945</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_TABLE"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-1946"><a href="#Parser-1946"><span class="linenos">1946</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> -</span><span id="Parser-1947"><a href="#Parser-1947"><span class="linenos">1947</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA_CONSISTENCY_CHECK"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-1948"><a href="#Parser-1948"><span class="linenos">1948</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"data_consistency"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-1949"><a href="#Parser-1949"><span class="linenos">1949</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-1950"><a href="#Parser-1950"><span class="linenos">1950</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> -</span><span id="Parser-1951"><a href="#Parser-1951"><span class="linenos">1951</span></a> -</span><span id="Parser-1952"><a href="#Parser-1952"><span class="linenos">1952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1953"><a href="#Parser-1953"><span class="linenos">1953</span></a> -</span><span id="Parser-1954"><a href="#Parser-1954"><span class="linenos">1954</span></a> <span class="k">return</span> <span class="n">prop</span> -</span><span id="Parser-1955"><a href="#Parser-1955"><span class="linenos">1955</span></a> -</span><span id="Parser-1956"><a href="#Parser-1956"><span class="linenos">1956</span></a> <span class="k">def</span> <span class="nf">_parse_data_deletion_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">:</span> -</span><span id="Parser-1957"><a href="#Parser-1957"><span class="linenos">1957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1958"><a href="#Parser-1958"><span class="linenos">1958</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">)</span> -</span><span id="Parser-1959"><a href="#Parser-1959"><span class="linenos">1959</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">)</span> -</span><span id="Parser-1960"><a href="#Parser-1960"><span class="linenos">1960</span></a> -</span><span id="Parser-1961"><a href="#Parser-1961"><span class="linenos">1961</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-1962"><a href="#Parser-1962"><span class="linenos">1962</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-1963"><a href="#Parser-1963"><span class="linenos">1963</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILTER_COLUMN"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-1964"><a href="#Parser-1964"><span class="linenos">1964</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"filter_column"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="Parser-1965"><a href="#Parser-1965"><span class="linenos">1965</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-1966"><a href="#Parser-1966"><span class="linenos">1966</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> -</span><span id="Parser-1967"><a href="#Parser-1967"><span class="linenos">1967</span></a> -</span><span id="Parser-1968"><a href="#Parser-1968"><span class="linenos">1968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1969"><a href="#Parser-1969"><span class="linenos">1969</span></a> -</span><span id="Parser-1970"><a href="#Parser-1970"><span class="linenos">1970</span></a> <span class="k">return</span> <span class="n">prop</span> -</span><span id="Parser-1971"><a href="#Parser-1971"><span class="linenos">1971</span></a> -</span><span id="Parser-1972"><a href="#Parser-1972"><span class="linenos">1972</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1973"><a href="#Parser-1973"><span class="linenos">1973</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">):</span> -</span><span id="Parser-1974"><a href="#Parser-1974"><span class="linenos">1974</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1975"><a href="#Parser-1975"><span class="linenos">1975</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-1976"><a href="#Parser-1976"><span class="linenos">1976</span></a> <span class="k">return</span> <span class="n">prop</span> +</span><span id="Parser-1914"><a href="#Parser-1914"><span class="linenos">1914</span></a> <span class="k">def</span> <span class="nf">_parse_volatile_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">:</span> +</span><span id="Parser-1915"><a href="#Parser-1915"><span class="linenos">1915</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Parser-1916"><a href="#Parser-1916"><span class="linenos">1916</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> +</span><span id="Parser-1917"><a href="#Parser-1917"><span class="linenos">1917</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1918"><a href="#Parser-1918"><span class="linenos">1918</span></a> <span class="n">pre_volatile_token</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1919"><a href="#Parser-1919"><span class="linenos">1919</span></a> +</span><span id="Parser-1920"><a href="#Parser-1920"><span class="linenos">1920</span></a> <span class="k">if</span> <span class="n">pre_volatile_token</span> <span class="ow">and</span> <span class="n">pre_volatile_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRE_VOLATILE_TOKENS</span><span class="p">:</span> +</span><span id="Parser-1921"><a href="#Parser-1921"><span class="linenos">1921</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</span><span class="p">()</span> +</span><span id="Parser-1922"><a href="#Parser-1922"><span class="linenos">1922</span></a> +</span><span id="Parser-1923"><a href="#Parser-1923"><span class="linenos">1923</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StabilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">))</span> +</span><span id="Parser-1924"><a href="#Parser-1924"><span class="linenos">1924</span></a> +</span><span id="Parser-1925"><a href="#Parser-1925"><span class="linenos">1925</span></a> <span class="k">def</span> <span class="nf">_parse_retention_period</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">:</span> +</span><span id="Parser-1926"><a href="#Parser-1926"><span class="linenos">1926</span></a> <span class="c1"># Parse TSQL's HISTORY_RETENTION_PERIOD: {INFINITE | <number> DAY | DAYS | MONTH ...}</span> +</span><span id="Parser-1927"><a href="#Parser-1927"><span class="linenos">1927</span></a> <span class="n">number</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-1928"><a href="#Parser-1928"><span class="linenos">1928</span></a> <span class="n">number_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">number</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Parser-1929"><a href="#Parser-1929"><span class="linenos">1929</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1930"><a href="#Parser-1930"><span class="linenos">1930</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">number_str</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-1931"><a href="#Parser-1931"><span class="linenos">1931</span></a> +</span><span id="Parser-1932"><a href="#Parser-1932"><span class="linenos">1932</span></a> <span class="k">def</span> <span class="nf">_parse_system_versioning_property</span><span class="p">(</span> +</span><span id="Parser-1933"><a href="#Parser-1933"><span class="linenos">1933</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1934"><a href="#Parser-1934"><span class="linenos">1934</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">:</span> +</span><span id="Parser-1935"><a href="#Parser-1935"><span class="linenos">1935</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1936"><a href="#Parser-1936"><span class="linenos">1936</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1937"><a href="#Parser-1937"><span class="linenos">1937</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithSystemVersioningProperty</span><span class="p">,</span> +</span><span id="Parser-1938"><a href="#Parser-1938"><span class="linenos">1938</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-1939"><a href="#Parser-1939"><span class="linenos">1939</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-1940"><a href="#Parser-1940"><span class="linenos">1940</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> +</span><span id="Parser-1941"><a href="#Parser-1941"><span class="linenos">1941</span></a> <span class="p">},</span> +</span><span id="Parser-1942"><a href="#Parser-1942"><span class="linenos">1942</span></a> <span class="p">)</span> +</span><span id="Parser-1943"><a href="#Parser-1943"><span class="linenos">1943</span></a> +</span><span id="Parser-1944"><a href="#Parser-1944"><span class="linenos">1944</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> +</span><span id="Parser-1945"><a href="#Parser-1945"><span class="linenos">1945</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1946"><a href="#Parser-1946"><span class="linenos">1946</span></a> <span class="k">return</span> <span class="n">prop</span> +</span><span id="Parser-1947"><a href="#Parser-1947"><span class="linenos">1947</span></a> +</span><span id="Parser-1948"><a href="#Parser-1948"><span class="linenos">1948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-1949"><a href="#Parser-1949"><span class="linenos">1949</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-1950"><a href="#Parser-1950"><span class="linenos">1950</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-1951"><a href="#Parser-1951"><span class="linenos">1951</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_TABLE"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-1952"><a href="#Parser-1952"><span class="linenos">1952</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> +</span><span id="Parser-1953"><a href="#Parser-1953"><span class="linenos">1953</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA_CONSISTENCY_CHECK"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-1954"><a href="#Parser-1954"><span class="linenos">1954</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"data_consistency"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-1955"><a href="#Parser-1955"><span class="linenos">1955</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HISTORY_RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-1956"><a href="#Parser-1956"><span class="linenos">1956</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> +</span><span id="Parser-1957"><a href="#Parser-1957"><span class="linenos">1957</span></a> +</span><span id="Parser-1958"><a href="#Parser-1958"><span class="linenos">1958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1959"><a href="#Parser-1959"><span class="linenos">1959</span></a> +</span><span id="Parser-1960"><a href="#Parser-1960"><span class="linenos">1960</span></a> <span class="k">return</span> <span class="n">prop</span> +</span><span id="Parser-1961"><a href="#Parser-1961"><span class="linenos">1961</span></a> +</span><span id="Parser-1962"><a href="#Parser-1962"><span class="linenos">1962</span></a> <span class="k">def</span> <span class="nf">_parse_data_deletion_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">:</span> +</span><span id="Parser-1963"><a href="#Parser-1963"><span class="linenos">1963</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1964"><a href="#Parser-1964"><span class="linenos">1964</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">)</span> +</span><span id="Parser-1965"><a href="#Parser-1965"><span class="linenos">1965</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">)</span> +</span><span id="Parser-1966"><a href="#Parser-1966"><span class="linenos">1966</span></a> +</span><span id="Parser-1967"><a href="#Parser-1967"><span class="linenos">1967</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-1968"><a href="#Parser-1968"><span class="linenos">1968</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-1969"><a href="#Parser-1969"><span class="linenos">1969</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILTER_COLUMN"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-1970"><a href="#Parser-1970"><span class="linenos">1970</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"filter_column"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="Parser-1971"><a href="#Parser-1971"><span class="linenos">1971</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETENTION_PERIOD"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-1972"><a href="#Parser-1972"><span class="linenos">1972</span></a> <span class="n">prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"retention_period"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_retention_period</span><span class="p">())</span> +</span><span id="Parser-1973"><a href="#Parser-1973"><span class="linenos">1973</span></a> +</span><span id="Parser-1974"><a href="#Parser-1974"><span class="linenos">1974</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1975"><a href="#Parser-1975"><span class="linenos">1975</span></a> +</span><span id="Parser-1976"><a href="#Parser-1976"><span class="linenos">1976</span></a> <span class="k">return</span> <span class="n">prop</span> </span><span id="Parser-1977"><a href="#Parser-1977"><span class="linenos">1977</span></a> -</span><span id="Parser-1978"><a href="#Parser-1978"><span class="linenos">1978</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1979"><a href="#Parser-1979"><span class="linenos">1979</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> -</span><span id="Parser-1980"><a href="#Parser-1980"><span class="linenos">1980</span></a> -</span><span id="Parser-1981"><a href="#Parser-1981"><span class="linenos">1981</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">):</span> -</span><span id="Parser-1982"><a href="#Parser-1982"><span class="linenos">1982</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> +</span><span id="Parser-1978"><a href="#Parser-1978"><span class="linenos">1978</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1979"><a href="#Parser-1979"><span class="linenos">1979</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">"SYSTEM_VERSIONING"</span><span class="p">):</span> +</span><span id="Parser-1980"><a href="#Parser-1980"><span class="linenos">1980</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_system_versioning_property</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1981"><a href="#Parser-1981"><span class="linenos">1981</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-1982"><a href="#Parser-1982"><span class="linenos">1982</span></a> <span class="k">return</span> <span class="n">prop</span> </span><span id="Parser-1983"><a href="#Parser-1983"><span class="linenos">1983</span></a> -</span><span id="Parser-1984"><a href="#Parser-1984"><span class="linenos">1984</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">VIEW_ATTRIBUTES</span><span class="p">):</span> -</span><span id="Parser-1985"><a href="#Parser-1985"><span class="linenos">1985</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ViewAttributeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-1984"><a href="#Parser-1984"><span class="linenos">1984</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1985"><a href="#Parser-1985"><span class="linenos">1985</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> </span><span id="Parser-1986"><a href="#Parser-1986"><span class="linenos">1986</span></a> -</span><span id="Parser-1987"><a href="#Parser-1987"><span class="linenos">1987</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-1988"><a href="#Parser-1988"><span class="linenos">1988</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1989"><a href="#Parser-1989"><span class="linenos">1989</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-1990"><a href="#Parser-1990"><span class="linenos">1990</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1991"><a href="#Parser-1991"><span class="linenos">1991</span></a> -</span><span id="Parser-1992"><a href="#Parser-1992"><span class="linenos">1992</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1993"><a href="#Parser-1993"><span class="linenos">1993</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1994"><a href="#Parser-1994"><span class="linenos">1994</span></a> -</span><span id="Parser-1995"><a href="#Parser-1995"><span class="linenos">1995</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="Parser-1996"><a href="#Parser-1996"><span class="linenos">1996</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1987"><a href="#Parser-1987"><span class="linenos">1987</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">):</span> +</span><span id="Parser-1988"><a href="#Parser-1988"><span class="linenos">1988</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> +</span><span id="Parser-1989"><a href="#Parser-1989"><span class="linenos">1989</span></a> +</span><span id="Parser-1990"><a href="#Parser-1990"><span class="linenos">1990</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">VIEW_ATTRIBUTES</span><span class="p">):</span> +</span><span id="Parser-1991"><a href="#Parser-1991"><span class="linenos">1991</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ViewAttributeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-1992"><a href="#Parser-1992"><span class="linenos">1992</span></a> +</span><span id="Parser-1993"><a href="#Parser-1993"><span class="linenos">1993</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-1994"><a href="#Parser-1994"><span class="linenos">1994</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1995"><a href="#Parser-1995"><span class="linenos">1995</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-1996"><a href="#Parser-1996"><span class="linenos">1996</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-1997"><a href="#Parser-1997"><span class="linenos">1997</span></a> -</span><span id="Parser-1998"><a href="#Parser-1998"><span class="linenos">1998</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> -</span><span id="Parser-1999"><a href="#Parser-1999"><span class="linenos">1999</span></a> -</span><span id="Parser-2000"><a href="#Parser-2000"><span class="linenos">2000</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> -</span><span id="Parser-2001"><a href="#Parser-2001"><span class="linenos">2001</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">]:</span> -</span><span id="Parser-2002"><a href="#Parser-2002"><span class="linenos">2002</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1998"><a href="#Parser-1998"><span class="linenos">1998</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1999"><a href="#Parser-1999"><span class="linenos">1999</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">(</span><span class="n">with_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2000"><a href="#Parser-2000"><span class="linenos">2000</span></a> +</span><span id="Parser-2001"><a href="#Parser-2001"><span class="linenos">2001</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="Parser-2002"><a href="#Parser-2002"><span class="linenos">2002</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-2003"><a href="#Parser-2003"><span class="linenos">2003</span></a> -</span><span id="Parser-2004"><a href="#Parser-2004"><span class="linenos">2004</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2005"><a href="#Parser-2005"><span class="linenos">2005</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> -</span><span id="Parser-2006"><a href="#Parser-2006"><span class="linenos">2006</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-2007"><a href="#Parser-2007"><span class="linenos">2007</span></a> -</span><span id="Parser-2008"><a href="#Parser-2008"><span class="linenos">2008</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> -</span><span id="Parser-2009"><a href="#Parser-2009"><span class="linenos">2009</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2010"><a href="#Parser-2010"><span class="linenos">2010</span></a> -</span><span id="Parser-2011"><a href="#Parser-2011"><span class="linenos">2011</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-2012"><a href="#Parser-2012"><span class="linenos">2012</span></a> -</span><span id="Parser-2013"><a href="#Parser-2013"><span class="linenos">2013</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> -</span><span id="Parser-2014"><a href="#Parser-2014"><span class="linenos">2014</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-2015"><a href="#Parser-2015"><span class="linenos">2015</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-2016"><a href="#Parser-2016"><span class="linenos">2016</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> -</span><span id="Parser-2017"><a href="#Parser-2017"><span class="linenos">2017</span></a> -</span><span id="Parser-2018"><a href="#Parser-2018"><span class="linenos">2018</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> -</span><span id="Parser-2019"><a href="#Parser-2019"><span class="linenos">2019</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> -</span><span id="Parser-2020"><a href="#Parser-2020"><span class="linenos">2020</span></a> -</span><span id="Parser-2021"><a href="#Parser-2021"><span class="linenos">2021</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> -</span><span id="Parser-2022"><a href="#Parser-2022"><span class="linenos">2022</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser-2004"><a href="#Parser-2004"><span class="linenos">2004</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> +</span><span id="Parser-2005"><a href="#Parser-2005"><span class="linenos">2005</span></a> +</span><span id="Parser-2006"><a href="#Parser-2006"><span class="linenos">2006</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> +</span><span id="Parser-2007"><a href="#Parser-2007"><span class="linenos">2007</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">]:</span> +</span><span id="Parser-2008"><a href="#Parser-2008"><span class="linenos">2008</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2009"><a href="#Parser-2009"><span class="linenos">2009</span></a> +</span><span id="Parser-2010"><a href="#Parser-2010"><span class="linenos">2010</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2011"><a href="#Parser-2011"><span class="linenos">2011</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> +</span><span id="Parser-2012"><a href="#Parser-2012"><span class="linenos">2012</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-2013"><a href="#Parser-2013"><span class="linenos">2013</span></a> +</span><span id="Parser-2014"><a href="#Parser-2014"><span class="linenos">2014</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> +</span><span id="Parser-2015"><a href="#Parser-2015"><span class="linenos">2015</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2016"><a href="#Parser-2016"><span class="linenos">2016</span></a> +</span><span id="Parser-2017"><a href="#Parser-2017"><span class="linenos">2017</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-2018"><a href="#Parser-2018"><span class="linenos">2018</span></a> +</span><span id="Parser-2019"><a href="#Parser-2019"><span class="linenos">2019</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> +</span><span id="Parser-2020"><a href="#Parser-2020"><span class="linenos">2020</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-2021"><a href="#Parser-2021"><span class="linenos">2021</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2022"><a href="#Parser-2022"><span class="linenos">2022</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> </span><span id="Parser-2023"><a href="#Parser-2023"><span class="linenos">2023</span></a> -</span><span id="Parser-2024"><a href="#Parser-2024"><span class="linenos">2024</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> -</span><span id="Parser-2025"><a href="#Parser-2025"><span class="linenos">2025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2024"><a href="#Parser-2024"><span class="linenos">2024</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> +</span><span id="Parser-2025"><a href="#Parser-2025"><span class="linenos">2025</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> </span><span id="Parser-2026"><a href="#Parser-2026"><span class="linenos">2026</span></a> -</span><span id="Parser-2027"><a href="#Parser-2027"><span class="linenos">2027</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2028"><a href="#Parser-2028"><span class="linenos">2028</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-2029"><a href="#Parser-2029"><span class="linenos">2029</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2030"><a href="#Parser-2030"><span class="linenos">2030</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> -</span><span id="Parser-2031"><a href="#Parser-2031"><span class="linenos">2031</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2027"><a href="#Parser-2027"><span class="linenos">2027</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> +</span><span id="Parser-2028"><a href="#Parser-2028"><span class="linenos">2028</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser-2029"><a href="#Parser-2029"><span class="linenos">2029</span></a> +</span><span id="Parser-2030"><a href="#Parser-2030"><span class="linenos">2030</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> +</span><span id="Parser-2031"><a href="#Parser-2031"><span class="linenos">2031</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> </span><span id="Parser-2032"><a href="#Parser-2032"><span class="linenos">2032</span></a> -</span><span id="Parser-2033"><a href="#Parser-2033"><span class="linenos">2033</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> -</span><span id="Parser-2034"><a href="#Parser-2034"><span class="linenos">2034</span></a> -</span><span id="Parser-2035"><a href="#Parser-2035"><span class="linenos">2035</span></a> <span class="k">def</span> <span class="nf">_parse_cluster</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> -</span><span id="Parser-2036"><a href="#Parser-2036"><span class="linenos">2036</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2037"><a href="#Parser-2037"><span class="linenos">2037</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> -</span><span id="Parser-2038"><a href="#Parser-2038"><span class="linenos">2038</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">(</span> -</span><span id="Parser-2039"><a href="#Parser-2039"><span class="linenos">2039</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-2040"><a href="#Parser-2040"><span class="linenos">2040</span></a> <span class="k">if</span> <span class="n">wrapped</span> -</span><span id="Parser-2041"><a href="#Parser-2041"><span class="linenos">2041</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-2042"><a href="#Parser-2042"><span class="linenos">2042</span></a> <span class="p">),</span> -</span><span id="Parser-2043"><a href="#Parser-2043"><span class="linenos">2043</span></a> <span class="p">)</span> -</span><span id="Parser-2044"><a href="#Parser-2044"><span class="linenos">2044</span></a> -</span><span id="Parser-2045"><a href="#Parser-2045"><span class="linenos">2045</span></a> <span class="k">def</span> <span class="nf">_parse_clustered_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">:</span> -</span><span id="Parser-2046"><a href="#Parser-2046"><span class="linenos">2046</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> -</span><span id="Parser-2047"><a href="#Parser-2047"><span class="linenos">2047</span></a> -</span><span id="Parser-2048"><a href="#Parser-2048"><span class="linenos">2048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-2049"><a href="#Parser-2049"><span class="linenos">2049</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-2050"><a href="#Parser-2050"><span class="linenos">2050</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2051"><a href="#Parser-2051"><span class="linenos">2051</span></a> -</span><span id="Parser-2052"><a href="#Parser-2052"><span class="linenos">2052</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2053"><a href="#Parser-2053"><span class="linenos">2053</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-2054"><a href="#Parser-2054"><span class="linenos">2054</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-2055"><a href="#Parser-2055"><span class="linenos">2055</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2056"><a href="#Parser-2056"><span class="linenos">2056</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2057"><a href="#Parser-2057"><span class="linenos">2057</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2058"><a href="#Parser-2058"><span class="linenos">2058</span></a> -</span><span id="Parser-2059"><a href="#Parser-2059"><span class="linenos">2059</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="Parser-2060"><a href="#Parser-2060"><span class="linenos">2060</span></a> <span class="n">buckets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2061"><a href="#Parser-2061"><span class="linenos">2061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKETS"</span><span class="p">)</span> -</span><span id="Parser-2062"><a href="#Parser-2062"><span class="linenos">2062</span></a> -</span><span id="Parser-2063"><a href="#Parser-2063"><span class="linenos">2063</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2064"><a href="#Parser-2064"><span class="linenos">2064</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">,</span> -</span><span id="Parser-2065"><a href="#Parser-2065"><span class="linenos">2065</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-2066"><a href="#Parser-2066"><span class="linenos">2066</span></a> <span class="n">sorted_by</span><span class="o">=</span><span class="n">sorted_by</span><span class="p">,</span> -</span><span id="Parser-2067"><a href="#Parser-2067"><span class="linenos">2067</span></a> <span class="n">buckets</span><span class="o">=</span><span class="n">buckets</span><span class="p">,</span> -</span><span id="Parser-2068"><a href="#Parser-2068"><span class="linenos">2068</span></a> <span class="p">)</span> -</span><span id="Parser-2069"><a href="#Parser-2069"><span class="linenos">2069</span></a> -</span><span id="Parser-2070"><a href="#Parser-2070"><span class="linenos">2070</span></a> <span class="k">def</span> <span class="nf">_parse_copy_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">]:</span> -</span><span id="Parser-2071"><a href="#Parser-2071"><span class="linenos">2071</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"GRANTS"</span><span class="p">):</span> -</span><span id="Parser-2072"><a href="#Parser-2072"><span class="linenos">2072</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-2073"><a href="#Parser-2073"><span class="linenos">2073</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2074"><a href="#Parser-2074"><span class="linenos">2074</span></a> -</span><span id="Parser-2075"><a href="#Parser-2075"><span class="linenos">2075</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">)</span> -</span><span id="Parser-2076"><a href="#Parser-2076"><span class="linenos">2076</span></a> -</span><span id="Parser-2077"><a href="#Parser-2077"><span class="linenos">2077</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> -</span><span id="Parser-2078"><a href="#Parser-2078"><span class="linenos">2078</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-2079"><a href="#Parser-2079"><span class="linenos">2079</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2080"><a href="#Parser-2080"><span class="linenos">2080</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> -</span><span id="Parser-2081"><a href="#Parser-2081"><span class="linenos">2081</span></a> <span class="p">)</span> +</span><span id="Parser-2033"><a href="#Parser-2033"><span class="linenos">2033</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2034"><a href="#Parser-2034"><span class="linenos">2034</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-2035"><a href="#Parser-2035"><span class="linenos">2035</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2036"><a href="#Parser-2036"><span class="linenos">2036</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> +</span><span id="Parser-2037"><a href="#Parser-2037"><span class="linenos">2037</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2038"><a href="#Parser-2038"><span class="linenos">2038</span></a> +</span><span id="Parser-2039"><a href="#Parser-2039"><span class="linenos">2039</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> +</span><span id="Parser-2040"><a href="#Parser-2040"><span class="linenos">2040</span></a> +</span><span id="Parser-2041"><a href="#Parser-2041"><span class="linenos">2041</span></a> <span class="k">def</span> <span class="nf">_parse_cluster</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> +</span><span id="Parser-2042"><a href="#Parser-2042"><span class="linenos">2042</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2043"><a href="#Parser-2043"><span class="linenos">2043</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> +</span><span id="Parser-2044"><a href="#Parser-2044"><span class="linenos">2044</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">(</span> +</span><span id="Parser-2045"><a href="#Parser-2045"><span class="linenos">2045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="Parser-2046"><a href="#Parser-2046"><span class="linenos">2046</span></a> <span class="k">if</span> <span class="n">wrapped</span> +</span><span id="Parser-2047"><a href="#Parser-2047"><span class="linenos">2047</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="Parser-2048"><a href="#Parser-2048"><span class="linenos">2048</span></a> <span class="p">),</span> +</span><span id="Parser-2049"><a href="#Parser-2049"><span class="linenos">2049</span></a> <span class="p">)</span> +</span><span id="Parser-2050"><a href="#Parser-2050"><span class="linenos">2050</span></a> +</span><span id="Parser-2051"><a href="#Parser-2051"><span class="linenos">2051</span></a> <span class="k">def</span> <span class="nf">_parse_clustered_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">:</span> +</span><span id="Parser-2052"><a href="#Parser-2052"><span class="linenos">2052</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> +</span><span id="Parser-2053"><a href="#Parser-2053"><span class="linenos">2053</span></a> +</span><span id="Parser-2054"><a href="#Parser-2054"><span class="linenos">2054</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-2055"><a href="#Parser-2055"><span class="linenos">2055</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-2056"><a href="#Parser-2056"><span class="linenos">2056</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2057"><a href="#Parser-2057"><span class="linenos">2057</span></a> +</span><span id="Parser-2058"><a href="#Parser-2058"><span class="linenos">2058</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2059"><a href="#Parser-2059"><span class="linenos">2059</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-2060"><a href="#Parser-2060"><span class="linenos">2060</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="Parser-2061"><a href="#Parser-2061"><span class="linenos">2061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2062"><a href="#Parser-2062"><span class="linenos">2062</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2063"><a href="#Parser-2063"><span class="linenos">2063</span></a> <span class="n">sorted_by</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2064"><a href="#Parser-2064"><span class="linenos">2064</span></a> +</span><span id="Parser-2065"><a href="#Parser-2065"><span class="linenos">2065</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="Parser-2066"><a href="#Parser-2066"><span class="linenos">2066</span></a> <span class="n">buckets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2067"><a href="#Parser-2067"><span class="linenos">2067</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKETS"</span><span class="p">)</span> +</span><span id="Parser-2068"><a href="#Parser-2068"><span class="linenos">2068</span></a> +</span><span id="Parser-2069"><a href="#Parser-2069"><span class="linenos">2069</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2070"><a href="#Parser-2070"><span class="linenos">2070</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ClusteredByProperty</span><span class="p">,</span> +</span><span id="Parser-2071"><a href="#Parser-2071"><span class="linenos">2071</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-2072"><a href="#Parser-2072"><span class="linenos">2072</span></a> <span class="n">sorted_by</span><span class="o">=</span><span class="n">sorted_by</span><span class="p">,</span> +</span><span id="Parser-2073"><a href="#Parser-2073"><span class="linenos">2073</span></a> <span class="n">buckets</span><span class="o">=</span><span class="n">buckets</span><span class="p">,</span> +</span><span id="Parser-2074"><a href="#Parser-2074"><span class="linenos">2074</span></a> <span class="p">)</span> +</span><span id="Parser-2075"><a href="#Parser-2075"><span class="linenos">2075</span></a> +</span><span id="Parser-2076"><a href="#Parser-2076"><span class="linenos">2076</span></a> <span class="k">def</span> <span class="nf">_parse_copy_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">]:</span> +</span><span id="Parser-2077"><a href="#Parser-2077"><span class="linenos">2077</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"GRANTS"</span><span class="p">):</span> +</span><span id="Parser-2078"><a href="#Parser-2078"><span class="linenos">2078</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-2079"><a href="#Parser-2079"><span class="linenos">2079</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2080"><a href="#Parser-2080"><span class="linenos">2080</span></a> +</span><span id="Parser-2081"><a href="#Parser-2081"><span class="linenos">2081</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyGrantsProperty</span><span class="p">)</span> </span><span id="Parser-2082"><a href="#Parser-2082"><span class="linenos">2082</span></a> -</span><span id="Parser-2083"><a href="#Parser-2083"><span class="linenos">2083</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span> -</span><span id="Parser-2084"><a href="#Parser-2084"><span class="linenos">2084</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2085"><a href="#Parser-2085"><span class="linenos">2085</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> -</span><span id="Parser-2086"><a href="#Parser-2086"><span class="linenos">2086</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> -</span><span id="Parser-2087"><a href="#Parser-2087"><span class="linenos">2087</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2088"><a href="#Parser-2088"><span class="linenos">2088</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> -</span><span id="Parser-2089"><a href="#Parser-2089"><span class="linenos">2089</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> -</span><span id="Parser-2090"><a href="#Parser-2090"><span class="linenos">2090</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> -</span><span id="Parser-2091"><a href="#Parser-2091"><span class="linenos">2091</span></a> <span class="p">)</span> -</span><span id="Parser-2092"><a href="#Parser-2092"><span class="linenos">2092</span></a> -</span><span id="Parser-2093"><a href="#Parser-2093"><span class="linenos">2093</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> -</span><span id="Parser-2094"><a href="#Parser-2094"><span class="linenos">2094</span></a> -</span><span id="Parser-2095"><a href="#Parser-2095"><span class="linenos">2095</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span> -</span><span id="Parser-2096"><a href="#Parser-2096"><span class="linenos">2096</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-2097"><a href="#Parser-2097"><span class="linenos">2097</span></a> <span class="n">default</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">None</span><span class="p">,</span> -</span><span id="Parser-2098"><a href="#Parser-2098"><span class="linenos">2098</span></a> <span class="n">minimum</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">None</span><span class="p">,</span> -</span><span id="Parser-2099"><a href="#Parser-2099"><span class="linenos">2099</span></a> <span class="n">maximum</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">None</span><span class="p">,</span> -</span><span id="Parser-2100"><a href="#Parser-2100"><span class="linenos">2100</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> -</span><span id="Parser-2101"><a href="#Parser-2101"><span class="linenos">2101</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-2102"><a href="#Parser-2102"><span class="linenos">2102</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2103"><a href="#Parser-2103"><span class="linenos">2103</span></a> -</span><span id="Parser-2104"><a href="#Parser-2104"><span class="linenos">2104</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2105"><a href="#Parser-2105"><span class="linenos">2105</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> -</span><span id="Parser-2106"><a href="#Parser-2106"><span class="linenos">2106</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-2107"><a href="#Parser-2107"><span class="linenos">2107</span></a> -</span><span id="Parser-2108"><a href="#Parser-2108"><span class="linenos">2108</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2109"><a href="#Parser-2109"><span class="linenos">2109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> -</span><span id="Parser-2110"><a href="#Parser-2110"><span class="linenos">2110</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> -</span><span id="Parser-2111"><a href="#Parser-2111"><span class="linenos">2111</span></a> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">,</span> -</span><span id="Parser-2112"><a href="#Parser-2112"><span class="linenos">2112</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="Parser-2113"><a href="#Parser-2113"><span class="linenos">2113</span></a> <span class="n">minimum</span><span class="o">=</span><span class="n">minimum</span><span class="p">,</span> -</span><span id="Parser-2114"><a href="#Parser-2114"><span class="linenos">2114</span></a> <span class="n">maximum</span><span class="o">=</span><span class="n">maximum</span><span class="p">,</span> -</span><span id="Parser-2115"><a href="#Parser-2115"><span class="linenos">2115</span></a> <span class="p">)</span> -</span><span id="Parser-2116"><a href="#Parser-2116"><span class="linenos">2116</span></a> -</span><span id="Parser-2117"><a href="#Parser-2117"><span class="linenos">2117</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> -</span><span id="Parser-2118"><a href="#Parser-2118"><span class="linenos">2118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-2119"><a href="#Parser-2119"><span class="linenos">2119</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="Parser-2120"><a href="#Parser-2120"><span class="linenos">2120</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> -</span><span id="Parser-2121"><a href="#Parser-2121"><span class="linenos">2121</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> -</span><span id="Parser-2122"><a href="#Parser-2122"><span class="linenos">2122</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="Parser-2123"><a href="#Parser-2123"><span class="linenos">2123</span></a> -</span><span id="Parser-2124"><a href="#Parser-2124"><span class="linenos">2124</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2125"><a href="#Parser-2125"><span class="linenos">2125</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> -</span><span id="Parser-2126"><a href="#Parser-2126"><span class="linenos">2126</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> -</span><span id="Parser-2127"><a href="#Parser-2127"><span class="linenos">2127</span></a> -</span><span id="Parser-2128"><a href="#Parser-2128"><span class="linenos">2128</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2129"><a href="#Parser-2129"><span class="linenos">2129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> -</span><span id="Parser-2130"><a href="#Parser-2130"><span class="linenos">2130</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> -</span><span id="Parser-2131"><a href="#Parser-2131"><span class="linenos">2131</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> -</span><span id="Parser-2132"><a href="#Parser-2132"><span class="linenos">2132</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> -</span><span id="Parser-2133"><a href="#Parser-2133"><span class="linenos">2133</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="Parser-2134"><a href="#Parser-2134"><span class="linenos">2134</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> -</span><span id="Parser-2135"><a href="#Parser-2135"><span class="linenos">2135</span></a> <span class="p">)</span> -</span><span id="Parser-2136"><a href="#Parser-2136"><span class="linenos">2136</span></a> -</span><span id="Parser-2137"><a href="#Parser-2137"><span class="linenos">2137</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">]:</span> -</span><span id="Parser-2138"><a href="#Parser-2138"><span class="linenos">2138</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2139"><a href="#Parser-2139"><span class="linenos">2139</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="Parser-2140"><a href="#Parser-2140"><span class="linenos">2140</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> -</span><span id="Parser-2141"><a href="#Parser-2141"><span class="linenos">2141</span></a> -</span><span id="Parser-2142"><a href="#Parser-2142"><span class="linenos">2142</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">):</span> -</span><span id="Parser-2143"><a href="#Parser-2143"><span class="linenos">2143</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2144"><a href="#Parser-2144"><span class="linenos">2144</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2145"><a href="#Parser-2145"><span class="linenos">2145</span></a> -</span><span id="Parser-2146"><a href="#Parser-2146"><span class="linenos">2146</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-2147"><a href="#Parser-2147"><span class="linenos">2147</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2148"><a href="#Parser-2148"><span class="linenos">2148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span> -</span><span id="Parser-2149"><a href="#Parser-2149"><span class="linenos">2149</span></a> <span class="p">)</span> -</span><span id="Parser-2150"><a href="#Parser-2150"><span class="linenos">2150</span></a> -</span><span id="Parser-2151"><a href="#Parser-2151"><span class="linenos">2151</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> -</span><span id="Parser-2152"><a href="#Parser-2152"><span class="linenos">2152</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="Parser-2153"><a href="#Parser-2153"><span class="linenos">2153</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> -</span><span id="Parser-2154"><a href="#Parser-2154"><span class="linenos">2154</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> -</span><span id="Parser-2155"><a href="#Parser-2155"><span class="linenos">2155</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> -</span><span id="Parser-2156"><a href="#Parser-2156"><span class="linenos">2156</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> -</span><span id="Parser-2157"><a href="#Parser-2157"><span class="linenos">2157</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> -</span><span id="Parser-2158"><a href="#Parser-2158"><span class="linenos">2158</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> -</span><span id="Parser-2159"><a href="#Parser-2159"><span class="linenos">2159</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> -</span><span id="Parser-2160"><a href="#Parser-2160"><span class="linenos">2160</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2161"><a href="#Parser-2161"><span class="linenos">2161</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2162"><a href="#Parser-2162"><span class="linenos">2162</span></a> -</span><span id="Parser-2163"><a href="#Parser-2163"><span class="linenos">2163</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> -</span><span id="Parser-2164"><a href="#Parser-2164"><span class="linenos">2164</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> -</span><span id="Parser-2165"><a href="#Parser-2165"><span class="linenos">2165</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2166"><a href="#Parser-2166"><span class="linenos">2166</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2167"><a href="#Parser-2167"><span class="linenos">2167</span></a> -</span><span id="Parser-2168"><a href="#Parser-2168"><span class="linenos">2168</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-2169"><a href="#Parser-2169"><span class="linenos">2169</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> -</span><span id="Parser-2170"><a href="#Parser-2170"><span class="linenos">2170</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-2171"><a href="#Parser-2171"><span class="linenos">2171</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> -</span><span id="Parser-2172"><a href="#Parser-2172"><span class="linenos">2172</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2173"><a href="#Parser-2173"><span class="linenos">2173</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2174"><a href="#Parser-2174"><span class="linenos">2174</span></a> -</span><span id="Parser-2175"><a href="#Parser-2175"><span class="linenos">2175</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> -</span><span id="Parser-2176"><a href="#Parser-2176"><span class="linenos">2176</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> -</span><span id="Parser-2177"><a href="#Parser-2177"><span class="linenos">2177</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> -</span><span id="Parser-2178"><a href="#Parser-2178"><span class="linenos">2178</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> -</span><span id="Parser-2179"><a href="#Parser-2179"><span class="linenos">2179</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> -</span><span id="Parser-2180"><a href="#Parser-2180"><span class="linenos">2180</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> -</span><span id="Parser-2181"><a href="#Parser-2181"><span class="linenos">2181</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> -</span><span id="Parser-2182"><a href="#Parser-2182"><span class="linenos">2182</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> -</span><span id="Parser-2183"><a href="#Parser-2183"><span class="linenos">2183</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> -</span><span id="Parser-2184"><a href="#Parser-2184"><span class="linenos">2184</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> -</span><span id="Parser-2185"><a href="#Parser-2185"><span class="linenos">2185</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> -</span><span id="Parser-2186"><a href="#Parser-2186"><span class="linenos">2186</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> -</span><span id="Parser-2187"><a href="#Parser-2187"><span class="linenos">2187</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2188"><a href="#Parser-2188"><span class="linenos">2188</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2189"><a href="#Parser-2189"><span class="linenos">2189</span></a> -</span><span id="Parser-2190"><a href="#Parser-2190"><span class="linenos">2190</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> -</span><span id="Parser-2191"><a href="#Parser-2191"><span class="linenos">2191</span></a> -</span><span id="Parser-2192"><a href="#Parser-2192"><span class="linenos">2192</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2193"><a href="#Parser-2193"><span class="linenos">2193</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> -</span><span id="Parser-2194"><a href="#Parser-2194"><span class="linenos">2194</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2195"><a href="#Parser-2195"><span class="linenos">2195</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-2196"><a href="#Parser-2196"><span class="linenos">2196</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> -</span><span id="Parser-2197"><a href="#Parser-2197"><span class="linenos">2197</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> -</span><span id="Parser-2198"><a href="#Parser-2198"><span class="linenos">2198</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> -</span><span id="Parser-2199"><a href="#Parser-2199"><span class="linenos">2199</span></a> <span class="p">)</span> -</span><span id="Parser-2200"><a href="#Parser-2200"><span class="linenos">2200</span></a> -</span><span id="Parser-2201"><a href="#Parser-2201"><span class="linenos">2201</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2202"><a href="#Parser-2202"><span class="linenos">2202</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> -</span><span id="Parser-2203"><a href="#Parser-2203"><span class="linenos">2203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="Parser-2204"><a href="#Parser-2204"><span class="linenos">2204</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="Parser-2205"><a href="#Parser-2205"><span class="linenos">2205</span></a> -</span><span id="Parser-2206"><a href="#Parser-2206"><span class="linenos">2206</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">:</span> -</span><span id="Parser-2207"><a href="#Parser-2207"><span class="linenos">2207</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_expr</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2208"><a href="#Parser-2208"><span class="linenos">2208</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="Parser-2209"><a href="#Parser-2209"><span class="linenos">2209</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">)</span> -</span><span id="Parser-2210"><a href="#Parser-2210"><span class="linenos">2210</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="Parser-2211"><a href="#Parser-2211"><span class="linenos">2211</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">)</span> -</span><span id="Parser-2212"><a href="#Parser-2212"><span class="linenos">2212</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-2213"><a href="#Parser-2213"><span class="linenos">2213</span></a> -</span><span id="Parser-2214"><a href="#Parser-2214"><span class="linenos">2214</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2215"><a href="#Parser-2215"><span class="linenos">2215</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2216"><a href="#Parser-2216"><span class="linenos">2216</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2217"><a href="#Parser-2217"><span class="linenos">2217</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2218"><a href="#Parser-2218"><span class="linenos">2218</span></a> -</span><span id="Parser-2219"><a href="#Parser-2219"><span class="linenos">2219</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-2220"><a href="#Parser-2220"><span class="linenos">2220</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-2221"><a href="#Parser-2221"><span class="linenos">2221</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-2222"><a href="#Parser-2222"><span class="linenos">2222</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> -</span><span id="Parser-2223"><a href="#Parser-2223"><span class="linenos">2223</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="Parser-2224"><a href="#Parser-2224"><span class="linenos">2224</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> -</span><span id="Parser-2225"><a href="#Parser-2225"><span class="linenos">2225</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">,</span> <span class="s2">"MODULUS"</span><span class="p">):</span> -</span><span id="Parser-2226"><a href="#Parser-2226"><span class="linenos">2226</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2227"><a href="#Parser-2227"><span class="linenos">2227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">","</span><span class="p">,</span> <span class="s2">"REMAINDER"</span><span class="p">)</span> -</span><span id="Parser-2228"><a href="#Parser-2228"><span class="linenos">2228</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2229"><a href="#Parser-2229"><span class="linenos">2229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2230"><a href="#Parser-2230"><span class="linenos">2230</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2231"><a href="#Parser-2231"><span class="linenos">2231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse partition bound spec."</span><span class="p">)</span> -</span><span id="Parser-2232"><a href="#Parser-2232"><span class="linenos">2232</span></a> -</span><span id="Parser-2233"><a href="#Parser-2233"><span class="linenos">2233</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2234"><a href="#Parser-2234"><span class="linenos">2234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">,</span> -</span><span id="Parser-2235"><a href="#Parser-2235"><span class="linenos">2235</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2236"><a href="#Parser-2236"><span class="linenos">2236</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-2237"><a href="#Parser-2237"><span class="linenos">2237</span></a> <span class="n">from_expressions</span><span class="o">=</span><span class="n">from_expressions</span><span class="p">,</span> -</span><span id="Parser-2238"><a href="#Parser-2238"><span class="linenos">2238</span></a> <span class="n">to_expressions</span><span class="o">=</span><span class="n">to_expressions</span><span class="p">,</span> -</span><span id="Parser-2239"><a href="#Parser-2239"><span class="linenos">2239</span></a> <span class="p">)</span> -</span><span id="Parser-2240"><a href="#Parser-2240"><span class="linenos">2240</span></a> -</span><span id="Parser-2241"><a href="#Parser-2241"><span class="linenos">2241</span></a> <span class="c1"># https://www.postgresql.org/docs/current/sql-createtable.html</span> -</span><span id="Parser-2242"><a href="#Parser-2242"><span class="linenos">2242</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">]:</span> -</span><span id="Parser-2243"><a href="#Parser-2243"><span class="linenos">2243</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> -</span><span id="Parser-2244"><a href="#Parser-2244"><span class="linenos">2244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-2245"><a href="#Parser-2245"><span class="linenos">2245</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2083"><a href="#Parser-2083"><span class="linenos">2083</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> +</span><span id="Parser-2084"><a href="#Parser-2084"><span class="linenos">2084</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2085"><a href="#Parser-2085"><span class="linenos">2085</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2086"><a href="#Parser-2086"><span class="linenos">2086</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> +</span><span id="Parser-2087"><a href="#Parser-2087"><span class="linenos">2087</span></a> <span class="p">)</span> +</span><span id="Parser-2088"><a href="#Parser-2088"><span class="linenos">2088</span></a> +</span><span id="Parser-2089"><a href="#Parser-2089"><span class="linenos">2089</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span> +</span><span id="Parser-2090"><a href="#Parser-2090"><span class="linenos">2090</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2091"><a href="#Parser-2091"><span class="linenos">2091</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> +</span><span id="Parser-2092"><a href="#Parser-2092"><span class="linenos">2092</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> +</span><span id="Parser-2093"><a href="#Parser-2093"><span class="linenos">2093</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2094"><a href="#Parser-2094"><span class="linenos">2094</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> +</span><span id="Parser-2095"><a href="#Parser-2095"><span class="linenos">2095</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> +</span><span id="Parser-2096"><a href="#Parser-2096"><span class="linenos">2096</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> +</span><span id="Parser-2097"><a href="#Parser-2097"><span class="linenos">2097</span></a> <span class="p">)</span> +</span><span id="Parser-2098"><a href="#Parser-2098"><span class="linenos">2098</span></a> +</span><span id="Parser-2099"><a href="#Parser-2099"><span class="linenos">2099</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> +</span><span id="Parser-2100"><a href="#Parser-2100"><span class="linenos">2100</span></a> +</span><span id="Parser-2101"><a href="#Parser-2101"><span class="linenos">2101</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span> +</span><span id="Parser-2102"><a href="#Parser-2102"><span class="linenos">2102</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-2103"><a href="#Parser-2103"><span class="linenos">2103</span></a> <span class="n">default</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">None</span><span class="p">,</span> +</span><span id="Parser-2104"><a href="#Parser-2104"><span class="linenos">2104</span></a> <span class="n">minimum</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">None</span><span class="p">,</span> +</span><span id="Parser-2105"><a href="#Parser-2105"><span class="linenos">2105</span></a> <span class="n">maximum</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">None</span><span class="p">,</span> +</span><span id="Parser-2106"><a href="#Parser-2106"><span class="linenos">2106</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> +</span><span id="Parser-2107"><a href="#Parser-2107"><span class="linenos">2107</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2108"><a href="#Parser-2108"><span class="linenos">2108</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2109"><a href="#Parser-2109"><span class="linenos">2109</span></a> +</span><span id="Parser-2110"><a href="#Parser-2110"><span class="linenos">2110</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2111"><a href="#Parser-2111"><span class="linenos">2111</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> +</span><span id="Parser-2112"><a href="#Parser-2112"><span class="linenos">2112</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-2113"><a href="#Parser-2113"><span class="linenos">2113</span></a> +</span><span id="Parser-2114"><a href="#Parser-2114"><span class="linenos">2114</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2115"><a href="#Parser-2115"><span class="linenos">2115</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> +</span><span id="Parser-2116"><a href="#Parser-2116"><span class="linenos">2116</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> +</span><span id="Parser-2117"><a href="#Parser-2117"><span class="linenos">2117</span></a> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">,</span> +</span><span id="Parser-2118"><a href="#Parser-2118"><span class="linenos">2118</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="Parser-2119"><a href="#Parser-2119"><span class="linenos">2119</span></a> <span class="n">minimum</span><span class="o">=</span><span class="n">minimum</span><span class="p">,</span> +</span><span id="Parser-2120"><a href="#Parser-2120"><span class="linenos">2120</span></a> <span class="n">maximum</span><span class="o">=</span><span class="n">maximum</span><span class="p">,</span> +</span><span id="Parser-2121"><a href="#Parser-2121"><span class="linenos">2121</span></a> <span class="p">)</span> +</span><span id="Parser-2122"><a href="#Parser-2122"><span class="linenos">2122</span></a> +</span><span id="Parser-2123"><a href="#Parser-2123"><span class="linenos">2123</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> +</span><span id="Parser-2124"><a href="#Parser-2124"><span class="linenos">2124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2125"><a href="#Parser-2125"><span class="linenos">2125</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="Parser-2126"><a href="#Parser-2126"><span class="linenos">2126</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> +</span><span id="Parser-2127"><a href="#Parser-2127"><span class="linenos">2127</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> +</span><span id="Parser-2128"><a href="#Parser-2128"><span class="linenos">2128</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="Parser-2129"><a href="#Parser-2129"><span class="linenos">2129</span></a> +</span><span id="Parser-2130"><a href="#Parser-2130"><span class="linenos">2130</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2131"><a href="#Parser-2131"><span class="linenos">2131</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> +</span><span id="Parser-2132"><a href="#Parser-2132"><span class="linenos">2132</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="Parser-2133"><a href="#Parser-2133"><span class="linenos">2133</span></a> +</span><span id="Parser-2134"><a href="#Parser-2134"><span class="linenos">2134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2135"><a href="#Parser-2135"><span class="linenos">2135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> +</span><span id="Parser-2136"><a href="#Parser-2136"><span class="linenos">2136</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> +</span><span id="Parser-2137"><a href="#Parser-2137"><span class="linenos">2137</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> +</span><span id="Parser-2138"><a href="#Parser-2138"><span class="linenos">2138</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> +</span><span id="Parser-2139"><a href="#Parser-2139"><span class="linenos">2139</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="Parser-2140"><a href="#Parser-2140"><span class="linenos">2140</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> +</span><span id="Parser-2141"><a href="#Parser-2141"><span class="linenos">2141</span></a> <span class="p">)</span> +</span><span id="Parser-2142"><a href="#Parser-2142"><span class="linenos">2142</span></a> +</span><span id="Parser-2143"><a href="#Parser-2143"><span class="linenos">2143</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">]:</span> +</span><span id="Parser-2144"><a href="#Parser-2144"><span class="linenos">2144</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2145"><a href="#Parser-2145"><span class="linenos">2145</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="Parser-2146"><a href="#Parser-2146"><span class="linenos">2146</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> +</span><span id="Parser-2147"><a href="#Parser-2147"><span class="linenos">2147</span></a> +</span><span id="Parser-2148"><a href="#Parser-2148"><span class="linenos">2148</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">):</span> +</span><span id="Parser-2149"><a href="#Parser-2149"><span class="linenos">2149</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2150"><a href="#Parser-2150"><span class="linenos">2150</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2151"><a href="#Parser-2151"><span class="linenos">2151</span></a> +</span><span id="Parser-2152"><a href="#Parser-2152"><span class="linenos">2152</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ISOLATED_LOADING_OPTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2153"><a href="#Parser-2153"><span class="linenos">2153</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2154"><a href="#Parser-2154"><span class="linenos">2154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span> +</span><span id="Parser-2155"><a href="#Parser-2155"><span class="linenos">2155</span></a> <span class="p">)</span> +</span><span id="Parser-2156"><a href="#Parser-2156"><span class="linenos">2156</span></a> +</span><span id="Parser-2157"><a href="#Parser-2157"><span class="linenos">2157</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> +</span><span id="Parser-2158"><a href="#Parser-2158"><span class="linenos">2158</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="Parser-2159"><a href="#Parser-2159"><span class="linenos">2159</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> +</span><span id="Parser-2160"><a href="#Parser-2160"><span class="linenos">2160</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> +</span><span id="Parser-2161"><a href="#Parser-2161"><span class="linenos">2161</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> +</span><span id="Parser-2162"><a href="#Parser-2162"><span class="linenos">2162</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> +</span><span id="Parser-2163"><a href="#Parser-2163"><span class="linenos">2163</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> +</span><span id="Parser-2164"><a href="#Parser-2164"><span class="linenos">2164</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> +</span><span id="Parser-2165"><a href="#Parser-2165"><span class="linenos">2165</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> +</span><span id="Parser-2166"><a href="#Parser-2166"><span class="linenos">2166</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2167"><a href="#Parser-2167"><span class="linenos">2167</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2168"><a href="#Parser-2168"><span class="linenos">2168</span></a> +</span><span id="Parser-2169"><a href="#Parser-2169"><span class="linenos">2169</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> +</span><span id="Parser-2170"><a href="#Parser-2170"><span class="linenos">2170</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="Parser-2171"><a href="#Parser-2171"><span class="linenos">2171</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2172"><a href="#Parser-2172"><span class="linenos">2172</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2173"><a href="#Parser-2173"><span class="linenos">2173</span></a> +</span><span id="Parser-2174"><a href="#Parser-2174"><span class="linenos">2174</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-2175"><a href="#Parser-2175"><span class="linenos">2175</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> +</span><span id="Parser-2176"><a href="#Parser-2176"><span class="linenos">2176</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-2177"><a href="#Parser-2177"><span class="linenos">2177</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> +</span><span id="Parser-2178"><a href="#Parser-2178"><span class="linenos">2178</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2179"><a href="#Parser-2179"><span class="linenos">2179</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2180"><a href="#Parser-2180"><span class="linenos">2180</span></a> +</span><span id="Parser-2181"><a href="#Parser-2181"><span class="linenos">2181</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> +</span><span id="Parser-2182"><a href="#Parser-2182"><span class="linenos">2182</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> +</span><span id="Parser-2183"><a href="#Parser-2183"><span class="linenos">2183</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> +</span><span id="Parser-2184"><a href="#Parser-2184"><span class="linenos">2184</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> +</span><span id="Parser-2185"><a href="#Parser-2185"><span class="linenos">2185</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> +</span><span id="Parser-2186"><a href="#Parser-2186"><span class="linenos">2186</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> +</span><span id="Parser-2187"><a href="#Parser-2187"><span class="linenos">2187</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> +</span><span id="Parser-2188"><a href="#Parser-2188"><span class="linenos">2188</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> +</span><span id="Parser-2189"><a href="#Parser-2189"><span class="linenos">2189</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> +</span><span id="Parser-2190"><a href="#Parser-2190"><span class="linenos">2190</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> +</span><span id="Parser-2191"><a href="#Parser-2191"><span class="linenos">2191</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> +</span><span id="Parser-2192"><a href="#Parser-2192"><span class="linenos">2192</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> +</span><span id="Parser-2193"><a href="#Parser-2193"><span class="linenos">2193</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2194"><a href="#Parser-2194"><span class="linenos">2194</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2195"><a href="#Parser-2195"><span class="linenos">2195</span></a> +</span><span id="Parser-2196"><a href="#Parser-2196"><span class="linenos">2196</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> +</span><span id="Parser-2197"><a href="#Parser-2197"><span class="linenos">2197</span></a> +</span><span id="Parser-2198"><a href="#Parser-2198"><span class="linenos">2198</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2199"><a href="#Parser-2199"><span class="linenos">2199</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> +</span><span id="Parser-2200"><a href="#Parser-2200"><span class="linenos">2200</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2201"><a href="#Parser-2201"><span class="linenos">2201</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-2202"><a href="#Parser-2202"><span class="linenos">2202</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> +</span><span id="Parser-2203"><a href="#Parser-2203"><span class="linenos">2203</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> +</span><span id="Parser-2204"><a href="#Parser-2204"><span class="linenos">2204</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> +</span><span id="Parser-2205"><a href="#Parser-2205"><span class="linenos">2205</span></a> <span class="p">)</span> +</span><span id="Parser-2206"><a href="#Parser-2206"><span class="linenos">2206</span></a> +</span><span id="Parser-2207"><a href="#Parser-2207"><span class="linenos">2207</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2208"><a href="#Parser-2208"><span class="linenos">2208</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> +</span><span id="Parser-2209"><a href="#Parser-2209"><span class="linenos">2209</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="Parser-2210"><a href="#Parser-2210"><span class="linenos">2210</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="Parser-2211"><a href="#Parser-2211"><span class="linenos">2211</span></a> +</span><span id="Parser-2212"><a href="#Parser-2212"><span class="linenos">2212</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">:</span> +</span><span id="Parser-2213"><a href="#Parser-2213"><span class="linenos">2213</span></a> <span class="k">def</span> <span class="nf">_parse_partition_bound_expr</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2214"><a href="#Parser-2214"><span class="linenos">2214</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="Parser-2215"><a href="#Parser-2215"><span class="linenos">2215</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">)</span> +</span><span id="Parser-2216"><a href="#Parser-2216"><span class="linenos">2216</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="Parser-2217"><a href="#Parser-2217"><span class="linenos">2217</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">)</span> +</span><span id="Parser-2218"><a href="#Parser-2218"><span class="linenos">2218</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-2219"><a href="#Parser-2219"><span class="linenos">2219</span></a> +</span><span id="Parser-2220"><a href="#Parser-2220"><span class="linenos">2220</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2221"><a href="#Parser-2221"><span class="linenos">2221</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2222"><a href="#Parser-2222"><span class="linenos">2222</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2223"><a href="#Parser-2223"><span class="linenos">2223</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2224"><a href="#Parser-2224"><span class="linenos">2224</span></a> +</span><span id="Parser-2225"><a href="#Parser-2225"><span class="linenos">2225</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-2226"><a href="#Parser-2226"><span class="linenos">2226</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-2227"><a href="#Parser-2227"><span class="linenos">2227</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-2228"><a href="#Parser-2228"><span class="linenos">2228</span></a> <span class="n">from_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> +</span><span id="Parser-2229"><a href="#Parser-2229"><span class="linenos">2229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="Parser-2230"><a href="#Parser-2230"><span class="linenos">2230</span></a> <span class="n">to_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="n">_parse_partition_bound_expr</span><span class="p">)</span> +</span><span id="Parser-2231"><a href="#Parser-2231"><span class="linenos">2231</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">,</span> <span class="s2">"MODULUS"</span><span class="p">):</span> +</span><span id="Parser-2232"><a href="#Parser-2232"><span class="linenos">2232</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2233"><a href="#Parser-2233"><span class="linenos">2233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">","</span><span class="p">,</span> <span class="s2">"REMAINDER"</span><span class="p">)</span> +</span><span id="Parser-2234"><a href="#Parser-2234"><span class="linenos">2234</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2235"><a href="#Parser-2235"><span class="linenos">2235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2236"><a href="#Parser-2236"><span class="linenos">2236</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2237"><a href="#Parser-2237"><span class="linenos">2237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse partition bound spec."</span><span class="p">)</span> +</span><span id="Parser-2238"><a href="#Parser-2238"><span class="linenos">2238</span></a> +</span><span id="Parser-2239"><a href="#Parser-2239"><span class="linenos">2239</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2240"><a href="#Parser-2240"><span class="linenos">2240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span><span class="p">,</span> +</span><span id="Parser-2241"><a href="#Parser-2241"><span class="linenos">2241</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2242"><a href="#Parser-2242"><span class="linenos">2242</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-2243"><a href="#Parser-2243"><span class="linenos">2243</span></a> <span class="n">from_expressions</span><span class="o">=</span><span class="n">from_expressions</span><span class="p">,</span> +</span><span id="Parser-2244"><a href="#Parser-2244"><span class="linenos">2244</span></a> <span class="n">to_expressions</span><span class="o">=</span><span class="n">to_expressions</span><span class="p">,</span> +</span><span id="Parser-2245"><a href="#Parser-2245"><span class="linenos">2245</span></a> <span class="p">)</span> </span><span id="Parser-2246"><a href="#Parser-2246"><span class="linenos">2246</span></a> -</span><span id="Parser-2247"><a href="#Parser-2247"><span class="linenos">2247</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2248"><a href="#Parser-2248"><span class="linenos">2248</span></a> -</span><span id="Parser-2249"><a href="#Parser-2249"><span class="linenos">2249</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-2250"><a href="#Parser-2250"><span class="linenos">2250</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="Parser-2251"><a href="#Parser-2251"><span class="linenos">2251</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"VALUES"</span><span class="p">):</span> -</span><span id="Parser-2252"><a href="#Parser-2252"><span class="linenos">2252</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_bound_spec</span><span class="p">()</span> -</span><span id="Parser-2253"><a href="#Parser-2253"><span class="linenos">2253</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2254"><a href="#Parser-2254"><span class="linenos">2254</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting either DEFAULT or FOR VALUES clause."</span><span class="p">)</span> -</span><span id="Parser-2255"><a href="#Parser-2255"><span class="linenos">2255</span></a> -</span><span id="Parser-2256"><a href="#Parser-2256"><span class="linenos">2256</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-2257"><a href="#Parser-2257"><span class="linenos">2257</span></a> -</span><span id="Parser-2258"><a href="#Parser-2258"><span class="linenos">2258</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> -</span><span id="Parser-2259"><a href="#Parser-2259"><span class="linenos">2259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-2260"><a href="#Parser-2260"><span class="linenos">2260</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2261"><a href="#Parser-2261"><span class="linenos">2261</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> -</span><span id="Parser-2262"><a href="#Parser-2262"><span class="linenos">2262</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> -</span><span id="Parser-2263"><a href="#Parser-2263"><span class="linenos">2263</span></a> <span class="p">)</span> -</span><span id="Parser-2264"><a href="#Parser-2264"><span class="linenos">2264</span></a> -</span><span id="Parser-2265"><a href="#Parser-2265"><span class="linenos">2265</span></a> <span class="k">def</span> <span class="nf">_parse_withdata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">:</span> -</span><span id="Parser-2266"><a href="#Parser-2266"><span class="linenos">2266</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="Parser-2267"><a href="#Parser-2267"><span class="linenos">2267</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2268"><a href="#Parser-2268"><span class="linenos">2268</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="Parser-2269"><a href="#Parser-2269"><span class="linenos">2269</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2270"><a href="#Parser-2270"><span class="linenos">2270</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2271"><a href="#Parser-2271"><span class="linenos">2271</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2272"><a href="#Parser-2272"><span class="linenos">2272</span></a> -</span><span id="Parser-2273"><a href="#Parser-2273"><span class="linenos">2273</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">)</span> -</span><span id="Parser-2274"><a href="#Parser-2274"><span class="linenos">2274</span></a> -</span><span id="Parser-2275"><a href="#Parser-2275"><span class="linenos">2275</span></a> <span class="k">def</span> <span class="nf">_parse_contains_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> -</span><span id="Parser-2276"><a href="#Parser-2276"><span class="linenos">2276</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> -</span><span id="Parser-2277"><a href="#Parser-2277"><span class="linenos">2277</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"CONTAINS SQL"</span><span class="p">)</span> -</span><span id="Parser-2278"><a href="#Parser-2278"><span class="linenos">2278</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2279"><a href="#Parser-2279"><span class="linenos">2279</span></a> -</span><span id="Parser-2280"><a href="#Parser-2280"><span class="linenos">2280</span></a> <span class="k">def</span> <span class="nf">_parse_modifies_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> -</span><span id="Parser-2281"><a href="#Parser-2281"><span class="linenos">2281</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-2282"><a href="#Parser-2282"><span class="linenos">2282</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"MODIFIES SQL DATA"</span><span class="p">)</span> -</span><span id="Parser-2283"><a href="#Parser-2283"><span class="linenos">2283</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2284"><a href="#Parser-2284"><span class="linenos">2284</span></a> -</span><span id="Parser-2285"><a href="#Parser-2285"><span class="linenos">2285</span></a> <span class="k">def</span> <span class="nf">_parse_no_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2286"><a href="#Parser-2286"><span class="linenos">2286</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">):</span> -</span><span id="Parser-2287"><a href="#Parser-2287"><span class="linenos">2287</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">()</span> -</span><span id="Parser-2288"><a href="#Parser-2288"><span class="linenos">2288</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> -</span><span id="Parser-2289"><a href="#Parser-2289"><span class="linenos">2289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"NO SQL"</span><span class="p">)</span> -</span><span id="Parser-2290"><a href="#Parser-2290"><span class="linenos">2290</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2291"><a href="#Parser-2291"><span class="linenos">2291</span></a> -</span><span id="Parser-2292"><a href="#Parser-2292"><span class="linenos">2292</span></a> <span class="k">def</span> <span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2293"><a href="#Parser-2293"><span class="linenos">2293</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"PRESERVE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="Parser-2294"><a href="#Parser-2294"><span class="linenos">2294</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">()</span> -</span><span id="Parser-2295"><a href="#Parser-2295"><span class="linenos">2295</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"DELETE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="Parser-2296"><a href="#Parser-2296"><span class="linenos">2296</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">(</span><span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2297"><a href="#Parser-2297"><span class="linenos">2297</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()))</span> -</span><span id="Parser-2298"><a href="#Parser-2298"><span class="linenos">2298</span></a> -</span><span id="Parser-2299"><a href="#Parser-2299"><span class="linenos">2299</span></a> <span class="k">def</span> <span class="nf">_parse_reads_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> -</span><span id="Parser-2300"><a href="#Parser-2300"><span class="linenos">2300</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-2301"><a href="#Parser-2301"><span class="linenos">2301</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"READS SQL DATA"</span><span class="p">)</span> -</span><span id="Parser-2302"><a href="#Parser-2302"><span class="linenos">2302</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2303"><a href="#Parser-2303"><span class="linenos">2303</span></a> -</span><span id="Parser-2304"><a href="#Parser-2304"><span class="linenos">2304</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> -</span><span id="Parser-2305"><a href="#Parser-2305"><span class="linenos">2305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> -</span><span id="Parser-2306"><a href="#Parser-2306"><span class="linenos">2306</span></a> -</span><span id="Parser-2307"><a href="#Parser-2307"><span class="linenos">2307</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]:</span> -</span><span id="Parser-2308"><a href="#Parser-2308"><span class="linenos">2308</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2247"><a href="#Parser-2247"><span class="linenos">2247</span></a> <span class="c1"># https://www.postgresql.org/docs/current/sql-createtable.html</span> +</span><span id="Parser-2248"><a href="#Parser-2248"><span class="linenos">2248</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">]:</span> +</span><span id="Parser-2249"><a href="#Parser-2249"><span class="linenos">2249</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> +</span><span id="Parser-2250"><a href="#Parser-2250"><span class="linenos">2250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-2251"><a href="#Parser-2251"><span class="linenos">2251</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2252"><a href="#Parser-2252"><span class="linenos">2252</span></a> +</span><span id="Parser-2253"><a href="#Parser-2253"><span class="linenos">2253</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2254"><a href="#Parser-2254"><span class="linenos">2254</span></a> +</span><span id="Parser-2255"><a href="#Parser-2255"><span class="linenos">2255</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-2256"><a href="#Parser-2256"><span class="linenos">2256</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionBoundSpec</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="Parser-2257"><a href="#Parser-2257"><span class="linenos">2257</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"VALUES"</span><span class="p">):</span> +</span><span id="Parser-2258"><a href="#Parser-2258"><span class="linenos">2258</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_bound_spec</span><span class="p">()</span> +</span><span id="Parser-2259"><a href="#Parser-2259"><span class="linenos">2259</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2260"><a href="#Parser-2260"><span class="linenos">2260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting either DEFAULT or FOR VALUES clause."</span><span class="p">)</span> +</span><span id="Parser-2261"><a href="#Parser-2261"><span class="linenos">2261</span></a> +</span><span id="Parser-2262"><a href="#Parser-2262"><span class="linenos">2262</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PartitionedOfProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-2263"><a href="#Parser-2263"><span class="linenos">2263</span></a> +</span><span id="Parser-2264"><a href="#Parser-2264"><span class="linenos">2264</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> +</span><span id="Parser-2265"><a href="#Parser-2265"><span class="linenos">2265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2266"><a href="#Parser-2266"><span class="linenos">2266</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2267"><a href="#Parser-2267"><span class="linenos">2267</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> +</span><span id="Parser-2268"><a href="#Parser-2268"><span class="linenos">2268</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> +</span><span id="Parser-2269"><a href="#Parser-2269"><span class="linenos">2269</span></a> <span class="p">)</span> +</span><span id="Parser-2270"><a href="#Parser-2270"><span class="linenos">2270</span></a> +</span><span id="Parser-2271"><a href="#Parser-2271"><span class="linenos">2271</span></a> <span class="k">def</span> <span class="nf">_parse_withdata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">:</span> +</span><span id="Parser-2272"><a href="#Parser-2272"><span class="linenos">2272</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="Parser-2273"><a href="#Parser-2273"><span class="linenos">2273</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2274"><a href="#Parser-2274"><span class="linenos">2274</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="Parser-2275"><a href="#Parser-2275"><span class="linenos">2275</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2276"><a href="#Parser-2276"><span class="linenos">2276</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2277"><a href="#Parser-2277"><span class="linenos">2277</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2278"><a href="#Parser-2278"><span class="linenos">2278</span></a> +</span><span id="Parser-2279"><a href="#Parser-2279"><span class="linenos">2279</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">)</span> +</span><span id="Parser-2280"><a href="#Parser-2280"><span class="linenos">2280</span></a> +</span><span id="Parser-2281"><a href="#Parser-2281"><span class="linenos">2281</span></a> <span class="k">def</span> <span class="nf">_parse_contains_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> +</span><span id="Parser-2282"><a href="#Parser-2282"><span class="linenos">2282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> +</span><span id="Parser-2283"><a href="#Parser-2283"><span class="linenos">2283</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"CONTAINS SQL"</span><span class="p">)</span> +</span><span id="Parser-2284"><a href="#Parser-2284"><span class="linenos">2284</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2285"><a href="#Parser-2285"><span class="linenos">2285</span></a> +</span><span id="Parser-2286"><a href="#Parser-2286"><span class="linenos">2286</span></a> <span class="k">def</span> <span class="nf">_parse_modifies_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> +</span><span id="Parser-2287"><a href="#Parser-2287"><span class="linenos">2287</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-2288"><a href="#Parser-2288"><span class="linenos">2288</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"MODIFIES SQL DATA"</span><span class="p">)</span> +</span><span id="Parser-2289"><a href="#Parser-2289"><span class="linenos">2289</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2290"><a href="#Parser-2290"><span class="linenos">2290</span></a> +</span><span id="Parser-2291"><a href="#Parser-2291"><span class="linenos">2291</span></a> <span class="k">def</span> <span class="nf">_parse_no_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2292"><a href="#Parser-2292"><span class="linenos">2292</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">):</span> +</span><span id="Parser-2293"><a href="#Parser-2293"><span class="linenos">2293</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">()</span> +</span><span id="Parser-2294"><a href="#Parser-2294"><span class="linenos">2294</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">):</span> +</span><span id="Parser-2295"><a href="#Parser-2295"><span class="linenos">2295</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"NO SQL"</span><span class="p">)</span> +</span><span id="Parser-2296"><a href="#Parser-2296"><span class="linenos">2296</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2297"><a href="#Parser-2297"><span class="linenos">2297</span></a> +</span><span id="Parser-2298"><a href="#Parser-2298"><span class="linenos">2298</span></a> <span class="k">def</span> <span class="nf">_parse_on_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2299"><a href="#Parser-2299"><span class="linenos">2299</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"PRESERVE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="Parser-2300"><a href="#Parser-2300"><span class="linenos">2300</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">()</span> +</span><span id="Parser-2301"><a href="#Parser-2301"><span class="linenos">2301</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"DELETE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="Parser-2302"><a href="#Parser-2302"><span class="linenos">2302</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">(</span><span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2303"><a href="#Parser-2303"><span class="linenos">2303</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OnProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()))</span> +</span><span id="Parser-2304"><a href="#Parser-2304"><span class="linenos">2304</span></a> +</span><span id="Parser-2305"><a href="#Parser-2305"><span class="linenos">2305</span></a> <span class="k">def</span> <span class="nf">_parse_reads_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">]:</span> +</span><span id="Parser-2306"><a href="#Parser-2306"><span class="linenos">2306</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-2307"><a href="#Parser-2307"><span class="linenos">2307</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlReadWriteProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="s2">"READS SQL DATA"</span><span class="p">)</span> +</span><span id="Parser-2308"><a href="#Parser-2308"><span class="linenos">2308</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-2309"><a href="#Parser-2309"><span class="linenos">2309</span></a> -</span><span id="Parser-2310"><a href="#Parser-2310"><span class="linenos">2310</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2311"><a href="#Parser-2311"><span class="linenos">2311</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> -</span><span id="Parser-2312"><a href="#Parser-2312"><span class="linenos">2312</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-2313"><a href="#Parser-2313"><span class="linenos">2313</span></a> -</span><span id="Parser-2314"><a href="#Parser-2314"><span class="linenos">2314</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2315"><a href="#Parser-2315"><span class="linenos">2315</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> -</span><span id="Parser-2316"><a href="#Parser-2316"><span class="linenos">2316</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2317"><a href="#Parser-2317"><span class="linenos">2317</span></a> -</span><span id="Parser-2318"><a href="#Parser-2318"><span class="linenos">2318</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-2319"><a href="#Parser-2319"><span class="linenos">2319</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">id_var</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="Parser-2320"><a href="#Parser-2320"><span class="linenos">2320</span></a> <span class="p">)</span> -</span><span id="Parser-2321"><a href="#Parser-2321"><span class="linenos">2321</span></a> -</span><span id="Parser-2322"><a href="#Parser-2322"><span class="linenos">2322</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-2310"><a href="#Parser-2310"><span class="linenos">2310</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> +</span><span id="Parser-2311"><a href="#Parser-2311"><span class="linenos">2311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> +</span><span id="Parser-2312"><a href="#Parser-2312"><span class="linenos">2312</span></a> +</span><span id="Parser-2313"><a href="#Parser-2313"><span class="linenos">2313</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]:</span> +</span><span id="Parser-2314"><a href="#Parser-2314"><span class="linenos">2314</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2315"><a href="#Parser-2315"><span class="linenos">2315</span></a> +</span><span id="Parser-2316"><a href="#Parser-2316"><span class="linenos">2316</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2317"><a href="#Parser-2317"><span class="linenos">2317</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> +</span><span id="Parser-2318"><a href="#Parser-2318"><span class="linenos">2318</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-2319"><a href="#Parser-2319"><span class="linenos">2319</span></a> +</span><span id="Parser-2320"><a href="#Parser-2320"><span class="linenos">2320</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2321"><a href="#Parser-2321"><span class="linenos">2321</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> +</span><span id="Parser-2322"><a href="#Parser-2322"><span class="linenos">2322</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-2323"><a href="#Parser-2323"><span class="linenos">2323</span></a> -</span><span id="Parser-2324"><a href="#Parser-2324"><span class="linenos">2324</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> -</span><span id="Parser-2325"><a href="#Parser-2325"><span class="linenos">2325</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2326"><a href="#Parser-2326"><span class="linenos">2326</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="Parser-2327"><a href="#Parser-2327"><span class="linenos">2327</span></a> <span class="p">)</span> -</span><span id="Parser-2328"><a href="#Parser-2328"><span class="linenos">2328</span></a> -</span><span id="Parser-2329"><a href="#Parser-2329"><span class="linenos">2329</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> -</span><span id="Parser-2330"><a href="#Parser-2330"><span class="linenos">2330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2324"><a href="#Parser-2324"><span class="linenos">2324</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-2325"><a href="#Parser-2325"><span class="linenos">2325</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">id_var</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="Parser-2326"><a href="#Parser-2326"><span class="linenos">2326</span></a> <span class="p">)</span> +</span><span id="Parser-2327"><a href="#Parser-2327"><span class="linenos">2327</span></a> +</span><span id="Parser-2328"><a href="#Parser-2328"><span class="linenos">2328</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-2329"><a href="#Parser-2329"><span class="linenos">2329</span></a> +</span><span id="Parser-2330"><a href="#Parser-2330"><span class="linenos">2330</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> </span><span id="Parser-2331"><a href="#Parser-2331"><span class="linenos">2331</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2332"><a href="#Parser-2332"><span class="linenos">2332</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> +</span><span id="Parser-2332"><a href="#Parser-2332"><span class="linenos">2332</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> </span><span id="Parser-2333"><a href="#Parser-2333"><span class="linenos">2333</span></a> <span class="p">)</span> </span><span id="Parser-2334"><a href="#Parser-2334"><span class="linenos">2334</span></a> -</span><span id="Parser-2335"><a href="#Parser-2335"><span class="linenos">2335</span></a> <span class="k">def</span> <span class="nf">_parse_remote_with_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">:</span> -</span><span id="Parser-2336"><a href="#Parser-2336"><span class="linenos">2336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"CONNECTION"</span><span class="p">)</span> +</span><span id="Parser-2335"><a href="#Parser-2335"><span class="linenos">2335</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> +</span><span id="Parser-2336"><a href="#Parser-2336"><span class="linenos">2336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> </span><span id="Parser-2337"><a href="#Parser-2337"><span class="linenos">2337</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2338"><a href="#Parser-2338"><span class="linenos">2338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="Parser-2338"><a href="#Parser-2338"><span class="linenos">2338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> </span><span id="Parser-2339"><a href="#Parser-2339"><span class="linenos">2339</span></a> <span class="p">)</span> </span><span id="Parser-2340"><a href="#Parser-2340"><span class="linenos">2340</span></a> -</span><span id="Parser-2341"><a href="#Parser-2341"><span class="linenos">2341</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> -</span><span id="Parser-2342"><a href="#Parser-2342"><span class="linenos">2342</span></a> <span class="n">value</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-2343"><a href="#Parser-2343"><span class="linenos">2343</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2344"><a href="#Parser-2344"><span class="linenos">2344</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-2345"><a href="#Parser-2345"><span class="linenos">2345</span></a> -</span><span id="Parser-2346"><a href="#Parser-2346"><span class="linenos">2346</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> -</span><span id="Parser-2347"><a href="#Parser-2347"><span class="linenos">2347</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="Parser-2348"><a href="#Parser-2348"><span class="linenos">2348</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2349"><a href="#Parser-2349"><span class="linenos">2349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> -</span><span id="Parser-2350"><a href="#Parser-2350"><span class="linenos">2350</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> -</span><span id="Parser-2351"><a href="#Parser-2351"><span class="linenos">2351</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">),</span> -</span><span id="Parser-2352"><a href="#Parser-2352"><span class="linenos">2352</span></a> <span class="p">)</span> -</span><span id="Parser-2353"><a href="#Parser-2353"><span class="linenos">2353</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="Parser-2354"><a href="#Parser-2354"><span class="linenos">2354</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="Parser-2355"><a href="#Parser-2355"><span class="linenos">2355</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2356"><a href="#Parser-2356"><span class="linenos">2356</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">))</span> -</span><span id="Parser-2357"><a href="#Parser-2357"><span class="linenos">2357</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"INPUT"</span><span class="p">):</span> -</span><span id="Parser-2358"><a href="#Parser-2358"><span class="linenos">2358</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2359"><a href="#Parser-2359"><span class="linenos">2359</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2360"><a href="#Parser-2360"><span class="linenos">2360</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2361"><a href="#Parser-2361"><span class="linenos">2361</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-2362"><a href="#Parser-2362"><span class="linenos">2362</span></a> -</span><span id="Parser-2363"><a href="#Parser-2363"><span class="linenos">2363</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="n">null</span><span class="p">)</span> -</span><span id="Parser-2364"><a href="#Parser-2364"><span class="linenos">2364</span></a> -</span><span id="Parser-2365"><a href="#Parser-2365"><span class="linenos">2365</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">:</span> -</span><span id="Parser-2366"><a href="#Parser-2366"><span class="linenos">2366</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-2367"><a href="#Parser-2367"><span class="linenos">2367</span></a> <span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXTENDED"</span><span class="p">,</span> <span class="s2">"FORMATTED"</span><span class="p">,</span> <span class="s2">"HISTORY"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-2368"><a href="#Parser-2368"><span class="linenos">2368</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-2369"><a href="#Parser-2369"><span class="linenos">2369</span></a> <span class="n">style</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2370"><a href="#Parser-2370"><span class="linenos">2370</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="Parser-2371"><a href="#Parser-2371"><span class="linenos">2371</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2372"><a href="#Parser-2372"><span class="linenos">2372</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="Parser-2373"><a href="#Parser-2373"><span class="linenos">2373</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-2374"><a href="#Parser-2374"><span class="linenos">2374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2375"><a href="#Parser-2375"><span class="linenos">2375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="n">style</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span> -</span><span id="Parser-2376"><a href="#Parser-2376"><span class="linenos">2376</span></a> <span class="p">)</span> -</span><span id="Parser-2377"><a href="#Parser-2377"><span class="linenos">2377</span></a> -</span><span id="Parser-2378"><a href="#Parser-2378"><span class="linenos">2378</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> -</span><span id="Parser-2379"><a href="#Parser-2379"><span class="linenos">2379</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> -</span><span id="Parser-2380"><a href="#Parser-2380"><span class="linenos">2380</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> -</span><span id="Parser-2381"><a href="#Parser-2381"><span class="linenos">2381</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="Parser-2382"><a href="#Parser-2382"><span class="linenos">2382</span></a> <span class="n">ignore</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">)</span> -</span><span id="Parser-2383"><a href="#Parser-2383"><span class="linenos">2383</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="Parser-2384"><a href="#Parser-2384"><span class="linenos">2384</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2385"><a href="#Parser-2385"><span class="linenos">2385</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2386"><a href="#Parser-2386"><span class="linenos">2386</span></a> -</span><span id="Parser-2387"><a href="#Parser-2387"><span class="linenos">2387</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> -</span><span id="Parser-2388"><a href="#Parser-2388"><span class="linenos">2388</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2389"><a href="#Parser-2389"><span class="linenos">2389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> -</span><span id="Parser-2390"><a href="#Parser-2390"><span class="linenos">2390</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> -</span><span id="Parser-2391"><a href="#Parser-2391"><span class="linenos">2391</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="Parser-2392"><a href="#Parser-2392"><span class="linenos">2392</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-2393"><a href="#Parser-2393"><span class="linenos">2393</span></a> <span class="p">)</span> -</span><span id="Parser-2394"><a href="#Parser-2394"><span class="linenos">2394</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2395"><a href="#Parser-2395"><span class="linenos">2395</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> -</span><span id="Parser-2396"><a href="#Parser-2396"><span class="linenos">2396</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-2397"><a href="#Parser-2397"><span class="linenos">2397</span></a> -</span><span id="Parser-2398"><a href="#Parser-2398"><span class="linenos">2398</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="Parser-2399"><a href="#Parser-2399"><span class="linenos">2399</span></a> <span class="n">comments</span> <span class="o">+=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> -</span><span id="Parser-2400"><a href="#Parser-2400"><span class="linenos">2400</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-2401"><a href="#Parser-2401"><span class="linenos">2401</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">)</span> -</span><span id="Parser-2402"><a href="#Parser-2402"><span class="linenos">2402</span></a> -</span><span id="Parser-2403"><a href="#Parser-2403"><span class="linenos">2403</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-2404"><a href="#Parser-2404"><span class="linenos">2404</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_partition</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2405"><a href="#Parser-2405"><span class="linenos">2405</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_function</span> -</span><span id="Parser-2406"><a href="#Parser-2406"><span class="linenos">2406</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="Parser-2407"><a href="#Parser-2407"><span class="linenos">2407</span></a> <span class="p">)</span> +</span><span id="Parser-2341"><a href="#Parser-2341"><span class="linenos">2341</span></a> <span class="k">def</span> <span class="nf">_parse_remote_with_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">:</span> +</span><span id="Parser-2342"><a href="#Parser-2342"><span class="linenos">2342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"CONNECTION"</span><span class="p">)</span> +</span><span id="Parser-2343"><a href="#Parser-2343"><span class="linenos">2343</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2344"><a href="#Parser-2344"><span class="linenos">2344</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RemoteWithConnectionModelProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="Parser-2345"><a href="#Parser-2345"><span class="linenos">2345</span></a> <span class="p">)</span> +</span><span id="Parser-2346"><a href="#Parser-2346"><span class="linenos">2346</span></a> +</span><span id="Parser-2347"><a href="#Parser-2347"><span class="linenos">2347</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> +</span><span id="Parser-2348"><a href="#Parser-2348"><span class="linenos">2348</span></a> <span class="n">value</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-2349"><a href="#Parser-2349"><span class="linenos">2349</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2350"><a href="#Parser-2350"><span class="linenos">2350</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-2351"><a href="#Parser-2351"><span class="linenos">2351</span></a> +</span><span id="Parser-2352"><a href="#Parser-2352"><span class="linenos">2352</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> +</span><span id="Parser-2353"><a href="#Parser-2353"><span class="linenos">2353</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="Parser-2354"><a href="#Parser-2354"><span class="linenos">2354</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2355"><a href="#Parser-2355"><span class="linenos">2355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> +</span><span id="Parser-2356"><a href="#Parser-2356"><span class="linenos">2356</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> +</span><span id="Parser-2357"><a href="#Parser-2357"><span class="linenos">2357</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">),</span> +</span><span id="Parser-2358"><a href="#Parser-2358"><span class="linenos">2358</span></a> <span class="p">)</span> +</span><span id="Parser-2359"><a href="#Parser-2359"><span class="linenos">2359</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="Parser-2360"><a href="#Parser-2360"><span class="linenos">2360</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="Parser-2361"><a href="#Parser-2361"><span class="linenos">2361</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2362"><a href="#Parser-2362"><span class="linenos">2362</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">))</span> +</span><span id="Parser-2363"><a href="#Parser-2363"><span class="linenos">2363</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"INPUT"</span><span class="p">):</span> +</span><span id="Parser-2364"><a href="#Parser-2364"><span class="linenos">2364</span></a> <span class="n">null</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2365"><a href="#Parser-2365"><span class="linenos">2365</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2366"><a href="#Parser-2366"><span class="linenos">2366</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2367"><a href="#Parser-2367"><span class="linenos">2367</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-2368"><a href="#Parser-2368"><span class="linenos">2368</span></a> +</span><span id="Parser-2369"><a href="#Parser-2369"><span class="linenos">2369</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="n">null</span><span class="p">)</span> +</span><span id="Parser-2370"><a href="#Parser-2370"><span class="linenos">2370</span></a> +</span><span id="Parser-2371"><a href="#Parser-2371"><span class="linenos">2371</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">:</span> +</span><span id="Parser-2372"><a href="#Parser-2372"><span class="linenos">2372</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-2373"><a href="#Parser-2373"><span class="linenos">2373</span></a> <span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXTENDED"</span><span class="p">,</span> <span class="s2">"FORMATTED"</span><span class="p">,</span> <span class="s2">"HISTORY"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-2374"><a href="#Parser-2374"><span class="linenos">2374</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-2375"><a href="#Parser-2375"><span class="linenos">2375</span></a> <span class="n">style</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2376"><a href="#Parser-2376"><span class="linenos">2376</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="Parser-2377"><a href="#Parser-2377"><span class="linenos">2377</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2378"><a href="#Parser-2378"><span class="linenos">2378</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="Parser-2379"><a href="#Parser-2379"><span class="linenos">2379</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-2380"><a href="#Parser-2380"><span class="linenos">2380</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2381"><a href="#Parser-2381"><span class="linenos">2381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="n">style</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span> +</span><span id="Parser-2382"><a href="#Parser-2382"><span class="linenos">2382</span></a> <span class="p">)</span> +</span><span id="Parser-2383"><a href="#Parser-2383"><span class="linenos">2383</span></a> +</span><span id="Parser-2384"><a href="#Parser-2384"><span class="linenos">2384</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> +</span><span id="Parser-2385"><a href="#Parser-2385"><span class="linenos">2385</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> +</span><span id="Parser-2386"><a href="#Parser-2386"><span class="linenos">2386</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> +</span><span id="Parser-2387"><a href="#Parser-2387"><span class="linenos">2387</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="Parser-2388"><a href="#Parser-2388"><span class="linenos">2388</span></a> <span class="n">ignore</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">)</span> +</span><span id="Parser-2389"><a href="#Parser-2389"><span class="linenos">2389</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="Parser-2390"><a href="#Parser-2390"><span class="linenos">2390</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2391"><a href="#Parser-2391"><span class="linenos">2391</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2392"><a href="#Parser-2392"><span class="linenos">2392</span></a> +</span><span id="Parser-2393"><a href="#Parser-2393"><span class="linenos">2393</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> +</span><span id="Parser-2394"><a href="#Parser-2394"><span class="linenos">2394</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2395"><a href="#Parser-2395"><span class="linenos">2395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> +</span><span id="Parser-2396"><a href="#Parser-2396"><span class="linenos">2396</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> +</span><span id="Parser-2397"><a href="#Parser-2397"><span class="linenos">2397</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="Parser-2398"><a href="#Parser-2398"><span class="linenos">2398</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-2399"><a href="#Parser-2399"><span class="linenos">2399</span></a> <span class="p">)</span> +</span><span id="Parser-2400"><a href="#Parser-2400"><span class="linenos">2400</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2401"><a href="#Parser-2401"><span class="linenos">2401</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> +</span><span id="Parser-2402"><a href="#Parser-2402"><span class="linenos">2402</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-2403"><a href="#Parser-2403"><span class="linenos">2403</span></a> +</span><span id="Parser-2404"><a href="#Parser-2404"><span class="linenos">2404</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="Parser-2405"><a href="#Parser-2405"><span class="linenos">2405</span></a> <span class="n">comments</span> <span class="o">+=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">)</span> +</span><span id="Parser-2406"><a href="#Parser-2406"><span class="linenos">2406</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-2407"><a href="#Parser-2407"><span class="linenos">2407</span></a> <span class="n">is_function</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">)</span> </span><span id="Parser-2408"><a href="#Parser-2408"><span class="linenos">2408</span></a> -</span><span id="Parser-2409"><a href="#Parser-2409"><span class="linenos">2409</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> -</span><span id="Parser-2410"><a href="#Parser-2410"><span class="linenos">2410</span></a> -</span><span id="Parser-2411"><a href="#Parser-2411"><span class="linenos">2411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2412"><a href="#Parser-2412"><span class="linenos">2412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="Parser-2413"><a href="#Parser-2413"><span class="linenos">2413</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-2414"><a href="#Parser-2414"><span class="linenos">2414</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> -</span><span id="Parser-2415"><a href="#Parser-2415"><span class="linenos">2415</span></a> <span class="n">is_function</span><span class="o">=</span><span class="n">is_function</span><span class="p">,</span> -</span><span id="Parser-2416"><a href="#Parser-2416"><span class="linenos">2416</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2417"><a href="#Parser-2417"><span class="linenos">2417</span></a> <span class="n">stored</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORED"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> -</span><span id="Parser-2418"><a href="#Parser-2418"><span class="linenos">2418</span></a> <span class="n">by_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">),</span> -</span><span id="Parser-2419"><a href="#Parser-2419"><span class="linenos">2419</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="Parser-2420"><a href="#Parser-2420"><span class="linenos">2420</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-2421"><a href="#Parser-2421"><span class="linenos">2421</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> -</span><span id="Parser-2422"><a href="#Parser-2422"><span class="linenos">2422</span></a> <span class="n">conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> -</span><span id="Parser-2423"><a href="#Parser-2423"><span class="linenos">2423</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="Parser-2424"><a href="#Parser-2424"><span class="linenos">2424</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="Parser-2425"><a href="#Parser-2425"><span class="linenos">2425</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> -</span><span id="Parser-2426"><a href="#Parser-2426"><span class="linenos">2426</span></a> <span class="n">ignore</span><span class="o">=</span><span class="n">ignore</span><span class="p">,</span> -</span><span id="Parser-2427"><a href="#Parser-2427"><span class="linenos">2427</span></a> <span class="p">)</span> -</span><span id="Parser-2428"><a href="#Parser-2428"><span class="linenos">2428</span></a> -</span><span id="Parser-2429"><a href="#Parser-2429"><span class="linenos">2429</span></a> <span class="k">def</span> <span class="nf">_parse_kill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">:</span> -</span><span id="Parser-2430"><a href="#Parser-2430"><span class="linenos">2430</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CONNECTION"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">))</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-2431"><a href="#Parser-2431"><span class="linenos">2431</span></a> -</span><span id="Parser-2432"><a href="#Parser-2432"><span class="linenos">2432</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2433"><a href="#Parser-2433"><span class="linenos">2433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">,</span> -</span><span id="Parser-2434"><a href="#Parser-2434"><span class="linenos">2434</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">(),</span> -</span><span id="Parser-2435"><a href="#Parser-2435"><span class="linenos">2435</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-2436"><a href="#Parser-2436"><span class="linenos">2436</span></a> <span class="p">)</span> +</span><span id="Parser-2409"><a href="#Parser-2409"><span class="linenos">2409</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-2410"><a href="#Parser-2410"><span class="linenos">2410</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_partition</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2411"><a href="#Parser-2411"><span class="linenos">2411</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_function</span> +</span><span id="Parser-2412"><a href="#Parser-2412"><span class="linenos">2412</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="Parser-2413"><a href="#Parser-2413"><span class="linenos">2413</span></a> <span class="p">)</span> +</span><span id="Parser-2414"><a href="#Parser-2414"><span class="linenos">2414</span></a> +</span><span id="Parser-2415"><a href="#Parser-2415"><span class="linenos">2415</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> +</span><span id="Parser-2416"><a href="#Parser-2416"><span class="linenos">2416</span></a> +</span><span id="Parser-2417"><a href="#Parser-2417"><span class="linenos">2417</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2418"><a href="#Parser-2418"><span class="linenos">2418</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="Parser-2419"><a href="#Parser-2419"><span class="linenos">2419</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-2420"><a href="#Parser-2420"><span class="linenos">2420</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> +</span><span id="Parser-2421"><a href="#Parser-2421"><span class="linenos">2421</span></a> <span class="n">is_function</span><span class="o">=</span><span class="n">is_function</span><span class="p">,</span> +</span><span id="Parser-2422"><a href="#Parser-2422"><span class="linenos">2422</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2423"><a href="#Parser-2423"><span class="linenos">2423</span></a> <span class="n">stored</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORED"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_stored</span><span class="p">(),</span> +</span><span id="Parser-2424"><a href="#Parser-2424"><span class="linenos">2424</span></a> <span class="n">by_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">),</span> +</span><span id="Parser-2425"><a href="#Parser-2425"><span class="linenos">2425</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="Parser-2426"><a href="#Parser-2426"><span class="linenos">2426</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-2427"><a href="#Parser-2427"><span class="linenos">2427</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> +</span><span id="Parser-2428"><a href="#Parser-2428"><span class="linenos">2428</span></a> <span class="n">conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> +</span><span id="Parser-2429"><a href="#Parser-2429"><span class="linenos">2429</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="Parser-2430"><a href="#Parser-2430"><span class="linenos">2430</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="Parser-2431"><a href="#Parser-2431"><span class="linenos">2431</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> +</span><span id="Parser-2432"><a href="#Parser-2432"><span class="linenos">2432</span></a> <span class="n">ignore</span><span class="o">=</span><span class="n">ignore</span><span class="p">,</span> +</span><span id="Parser-2433"><a href="#Parser-2433"><span class="linenos">2433</span></a> <span class="p">)</span> +</span><span id="Parser-2434"><a href="#Parser-2434"><span class="linenos">2434</span></a> +</span><span id="Parser-2435"><a href="#Parser-2435"><span class="linenos">2435</span></a> <span class="k">def</span> <span class="nf">_parse_kill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">:</span> +</span><span id="Parser-2436"><a href="#Parser-2436"><span class="linenos">2436</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CONNECTION"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">))</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="Parser-2437"><a href="#Parser-2437"><span class="linenos">2437</span></a> -</span><span id="Parser-2438"><a href="#Parser-2438"><span class="linenos">2438</span></a> <span class="k">def</span> <span class="nf">_parse_on_conflict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">]:</span> -</span><span id="Parser-2439"><a href="#Parser-2439"><span class="linenos">2439</span></a> <span class="n">conflict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONFLICT"</span><span class="p">)</span> -</span><span id="Parser-2440"><a href="#Parser-2440"><span class="linenos">2440</span></a> <span class="n">duplicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"DUPLICATE"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">)</span> -</span><span id="Parser-2441"><a href="#Parser-2441"><span class="linenos">2441</span></a> -</span><span id="Parser-2442"><a href="#Parser-2442"><span class="linenos">2442</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">conflict</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">duplicate</span><span class="p">:</span> -</span><span id="Parser-2443"><a href="#Parser-2443"><span class="linenos">2443</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2444"><a href="#Parser-2444"><span class="linenos">2444</span></a> -</span><span id="Parser-2445"><a href="#Parser-2445"><span class="linenos">2445</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2446"><a href="#Parser-2446"><span class="linenos">2446</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2438"><a href="#Parser-2438"><span class="linenos">2438</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2439"><a href="#Parser-2439"><span class="linenos">2439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kill</span><span class="p">,</span> +</span><span id="Parser-2440"><a href="#Parser-2440"><span class="linenos">2440</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">(),</span> +</span><span id="Parser-2441"><a href="#Parser-2441"><span class="linenos">2441</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-2442"><a href="#Parser-2442"><span class="linenos">2442</span></a> <span class="p">)</span> +</span><span id="Parser-2443"><a href="#Parser-2443"><span class="linenos">2443</span></a> +</span><span id="Parser-2444"><a href="#Parser-2444"><span class="linenos">2444</span></a> <span class="k">def</span> <span class="nf">_parse_on_conflict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">]:</span> +</span><span id="Parser-2445"><a href="#Parser-2445"><span class="linenos">2445</span></a> <span class="n">conflict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONFLICT"</span><span class="p">)</span> +</span><span id="Parser-2446"><a href="#Parser-2446"><span class="linenos">2446</span></a> <span class="n">duplicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"DUPLICATE"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">)</span> </span><span id="Parser-2447"><a href="#Parser-2447"><span class="linenos">2447</span></a> -</span><span id="Parser-2448"><a href="#Parser-2448"><span class="linenos">2448</span></a> <span class="k">if</span> <span class="n">conflict</span><span class="p">:</span> -</span><span id="Parser-2449"><a href="#Parser-2449"><span class="linenos">2449</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONSTRAINT"</span><span class="p">):</span> -</span><span id="Parser-2450"><a href="#Parser-2450"><span class="linenos">2450</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2451"><a href="#Parser-2451"><span class="linenos">2451</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2452"><a href="#Parser-2452"><span class="linenos">2452</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> -</span><span id="Parser-2453"><a href="#Parser-2453"><span class="linenos">2453</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2454"><a href="#Parser-2454"><span class="linenos">2454</span></a> -</span><span id="Parser-2455"><a href="#Parser-2455"><span class="linenos">2455</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONFLICT_ACTIONS</span><span class="p">)</span> -</span><span id="Parser-2456"><a href="#Parser-2456"><span class="linenos">2456</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> -</span><span id="Parser-2457"><a href="#Parser-2457"><span class="linenos">2457</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> -</span><span id="Parser-2458"><a href="#Parser-2458"><span class="linenos">2458</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="Parser-2459"><a href="#Parser-2459"><span class="linenos">2459</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2460"><a href="#Parser-2460"><span class="linenos">2460</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2461"><a href="#Parser-2461"><span class="linenos">2461</span></a> -</span><span id="Parser-2462"><a href="#Parser-2462"><span class="linenos">2462</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2463"><a href="#Parser-2463"><span class="linenos">2463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">,</span> -</span><span id="Parser-2464"><a href="#Parser-2464"><span class="linenos">2464</span></a> <span class="n">duplicate</span><span class="o">=</span><span class="n">duplicate</span><span class="p">,</span> -</span><span id="Parser-2465"><a href="#Parser-2465"><span class="linenos">2465</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-2466"><a href="#Parser-2466"><span class="linenos">2466</span></a> <span class="n">action</span><span class="o">=</span><span class="n">action</span><span class="p">,</span> -</span><span id="Parser-2467"><a href="#Parser-2467"><span class="linenos">2467</span></a> <span class="n">conflict_keys</span><span class="o">=</span><span class="n">conflict_keys</span><span class="p">,</span> -</span><span id="Parser-2468"><a href="#Parser-2468"><span class="linenos">2468</span></a> <span class="n">constraint</span><span class="o">=</span><span class="n">constraint</span><span class="p">,</span> -</span><span id="Parser-2469"><a href="#Parser-2469"><span class="linenos">2469</span></a> <span class="p">)</span> -</span><span id="Parser-2470"><a href="#Parser-2470"><span class="linenos">2470</span></a> -</span><span id="Parser-2471"><a href="#Parser-2471"><span class="linenos">2471</span></a> <span class="k">def</span> <span class="nf">_parse_returning</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">]:</span> -</span><span id="Parser-2472"><a href="#Parser-2472"><span class="linenos">2472</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">):</span> -</span><span id="Parser-2473"><a href="#Parser-2473"><span class="linenos">2473</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2474"><a href="#Parser-2474"><span class="linenos">2474</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2475"><a href="#Parser-2475"><span class="linenos">2475</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">,</span> -</span><span id="Parser-2476"><a href="#Parser-2476"><span class="linenos">2476</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">),</span> -</span><span id="Parser-2477"><a href="#Parser-2477"><span class="linenos">2477</span></a> <span class="n">into</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(),</span> -</span><span id="Parser-2478"><a href="#Parser-2478"><span class="linenos">2478</span></a> <span class="p">)</span> -</span><span id="Parser-2479"><a href="#Parser-2479"><span class="linenos">2479</span></a> -</span><span id="Parser-2480"><a href="#Parser-2480"><span class="linenos">2480</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> -</span><span id="Parser-2481"><a href="#Parser-2481"><span class="linenos">2481</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="Parser-2482"><a href="#Parser-2482"><span class="linenos">2482</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2483"><a href="#Parser-2483"><span class="linenos">2483</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> -</span><span id="Parser-2484"><a href="#Parser-2484"><span class="linenos">2484</span></a> -</span><span id="Parser-2485"><a href="#Parser-2485"><span class="linenos">2485</span></a> <span class="k">def</span> <span class="nf">_parse_serde_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">]:</span> -</span><span id="Parser-2486"><a href="#Parser-2486"><span class="linenos">2486</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2487"><a href="#Parser-2487"><span class="linenos">2487</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> -</span><span id="Parser-2488"><a href="#Parser-2488"><span class="linenos">2488</span></a> -</span><span id="Parser-2489"><a href="#Parser-2489"><span class="linenos">2489</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">):</span> -</span><span id="Parser-2490"><a href="#Parser-2490"><span class="linenos">2490</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2491"><a href="#Parser-2491"><span class="linenos">2491</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2492"><a href="#Parser-2492"><span class="linenos">2492</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2493"><a href="#Parser-2493"><span class="linenos">2493</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">,</span> -</span><span id="Parser-2494"><a href="#Parser-2494"><span class="linenos">2494</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-2495"><a href="#Parser-2495"><span class="linenos">2495</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> -</span><span id="Parser-2496"><a href="#Parser-2496"><span class="linenos">2496</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> -</span><span id="Parser-2497"><a href="#Parser-2497"><span class="linenos">2497</span></a> <span class="p">},</span> -</span><span id="Parser-2498"><a href="#Parser-2498"><span class="linenos">2498</span></a> <span class="p">)</span> -</span><span id="Parser-2499"><a href="#Parser-2499"><span class="linenos">2499</span></a> -</span><span id="Parser-2500"><a href="#Parser-2500"><span class="linenos">2500</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span> -</span><span id="Parser-2501"><a href="#Parser-2501"><span class="linenos">2501</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2502"><a href="#Parser-2502"><span class="linenos">2502</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> -</span><span id="Parser-2503"><a href="#Parser-2503"><span class="linenos">2503</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="Parser-2504"><a href="#Parser-2504"><span class="linenos">2504</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2448"><a href="#Parser-2448"><span class="linenos">2448</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">conflict</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">duplicate</span><span class="p">:</span> +</span><span id="Parser-2449"><a href="#Parser-2449"><span class="linenos">2449</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2450"><a href="#Parser-2450"><span class="linenos">2450</span></a> +</span><span id="Parser-2451"><a href="#Parser-2451"><span class="linenos">2451</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2452"><a href="#Parser-2452"><span class="linenos">2452</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2453"><a href="#Parser-2453"><span class="linenos">2453</span></a> +</span><span id="Parser-2454"><a href="#Parser-2454"><span class="linenos">2454</span></a> <span class="k">if</span> <span class="n">conflict</span><span class="p">:</span> +</span><span id="Parser-2455"><a href="#Parser-2455"><span class="linenos">2455</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="s2">"CONSTRAINT"</span><span class="p">):</span> +</span><span id="Parser-2456"><a href="#Parser-2456"><span class="linenos">2456</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2457"><a href="#Parser-2457"><span class="linenos">2457</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2458"><a href="#Parser-2458"><span class="linenos">2458</span></a> <span class="n">conflict_keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> +</span><span id="Parser-2459"><a href="#Parser-2459"><span class="linenos">2459</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2460"><a href="#Parser-2460"><span class="linenos">2460</span></a> +</span><span id="Parser-2461"><a href="#Parser-2461"><span class="linenos">2461</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONFLICT_ACTIONS</span><span class="p">)</span> +</span><span id="Parser-2462"><a href="#Parser-2462"><span class="linenos">2462</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> +</span><span id="Parser-2463"><a href="#Parser-2463"><span class="linenos">2463</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> +</span><span id="Parser-2464"><a href="#Parser-2464"><span class="linenos">2464</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="Parser-2465"><a href="#Parser-2465"><span class="linenos">2465</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2466"><a href="#Parser-2466"><span class="linenos">2466</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2467"><a href="#Parser-2467"><span class="linenos">2467</span></a> +</span><span id="Parser-2468"><a href="#Parser-2468"><span class="linenos">2468</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2469"><a href="#Parser-2469"><span class="linenos">2469</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnConflict</span><span class="p">,</span> +</span><span id="Parser-2470"><a href="#Parser-2470"><span class="linenos">2470</span></a> <span class="n">duplicate</span><span class="o">=</span><span class="n">duplicate</span><span class="p">,</span> +</span><span id="Parser-2471"><a href="#Parser-2471"><span class="linenos">2471</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-2472"><a href="#Parser-2472"><span class="linenos">2472</span></a> <span class="n">action</span><span class="o">=</span><span class="n">action</span><span class="p">,</span> +</span><span id="Parser-2473"><a href="#Parser-2473"><span class="linenos">2473</span></a> <span class="n">conflict_keys</span><span class="o">=</span><span class="n">conflict_keys</span><span class="p">,</span> +</span><span id="Parser-2474"><a href="#Parser-2474"><span class="linenos">2474</span></a> <span class="n">constraint</span><span class="o">=</span><span class="n">constraint</span><span class="p">,</span> +</span><span id="Parser-2475"><a href="#Parser-2475"><span class="linenos">2475</span></a> <span class="p">)</span> +</span><span id="Parser-2476"><a href="#Parser-2476"><span class="linenos">2476</span></a> +</span><span id="Parser-2477"><a href="#Parser-2477"><span class="linenos">2477</span></a> <span class="k">def</span> <span class="nf">_parse_returning</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">]:</span> +</span><span id="Parser-2478"><a href="#Parser-2478"><span class="linenos">2478</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">):</span> +</span><span id="Parser-2479"><a href="#Parser-2479"><span class="linenos">2479</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2480"><a href="#Parser-2480"><span class="linenos">2480</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2481"><a href="#Parser-2481"><span class="linenos">2481</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Returning</span><span class="p">,</span> +</span><span id="Parser-2482"><a href="#Parser-2482"><span class="linenos">2482</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">),</span> +</span><span id="Parser-2483"><a href="#Parser-2483"><span class="linenos">2483</span></a> <span class="n">into</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(),</span> +</span><span id="Parser-2484"><a href="#Parser-2484"><span class="linenos">2484</span></a> <span class="p">)</span> +</span><span id="Parser-2485"><a href="#Parser-2485"><span class="linenos">2485</span></a> +</span><span id="Parser-2486"><a href="#Parser-2486"><span class="linenos">2486</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> +</span><span id="Parser-2487"><a href="#Parser-2487"><span class="linenos">2487</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="Parser-2488"><a href="#Parser-2488"><span class="linenos">2488</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2489"><a href="#Parser-2489"><span class="linenos">2489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> +</span><span id="Parser-2490"><a href="#Parser-2490"><span class="linenos">2490</span></a> +</span><span id="Parser-2491"><a href="#Parser-2491"><span class="linenos">2491</span></a> <span class="k">def</span> <span class="nf">_parse_serde_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">]:</span> +</span><span id="Parser-2492"><a href="#Parser-2492"><span class="linenos">2492</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2493"><a href="#Parser-2493"><span class="linenos">2493</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> +</span><span id="Parser-2494"><a href="#Parser-2494"><span class="linenos">2494</span></a> +</span><span id="Parser-2495"><a href="#Parser-2495"><span class="linenos">2495</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">):</span> +</span><span id="Parser-2496"><a href="#Parser-2496"><span class="linenos">2496</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2497"><a href="#Parser-2497"><span class="linenos">2497</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2498"><a href="#Parser-2498"><span class="linenos">2498</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2499"><a href="#Parser-2499"><span class="linenos">2499</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">,</span> +</span><span id="Parser-2500"><a href="#Parser-2500"><span class="linenos">2500</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-2501"><a href="#Parser-2501"><span class="linenos">2501</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">(),</span> +</span><span id="Parser-2502"><a href="#Parser-2502"><span class="linenos">2502</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="n">with_</span><span class="p">,</span> +</span><span id="Parser-2503"><a href="#Parser-2503"><span class="linenos">2503</span></a> <span class="p">},</span> +</span><span id="Parser-2504"><a href="#Parser-2504"><span class="linenos">2504</span></a> <span class="p">)</span> </span><span id="Parser-2505"><a href="#Parser-2505"><span class="linenos">2505</span></a> -</span><span id="Parser-2506"><a href="#Parser-2506"><span class="linenos">2506</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> -</span><span id="Parser-2507"><a href="#Parser-2507"><span class="linenos">2507</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2508"><a href="#Parser-2508"><span class="linenos">2508</span></a> -</span><span id="Parser-2509"><a href="#Parser-2509"><span class="linenos">2509</span></a> <span class="n">serde_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">()</span> -</span><span id="Parser-2510"><a href="#Parser-2510"><span class="linenos">2510</span></a> -</span><span id="Parser-2511"><a href="#Parser-2511"><span class="linenos">2511</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2512"><a href="#Parser-2512"><span class="linenos">2512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">serde_properties</span><span class="o">=</span><span class="n">serde_properties</span> -</span><span id="Parser-2513"><a href="#Parser-2513"><span class="linenos">2513</span></a> <span class="p">)</span> +</span><span id="Parser-2506"><a href="#Parser-2506"><span class="linenos">2506</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span> +</span><span id="Parser-2507"><a href="#Parser-2507"><span class="linenos">2507</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2508"><a href="#Parser-2508"><span class="linenos">2508</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">]:</span> +</span><span id="Parser-2509"><a href="#Parser-2509"><span class="linenos">2509</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="Parser-2510"><a href="#Parser-2510"><span class="linenos">2510</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2511"><a href="#Parser-2511"><span class="linenos">2511</span></a> +</span><span id="Parser-2512"><a href="#Parser-2512"><span class="linenos">2512</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> +</span><span id="Parser-2513"><a href="#Parser-2513"><span class="linenos">2513</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> </span><span id="Parser-2514"><a href="#Parser-2514"><span class="linenos">2514</span></a> -</span><span id="Parser-2515"><a href="#Parser-2515"><span class="linenos">2515</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> +</span><span id="Parser-2515"><a href="#Parser-2515"><span class="linenos">2515</span></a> <span class="n">serde_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_serde_properties</span><span class="p">()</span> </span><span id="Parser-2516"><a href="#Parser-2516"><span class="linenos">2516</span></a> -</span><span id="Parser-2517"><a href="#Parser-2517"><span class="linenos">2517</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-2518"><a href="#Parser-2518"><span class="linenos">2518</span></a> -</span><span id="Parser-2519"><a href="#Parser-2519"><span class="linenos">2519</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2520"><a href="#Parser-2520"><span class="linenos">2520</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2521"><a href="#Parser-2521"><span class="linenos">2521</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2522"><a href="#Parser-2522"><span class="linenos">2522</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2523"><a href="#Parser-2523"><span class="linenos">2523</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2524"><a href="#Parser-2524"><span class="linenos">2524</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2525"><a href="#Parser-2525"><span class="linenos">2525</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2526"><a href="#Parser-2526"><span class="linenos">2526</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2527"><a href="#Parser-2527"><span class="linenos">2527</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2528"><a href="#Parser-2528"><span class="linenos">2528</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2529"><a href="#Parser-2529"><span class="linenos">2529</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> -</span><span id="Parser-2530"><a href="#Parser-2530"><span class="linenos">2530</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2531"><a href="#Parser-2531"><span class="linenos">2531</span></a> -</span><span id="Parser-2532"><a href="#Parser-2532"><span class="linenos">2532</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-2533"><a href="#Parser-2533"><span class="linenos">2533</span></a> -</span><span id="Parser-2534"><a href="#Parser-2534"><span class="linenos">2534</span></a> <span class="k">def</span> <span class="nf">_parse_load</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-2535"><a href="#Parser-2535"><span class="linenos">2535</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-2536"><a href="#Parser-2536"><span class="linenos">2536</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="Parser-2537"><a href="#Parser-2537"><span class="linenos">2537</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> -</span><span id="Parser-2538"><a href="#Parser-2538"><span class="linenos">2538</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2539"><a href="#Parser-2539"><span class="linenos">2539</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="Parser-2540"><a href="#Parser-2540"><span class="linenos">2540</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-2541"><a href="#Parser-2541"><span class="linenos">2541</span></a> -</span><span id="Parser-2542"><a href="#Parser-2542"><span class="linenos">2542</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2543"><a href="#Parser-2543"><span class="linenos">2543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> -</span><span id="Parser-2544"><a href="#Parser-2544"><span class="linenos">2544</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-2545"><a href="#Parser-2545"><span class="linenos">2545</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="Parser-2546"><a href="#Parser-2546"><span class="linenos">2546</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="Parser-2547"><a href="#Parser-2547"><span class="linenos">2547</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> -</span><span id="Parser-2548"><a href="#Parser-2548"><span class="linenos">2548</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> -</span><span id="Parser-2549"><a href="#Parser-2549"><span class="linenos">2549</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="Parser-2550"><a href="#Parser-2550"><span class="linenos">2550</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="Parser-2551"><a href="#Parser-2551"><span class="linenos">2551</span></a> <span class="p">)</span> -</span><span id="Parser-2552"><a href="#Parser-2552"><span class="linenos">2552</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-2553"><a href="#Parser-2553"><span class="linenos">2553</span></a> -</span><span id="Parser-2554"><a href="#Parser-2554"><span class="linenos">2554</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">:</span> -</span><span id="Parser-2555"><a href="#Parser-2555"><span class="linenos">2555</span></a> <span class="c1"># This handles MySQL's "Multiple-Table Syntax"</span> -</span><span id="Parser-2556"><a href="#Parser-2556"><span class="linenos">2556</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/delete.html</span> -</span><span id="Parser-2557"><a href="#Parser-2557"><span class="linenos">2557</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2558"><a href="#Parser-2558"><span class="linenos">2558</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-2559"><a href="#Parser-2559"><span class="linenos">2559</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-2560"><a href="#Parser-2560"><span class="linenos">2560</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="Parser-2561"><a href="#Parser-2561"><span class="linenos">2561</span></a> -</span><span id="Parser-2562"><a href="#Parser-2562"><span class="linenos">2562</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> -</span><span id="Parser-2563"><a href="#Parser-2563"><span class="linenos">2563</span></a> -</span><span id="Parser-2564"><a href="#Parser-2564"><span class="linenos">2564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2565"><a href="#Parser-2565"><span class="linenos">2565</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> -</span><span id="Parser-2566"><a href="#Parser-2566"><span class="linenos">2566</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-2567"><a href="#Parser-2567"><span class="linenos">2567</span></a> <span class="n">tables</span><span class="o">=</span><span class="n">tables</span><span class="p">,</span> -</span><span id="Parser-2568"><a href="#Parser-2568"><span class="linenos">2568</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-2569"><a href="#Parser-2569"><span class="linenos">2569</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-2570"><a href="#Parser-2570"><span class="linenos">2570</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-2571"><a href="#Parser-2571"><span class="linenos">2571</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="Parser-2572"><a href="#Parser-2572"><span class="linenos">2572</span></a> <span class="n">limit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="Parser-2573"><a href="#Parser-2573"><span class="linenos">2573</span></a> <span class="p">)</span> -</span><span id="Parser-2574"><a href="#Parser-2574"><span class="linenos">2574</span></a> -</span><span id="Parser-2575"><a href="#Parser-2575"><span class="linenos">2575</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">:</span> -</span><span id="Parser-2576"><a href="#Parser-2576"><span class="linenos">2576</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-2577"><a href="#Parser-2577"><span class="linenos">2577</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-2578"><a href="#Parser-2578"><span class="linenos">2578</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="Parser-2579"><a href="#Parser-2579"><span class="linenos">2579</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> -</span><span id="Parser-2580"><a href="#Parser-2580"><span class="linenos">2580</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2581"><a href="#Parser-2581"><span class="linenos">2581</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="Parser-2582"><a href="#Parser-2582"><span class="linenos">2582</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-2583"><a href="#Parser-2583"><span class="linenos">2583</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-2584"><a href="#Parser-2584"><span class="linenos">2584</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2585"><a href="#Parser-2585"><span class="linenos">2585</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-2586"><a href="#Parser-2586"><span class="linenos">2586</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-2587"><a href="#Parser-2587"><span class="linenos">2587</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-2588"><a href="#Parser-2588"><span class="linenos">2588</span></a> <span class="s2">"returning"</span><span class="p">:</span> <span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> -</span><span id="Parser-2589"><a href="#Parser-2589"><span class="linenos">2589</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="Parser-2590"><a href="#Parser-2590"><span class="linenos">2590</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="Parser-2591"><a href="#Parser-2591"><span class="linenos">2591</span></a> <span class="p">},</span> -</span><span id="Parser-2592"><a href="#Parser-2592"><span class="linenos">2592</span></a> <span class="p">)</span> -</span><span id="Parser-2593"><a href="#Parser-2593"><span class="linenos">2593</span></a> -</span><span id="Parser-2594"><a href="#Parser-2594"><span class="linenos">2594</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">:</span> -</span><span id="Parser-2595"><a href="#Parser-2595"><span class="linenos">2595</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="Parser-2596"><a href="#Parser-2596"><span class="linenos">2596</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> -</span><span id="Parser-2597"><a href="#Parser-2597"><span class="linenos">2597</span></a> -</span><span id="Parser-2598"><a href="#Parser-2598"><span class="linenos">2598</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2599"><a href="#Parser-2599"><span class="linenos">2599</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2600"><a href="#Parser-2600"><span class="linenos">2600</span></a> <span class="p">)</span> -</span><span id="Parser-2601"><a href="#Parser-2601"><span class="linenos">2601</span></a> -</span><span id="Parser-2602"><a href="#Parser-2602"><span class="linenos">2602</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> -</span><span id="Parser-2603"><a href="#Parser-2603"><span class="linenos">2603</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAZY"</span><span class="p">)</span> -</span><span id="Parser-2604"><a href="#Parser-2604"><span class="linenos">2604</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-2605"><a href="#Parser-2605"><span class="linenos">2605</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2606"><a href="#Parser-2606"><span class="linenos">2606</span></a> -</span><span id="Parser-2607"><a href="#Parser-2607"><span class="linenos">2607</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2608"><a href="#Parser-2608"><span class="linenos">2608</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OPTIONS"</span><span class="p">):</span> -</span><span id="Parser-2609"><a href="#Parser-2609"><span class="linenos">2609</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-2610"><a href="#Parser-2610"><span class="linenos">2610</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2611"><a href="#Parser-2611"><span class="linenos">2611</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-2612"><a href="#Parser-2612"><span class="linenos">2612</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2613"><a href="#Parser-2613"><span class="linenos">2613</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> -</span><span id="Parser-2614"><a href="#Parser-2614"><span class="linenos">2614</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2615"><a href="#Parser-2615"><span class="linenos">2615</span></a> -</span><span id="Parser-2616"><a href="#Parser-2616"><span class="linenos">2616</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-2617"><a href="#Parser-2617"><span class="linenos">2617</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2618"><a href="#Parser-2618"><span class="linenos">2618</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> -</span><span id="Parser-2619"><a href="#Parser-2619"><span class="linenos">2619</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="Parser-2620"><a href="#Parser-2620"><span class="linenos">2620</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> -</span><span id="Parser-2621"><a href="#Parser-2621"><span class="linenos">2621</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> -</span><span id="Parser-2622"><a href="#Parser-2622"><span class="linenos">2622</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-2623"><a href="#Parser-2623"><span class="linenos">2623</span></a> <span class="p">)</span> -</span><span id="Parser-2624"><a href="#Parser-2624"><span class="linenos">2624</span></a> -</span><span id="Parser-2625"><a href="#Parser-2625"><span class="linenos">2625</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span> -</span><span id="Parser-2626"><a href="#Parser-2626"><span class="linenos">2626</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> -</span><span id="Parser-2627"><a href="#Parser-2627"><span class="linenos">2627</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2628"><a href="#Parser-2628"><span class="linenos">2628</span></a> -</span><span id="Parser-2629"><a href="#Parser-2629"><span class="linenos">2629</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2630"><a href="#Parser-2630"><span class="linenos">2630</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="Parser-2631"><a href="#Parser-2631"><span class="linenos">2631</span></a> <span class="p">)</span> -</span><span id="Parser-2632"><a href="#Parser-2632"><span class="linenos">2632</span></a> -</span><span id="Parser-2633"><a href="#Parser-2633"><span class="linenos">2633</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span> -</span><span id="Parser-2634"><a href="#Parser-2634"><span class="linenos">2634</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2635"><a href="#Parser-2635"><span class="linenos">2635</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="Parser-2636"><a href="#Parser-2636"><span class="linenos">2636</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2637"><a href="#Parser-2637"><span class="linenos">2637</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2517"><a href="#Parser-2517"><span class="linenos">2517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2518"><a href="#Parser-2518"><span class="linenos">2518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">serde_properties</span><span class="o">=</span><span class="n">serde_properties</span> +</span><span id="Parser-2519"><a href="#Parser-2519"><span class="linenos">2519</span></a> <span class="p">)</span> +</span><span id="Parser-2520"><a href="#Parser-2520"><span class="linenos">2520</span></a> +</span><span id="Parser-2521"><a href="#Parser-2521"><span class="linenos">2521</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> +</span><span id="Parser-2522"><a href="#Parser-2522"><span class="linenos">2522</span></a> +</span><span id="Parser-2523"><a href="#Parser-2523"><span class="linenos">2523</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-2524"><a href="#Parser-2524"><span class="linenos">2524</span></a> +</span><span id="Parser-2525"><a href="#Parser-2525"><span class="linenos">2525</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2526"><a href="#Parser-2526"><span class="linenos">2526</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2527"><a href="#Parser-2527"><span class="linenos">2527</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2528"><a href="#Parser-2528"><span class="linenos">2528</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2529"><a href="#Parser-2529"><span class="linenos">2529</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2530"><a href="#Parser-2530"><span class="linenos">2530</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2531"><a href="#Parser-2531"><span class="linenos">2531</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2532"><a href="#Parser-2532"><span class="linenos">2532</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2533"><a href="#Parser-2533"><span class="linenos">2533</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2534"><a href="#Parser-2534"><span class="linenos">2534</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2535"><a href="#Parser-2535"><span class="linenos">2535</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> +</span><span id="Parser-2536"><a href="#Parser-2536"><span class="linenos">2536</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2537"><a href="#Parser-2537"><span class="linenos">2537</span></a> +</span><span id="Parser-2538"><a href="#Parser-2538"><span class="linenos">2538</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-2539"><a href="#Parser-2539"><span class="linenos">2539</span></a> +</span><span id="Parser-2540"><a href="#Parser-2540"><span class="linenos">2540</span></a> <span class="k">def</span> <span class="nf">_parse_load</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-2541"><a href="#Parser-2541"><span class="linenos">2541</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-2542"><a href="#Parser-2542"><span class="linenos">2542</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="Parser-2543"><a href="#Parser-2543"><span class="linenos">2543</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> +</span><span id="Parser-2544"><a href="#Parser-2544"><span class="linenos">2544</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2545"><a href="#Parser-2545"><span class="linenos">2545</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="Parser-2546"><a href="#Parser-2546"><span class="linenos">2546</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-2547"><a href="#Parser-2547"><span class="linenos">2547</span></a> +</span><span id="Parser-2548"><a href="#Parser-2548"><span class="linenos">2548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2549"><a href="#Parser-2549"><span class="linenos">2549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> +</span><span id="Parser-2550"><a href="#Parser-2550"><span class="linenos">2550</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-2551"><a href="#Parser-2551"><span class="linenos">2551</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="Parser-2552"><a href="#Parser-2552"><span class="linenos">2552</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="Parser-2553"><a href="#Parser-2553"><span class="linenos">2553</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> +</span><span id="Parser-2554"><a href="#Parser-2554"><span class="linenos">2554</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> +</span><span id="Parser-2555"><a href="#Parser-2555"><span class="linenos">2555</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="Parser-2556"><a href="#Parser-2556"><span class="linenos">2556</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="Parser-2557"><a href="#Parser-2557"><span class="linenos">2557</span></a> <span class="p">)</span> +</span><span id="Parser-2558"><a href="#Parser-2558"><span class="linenos">2558</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-2559"><a href="#Parser-2559"><span class="linenos">2559</span></a> +</span><span id="Parser-2560"><a href="#Parser-2560"><span class="linenos">2560</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">:</span> +</span><span id="Parser-2561"><a href="#Parser-2561"><span class="linenos">2561</span></a> <span class="c1"># This handles MySQL's "Multiple-Table Syntax"</span> +</span><span id="Parser-2562"><a href="#Parser-2562"><span class="linenos">2562</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/delete.html</span> +</span><span id="Parser-2563"><a href="#Parser-2563"><span class="linenos">2563</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2564"><a href="#Parser-2564"><span class="linenos">2564</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-2565"><a href="#Parser-2565"><span class="linenos">2565</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-2566"><a href="#Parser-2566"><span class="linenos">2566</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="Parser-2567"><a href="#Parser-2567"><span class="linenos">2567</span></a> +</span><span id="Parser-2568"><a href="#Parser-2568"><span class="linenos">2568</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> +</span><span id="Parser-2569"><a href="#Parser-2569"><span class="linenos">2569</span></a> +</span><span id="Parser-2570"><a href="#Parser-2570"><span class="linenos">2570</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2571"><a href="#Parser-2571"><span class="linenos">2571</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> +</span><span id="Parser-2572"><a href="#Parser-2572"><span class="linenos">2572</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-2573"><a href="#Parser-2573"><span class="linenos">2573</span></a> <span class="n">tables</span><span class="o">=</span><span class="n">tables</span><span class="p">,</span> +</span><span id="Parser-2574"><a href="#Parser-2574"><span class="linenos">2574</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-2575"><a href="#Parser-2575"><span class="linenos">2575</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-2576"><a href="#Parser-2576"><span class="linenos">2576</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-2577"><a href="#Parser-2577"><span class="linenos">2577</span></a> <span class="n">returning</span><span class="o">=</span><span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="Parser-2578"><a href="#Parser-2578"><span class="linenos">2578</span></a> <span class="n">limit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="Parser-2579"><a href="#Parser-2579"><span class="linenos">2579</span></a> <span class="p">)</span> +</span><span id="Parser-2580"><a href="#Parser-2580"><span class="linenos">2580</span></a> +</span><span id="Parser-2581"><a href="#Parser-2581"><span class="linenos">2581</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">:</span> +</span><span id="Parser-2582"><a href="#Parser-2582"><span class="linenos">2582</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-2583"><a href="#Parser-2583"><span class="linenos">2583</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-2584"><a href="#Parser-2584"><span class="linenos">2584</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="Parser-2585"><a href="#Parser-2585"><span class="linenos">2585</span></a> <span class="n">returning</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">()</span> +</span><span id="Parser-2586"><a href="#Parser-2586"><span class="linenos">2586</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2587"><a href="#Parser-2587"><span class="linenos">2587</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="Parser-2588"><a href="#Parser-2588"><span class="linenos">2588</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-2589"><a href="#Parser-2589"><span class="linenos">2589</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-2590"><a href="#Parser-2590"><span class="linenos">2590</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2591"><a href="#Parser-2591"><span class="linenos">2591</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-2592"><a href="#Parser-2592"><span class="linenos">2592</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-2593"><a href="#Parser-2593"><span class="linenos">2593</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-2594"><a href="#Parser-2594"><span class="linenos">2594</span></a> <span class="s2">"returning"</span><span class="p">:</span> <span class="n">returning</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returning</span><span class="p">(),</span> +</span><span id="Parser-2595"><a href="#Parser-2595"><span class="linenos">2595</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="Parser-2596"><a href="#Parser-2596"><span class="linenos">2596</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="Parser-2597"><a href="#Parser-2597"><span class="linenos">2597</span></a> <span class="p">},</span> +</span><span id="Parser-2598"><a href="#Parser-2598"><span class="linenos">2598</span></a> <span class="p">)</span> +</span><span id="Parser-2599"><a href="#Parser-2599"><span class="linenos">2599</span></a> +</span><span id="Parser-2600"><a href="#Parser-2600"><span class="linenos">2600</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">:</span> +</span><span id="Parser-2601"><a href="#Parser-2601"><span class="linenos">2601</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="Parser-2602"><a href="#Parser-2602"><span class="linenos">2602</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> +</span><span id="Parser-2603"><a href="#Parser-2603"><span class="linenos">2603</span></a> +</span><span id="Parser-2604"><a href="#Parser-2604"><span class="linenos">2604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2605"><a href="#Parser-2605"><span class="linenos">2605</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2606"><a href="#Parser-2606"><span class="linenos">2606</span></a> <span class="p">)</span> +</span><span id="Parser-2607"><a href="#Parser-2607"><span class="linenos">2607</span></a> +</span><span id="Parser-2608"><a href="#Parser-2608"><span class="linenos">2608</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> +</span><span id="Parser-2609"><a href="#Parser-2609"><span class="linenos">2609</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAZY"</span><span class="p">)</span> +</span><span id="Parser-2610"><a href="#Parser-2610"><span class="linenos">2610</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-2611"><a href="#Parser-2611"><span class="linenos">2611</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2612"><a href="#Parser-2612"><span class="linenos">2612</span></a> +</span><span id="Parser-2613"><a href="#Parser-2613"><span class="linenos">2613</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2614"><a href="#Parser-2614"><span class="linenos">2614</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OPTIONS"</span><span class="p">):</span> +</span><span id="Parser-2615"><a href="#Parser-2615"><span class="linenos">2615</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-2616"><a href="#Parser-2616"><span class="linenos">2616</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2617"><a href="#Parser-2617"><span class="linenos">2617</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-2618"><a href="#Parser-2618"><span class="linenos">2618</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2619"><a href="#Parser-2619"><span class="linenos">2619</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> +</span><span id="Parser-2620"><a href="#Parser-2620"><span class="linenos">2620</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2621"><a href="#Parser-2621"><span class="linenos">2621</span></a> +</span><span id="Parser-2622"><a href="#Parser-2622"><span class="linenos">2622</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-2623"><a href="#Parser-2623"><span class="linenos">2623</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2624"><a href="#Parser-2624"><span class="linenos">2624</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> +</span><span id="Parser-2625"><a href="#Parser-2625"><span class="linenos">2625</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="Parser-2626"><a href="#Parser-2626"><span class="linenos">2626</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> +</span><span id="Parser-2627"><a href="#Parser-2627"><span class="linenos">2627</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> +</span><span id="Parser-2628"><a href="#Parser-2628"><span class="linenos">2628</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-2629"><a href="#Parser-2629"><span class="linenos">2629</span></a> <span class="p">)</span> +</span><span id="Parser-2630"><a href="#Parser-2630"><span class="linenos">2630</span></a> +</span><span id="Parser-2631"><a href="#Parser-2631"><span class="linenos">2631</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">]:</span> +</span><span id="Parser-2632"><a href="#Parser-2632"><span class="linenos">2632</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> +</span><span id="Parser-2633"><a href="#Parser-2633"><span class="linenos">2633</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2634"><a href="#Parser-2634"><span class="linenos">2634</span></a> +</span><span id="Parser-2635"><a href="#Parser-2635"><span class="linenos">2635</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2636"><a href="#Parser-2636"><span class="linenos">2636</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="Parser-2637"><a href="#Parser-2637"><span class="linenos">2637</span></a> <span class="p">)</span> </span><span id="Parser-2638"><a href="#Parser-2638"><span class="linenos">2638</span></a> -</span><span id="Parser-2639"><a href="#Parser-2639"><span class="linenos">2639</span></a> <span class="c1"># In some dialects we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> -</span><span id="Parser-2640"><a href="#Parser-2640"><span class="linenos">2640</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="Parser-2641"><a href="#Parser-2641"><span class="linenos">2641</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-2642"><a href="#Parser-2642"><span class="linenos">2642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> -</span><span id="Parser-2643"><a href="#Parser-2643"><span class="linenos">2643</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2639"><a href="#Parser-2639"><span class="linenos">2639</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">]:</span> +</span><span id="Parser-2640"><a href="#Parser-2640"><span class="linenos">2640</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2641"><a href="#Parser-2641"><span class="linenos">2641</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-2642"><a href="#Parser-2642"><span class="linenos">2642</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2643"><a href="#Parser-2643"><span class="linenos">2643</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="Parser-2644"><a href="#Parser-2644"><span class="linenos">2644</span></a> -</span><span id="Parser-2645"><a href="#Parser-2645"><span class="linenos">2645</span></a> <span class="k">def</span> <span class="nf">_parse_projections</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2646"><a href="#Parser-2646"><span class="linenos">2646</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> -</span><span id="Parser-2647"><a href="#Parser-2647"><span class="linenos">2647</span></a> -</span><span id="Parser-2648"><a href="#Parser-2648"><span class="linenos">2648</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> -</span><span id="Parser-2649"><a href="#Parser-2649"><span class="linenos">2649</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-2650"><a href="#Parser-2650"><span class="linenos">2650</span></a> <span class="n">nested</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="Parser-2651"><a href="#Parser-2651"><span class="linenos">2651</span></a> <span class="n">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="Parser-2652"><a href="#Parser-2652"><span class="linenos">2652</span></a> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-2653"><a href="#Parser-2653"><span class="linenos">2653</span></a> <span class="n">parse_set_operation</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-2654"><a href="#Parser-2654"><span class="linenos">2654</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2655"><a href="#Parser-2655"><span class="linenos">2655</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> -</span><span id="Parser-2656"><a href="#Parser-2656"><span class="linenos">2656</span></a> -</span><span id="Parser-2657"><a href="#Parser-2657"><span class="linenos">2657</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> -</span><span id="Parser-2658"><a href="#Parser-2658"><span class="linenos">2658</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> -</span><span id="Parser-2659"><a href="#Parser-2659"><span class="linenos">2659</span></a> -</span><span id="Parser-2660"><a href="#Parser-2660"><span class="linenos">2660</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-2661"><a href="#Parser-2661"><span class="linenos">2661</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> -</span><span id="Parser-2662"><a href="#Parser-2662"><span class="linenos">2662</span></a> <span class="k">return</span> <span class="n">cte</span> -</span><span id="Parser-2663"><a href="#Parser-2663"><span class="linenos">2663</span></a> -</span><span id="Parser-2664"><a href="#Parser-2664"><span class="linenos">2664</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="Parser-2665"><a href="#Parser-2665"><span class="linenos">2665</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> -</span><span id="Parser-2666"><a href="#Parser-2666"><span class="linenos">2666</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2667"><a href="#Parser-2667"><span class="linenos">2667</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> -</span><span id="Parser-2668"><a href="#Parser-2668"><span class="linenos">2668</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> +</span><span id="Parser-2645"><a href="#Parser-2645"><span class="linenos">2645</span></a> <span class="c1"># In some dialects we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> +</span><span id="Parser-2646"><a href="#Parser-2646"><span class="linenos">2646</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="Parser-2647"><a href="#Parser-2647"><span class="linenos">2647</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-2648"><a href="#Parser-2648"><span class="linenos">2648</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> +</span><span id="Parser-2649"><a href="#Parser-2649"><span class="linenos">2649</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2650"><a href="#Parser-2650"><span class="linenos">2650</span></a> +</span><span id="Parser-2651"><a href="#Parser-2651"><span class="linenos">2651</span></a> <span class="k">def</span> <span class="nf">_parse_projections</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2652"><a href="#Parser-2652"><span class="linenos">2652</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> +</span><span id="Parser-2653"><a href="#Parser-2653"><span class="linenos">2653</span></a> +</span><span id="Parser-2654"><a href="#Parser-2654"><span class="linenos">2654</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> +</span><span id="Parser-2655"><a href="#Parser-2655"><span class="linenos">2655</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-2656"><a href="#Parser-2656"><span class="linenos">2656</span></a> <span class="n">nested</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="Parser-2657"><a href="#Parser-2657"><span class="linenos">2657</span></a> <span class="n">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="Parser-2658"><a href="#Parser-2658"><span class="linenos">2658</span></a> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-2659"><a href="#Parser-2659"><span class="linenos">2659</span></a> <span class="n">parse_set_operation</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-2660"><a href="#Parser-2660"><span class="linenos">2660</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2661"><a href="#Parser-2661"><span class="linenos">2661</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> +</span><span id="Parser-2662"><a href="#Parser-2662"><span class="linenos">2662</span></a> +</span><span id="Parser-2663"><a href="#Parser-2663"><span class="linenos">2663</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> +</span><span id="Parser-2664"><a href="#Parser-2664"><span class="linenos">2664</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="Parser-2665"><a href="#Parser-2665"><span class="linenos">2665</span></a> +</span><span id="Parser-2666"><a href="#Parser-2666"><span class="linenos">2666</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-2667"><a href="#Parser-2667"><span class="linenos">2667</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> +</span><span id="Parser-2668"><a href="#Parser-2668"><span class="linenos">2668</span></a> <span class="k">return</span> <span class="n">cte</span> </span><span id="Parser-2669"><a href="#Parser-2669"><span class="linenos">2669</span></a> -</span><span id="Parser-2670"><a href="#Parser-2670"><span class="linenos">2670</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2671"><a href="#Parser-2671"><span class="linenos">2671</span></a> -</span><span id="Parser-2672"><a href="#Parser-2672"><span class="linenos">2672</span></a> <span class="c1"># duckdb supports leading with FROM x</span> -</span><span id="Parser-2673"><a href="#Parser-2673"><span class="linenos">2673</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-2674"><a href="#Parser-2674"><span class="linenos">2674</span></a> -</span><span id="Parser-2675"><a href="#Parser-2675"><span class="linenos">2675</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> -</span><span id="Parser-2676"><a href="#Parser-2676"><span class="linenos">2676</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-2670"><a href="#Parser-2670"><span class="linenos">2670</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="Parser-2671"><a href="#Parser-2671"><span class="linenos">2671</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> +</span><span id="Parser-2672"><a href="#Parser-2672"><span class="linenos">2672</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2673"><a href="#Parser-2673"><span class="linenos">2673</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> +</span><span id="Parser-2674"><a href="#Parser-2674"><span class="linenos">2674</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> +</span><span id="Parser-2675"><a href="#Parser-2675"><span class="linenos">2675</span></a> +</span><span id="Parser-2676"><a href="#Parser-2676"><span class="linenos">2676</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-2677"><a href="#Parser-2677"><span class="linenos">2677</span></a> -</span><span id="Parser-2678"><a href="#Parser-2678"><span class="linenos">2678</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> -</span><span id="Parser-2679"><a href="#Parser-2679"><span class="linenos">2679</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> -</span><span id="Parser-2680"><a href="#Parser-2680"><span class="linenos">2680</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DISTINCT_TOKENS</span><span class="p">)</span> -</span><span id="Parser-2681"><a href="#Parser-2681"><span class="linenos">2681</span></a> -</span><span id="Parser-2682"><a href="#Parser-2682"><span class="linenos">2682</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-2683"><a href="#Parser-2683"><span class="linenos">2683</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-2684"><a href="#Parser-2684"><span class="linenos">2684</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"STRUCT"</span><span class="p">,</span> <span class="s2">"VALUE"</span><span class="p">))</span> -</span><span id="Parser-2685"><a href="#Parser-2685"><span class="linenos">2685</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-2686"><a href="#Parser-2686"><span class="linenos">2686</span></a> <span class="p">)</span> +</span><span id="Parser-2678"><a href="#Parser-2678"><span class="linenos">2678</span></a> <span class="c1"># duckdb supports leading with FROM x</span> +</span><span id="Parser-2679"><a href="#Parser-2679"><span class="linenos">2679</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-2680"><a href="#Parser-2680"><span class="linenos">2680</span></a> +</span><span id="Parser-2681"><a href="#Parser-2681"><span class="linenos">2681</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> +</span><span id="Parser-2682"><a href="#Parser-2682"><span class="linenos">2682</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-2683"><a href="#Parser-2683"><span class="linenos">2683</span></a> +</span><span id="Parser-2684"><a href="#Parser-2684"><span class="linenos">2684</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> +</span><span id="Parser-2685"><a href="#Parser-2685"><span class="linenos">2685</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> +</span><span id="Parser-2686"><a href="#Parser-2686"><span class="linenos">2686</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DISTINCT_TOKENS</span><span class="p">)</span> </span><span id="Parser-2687"><a href="#Parser-2687"><span class="linenos">2687</span></a> -</span><span id="Parser-2688"><a href="#Parser-2688"><span class="linenos">2688</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="Parser-2689"><a href="#Parser-2689"><span class="linenos">2689</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2690"><a href="#Parser-2690"><span class="linenos">2690</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> -</span><span id="Parser-2691"><a href="#Parser-2691"><span class="linenos">2691</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-2692"><a href="#Parser-2692"><span class="linenos">2692</span></a> <span class="p">)</span> +</span><span id="Parser-2688"><a href="#Parser-2688"><span class="linenos">2688</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-2689"><a href="#Parser-2689"><span class="linenos">2689</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-2690"><a href="#Parser-2690"><span class="linenos">2690</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"STRUCT"</span><span class="p">,</span> <span class="s2">"VALUE"</span><span class="p">))</span> +</span><span id="Parser-2691"><a href="#Parser-2691"><span class="linenos">2691</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-2692"><a href="#Parser-2692"><span class="linenos">2692</span></a> <span class="p">)</span> </span><span id="Parser-2693"><a href="#Parser-2693"><span class="linenos">2693</span></a> -</span><span id="Parser-2694"><a href="#Parser-2694"><span class="linenos">2694</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="Parser-2695"><a href="#Parser-2695"><span class="linenos">2695</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> -</span><span id="Parser-2696"><a href="#Parser-2696"><span class="linenos">2696</span></a> -</span><span id="Parser-2697"><a href="#Parser-2697"><span class="linenos">2697</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2698"><a href="#Parser-2698"><span class="linenos">2698</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projections</span><span class="p">()</span> +</span><span id="Parser-2694"><a href="#Parser-2694"><span class="linenos">2694</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="Parser-2695"><a href="#Parser-2695"><span class="linenos">2695</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2696"><a href="#Parser-2696"><span class="linenos">2696</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> +</span><span id="Parser-2697"><a href="#Parser-2697"><span class="linenos">2697</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-2698"><a href="#Parser-2698"><span class="linenos">2698</span></a> <span class="p">)</span> </span><span id="Parser-2699"><a href="#Parser-2699"><span class="linenos">2699</span></a> -</span><span id="Parser-2700"><a href="#Parser-2700"><span class="linenos">2700</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2701"><a href="#Parser-2701"><span class="linenos">2701</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> -</span><span id="Parser-2702"><a href="#Parser-2702"><span class="linenos">2702</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-2703"><a href="#Parser-2703"><span class="linenos">2703</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> -</span><span id="Parser-2704"><a href="#Parser-2704"><span class="linenos">2704</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> -</span><span id="Parser-2705"><a href="#Parser-2705"><span class="linenos">2705</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">projections</span><span class="p">,</span> -</span><span id="Parser-2706"><a href="#Parser-2706"><span class="linenos">2706</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> -</span><span id="Parser-2707"><a href="#Parser-2707"><span class="linenos">2707</span></a> <span class="p">)</span> -</span><span id="Parser-2708"><a href="#Parser-2708"><span class="linenos">2708</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Parser-2709"><a href="#Parser-2709"><span class="linenos">2709</span></a> -</span><span id="Parser-2710"><a href="#Parser-2710"><span class="linenos">2710</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> -</span><span id="Parser-2711"><a href="#Parser-2711"><span class="linenos">2711</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> -</span><span id="Parser-2712"><a href="#Parser-2712"><span class="linenos">2712</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> -</span><span id="Parser-2713"><a href="#Parser-2713"><span class="linenos">2713</span></a> -</span><span id="Parser-2714"><a href="#Parser-2714"><span class="linenos">2714</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="Parser-2715"><a href="#Parser-2715"><span class="linenos">2715</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> -</span><span id="Parser-2716"><a href="#Parser-2716"><span class="linenos">2716</span></a> -</span><span id="Parser-2717"><a href="#Parser-2717"><span class="linenos">2717</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="Parser-2718"><a href="#Parser-2718"><span class="linenos">2718</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> +</span><span id="Parser-2700"><a href="#Parser-2700"><span class="linenos">2700</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="Parser-2701"><a href="#Parser-2701"><span class="linenos">2701</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> +</span><span id="Parser-2702"><a href="#Parser-2702"><span class="linenos">2702</span></a> +</span><span id="Parser-2703"><a href="#Parser-2703"><span class="linenos">2703</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2704"><a href="#Parser-2704"><span class="linenos">2704</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_projections</span><span class="p">()</span> +</span><span id="Parser-2705"><a href="#Parser-2705"><span class="linenos">2705</span></a> +</span><span id="Parser-2706"><a href="#Parser-2706"><span class="linenos">2706</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2707"><a href="#Parser-2707"><span class="linenos">2707</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> +</span><span id="Parser-2708"><a href="#Parser-2708"><span class="linenos">2708</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-2709"><a href="#Parser-2709"><span class="linenos">2709</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> +</span><span id="Parser-2710"><a href="#Parser-2710"><span class="linenos">2710</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> +</span><span id="Parser-2711"><a href="#Parser-2711"><span class="linenos">2711</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">projections</span><span class="p">,</span> +</span><span id="Parser-2712"><a href="#Parser-2712"><span class="linenos">2712</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> +</span><span id="Parser-2713"><a href="#Parser-2713"><span class="linenos">2713</span></a> <span class="p">)</span> +</span><span id="Parser-2714"><a href="#Parser-2714"><span class="linenos">2714</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Parser-2715"><a href="#Parser-2715"><span class="linenos">2715</span></a> +</span><span id="Parser-2716"><a href="#Parser-2716"><span class="linenos">2716</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> +</span><span id="Parser-2717"><a href="#Parser-2717"><span class="linenos">2717</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> +</span><span id="Parser-2718"><a href="#Parser-2718"><span class="linenos">2718</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> </span><span id="Parser-2719"><a href="#Parser-2719"><span class="linenos">2719</span></a> -</span><span id="Parser-2720"><a href="#Parser-2720"><span class="linenos">2720</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2721"><a href="#Parser-2721"><span class="linenos">2721</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2722"><a href="#Parser-2722"><span class="linenos">2722</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> -</span><span id="Parser-2723"><a href="#Parser-2723"><span class="linenos">2723</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">()</span> -</span><span id="Parser-2724"><a href="#Parser-2724"><span class="linenos">2724</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-2725"><a href="#Parser-2725"><span class="linenos">2725</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span> -</span><span id="Parser-2726"><a href="#Parser-2726"><span class="linenos">2726</span></a> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">skip_from_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-2727"><a href="#Parser-2727"><span class="linenos">2727</span></a> <span class="p">)</span> -</span><span id="Parser-2728"><a href="#Parser-2728"><span class="linenos">2728</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2729"><a href="#Parser-2729"><span class="linenos">2729</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-2730"><a href="#Parser-2730"><span class="linenos">2730</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-2731"><a href="#Parser-2731"><span class="linenos">2731</span></a> <span class="k">if</span> <span class="n">table</span> -</span><span id="Parser-2732"><a href="#Parser-2732"><span class="linenos">2732</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2720"><a href="#Parser-2720"><span class="linenos">2720</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="Parser-2721"><a href="#Parser-2721"><span class="linenos">2721</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> +</span><span id="Parser-2722"><a href="#Parser-2722"><span class="linenos">2722</span></a> +</span><span id="Parser-2723"><a href="#Parser-2723"><span class="linenos">2723</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="Parser-2724"><a href="#Parser-2724"><span class="linenos">2724</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> +</span><span id="Parser-2725"><a href="#Parser-2725"><span class="linenos">2725</span></a> +</span><span id="Parser-2726"><a href="#Parser-2726"><span class="linenos">2726</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2727"><a href="#Parser-2727"><span class="linenos">2727</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2728"><a href="#Parser-2728"><span class="linenos">2728</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> +</span><span id="Parser-2729"><a href="#Parser-2729"><span class="linenos">2729</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_simplified_pivot</span><span class="p">()</span> +</span><span id="Parser-2730"><a href="#Parser-2730"><span class="linenos">2730</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-2731"><a href="#Parser-2731"><span class="linenos">2731</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span> +</span><span id="Parser-2732"><a href="#Parser-2732"><span class="linenos">2732</span></a> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(</span><span class="n">skip_from_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> </span><span id="Parser-2733"><a href="#Parser-2733"><span class="linenos">2733</span></a> <span class="p">)</span> -</span><span id="Parser-2734"><a href="#Parser-2734"><span class="linenos">2734</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> -</span><span id="Parser-2735"><a href="#Parser-2735"><span class="linenos">2735</span></a> -</span><span id="Parser-2736"><a href="#Parser-2736"><span class="linenos">2736</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2737"><a href="#Parser-2737"><span class="linenos">2737</span></a> -</span><span id="Parser-2738"><a href="#Parser-2738"><span class="linenos">2738</span></a> <span class="c1"># We return early here so that the UNION isn't attached to the subquery by the</span> -</span><span id="Parser-2739"><a href="#Parser-2739"><span class="linenos">2739</span></a> <span class="c1"># following call to _parse_set_operations, but instead becomes the parent node</span> -</span><span id="Parser-2740"><a href="#Parser-2740"><span class="linenos">2740</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> -</span><span id="Parser-2741"><a href="#Parser-2741"><span class="linenos">2741</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-2742"><a href="#Parser-2742"><span class="linenos">2742</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> -</span><span id="Parser-2743"><a href="#Parser-2743"><span class="linenos">2743</span></a> <span class="k">elif</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="Parser-2744"><a href="#Parser-2744"><span class="linenos">2744</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-2745"><a href="#Parser-2745"><span class="linenos">2745</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2746"><a href="#Parser-2746"><span class="linenos">2746</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2747"><a href="#Parser-2747"><span class="linenos">2747</span></a> -</span><span id="Parser-2748"><a href="#Parser-2748"><span class="linenos">2748</span></a> <span class="k">if</span> <span class="n">parse_set_operation</span><span class="p">:</span> -</span><span id="Parser-2749"><a href="#Parser-2749"><span class="linenos">2749</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2750"><a href="#Parser-2750"><span class="linenos">2750</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2751"><a href="#Parser-2751"><span class="linenos">2751</span></a> -</span><span id="Parser-2752"><a href="#Parser-2752"><span class="linenos">2752</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">With</span><span class="p">]:</span> -</span><span id="Parser-2753"><a href="#Parser-2753"><span class="linenos">2753</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-2754"><a href="#Parser-2754"><span class="linenos">2754</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2755"><a href="#Parser-2755"><span class="linenos">2755</span></a> -</span><span id="Parser-2756"><a href="#Parser-2756"><span class="linenos">2756</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-2757"><a href="#Parser-2757"><span class="linenos">2757</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> -</span><span id="Parser-2758"><a href="#Parser-2758"><span class="linenos">2758</span></a> -</span><span id="Parser-2759"><a href="#Parser-2759"><span class="linenos">2759</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2760"><a href="#Parser-2760"><span class="linenos">2760</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2761"><a href="#Parser-2761"><span class="linenos">2761</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">())</span> -</span><span id="Parser-2762"><a href="#Parser-2762"><span class="linenos">2762</span></a> -</span><span id="Parser-2763"><a href="#Parser-2763"><span class="linenos">2763</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-2764"><a href="#Parser-2764"><span class="linenos">2764</span></a> <span class="k">break</span> -</span><span id="Parser-2765"><a href="#Parser-2765"><span class="linenos">2765</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2766"><a href="#Parser-2766"><span class="linenos">2766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="Parser-2767"><a href="#Parser-2767"><span class="linenos">2767</span></a> -</span><span id="Parser-2768"><a href="#Parser-2768"><span class="linenos">2768</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2769"><a href="#Parser-2769"><span class="linenos">2769</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span> -</span><span id="Parser-2770"><a href="#Parser-2770"><span class="linenos">2770</span></a> <span class="p">)</span> -</span><span id="Parser-2771"><a href="#Parser-2771"><span class="linenos">2771</span></a> -</span><span id="Parser-2772"><a href="#Parser-2772"><span class="linenos">2772</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">:</span> -</span><span id="Parser-2773"><a href="#Parser-2773"><span class="linenos">2773</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> -</span><span id="Parser-2774"><a href="#Parser-2774"><span class="linenos">2774</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> -</span><span id="Parser-2775"><a href="#Parser-2775"><span class="linenos">2775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> -</span><span id="Parser-2776"><a href="#Parser-2776"><span class="linenos">2776</span></a> -</span><span id="Parser-2777"><a href="#Parser-2777"><span class="linenos">2777</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-2778"><a href="#Parser-2778"><span class="linenos">2778</span></a> -</span><span id="Parser-2779"><a href="#Parser-2779"><span class="linenos">2779</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">):</span> -</span><span id="Parser-2780"><a href="#Parser-2780"><span class="linenos">2780</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2781"><a href="#Parser-2781"><span class="linenos">2781</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">):</span> -</span><span id="Parser-2782"><a href="#Parser-2782"><span class="linenos">2782</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2783"><a href="#Parser-2783"><span class="linenos">2783</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2784"><a href="#Parser-2784"><span class="linenos">2784</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2785"><a href="#Parser-2785"><span class="linenos">2785</span></a> -</span><span id="Parser-2786"><a href="#Parser-2786"><span class="linenos">2786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2787"><a href="#Parser-2787"><span class="linenos">2787</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> -</span><span id="Parser-2788"><a href="#Parser-2788"><span class="linenos">2788</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> -</span><span id="Parser-2789"><a href="#Parser-2789"><span class="linenos">2789</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> -</span><span id="Parser-2790"><a href="#Parser-2790"><span class="linenos">2790</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="Parser-2791"><a href="#Parser-2791"><span class="linenos">2791</span></a> <span class="p">)</span> -</span><span id="Parser-2792"><a href="#Parser-2792"><span class="linenos">2792</span></a> -</span><span id="Parser-2793"><a href="#Parser-2793"><span class="linenos">2793</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> -</span><span id="Parser-2794"><a href="#Parser-2794"><span class="linenos">2794</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2795"><a href="#Parser-2795"><span class="linenos">2795</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]:</span> -</span><span id="Parser-2796"><a href="#Parser-2796"><span class="linenos">2796</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-2797"><a href="#Parser-2797"><span class="linenos">2797</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-2798"><a href="#Parser-2798"><span class="linenos">2798</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-2799"><a href="#Parser-2799"><span class="linenos">2799</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> -</span><span id="Parser-2800"><a href="#Parser-2800"><span class="linenos">2800</span></a> <span class="p">)</span> -</span><span id="Parser-2801"><a href="#Parser-2801"><span class="linenos">2801</span></a> -</span><span id="Parser-2802"><a href="#Parser-2802"><span class="linenos">2802</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2803"><a href="#Parser-2803"><span class="linenos">2803</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2804"><a href="#Parser-2804"><span class="linenos">2804</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="Parser-2805"><a href="#Parser-2805"><span class="linenos">2805</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2806"><a href="#Parser-2806"><span class="linenos">2806</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2807"><a href="#Parser-2807"><span class="linenos">2807</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2808"><a href="#Parser-2808"><span class="linenos">2808</span></a> -</span><span id="Parser-2809"><a href="#Parser-2809"><span class="linenos">2809</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="Parser-2810"><a href="#Parser-2810"><span class="linenos">2810</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2811"><a href="#Parser-2811"><span class="linenos">2811</span></a> -</span><span id="Parser-2812"><a href="#Parser-2812"><span class="linenos">2812</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> -</span><span id="Parser-2813"><a href="#Parser-2813"><span class="linenos">2813</span></a> -</span><span id="Parser-2814"><a href="#Parser-2814"><span class="linenos">2814</span></a> <span class="c1"># We bubble up comments from the Identifier to the TableAlias</span> -</span><span id="Parser-2815"><a href="#Parser-2815"><span class="linenos">2815</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="Parser-2816"><a href="#Parser-2816"><span class="linenos">2816</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> +</span><span id="Parser-2734"><a href="#Parser-2734"><span class="linenos">2734</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2735"><a href="#Parser-2735"><span class="linenos">2735</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-2736"><a href="#Parser-2736"><span class="linenos">2736</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="Parser-2737"><a href="#Parser-2737"><span class="linenos">2737</span></a> <span class="k">if</span> <span class="n">table</span> +</span><span id="Parser-2738"><a href="#Parser-2738"><span class="linenos">2738</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2739"><a href="#Parser-2739"><span class="linenos">2739</span></a> <span class="p">)</span> +</span><span id="Parser-2740"><a href="#Parser-2740"><span class="linenos">2740</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> +</span><span id="Parser-2741"><a href="#Parser-2741"><span class="linenos">2741</span></a> +</span><span id="Parser-2742"><a href="#Parser-2742"><span class="linenos">2742</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2743"><a href="#Parser-2743"><span class="linenos">2743</span></a> +</span><span id="Parser-2744"><a href="#Parser-2744"><span class="linenos">2744</span></a> <span class="c1"># We return early here so that the UNION isn't attached to the subquery by the</span> +</span><span id="Parser-2745"><a href="#Parser-2745"><span class="linenos">2745</span></a> <span class="c1"># following call to _parse_set_operations, but instead becomes the parent node</span> +</span><span id="Parser-2746"><a href="#Parser-2746"><span class="linenos">2746</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> +</span><span id="Parser-2747"><a href="#Parser-2747"><span class="linenos">2747</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-2748"><a href="#Parser-2748"><span class="linenos">2748</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> +</span><span id="Parser-2749"><a href="#Parser-2749"><span class="linenos">2749</span></a> <span class="k">elif</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="Parser-2750"><a href="#Parser-2750"><span class="linenos">2750</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2751"><a href="#Parser-2751"><span class="linenos">2751</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2752"><a href="#Parser-2752"><span class="linenos">2752</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2753"><a href="#Parser-2753"><span class="linenos">2753</span></a> +</span><span id="Parser-2754"><a href="#Parser-2754"><span class="linenos">2754</span></a> <span class="k">if</span> <span class="n">parse_set_operation</span><span class="p">:</span> +</span><span id="Parser-2755"><a href="#Parser-2755"><span class="linenos">2755</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2756"><a href="#Parser-2756"><span class="linenos">2756</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2757"><a href="#Parser-2757"><span class="linenos">2757</span></a> +</span><span id="Parser-2758"><a href="#Parser-2758"><span class="linenos">2758</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">With</span><span class="p">]:</span> +</span><span id="Parser-2759"><a href="#Parser-2759"><span class="linenos">2759</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-2760"><a href="#Parser-2760"><span class="linenos">2760</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2761"><a href="#Parser-2761"><span class="linenos">2761</span></a> +</span><span id="Parser-2762"><a href="#Parser-2762"><span class="linenos">2762</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-2763"><a href="#Parser-2763"><span class="linenos">2763</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> +</span><span id="Parser-2764"><a href="#Parser-2764"><span class="linenos">2764</span></a> +</span><span id="Parser-2765"><a href="#Parser-2765"><span class="linenos">2765</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2766"><a href="#Parser-2766"><span class="linenos">2766</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-2767"><a href="#Parser-2767"><span class="linenos">2767</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_cte</span><span class="p">())</span> +</span><span id="Parser-2768"><a href="#Parser-2768"><span class="linenos">2768</span></a> +</span><span id="Parser-2769"><a href="#Parser-2769"><span class="linenos">2769</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-2770"><a href="#Parser-2770"><span class="linenos">2770</span></a> <span class="k">break</span> +</span><span id="Parser-2771"><a href="#Parser-2771"><span class="linenos">2771</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2772"><a href="#Parser-2772"><span class="linenos">2772</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="Parser-2773"><a href="#Parser-2773"><span class="linenos">2773</span></a> +</span><span id="Parser-2774"><a href="#Parser-2774"><span class="linenos">2774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2775"><a href="#Parser-2775"><span class="linenos">2775</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span> +</span><span id="Parser-2776"><a href="#Parser-2776"><span class="linenos">2776</span></a> <span class="p">)</span> +</span><span id="Parser-2777"><a href="#Parser-2777"><span class="linenos">2777</span></a> +</span><span id="Parser-2778"><a href="#Parser-2778"><span class="linenos">2778</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">:</span> +</span><span id="Parser-2779"><a href="#Parser-2779"><span class="linenos">2779</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> +</span><span id="Parser-2780"><a href="#Parser-2780"><span class="linenos">2780</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> +</span><span id="Parser-2781"><a href="#Parser-2781"><span class="linenos">2781</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> +</span><span id="Parser-2782"><a href="#Parser-2782"><span class="linenos">2782</span></a> +</span><span id="Parser-2783"><a href="#Parser-2783"><span class="linenos">2783</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-2784"><a href="#Parser-2784"><span class="linenos">2784</span></a> +</span><span id="Parser-2785"><a href="#Parser-2785"><span class="linenos">2785</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">):</span> +</span><span id="Parser-2786"><a href="#Parser-2786"><span class="linenos">2786</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2787"><a href="#Parser-2787"><span class="linenos">2787</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATERIALIZED"</span><span class="p">):</span> +</span><span id="Parser-2788"><a href="#Parser-2788"><span class="linenos">2788</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2789"><a href="#Parser-2789"><span class="linenos">2789</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2790"><a href="#Parser-2790"><span class="linenos">2790</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2791"><a href="#Parser-2791"><span class="linenos">2791</span></a> +</span><span id="Parser-2792"><a href="#Parser-2792"><span class="linenos">2792</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2793"><a href="#Parser-2793"><span class="linenos">2793</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> +</span><span id="Parser-2794"><a href="#Parser-2794"><span class="linenos">2794</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> +</span><span id="Parser-2795"><a href="#Parser-2795"><span class="linenos">2795</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> +</span><span id="Parser-2796"><a href="#Parser-2796"><span class="linenos">2796</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="Parser-2797"><a href="#Parser-2797"><span class="linenos">2797</span></a> <span class="p">)</span> +</span><span id="Parser-2798"><a href="#Parser-2798"><span class="linenos">2798</span></a> +</span><span id="Parser-2799"><a href="#Parser-2799"><span class="linenos">2799</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> +</span><span id="Parser-2800"><a href="#Parser-2800"><span class="linenos">2800</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2801"><a href="#Parser-2801"><span class="linenos">2801</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]:</span> +</span><span id="Parser-2802"><a href="#Parser-2802"><span class="linenos">2802</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-2803"><a href="#Parser-2803"><span class="linenos">2803</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-2804"><a href="#Parser-2804"><span class="linenos">2804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-2805"><a href="#Parser-2805"><span class="linenos">2805</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> +</span><span id="Parser-2806"><a href="#Parser-2806"><span class="linenos">2806</span></a> <span class="p">)</span> +</span><span id="Parser-2807"><a href="#Parser-2807"><span class="linenos">2807</span></a> +</span><span id="Parser-2808"><a href="#Parser-2808"><span class="linenos">2808</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2809"><a href="#Parser-2809"><span class="linenos">2809</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2810"><a href="#Parser-2810"><span class="linenos">2810</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="Parser-2811"><a href="#Parser-2811"><span class="linenos">2811</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2812"><a href="#Parser-2812"><span class="linenos">2812</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2813"><a href="#Parser-2813"><span class="linenos">2813</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2814"><a href="#Parser-2814"><span class="linenos">2814</span></a> +</span><span id="Parser-2815"><a href="#Parser-2815"><span class="linenos">2815</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="Parser-2816"><a href="#Parser-2816"><span class="linenos">2816</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-2817"><a href="#Parser-2817"><span class="linenos">2817</span></a> -</span><span id="Parser-2818"><a href="#Parser-2818"><span class="linenos">2818</span></a> <span class="k">return</span> <span class="n">table_alias</span> +</span><span id="Parser-2818"><a href="#Parser-2818"><span class="linenos">2818</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> </span><span id="Parser-2819"><a href="#Parser-2819"><span class="linenos">2819</span></a> -</span><span id="Parser-2820"><a href="#Parser-2820"><span class="linenos">2820</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> -</span><span id="Parser-2821"><a href="#Parser-2821"><span class="linenos">2821</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2822"><a href="#Parser-2822"><span class="linenos">2822</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">]:</span> -</span><span id="Parser-2823"><a href="#Parser-2823"><span class="linenos">2823</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-2824"><a href="#Parser-2824"><span class="linenos">2824</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2820"><a href="#Parser-2820"><span class="linenos">2820</span></a> <span class="c1"># We bubble up comments from the Identifier to the TableAlias</span> +</span><span id="Parser-2821"><a href="#Parser-2821"><span class="linenos">2821</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="Parser-2822"><a href="#Parser-2822"><span class="linenos">2822</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> +</span><span id="Parser-2823"><a href="#Parser-2823"><span class="linenos">2823</span></a> +</span><span id="Parser-2824"><a href="#Parser-2824"><span class="linenos">2824</span></a> <span class="k">return</span> <span class="n">table_alias</span> </span><span id="Parser-2825"><a href="#Parser-2825"><span class="linenos">2825</span></a> -</span><span id="Parser-2826"><a href="#Parser-2826"><span class="linenos">2826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2827"><a href="#Parser-2827"><span class="linenos">2827</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> -</span><span id="Parser-2828"><a href="#Parser-2828"><span class="linenos">2828</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2829"><a href="#Parser-2829"><span class="linenos">2829</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> -</span><span id="Parser-2830"><a href="#Parser-2830"><span class="linenos">2830</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-2831"><a href="#Parser-2831"><span class="linenos">2831</span></a> <span class="p">)</span> -</span><span id="Parser-2832"><a href="#Parser-2832"><span class="linenos">2832</span></a> -</span><span id="Parser-2833"><a href="#Parser-2833"><span class="linenos">2833</span></a> <span class="k">def</span> <span class="nf">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Parser-2834"><a href="#Parser-2834"><span class="linenos">2834</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> <span class="k">as</span> <span class="n">_norm</span> -</span><span id="Parser-2835"><a href="#Parser-2835"><span class="linenos">2835</span></a> -</span><span id="Parser-2836"><a href="#Parser-2836"><span class="linenos">2836</span></a> <span class="n">refs</span> <span class="o">=</span> <span class="p">{</span><span class="n">_norm</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">}</span> -</span><span id="Parser-2837"><a href="#Parser-2837"><span class="linenos">2837</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">join</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]):</span> -</span><span id="Parser-2838"><a href="#Parser-2838"><span class="linenos">2838</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">join</span><span class="o">.</span><span class="n">this</span> -</span><span id="Parser-2839"><a href="#Parser-2839"><span class="linenos">2839</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="Parser-2840"><a href="#Parser-2840"><span class="linenos">2840</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"maybe_column"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2841"><a href="#Parser-2841"><span class="linenos">2841</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">_norm</span><span class="p">(</span><span class="n">normalized_table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="Parser-2842"><a href="#Parser-2842"><span class="linenos">2842</span></a> -</span><span id="Parser-2843"><a href="#Parser-2843"><span class="linenos">2843</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"on"</span><span class="p">):</span> -</span><span id="Parser-2844"><a href="#Parser-2844"><span class="linenos">2844</span></a> <span class="k">if</span> <span class="n">normalized_table</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">refs</span><span class="p">:</span> -</span><span id="Parser-2845"><a href="#Parser-2845"><span class="linenos">2845</span></a> <span class="n">table_as_column</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">()</span> -</span><span id="Parser-2846"><a href="#Parser-2846"><span class="linenos">2846</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">table_as_column</span><span class="p">])</span> -</span><span id="Parser-2847"><a href="#Parser-2847"><span class="linenos">2847</span></a> -</span><span id="Parser-2848"><a href="#Parser-2848"><span class="linenos">2848</span></a> <span class="c1"># Table.to_column creates a parent Alias node that we want to convert to</span> -</span><span id="Parser-2849"><a href="#Parser-2849"><span class="linenos">2849</span></a> <span class="c1"># a TableAlias and attach to the Unnest, so it matches the parser's output</span> -</span><span id="Parser-2850"><a href="#Parser-2850"><span class="linenos">2850</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">):</span> -</span><span id="Parser-2851"><a href="#Parser-2851"><span class="linenos">2851</span></a> <span class="n">table_as_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table_as_column</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2852"><a href="#Parser-2852"><span class="linenos">2852</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2826"><a href="#Parser-2826"><span class="linenos">2826</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> +</span><span id="Parser-2827"><a href="#Parser-2827"><span class="linenos">2827</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2828"><a href="#Parser-2828"><span class="linenos">2828</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">]:</span> +</span><span id="Parser-2829"><a href="#Parser-2829"><span class="linenos">2829</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-2830"><a href="#Parser-2830"><span class="linenos">2830</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2831"><a href="#Parser-2831"><span class="linenos">2831</span></a> +</span><span id="Parser-2832"><a href="#Parser-2832"><span class="linenos">2832</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2833"><a href="#Parser-2833"><span class="linenos">2833</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> +</span><span id="Parser-2834"><a href="#Parser-2834"><span class="linenos">2834</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2835"><a href="#Parser-2835"><span class="linenos">2835</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> +</span><span id="Parser-2836"><a href="#Parser-2836"><span class="linenos">2836</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-2837"><a href="#Parser-2837"><span class="linenos">2837</span></a> <span class="p">)</span> +</span><span id="Parser-2838"><a href="#Parser-2838"><span class="linenos">2838</span></a> +</span><span id="Parser-2839"><a href="#Parser-2839"><span class="linenos">2839</span></a> <span class="k">def</span> <span class="nf">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Parser-2840"><a href="#Parser-2840"><span class="linenos">2840</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.normalize_identifiers</span> <span class="kn">import</span> <span class="n">normalize_identifiers</span> <span class="k">as</span> <span class="n">_norm</span> +</span><span id="Parser-2841"><a href="#Parser-2841"><span class="linenos">2841</span></a> +</span><span id="Parser-2842"><a href="#Parser-2842"><span class="linenos">2842</span></a> <span class="n">refs</span> <span class="o">=</span> <span class="p">{</span><span class="n">_norm</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">}</span> +</span><span id="Parser-2843"><a href="#Parser-2843"><span class="linenos">2843</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">join</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]):</span> +</span><span id="Parser-2844"><a href="#Parser-2844"><span class="linenos">2844</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">join</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-2845"><a href="#Parser-2845"><span class="linenos">2845</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="Parser-2846"><a href="#Parser-2846"><span class="linenos">2846</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"maybe_column"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2847"><a href="#Parser-2847"><span class="linenos">2847</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">_norm</span><span class="p">(</span><span class="n">normalized_table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Parser-2848"><a href="#Parser-2848"><span class="linenos">2848</span></a> +</span><span id="Parser-2849"><a href="#Parser-2849"><span class="linenos">2849</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"on"</span><span class="p">):</span> +</span><span id="Parser-2850"><a href="#Parser-2850"><span class="linenos">2850</span></a> <span class="k">if</span> <span class="n">normalized_table</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">refs</span><span class="p">:</span> +</span><span id="Parser-2851"><a href="#Parser-2851"><span class="linenos">2851</span></a> <span class="n">table_as_column</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">to_column</span><span class="p">()</span> +</span><span id="Parser-2852"><a href="#Parser-2852"><span class="linenos">2852</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">table_as_column</span><span class="p">])</span> </span><span id="Parser-2853"><a href="#Parser-2853"><span class="linenos">2853</span></a> -</span><span id="Parser-2854"><a href="#Parser-2854"><span class="linenos">2854</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="Parser-2855"><a href="#Parser-2855"><span class="linenos">2855</span></a> -</span><span id="Parser-2856"><a href="#Parser-2856"><span class="linenos">2856</span></a> <span class="n">refs</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalized_table</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> -</span><span id="Parser-2857"><a href="#Parser-2857"><span class="linenos">2857</span></a> -</span><span id="Parser-2858"><a href="#Parser-2858"><span class="linenos">2858</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2854"><a href="#Parser-2854"><span class="linenos">2854</span></a> <span class="c1"># Table.to_column creates a parent Alias node that we want to convert to</span> +</span><span id="Parser-2855"><a href="#Parser-2855"><span class="linenos">2855</span></a> <span class="c1"># a TableAlias and attach to the Unnest, so it matches the parser's output</span> +</span><span id="Parser-2856"><a href="#Parser-2856"><span class="linenos">2856</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">):</span> +</span><span id="Parser-2857"><a href="#Parser-2857"><span class="linenos">2857</span></a> <span class="n">table_as_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">table_as_column</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2858"><a href="#Parser-2858"><span class="linenos">2858</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="p">[</span><span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span><span id="Parser-2859"><a href="#Parser-2859"><span class="linenos">2859</span></a> -</span><span id="Parser-2860"><a href="#Parser-2860"><span class="linenos">2860</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span> -</span><span id="Parser-2861"><a href="#Parser-2861"><span class="linenos">2861</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-2862"><a href="#Parser-2862"><span class="linenos">2862</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2863"><a href="#Parser-2863"><span class="linenos">2863</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)):</span> -</span><span id="Parser-2864"><a href="#Parser-2864"><span class="linenos">2864</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> -</span><span id="Parser-2865"><a href="#Parser-2865"><span class="linenos">2865</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> -</span><span id="Parser-2866"><a href="#Parser-2866"><span class="linenos">2866</span></a> <span class="k">for</span> <span class="n">lateral</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span> -</span><span id="Parser-2867"><a href="#Parser-2867"><span class="linenos">2867</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> -</span><span id="Parser-2868"><a href="#Parser-2868"><span class="linenos">2868</span></a> -</span><span id="Parser-2869"><a href="#Parser-2869"><span class="linenos">2869</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2870"><a href="#Parser-2870"><span class="linenos">2870</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-2871"><a href="#Parser-2871"><span class="linenos">2871</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> -</span><span id="Parser-2872"><a href="#Parser-2872"><span class="linenos">2872</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-2873"><a href="#Parser-2873"><span class="linenos">2873</span></a> -</span><span id="Parser-2874"><a href="#Parser-2874"><span class="linenos">2874</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-2875"><a href="#Parser-2875"><span class="linenos">2875</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-2876"><a href="#Parser-2876"><span class="linenos">2876</span></a> <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"limit"</span><span class="p">:</span> -</span><span id="Parser-2877"><a href="#Parser-2877"><span class="linenos">2877</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-2878"><a href="#Parser-2878"><span class="linenos">2878</span></a> -</span><span id="Parser-2879"><a href="#Parser-2879"><span class="linenos">2879</span></a> <span class="k">if</span> <span class="n">offset</span><span class="p">:</span> -</span><span id="Parser-2880"><a href="#Parser-2880"><span class="linenos">2880</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> -</span><span id="Parser-2881"><a href="#Parser-2881"><span class="linenos">2881</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span> -</span><span id="Parser-2882"><a href="#Parser-2882"><span class="linenos">2882</span></a> -</span><span id="Parser-2883"><a href="#Parser-2883"><span class="linenos">2883</span></a> <span class="n">limit_by_expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="Parser-2884"><a href="#Parser-2884"><span class="linenos">2884</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-2885"><a href="#Parser-2885"><span class="linenos">2885</span></a> <span class="n">offset</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">limit_by_expressions</span><span class="p">)</span> -</span><span id="Parser-2886"><a href="#Parser-2886"><span class="linenos">2886</span></a> <span class="k">continue</span> -</span><span id="Parser-2887"><a href="#Parser-2887"><span class="linenos">2887</span></a> <span class="k">break</span> +</span><span id="Parser-2860"><a href="#Parser-2860"><span class="linenos">2860</span></a> <span class="n">table</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="Parser-2861"><a href="#Parser-2861"><span class="linenos">2861</span></a> +</span><span id="Parser-2862"><a href="#Parser-2862"><span class="linenos">2862</span></a> <span class="n">refs</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalized_table</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> +</span><span id="Parser-2863"><a href="#Parser-2863"><span class="linenos">2863</span></a> +</span><span id="Parser-2864"><a href="#Parser-2864"><span class="linenos">2864</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2865"><a href="#Parser-2865"><span class="linenos">2865</span></a> +</span><span id="Parser-2866"><a href="#Parser-2866"><span class="linenos">2866</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span> +</span><span id="Parser-2867"><a href="#Parser-2867"><span class="linenos">2867</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-2868"><a href="#Parser-2868"><span class="linenos">2868</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2869"><a href="#Parser-2869"><span class="linenos">2869</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)):</span> +</span><span id="Parser-2870"><a href="#Parser-2870"><span class="linenos">2870</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> +</span><span id="Parser-2871"><a href="#Parser-2871"><span class="linenos">2871</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> +</span><span id="Parser-2872"><a href="#Parser-2872"><span class="linenos">2872</span></a> <span class="k">for</span> <span class="n">lateral</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span> +</span><span id="Parser-2873"><a href="#Parser-2873"><span class="linenos">2873</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> +</span><span id="Parser-2874"><a href="#Parser-2874"><span class="linenos">2874</span></a> +</span><span id="Parser-2875"><a href="#Parser-2875"><span class="linenos">2875</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-2876"><a href="#Parser-2876"><span class="linenos">2876</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-2877"><a href="#Parser-2877"><span class="linenos">2877</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> +</span><span id="Parser-2878"><a href="#Parser-2878"><span class="linenos">2878</span></a> <span class="n">key</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-2879"><a href="#Parser-2879"><span class="linenos">2879</span></a> +</span><span id="Parser-2880"><a href="#Parser-2880"><span class="linenos">2880</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-2881"><a href="#Parser-2881"><span class="linenos">2881</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-2882"><a href="#Parser-2882"><span class="linenos">2882</span></a> <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"limit"</span><span class="p">:</span> +</span><span id="Parser-2883"><a href="#Parser-2883"><span class="linenos">2883</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-2884"><a href="#Parser-2884"><span class="linenos">2884</span></a> +</span><span id="Parser-2885"><a href="#Parser-2885"><span class="linenos">2885</span></a> <span class="k">if</span> <span class="n">offset</span><span class="p">:</span> +</span><span id="Parser-2886"><a href="#Parser-2886"><span class="linenos">2886</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> +</span><span id="Parser-2887"><a href="#Parser-2887"><span class="linenos">2887</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span> </span><span id="Parser-2888"><a href="#Parser-2888"><span class="linenos">2888</span></a> -</span><span id="Parser-2889"><a href="#Parser-2889"><span class="linenos">2889</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="s2">"from"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="Parser-2890"><a href="#Parser-2890"><span class="linenos">2890</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2891"><a href="#Parser-2891"><span class="linenos">2891</span></a> -</span><span id="Parser-2892"><a href="#Parser-2892"><span class="linenos">2892</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2893"><a href="#Parser-2893"><span class="linenos">2893</span></a> -</span><span id="Parser-2894"><a href="#Parser-2894"><span class="linenos">2894</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">]:</span> -</span><span id="Parser-2895"><a href="#Parser-2895"><span class="linenos">2895</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> -</span><span id="Parser-2896"><a href="#Parser-2896"><span class="linenos">2896</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2897"><a href="#Parser-2897"><span class="linenos">2897</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span> -</span><span id="Parser-2898"><a href="#Parser-2898"><span class="linenos">2898</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-2899"><a href="#Parser-2899"><span class="linenos">2899</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2900"><a href="#Parser-2900"><span class="linenos">2900</span></a> <span class="p">),</span> -</span><span id="Parser-2901"><a href="#Parser-2901"><span class="linenos">2901</span></a> <span class="p">[],</span> -</span><span id="Parser-2902"><a href="#Parser-2902"><span class="linenos">2902</span></a> <span class="p">):</span> -</span><span id="Parser-2903"><a href="#Parser-2903"><span class="linenos">2903</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> -</span><span id="Parser-2904"><a href="#Parser-2904"><span class="linenos">2904</span></a> -</span><span id="Parser-2905"><a href="#Parser-2905"><span class="linenos">2905</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> -</span><span id="Parser-2906"><a href="#Parser-2906"><span class="linenos">2906</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> -</span><span id="Parser-2907"><a href="#Parser-2907"><span class="linenos">2907</span></a> -</span><span id="Parser-2908"><a href="#Parser-2908"><span class="linenos">2908</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> -</span><span id="Parser-2909"><a href="#Parser-2909"><span class="linenos">2909</span></a> -</span><span id="Parser-2910"><a href="#Parser-2910"><span class="linenos">2910</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2911"><a href="#Parser-2911"><span class="linenos">2911</span></a> -</span><span id="Parser-2912"><a href="#Parser-2912"><span class="linenos">2912</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">]:</span> -</span><span id="Parser-2913"><a href="#Parser-2913"><span class="linenos">2913</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> -</span><span id="Parser-2914"><a href="#Parser-2914"><span class="linenos">2914</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2889"><a href="#Parser-2889"><span class="linenos">2889</span></a> <span class="n">limit_by_expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="Parser-2890"><a href="#Parser-2890"><span class="linenos">2890</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-2891"><a href="#Parser-2891"><span class="linenos">2891</span></a> <span class="n">offset</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">limit_by_expressions</span><span class="p">)</span> +</span><span id="Parser-2892"><a href="#Parser-2892"><span class="linenos">2892</span></a> <span class="k">continue</span> +</span><span id="Parser-2893"><a href="#Parser-2893"><span class="linenos">2893</span></a> <span class="k">break</span> +</span><span id="Parser-2894"><a href="#Parser-2894"><span class="linenos">2894</span></a> +</span><span id="Parser-2895"><a href="#Parser-2895"><span class="linenos">2895</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_IMPLICIT_UNNEST</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="s2">"from"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="Parser-2896"><a href="#Parser-2896"><span class="linenos">2896</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_implicit_unnests_to_explicit</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2897"><a href="#Parser-2897"><span class="linenos">2897</span></a> +</span><span id="Parser-2898"><a href="#Parser-2898"><span class="linenos">2898</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2899"><a href="#Parser-2899"><span class="linenos">2899</span></a> +</span><span id="Parser-2900"><a href="#Parser-2900"><span class="linenos">2900</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">]:</span> +</span><span id="Parser-2901"><a href="#Parser-2901"><span class="linenos">2901</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> +</span><span id="Parser-2902"><a href="#Parser-2902"><span class="linenos">2902</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2903"><a href="#Parser-2903"><span class="linenos">2903</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span> +</span><span id="Parser-2904"><a href="#Parser-2904"><span class="linenos">2904</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-2905"><a href="#Parser-2905"><span class="linenos">2905</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2906"><a href="#Parser-2906"><span class="linenos">2906</span></a> <span class="p">),</span> +</span><span id="Parser-2907"><a href="#Parser-2907"><span class="linenos">2907</span></a> <span class="p">[],</span> +</span><span id="Parser-2908"><a href="#Parser-2908"><span class="linenos">2908</span></a> <span class="p">):</span> +</span><span id="Parser-2909"><a href="#Parser-2909"><span class="linenos">2909</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> +</span><span id="Parser-2910"><a href="#Parser-2910"><span class="linenos">2910</span></a> +</span><span id="Parser-2911"><a href="#Parser-2911"><span class="linenos">2911</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> +</span><span id="Parser-2912"><a href="#Parser-2912"><span class="linenos">2912</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> +</span><span id="Parser-2913"><a href="#Parser-2913"><span class="linenos">2913</span></a> +</span><span id="Parser-2914"><a href="#Parser-2914"><span class="linenos">2914</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> </span><span id="Parser-2915"><a href="#Parser-2915"><span class="linenos">2915</span></a> -</span><span id="Parser-2916"><a href="#Parser-2916"><span class="linenos">2916</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="Parser-2917"><a href="#Parser-2917"><span class="linenos">2917</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNLOGGED"</span><span class="p">)</span> -</span><span id="Parser-2918"><a href="#Parser-2918"><span class="linenos">2918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-2919"><a href="#Parser-2919"><span class="linenos">2919</span></a> -</span><span id="Parser-2920"><a href="#Parser-2920"><span class="linenos">2920</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2921"><a href="#Parser-2921"><span class="linenos">2921</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> -</span><span id="Parser-2922"><a href="#Parser-2922"><span class="linenos">2922</span></a> <span class="p">)</span> -</span><span id="Parser-2923"><a href="#Parser-2923"><span class="linenos">2923</span></a> -</span><span id="Parser-2924"><a href="#Parser-2924"><span class="linenos">2924</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span> -</span><span id="Parser-2925"><a href="#Parser-2925"><span class="linenos">2925</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">skip_from_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2926"><a href="#Parser-2926"><span class="linenos">2926</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">From</span><span class="p">]:</span> -</span><span id="Parser-2927"><a href="#Parser-2927"><span class="linenos">2927</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_from_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-2928"><a href="#Parser-2928"><span class="linenos">2928</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2916"><a href="#Parser-2916"><span class="linenos">2916</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2917"><a href="#Parser-2917"><span class="linenos">2917</span></a> +</span><span id="Parser-2918"><a href="#Parser-2918"><span class="linenos">2918</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">]:</span> +</span><span id="Parser-2919"><a href="#Parser-2919"><span class="linenos">2919</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> +</span><span id="Parser-2920"><a href="#Parser-2920"><span class="linenos">2920</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2921"><a href="#Parser-2921"><span class="linenos">2921</span></a> +</span><span id="Parser-2922"><a href="#Parser-2922"><span class="linenos">2922</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="Parser-2923"><a href="#Parser-2923"><span class="linenos">2923</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNLOGGED"</span><span class="p">)</span> +</span><span id="Parser-2924"><a href="#Parser-2924"><span class="linenos">2924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-2925"><a href="#Parser-2925"><span class="linenos">2925</span></a> +</span><span id="Parser-2926"><a href="#Parser-2926"><span class="linenos">2926</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2927"><a href="#Parser-2927"><span class="linenos">2927</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> +</span><span id="Parser-2928"><a href="#Parser-2928"><span class="linenos">2928</span></a> <span class="p">)</span> </span><span id="Parser-2929"><a href="#Parser-2929"><span class="linenos">2929</span></a> -</span><span id="Parser-2930"><a href="#Parser-2930"><span class="linenos">2930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2931"><a href="#Parser-2931"><span class="linenos">2931</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">)</span> -</span><span id="Parser-2932"><a href="#Parser-2932"><span class="linenos">2932</span></a> <span class="p">)</span> -</span><span id="Parser-2933"><a href="#Parser-2933"><span class="linenos">2933</span></a> -</span><span id="Parser-2934"><a href="#Parser-2934"><span class="linenos">2934</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize_measure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">:</span> -</span><span id="Parser-2935"><a href="#Parser-2935"><span class="linenos">2935</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2936"><a href="#Parser-2936"><span class="linenos">2936</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">,</span> -</span><span id="Parser-2937"><a href="#Parser-2937"><span class="linenos">2937</span></a> <span class="n">window_frame</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FINAL"</span><span class="p">,</span> <span class="s2">"RUNNING"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> -</span><span id="Parser-2938"><a href="#Parser-2938"><span class="linenos">2938</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> -</span><span id="Parser-2939"><a href="#Parser-2939"><span class="linenos">2939</span></a> <span class="p">)</span> -</span><span id="Parser-2940"><a href="#Parser-2940"><span class="linenos">2940</span></a> -</span><span id="Parser-2941"><a href="#Parser-2941"><span class="linenos">2941</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">]:</span> -</span><span id="Parser-2942"><a href="#Parser-2942"><span class="linenos">2942</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> -</span><span id="Parser-2943"><a href="#Parser-2943"><span class="linenos">2943</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2944"><a href="#Parser-2944"><span class="linenos">2944</span></a> -</span><span id="Parser-2945"><a href="#Parser-2945"><span class="linenos">2945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-2930"><a href="#Parser-2930"><span class="linenos">2930</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span> +</span><span id="Parser-2931"><a href="#Parser-2931"><span class="linenos">2931</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">joins</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">skip_from_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2932"><a href="#Parser-2932"><span class="linenos">2932</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">From</span><span class="p">]:</span> +</span><span id="Parser-2933"><a href="#Parser-2933"><span class="linenos">2933</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_from_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-2934"><a href="#Parser-2934"><span class="linenos">2934</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2935"><a href="#Parser-2935"><span class="linenos">2935</span></a> +</span><span id="Parser-2936"><a href="#Parser-2936"><span class="linenos">2936</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2937"><a href="#Parser-2937"><span class="linenos">2937</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">joins</span><span class="o">=</span><span class="n">joins</span><span class="p">)</span> +</span><span id="Parser-2938"><a href="#Parser-2938"><span class="linenos">2938</span></a> <span class="p">)</span> +</span><span id="Parser-2939"><a href="#Parser-2939"><span class="linenos">2939</span></a> +</span><span id="Parser-2940"><a href="#Parser-2940"><span class="linenos">2940</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize_measure</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">:</span> +</span><span id="Parser-2941"><a href="#Parser-2941"><span class="linenos">2941</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2942"><a href="#Parser-2942"><span class="linenos">2942</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognizeMeasure</span><span class="p">,</span> +</span><span id="Parser-2943"><a href="#Parser-2943"><span class="linenos">2943</span></a> <span class="n">window_frame</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FINAL"</span><span class="p">,</span> <span class="s2">"RUNNING"</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> +</span><span id="Parser-2944"><a href="#Parser-2944"><span class="linenos">2944</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> +</span><span id="Parser-2945"><a href="#Parser-2945"><span class="linenos">2945</span></a> <span class="p">)</span> </span><span id="Parser-2946"><a href="#Parser-2946"><span class="linenos">2946</span></a> -</span><span id="Parser-2947"><a href="#Parser-2947"><span class="linenos">2947</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="Parser-2948"><a href="#Parser-2948"><span class="linenos">2948</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="Parser-2949"><a href="#Parser-2949"><span class="linenos">2949</span></a> -</span><span id="Parser-2950"><a href="#Parser-2950"><span class="linenos">2950</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-2951"><a href="#Parser-2951"><span class="linenos">2951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize_measure</span><span class="p">)</span> -</span><span id="Parser-2952"><a href="#Parser-2952"><span class="linenos">2952</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> -</span><span id="Parser-2953"><a href="#Parser-2953"><span class="linenos">2953</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-2954"><a href="#Parser-2954"><span class="linenos">2954</span></a> <span class="p">)</span> +</span><span id="Parser-2947"><a href="#Parser-2947"><span class="linenos">2947</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">]:</span> +</span><span id="Parser-2948"><a href="#Parser-2948"><span class="linenos">2948</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> +</span><span id="Parser-2949"><a href="#Parser-2949"><span class="linenos">2949</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2950"><a href="#Parser-2950"><span class="linenos">2950</span></a> +</span><span id="Parser-2951"><a href="#Parser-2951"><span class="linenos">2951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-2952"><a href="#Parser-2952"><span class="linenos">2952</span></a> +</span><span id="Parser-2953"><a href="#Parser-2953"><span class="linenos">2953</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="Parser-2954"><a href="#Parser-2954"><span class="linenos">2954</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> </span><span id="Parser-2955"><a href="#Parser-2955"><span class="linenos">2955</span></a> -</span><span id="Parser-2956"><a href="#Parser-2956"><span class="linenos">2956</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="Parser-2957"><a href="#Parser-2957"><span class="linenos">2957</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> -</span><span id="Parser-2958"><a href="#Parser-2958"><span class="linenos">2958</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="Parser-2959"><a href="#Parser-2959"><span class="linenos">2959</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> -</span><span id="Parser-2960"><a href="#Parser-2960"><span class="linenos">2960</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="Parser-2961"><a href="#Parser-2961"><span class="linenos">2961</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" SHOW EMPTY MATCHES"</span> -</span><span id="Parser-2962"><a href="#Parser-2962"><span class="linenos">2962</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="Parser-2963"><a href="#Parser-2963"><span class="linenos">2963</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" OMIT EMPTY MATCHES"</span> -</span><span id="Parser-2964"><a href="#Parser-2964"><span class="linenos">2964</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="Parser-2965"><a href="#Parser-2965"><span class="linenos">2965</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" WITH UNMATCHED ROWS"</span> -</span><span id="Parser-2966"><a href="#Parser-2966"><span class="linenos">2966</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-2967"><a href="#Parser-2967"><span class="linenos">2967</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2968"><a href="#Parser-2968"><span class="linenos">2968</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2969"><a href="#Parser-2969"><span class="linenos">2969</span></a> -</span><span id="Parser-2970"><a href="#Parser-2970"><span class="linenos">2970</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> -</span><span id="Parser-2971"><a href="#Parser-2971"><span class="linenos">2971</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> -</span><span id="Parser-2972"><a href="#Parser-2972"><span class="linenos">2972</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="Parser-2973"><a href="#Parser-2973"><span class="linenos">2973</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" PAST LAST ROW"</span> -</span><span id="Parser-2974"><a href="#Parser-2974"><span class="linenos">2974</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="Parser-2975"><a href="#Parser-2975"><span class="linenos">2975</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" TO NEXT ROW"</span> -</span><span id="Parser-2976"><a href="#Parser-2976"><span class="linenos">2976</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> -</span><span id="Parser-2977"><a href="#Parser-2977"><span class="linenos">2977</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-2978"><a href="#Parser-2978"><span class="linenos">2978</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> -</span><span id="Parser-2979"><a href="#Parser-2979"><span class="linenos">2979</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-2980"><a href="#Parser-2980"><span class="linenos">2980</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-2981"><a href="#Parser-2981"><span class="linenos">2981</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2982"><a href="#Parser-2982"><span class="linenos">2982</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2983"><a href="#Parser-2983"><span class="linenos">2983</span></a> -</span><span id="Parser-2984"><a href="#Parser-2984"><span class="linenos">2984</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> -</span><span id="Parser-2985"><a href="#Parser-2985"><span class="linenos">2985</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-2986"><a href="#Parser-2986"><span class="linenos">2986</span></a> -</span><span id="Parser-2987"><a href="#Parser-2987"><span class="linenos">2987</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-2988"><a href="#Parser-2988"><span class="linenos">2988</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="Parser-2956"><a href="#Parser-2956"><span class="linenos">2956</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-2957"><a href="#Parser-2957"><span class="linenos">2957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize_measure</span><span class="p">)</span> +</span><span id="Parser-2958"><a href="#Parser-2958"><span class="linenos">2958</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> +</span><span id="Parser-2959"><a href="#Parser-2959"><span class="linenos">2959</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-2960"><a href="#Parser-2960"><span class="linenos">2960</span></a> <span class="p">)</span> +</span><span id="Parser-2961"><a href="#Parser-2961"><span class="linenos">2961</span></a> +</span><span id="Parser-2962"><a href="#Parser-2962"><span class="linenos">2962</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="Parser-2963"><a href="#Parser-2963"><span class="linenos">2963</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> +</span><span id="Parser-2964"><a href="#Parser-2964"><span class="linenos">2964</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="Parser-2965"><a href="#Parser-2965"><span class="linenos">2965</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> +</span><span id="Parser-2966"><a href="#Parser-2966"><span class="linenos">2966</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="Parser-2967"><a href="#Parser-2967"><span class="linenos">2967</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" SHOW EMPTY MATCHES"</span> +</span><span id="Parser-2968"><a href="#Parser-2968"><span class="linenos">2968</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="Parser-2969"><a href="#Parser-2969"><span class="linenos">2969</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" OMIT EMPTY MATCHES"</span> +</span><span id="Parser-2970"><a href="#Parser-2970"><span class="linenos">2970</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="Parser-2971"><a href="#Parser-2971"><span class="linenos">2971</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" WITH UNMATCHED ROWS"</span> +</span><span id="Parser-2972"><a href="#Parser-2972"><span class="linenos">2972</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-2973"><a href="#Parser-2973"><span class="linenos">2973</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2974"><a href="#Parser-2974"><span class="linenos">2974</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2975"><a href="#Parser-2975"><span class="linenos">2975</span></a> +</span><span id="Parser-2976"><a href="#Parser-2976"><span class="linenos">2976</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> +</span><span id="Parser-2977"><a href="#Parser-2977"><span class="linenos">2977</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> +</span><span id="Parser-2978"><a href="#Parser-2978"><span class="linenos">2978</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="Parser-2979"><a href="#Parser-2979"><span class="linenos">2979</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" PAST LAST ROW"</span> +</span><span id="Parser-2980"><a href="#Parser-2980"><span class="linenos">2980</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="Parser-2981"><a href="#Parser-2981"><span class="linenos">2981</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="s2">" TO NEXT ROW"</span> +</span><span id="Parser-2982"><a href="#Parser-2982"><span class="linenos">2982</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> +</span><span id="Parser-2983"><a href="#Parser-2983"><span class="linenos">2983</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-2984"><a href="#Parser-2984"><span class="linenos">2984</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> +</span><span id="Parser-2985"><a href="#Parser-2985"><span class="linenos">2985</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-2986"><a href="#Parser-2986"><span class="linenos">2986</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-2987"><a href="#Parser-2987"><span class="linenos">2987</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2988"><a href="#Parser-2988"><span class="linenos">2988</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-2989"><a href="#Parser-2989"><span class="linenos">2989</span></a> -</span><span id="Parser-2990"><a href="#Parser-2990"><span class="linenos">2990</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Parser-2991"><a href="#Parser-2991"><span class="linenos">2991</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> +</span><span id="Parser-2990"><a href="#Parser-2990"><span class="linenos">2990</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> +</span><span id="Parser-2991"><a href="#Parser-2991"><span class="linenos">2991</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> </span><span id="Parser-2992"><a href="#Parser-2992"><span class="linenos">2992</span></a> -</span><span id="Parser-2993"><a href="#Parser-2993"><span class="linenos">2993</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-2994"><a href="#Parser-2994"><span class="linenos">2994</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="Parser-2995"><a href="#Parser-2995"><span class="linenos">2995</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Parser-2996"><a href="#Parser-2996"><span class="linenos">2996</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> -</span><span id="Parser-2997"><a href="#Parser-2997"><span class="linenos">2997</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> +</span><span id="Parser-2993"><a href="#Parser-2993"><span class="linenos">2993</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-2994"><a href="#Parser-2994"><span class="linenos">2994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="Parser-2995"><a href="#Parser-2995"><span class="linenos">2995</span></a> +</span><span id="Parser-2996"><a href="#Parser-2996"><span class="linenos">2996</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Parser-2997"><a href="#Parser-2997"><span class="linenos">2997</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> </span><span id="Parser-2998"><a href="#Parser-2998"><span class="linenos">2998</span></a> -</span><span id="Parser-2999"><a href="#Parser-2999"><span class="linenos">2999</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-3000"><a href="#Parser-3000"><span class="linenos">3000</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3001"><a href="#Parser-3001"><span class="linenos">3001</span></a> -</span><span id="Parser-3002"><a href="#Parser-3002"><span class="linenos">3002</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-3003"><a href="#Parser-3003"><span class="linenos">3003</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="Parser-2999"><a href="#Parser-2999"><span class="linenos">2999</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-3000"><a href="#Parser-3000"><span class="linenos">3000</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="Parser-3001"><a href="#Parser-3001"><span class="linenos">3001</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Parser-3002"><a href="#Parser-3002"><span class="linenos">3002</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> +</span><span id="Parser-3003"><a href="#Parser-3003"><span class="linenos">3003</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> </span><span id="Parser-3004"><a href="#Parser-3004"><span class="linenos">3004</span></a> -</span><span id="Parser-3005"><a href="#Parser-3005"><span class="linenos">3005</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> -</span><span id="Parser-3006"><a href="#Parser-3006"><span class="linenos">3006</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3007"><a href="#Parser-3007"><span class="linenos">3007</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3008"><a href="#Parser-3008"><span class="linenos">3008</span></a> -</span><span id="Parser-3009"><a href="#Parser-3009"><span class="linenos">3009</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-3010"><a href="#Parser-3010"><span class="linenos">3010</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> -</span><span id="Parser-3011"><a href="#Parser-3011"><span class="linenos">3011</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> -</span><span id="Parser-3012"><a href="#Parser-3012"><span class="linenos">3012</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3013"><a href="#Parser-3013"><span class="linenos">3013</span></a> <span class="p">)</span> +</span><span id="Parser-3005"><a href="#Parser-3005"><span class="linenos">3005</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-3006"><a href="#Parser-3006"><span class="linenos">3006</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3007"><a href="#Parser-3007"><span class="linenos">3007</span></a> +</span><span id="Parser-3008"><a href="#Parser-3008"><span class="linenos">3008</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-3009"><a href="#Parser-3009"><span class="linenos">3009</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="Parser-3010"><a href="#Parser-3010"><span class="linenos">3010</span></a> +</span><span id="Parser-3011"><a href="#Parser-3011"><span class="linenos">3011</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> +</span><span id="Parser-3012"><a href="#Parser-3012"><span class="linenos">3012</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3013"><a href="#Parser-3013"><span class="linenos">3013</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-3014"><a href="#Parser-3014"><span class="linenos">3014</span></a> -</span><span id="Parser-3015"><a href="#Parser-3015"><span class="linenos">3015</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3016"><a href="#Parser-3016"><span class="linenos">3016</span></a> -</span><span id="Parser-3017"><a href="#Parser-3017"><span class="linenos">3017</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3018"><a href="#Parser-3018"><span class="linenos">3018</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> -</span><span id="Parser-3019"><a href="#Parser-3019"><span class="linenos">3019</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="Parser-3020"><a href="#Parser-3020"><span class="linenos">3020</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="Parser-3021"><a href="#Parser-3021"><span class="linenos">3021</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> -</span><span id="Parser-3022"><a href="#Parser-3022"><span class="linenos">3022</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> -</span><span id="Parser-3023"><a href="#Parser-3023"><span class="linenos">3023</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> -</span><span id="Parser-3024"><a href="#Parser-3024"><span class="linenos">3024</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> -</span><span id="Parser-3025"><a href="#Parser-3025"><span class="linenos">3025</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> -</span><span id="Parser-3026"><a href="#Parser-3026"><span class="linenos">3026</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="Parser-3027"><a href="#Parser-3027"><span class="linenos">3027</span></a> <span class="p">)</span> -</span><span id="Parser-3028"><a href="#Parser-3028"><span class="linenos">3028</span></a> -</span><span id="Parser-3029"><a href="#Parser-3029"><span class="linenos">3029</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">]:</span> -</span><span id="Parser-3030"><a href="#Parser-3030"><span class="linenos">3030</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> -</span><span id="Parser-3031"><a href="#Parser-3031"><span class="linenos">3031</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cross_apply</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">):</span> -</span><span id="Parser-3032"><a href="#Parser-3032"><span class="linenos">3032</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3033"><a href="#Parser-3033"><span class="linenos">3033</span></a> -</span><span id="Parser-3034"><a href="#Parser-3034"><span class="linenos">3034</span></a> <span class="k">if</span> <span class="n">cross_apply</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-3035"><a href="#Parser-3035"><span class="linenos">3035</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3036"><a href="#Parser-3036"><span class="linenos">3036</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3037"><a href="#Parser-3037"><span class="linenos">3037</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3038"><a href="#Parser-3038"><span class="linenos">3038</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> -</span><span id="Parser-3039"><a href="#Parser-3039"><span class="linenos">3039</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3040"><a href="#Parser-3040"><span class="linenos">3040</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> -</span><span id="Parser-3041"><a href="#Parser-3041"><span class="linenos">3041</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> -</span><span id="Parser-3042"><a href="#Parser-3042"><span class="linenos">3042</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3043"><a href="#Parser-3043"><span class="linenos">3043</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3044"><a href="#Parser-3044"><span class="linenos">3044</span></a> -</span><span id="Parser-3045"><a href="#Parser-3045"><span class="linenos">3045</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-3046"><a href="#Parser-3046"><span class="linenos">3046</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-3047"><a href="#Parser-3047"><span class="linenos">3047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="Parser-3048"><a href="#Parser-3048"><span class="linenos">3048</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="Parser-3049"><a href="#Parser-3049"><span class="linenos">3049</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3050"><a href="#Parser-3050"><span class="linenos">3050</span></a> <span class="p">)</span> -</span><span id="Parser-3051"><a href="#Parser-3051"><span class="linenos">3051</span></a> -</span><span id="Parser-3052"><a href="#Parser-3052"><span class="linenos">3052</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-3053"><a href="#Parser-3053"><span class="linenos">3053</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> -</span><span id="Parser-3054"><a href="#Parser-3054"><span class="linenos">3054</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3055"><a href="#Parser-3055"><span class="linenos">3055</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-3056"><a href="#Parser-3056"><span class="linenos">3056</span></a> <span class="p">)</span> +</span><span id="Parser-3015"><a href="#Parser-3015"><span class="linenos">3015</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-3016"><a href="#Parser-3016"><span class="linenos">3016</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> +</span><span id="Parser-3017"><a href="#Parser-3017"><span class="linenos">3017</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> +</span><span id="Parser-3018"><a href="#Parser-3018"><span class="linenos">3018</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3019"><a href="#Parser-3019"><span class="linenos">3019</span></a> <span class="p">)</span> +</span><span id="Parser-3020"><a href="#Parser-3020"><span class="linenos">3020</span></a> +</span><span id="Parser-3021"><a href="#Parser-3021"><span class="linenos">3021</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3022"><a href="#Parser-3022"><span class="linenos">3022</span></a> +</span><span id="Parser-3023"><a href="#Parser-3023"><span class="linenos">3023</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3024"><a href="#Parser-3024"><span class="linenos">3024</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> +</span><span id="Parser-3025"><a href="#Parser-3025"><span class="linenos">3025</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="Parser-3026"><a href="#Parser-3026"><span class="linenos">3026</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="Parser-3027"><a href="#Parser-3027"><span class="linenos">3027</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> +</span><span id="Parser-3028"><a href="#Parser-3028"><span class="linenos">3028</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> +</span><span id="Parser-3029"><a href="#Parser-3029"><span class="linenos">3029</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> +</span><span id="Parser-3030"><a href="#Parser-3030"><span class="linenos">3030</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> +</span><span id="Parser-3031"><a href="#Parser-3031"><span class="linenos">3031</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> +</span><span id="Parser-3032"><a href="#Parser-3032"><span class="linenos">3032</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="Parser-3033"><a href="#Parser-3033"><span class="linenos">3033</span></a> <span class="p">)</span> +</span><span id="Parser-3034"><a href="#Parser-3034"><span class="linenos">3034</span></a> +</span><span id="Parser-3035"><a href="#Parser-3035"><span class="linenos">3035</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">]:</span> +</span><span id="Parser-3036"><a href="#Parser-3036"><span class="linenos">3036</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> +</span><span id="Parser-3037"><a href="#Parser-3037"><span class="linenos">3037</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">cross_apply</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">):</span> +</span><span id="Parser-3038"><a href="#Parser-3038"><span class="linenos">3038</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3039"><a href="#Parser-3039"><span class="linenos">3039</span></a> +</span><span id="Parser-3040"><a href="#Parser-3040"><span class="linenos">3040</span></a> <span class="k">if</span> <span class="n">cross_apply</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-3041"><a href="#Parser-3041"><span class="linenos">3041</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3042"><a href="#Parser-3042"><span class="linenos">3042</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3043"><a href="#Parser-3043"><span class="linenos">3043</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3044"><a href="#Parser-3044"><span class="linenos">3044</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> +</span><span id="Parser-3045"><a href="#Parser-3045"><span class="linenos">3045</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3046"><a href="#Parser-3046"><span class="linenos">3046</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> +</span><span id="Parser-3047"><a href="#Parser-3047"><span class="linenos">3047</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> +</span><span id="Parser-3048"><a href="#Parser-3048"><span class="linenos">3048</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3049"><a href="#Parser-3049"><span class="linenos">3049</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3050"><a href="#Parser-3050"><span class="linenos">3050</span></a> +</span><span id="Parser-3051"><a href="#Parser-3051"><span class="linenos">3051</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-3052"><a href="#Parser-3052"><span class="linenos">3052</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-3053"><a href="#Parser-3053"><span class="linenos">3053</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="Parser-3054"><a href="#Parser-3054"><span class="linenos">3054</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="Parser-3055"><a href="#Parser-3055"><span class="linenos">3055</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3056"><a href="#Parser-3056"><span class="linenos">3056</span></a> <span class="p">)</span> </span><span id="Parser-3057"><a href="#Parser-3057"><span class="linenos">3057</span></a> -</span><span id="Parser-3058"><a href="#Parser-3058"><span class="linenos">3058</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> -</span><span id="Parser-3059"><a href="#Parser-3059"><span class="linenos">3059</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3060"><a href="#Parser-3060"><span class="linenos">3060</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="Parser-3061"><a href="#Parser-3061"><span class="linenos">3061</span></a> <span class="n">table_alias</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3062"><a href="#Parser-3062"><span class="linenos">3062</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span> -</span><span id="Parser-3063"><a href="#Parser-3063"><span class="linenos">3063</span></a> <span class="p">)</span> -</span><span id="Parser-3064"><a href="#Parser-3064"><span class="linenos">3064</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">))</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-3065"><a href="#Parser-3065"><span class="linenos">3065</span></a> <span class="c1"># We move the alias from the lateral's child node to the lateral itself</span> -</span><span id="Parser-3066"><a href="#Parser-3066"><span class="linenos">3066</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> -</span><span id="Parser-3067"><a href="#Parser-3067"><span class="linenos">3067</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3068"><a href="#Parser-3068"><span class="linenos">3068</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="Parser-3069"><a href="#Parser-3069"><span class="linenos">3069</span></a> -</span><span id="Parser-3070"><a href="#Parser-3070"><span class="linenos">3070</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3071"><a href="#Parser-3071"><span class="linenos">3071</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="Parser-3072"><a href="#Parser-3072"><span class="linenos">3072</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3073"><a href="#Parser-3073"><span class="linenos">3073</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> -</span><span id="Parser-3074"><a href="#Parser-3074"><span class="linenos">3074</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> -</span><span id="Parser-3075"><a href="#Parser-3075"><span class="linenos">3075</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> -</span><span id="Parser-3076"><a href="#Parser-3076"><span class="linenos">3076</span></a> <span class="n">cross_apply</span><span class="o">=</span><span class="n">cross_apply</span><span class="p">,</span> -</span><span id="Parser-3077"><a href="#Parser-3077"><span class="linenos">3077</span></a> <span class="p">)</span> -</span><span id="Parser-3078"><a href="#Parser-3078"><span class="linenos">3078</span></a> -</span><span id="Parser-3079"><a href="#Parser-3079"><span class="linenos">3079</span></a> <span class="k">def</span> <span class="nf">_parse_join_parts</span><span class="p">(</span> -</span><span id="Parser-3080"><a href="#Parser-3080"><span class="linenos">3080</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-3081"><a href="#Parser-3081"><span class="linenos">3081</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">Token</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">Token</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">Token</span><span class="p">]]:</span> -</span><span id="Parser-3082"><a href="#Parser-3082"><span class="linenos">3082</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Parser-3083"><a href="#Parser-3083"><span class="linenos">3083</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_METHODS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="Parser-3084"><a href="#Parser-3084"><span class="linenos">3084</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="Parser-3085"><a href="#Parser-3085"><span class="linenos">3085</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="Parser-3086"><a href="#Parser-3086"><span class="linenos">3086</span></a> <span class="p">)</span> -</span><span id="Parser-3087"><a href="#Parser-3087"><span class="linenos">3087</span></a> -</span><span id="Parser-3088"><a href="#Parser-3088"><span class="linenos">3088</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span> -</span><span id="Parser-3089"><a href="#Parser-3089"><span class="linenos">3089</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3090"><a href="#Parser-3090"><span class="linenos">3090</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> -</span><span id="Parser-3091"><a href="#Parser-3091"><span class="linenos">3091</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-3092"><a href="#Parser-3092"><span class="linenos">3092</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="Parser-3058"><a href="#Parser-3058"><span class="linenos">3058</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-3059"><a href="#Parser-3059"><span class="linenos">3059</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> +</span><span id="Parser-3060"><a href="#Parser-3060"><span class="linenos">3060</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3061"><a href="#Parser-3061"><span class="linenos">3061</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-3062"><a href="#Parser-3062"><span class="linenos">3062</span></a> <span class="p">)</span> +</span><span id="Parser-3063"><a href="#Parser-3063"><span class="linenos">3063</span></a> +</span><span id="Parser-3064"><a href="#Parser-3064"><span class="linenos">3064</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> +</span><span id="Parser-3065"><a href="#Parser-3065"><span class="linenos">3065</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3066"><a href="#Parser-3066"><span class="linenos">3066</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="Parser-3067"><a href="#Parser-3067"><span class="linenos">3067</span></a> <span class="n">table_alias</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">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3068"><a href="#Parser-3068"><span class="linenos">3068</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span> +</span><span id="Parser-3069"><a href="#Parser-3069"><span class="linenos">3069</span></a> <span class="p">)</span> +</span><span id="Parser-3070"><a href="#Parser-3070"><span class="linenos">3070</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">))</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-3071"><a href="#Parser-3071"><span class="linenos">3071</span></a> <span class="c1"># We move the alias from the lateral's child node to the lateral itself</span> +</span><span id="Parser-3072"><a href="#Parser-3072"><span class="linenos">3072</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> +</span><span id="Parser-3073"><a href="#Parser-3073"><span class="linenos">3073</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3074"><a href="#Parser-3074"><span class="linenos">3074</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="Parser-3075"><a href="#Parser-3075"><span class="linenos">3075</span></a> +</span><span id="Parser-3076"><a href="#Parser-3076"><span class="linenos">3076</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3077"><a href="#Parser-3077"><span class="linenos">3077</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="Parser-3078"><a href="#Parser-3078"><span class="linenos">3078</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3079"><a href="#Parser-3079"><span class="linenos">3079</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> +</span><span id="Parser-3080"><a href="#Parser-3080"><span class="linenos">3080</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> +</span><span id="Parser-3081"><a href="#Parser-3081"><span class="linenos">3081</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> +</span><span id="Parser-3082"><a href="#Parser-3082"><span class="linenos">3082</span></a> <span class="n">cross_apply</span><span class="o">=</span><span class="n">cross_apply</span><span class="p">,</span> +</span><span id="Parser-3083"><a href="#Parser-3083"><span class="linenos">3083</span></a> <span class="p">)</span> +</span><span id="Parser-3084"><a href="#Parser-3084"><span class="linenos">3084</span></a> +</span><span id="Parser-3085"><a href="#Parser-3085"><span class="linenos">3085</span></a> <span class="k">def</span> <span class="nf">_parse_join_parts</span><span class="p">(</span> +</span><span id="Parser-3086"><a href="#Parser-3086"><span class="linenos">3086</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-3087"><a href="#Parser-3087"><span class="linenos">3087</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">Token</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">Token</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">Token</span><span class="p">]]:</span> +</span><span id="Parser-3088"><a href="#Parser-3088"><span class="linenos">3088</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Parser-3089"><a href="#Parser-3089"><span class="linenos">3089</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_METHODS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="Parser-3090"><a href="#Parser-3090"><span class="linenos">3090</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="Parser-3091"><a href="#Parser-3091"><span class="linenos">3091</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="Parser-3092"><a href="#Parser-3092"><span class="linenos">3092</span></a> <span class="p">)</span> </span><span id="Parser-3093"><a href="#Parser-3093"><span class="linenos">3093</span></a> -</span><span id="Parser-3094"><a href="#Parser-3094"><span class="linenos">3094</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3095"><a href="#Parser-3095"><span class="linenos">3095</span></a> <span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">()</span> -</span><span id="Parser-3096"><a href="#Parser-3096"><span class="linenos">3096</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_HINTS</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3097"><a href="#Parser-3097"><span class="linenos">3097</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">)</span> -</span><span id="Parser-3098"><a href="#Parser-3098"><span class="linenos">3098</span></a> -</span><span id="Parser-3099"><a href="#Parser-3099"><span class="linenos">3099</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="p">:</span> -</span><span id="Parser-3100"><a href="#Parser-3100"><span class="linenos">3100</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3101"><a href="#Parser-3101"><span class="linenos">3101</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3102"><a href="#Parser-3102"><span class="linenos">3102</span></a> <span class="n">method</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3103"><a href="#Parser-3103"><span class="linenos">3103</span></a> <span class="n">side</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3094"><a href="#Parser-3094"><span class="linenos">3094</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span> +</span><span id="Parser-3095"><a href="#Parser-3095"><span class="linenos">3095</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_bracket</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3096"><a href="#Parser-3096"><span class="linenos">3096</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> +</span><span id="Parser-3097"><a href="#Parser-3097"><span class="linenos">3097</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-3098"><a href="#Parser-3098"><span class="linenos">3098</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="Parser-3099"><a href="#Parser-3099"><span class="linenos">3099</span></a> +</span><span id="Parser-3100"><a href="#Parser-3100"><span class="linenos">3100</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3101"><a href="#Parser-3101"><span class="linenos">3101</span></a> <span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_parts</span><span class="p">()</span> +</span><span id="Parser-3102"><a href="#Parser-3102"><span class="linenos">3102</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_HINTS</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3103"><a href="#Parser-3103"><span class="linenos">3103</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">)</span> </span><span id="Parser-3104"><a href="#Parser-3104"><span class="linenos">3104</span></a> -</span><span id="Parser-3105"><a href="#Parser-3105"><span class="linenos">3105</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3106"><a href="#Parser-3106"><span class="linenos">3106</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3107"><a href="#Parser-3107"><span class="linenos">3107</span></a> -</span><span id="Parser-3108"><a href="#Parser-3108"><span class="linenos">3108</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">outer_apply</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cross_apply</span><span class="p">:</span> -</span><span id="Parser-3109"><a href="#Parser-3109"><span class="linenos">3109</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3105"><a href="#Parser-3105"><span class="linenos">3105</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span><span class="p">:</span> +</span><span id="Parser-3106"><a href="#Parser-3106"><span class="linenos">3106</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3107"><a href="#Parser-3107"><span class="linenos">3107</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3108"><a href="#Parser-3108"><span class="linenos">3108</span></a> <span class="n">method</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3109"><a href="#Parser-3109"><span class="linenos">3109</span></a> <span class="n">side</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-3110"><a href="#Parser-3110"><span class="linenos">3110</span></a> -</span><span id="Parser-3111"><a href="#Parser-3111"><span class="linenos">3111</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">)}</span> -</span><span id="Parser-3112"><a href="#Parser-3112"><span class="linenos">3112</span></a> -</span><span id="Parser-3113"><a href="#Parser-3113"><span class="linenos">3113</span></a> <span class="k">if</span> <span class="n">method</span><span class="p">:</span> -</span><span id="Parser-3114"><a href="#Parser-3114"><span class="linenos">3114</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"method"</span><span class="p">]</span> <span class="o">=</span> <span class="n">method</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-3115"><a href="#Parser-3115"><span class="linenos">3115</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="Parser-3116"><a href="#Parser-3116"><span class="linenos">3116</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-3117"><a href="#Parser-3117"><span class="linenos">3117</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-3118"><a href="#Parser-3118"><span class="linenos">3118</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-3119"><a href="#Parser-3119"><span class="linenos">3119</span></a> <span class="k">if</span> <span class="n">hint</span><span class="p">:</span> -</span><span id="Parser-3120"><a href="#Parser-3120"><span class="linenos">3120</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"hint"</span><span class="p">]</span> <span class="o">=</span> <span class="n">hint</span> -</span><span id="Parser-3121"><a href="#Parser-3121"><span class="linenos">3121</span></a> -</span><span id="Parser-3122"><a href="#Parser-3122"><span class="linenos">3122</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_CONDITION</span><span class="p">):</span> -</span><span id="Parser-3123"><a href="#Parser-3123"><span class="linenos">3123</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"match_condition"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">)</span> -</span><span id="Parser-3124"><a href="#Parser-3124"><span class="linenos">3124</span></a> -</span><span id="Parser-3125"><a href="#Parser-3125"><span class="linenos">3125</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-3126"><a href="#Parser-3126"><span class="linenos">3126</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3127"><a href="#Parser-3127"><span class="linenos">3127</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="Parser-3128"><a href="#Parser-3128"><span class="linenos">3128</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-3129"><a href="#Parser-3129"><span class="linenos">3129</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> -</span><span id="Parser-3130"><a href="#Parser-3130"><span class="linenos">3130</span></a> <span class="n">kind</span> <span class="ow">and</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span> -</span><span id="Parser-3131"><a href="#Parser-3131"><span class="linenos">3131</span></a> <span class="p">):</span> -</span><span id="Parser-3132"><a href="#Parser-3132"><span class="linenos">3132</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3133"><a href="#Parser-3133"><span class="linenos">3133</span></a> <span class="n">joins</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">list</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">())</span> -</span><span id="Parser-3134"><a href="#Parser-3134"><span class="linenos">3134</span></a> -</span><span id="Parser-3135"><a href="#Parser-3135"><span class="linenos">3135</span></a> <span class="k">if</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-3136"><a href="#Parser-3136"><span class="linenos">3136</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3137"><a href="#Parser-3137"><span class="linenos">3137</span></a> <span class="k">elif</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="Parser-3138"><a href="#Parser-3138"><span class="linenos">3138</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-3139"><a href="#Parser-3139"><span class="linenos">3139</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3140"><a href="#Parser-3140"><span class="linenos">3140</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3141"><a href="#Parser-3141"><span class="linenos">3141</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3142"><a href="#Parser-3142"><span class="linenos">3142</span></a> -</span><span id="Parser-3143"><a href="#Parser-3143"><span class="linenos">3143</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">joins</span> <span class="k">if</span> <span class="n">joins</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-3144"><a href="#Parser-3144"><span class="linenos">3144</span></a> -</span><span id="Parser-3145"><a href="#Parser-3145"><span class="linenos">3145</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span> <span class="k">if</span> <span class="n">token</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">]</span> -</span><span id="Parser-3146"><a href="#Parser-3146"><span class="linenos">3146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Parser-3147"><a href="#Parser-3147"><span class="linenos">3147</span></a> -</span><span id="Parser-3148"><a href="#Parser-3148"><span class="linenos">3148</span></a> <span class="k">def</span> <span class="nf">_parse_opclass</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3149"><a href="#Parser-3149"><span class="linenos">3149</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3111"><a href="#Parser-3111"><span class="linenos">3111</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3112"><a href="#Parser-3112"><span class="linenos">3112</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3113"><a href="#Parser-3113"><span class="linenos">3113</span></a> +</span><span id="Parser-3114"><a href="#Parser-3114"><span class="linenos">3114</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">join</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">outer_apply</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cross_apply</span><span class="p">:</span> +</span><span id="Parser-3115"><a href="#Parser-3115"><span class="linenos">3115</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3116"><a href="#Parser-3116"><span class="linenos">3116</span></a> +</span><span id="Parser-3117"><a href="#Parser-3117"><span class="linenos">3117</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">parse_bracket</span><span class="o">=</span><span class="n">parse_bracket</span><span class="p">)}</span> +</span><span id="Parser-3118"><a href="#Parser-3118"><span class="linenos">3118</span></a> +</span><span id="Parser-3119"><a href="#Parser-3119"><span class="linenos">3119</span></a> <span class="k">if</span> <span class="n">method</span><span class="p">:</span> +</span><span id="Parser-3120"><a href="#Parser-3120"><span class="linenos">3120</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"method"</span><span class="p">]</span> <span class="o">=</span> <span class="n">method</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3121"><a href="#Parser-3121"><span class="linenos">3121</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="Parser-3122"><a href="#Parser-3122"><span class="linenos">3122</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3123"><a href="#Parser-3123"><span class="linenos">3123</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-3124"><a href="#Parser-3124"><span class="linenos">3124</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3125"><a href="#Parser-3125"><span class="linenos">3125</span></a> <span class="k">if</span> <span class="n">hint</span><span class="p">:</span> +</span><span id="Parser-3126"><a href="#Parser-3126"><span class="linenos">3126</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"hint"</span><span class="p">]</span> <span class="o">=</span> <span class="n">hint</span> +</span><span id="Parser-3127"><a href="#Parser-3127"><span class="linenos">3127</span></a> +</span><span id="Parser-3128"><a href="#Parser-3128"><span class="linenos">3128</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_CONDITION</span><span class="p">):</span> +</span><span id="Parser-3129"><a href="#Parser-3129"><span class="linenos">3129</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"match_condition"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">)</span> +</span><span id="Parser-3130"><a href="#Parser-3130"><span class="linenos">3130</span></a> +</span><span id="Parser-3131"><a href="#Parser-3131"><span class="linenos">3131</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-3132"><a href="#Parser-3132"><span class="linenos">3132</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3133"><a href="#Parser-3133"><span class="linenos">3133</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="Parser-3134"><a href="#Parser-3134"><span class="linenos">3134</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-3135"><a href="#Parser-3135"><span class="linenos">3135</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> +</span><span id="Parser-3136"><a href="#Parser-3136"><span class="linenos">3136</span></a> <span class="n">kind</span> <span class="ow">and</span> <span class="n">kind</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span> +</span><span id="Parser-3137"><a href="#Parser-3137"><span class="linenos">3137</span></a> <span class="p">):</span> +</span><span id="Parser-3138"><a href="#Parser-3138"><span class="linenos">3138</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3139"><a href="#Parser-3139"><span class="linenos">3139</span></a> <span class="n">joins</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">list</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">())</span> +</span><span id="Parser-3140"><a href="#Parser-3140"><span class="linenos">3140</span></a> +</span><span id="Parser-3141"><a href="#Parser-3141"><span class="linenos">3141</span></a> <span class="k">if</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-3142"><a href="#Parser-3142"><span class="linenos">3142</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3143"><a href="#Parser-3143"><span class="linenos">3143</span></a> <span class="k">elif</span> <span class="n">joins</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="Parser-3144"><a href="#Parser-3144"><span class="linenos">3144</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-3145"><a href="#Parser-3145"><span class="linenos">3145</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3146"><a href="#Parser-3146"><span class="linenos">3146</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3147"><a href="#Parser-3147"><span class="linenos">3147</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3148"><a href="#Parser-3148"><span class="linenos">3148</span></a> +</span><span id="Parser-3149"><a href="#Parser-3149"><span class="linenos">3149</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">joins</span> <span class="k">if</span> <span class="n">joins</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> </span><span id="Parser-3150"><a href="#Parser-3150"><span class="linenos">3150</span></a> -</span><span id="Parser-3151"><a href="#Parser-3151"><span class="linenos">3151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPCLASS_FOLLOW_KEYWORDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3152"><a href="#Parser-3152"><span class="linenos">3152</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3151"><a href="#Parser-3151"><span class="linenos">3151</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span> <span class="k">if</span> <span class="n">token</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">comments</span><span class="p">]</span> +</span><span id="Parser-3152"><a href="#Parser-3152"><span class="linenos">3152</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="Parser-3153"><a href="#Parser-3153"><span class="linenos">3153</span></a> -</span><span id="Parser-3154"><a href="#Parser-3154"><span class="linenos">3154</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPTYPE_FOLLOW_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3155"><a href="#Parser-3155"><span class="linenos">3155</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Opclass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> +</span><span id="Parser-3154"><a href="#Parser-3154"><span class="linenos">3154</span></a> <span class="k">def</span> <span class="nf">_parse_opclass</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3155"><a href="#Parser-3155"><span class="linenos">3155</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> </span><span id="Parser-3156"><a href="#Parser-3156"><span class="linenos">3156</span></a> -</span><span id="Parser-3157"><a href="#Parser-3157"><span class="linenos">3157</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3158"><a href="#Parser-3158"><span class="linenos">3158</span></a> -</span><span id="Parser-3159"><a href="#Parser-3159"><span class="linenos">3159</span></a> <span class="k">def</span> <span class="nf">_parse_index_params</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">:</span> -</span><span id="Parser-3160"><a href="#Parser-3160"><span class="linenos">3160</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3161"><a href="#Parser-3161"><span class="linenos">3161</span></a> -</span><span id="Parser-3162"><a href="#Parser-3162"><span class="linenos">3162</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3163"><a href="#Parser-3163"><span class="linenos">3163</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_operator</span><span class="p">)</span> -</span><span id="Parser-3164"><a href="#Parser-3164"><span class="linenos">3164</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3165"><a href="#Parser-3165"><span class="linenos">3165</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3166"><a href="#Parser-3166"><span class="linenos">3166</span></a> -</span><span id="Parser-3167"><a href="#Parser-3167"><span class="linenos">3167</span></a> <span class="n">include</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3168"><a href="#Parser-3168"><span class="linenos">3168</span></a> <span class="n">partition_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="Parser-3169"><a href="#Parser-3169"><span class="linenos">3169</span></a> <span class="n">with_storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> -</span><span id="Parser-3170"><a href="#Parser-3170"><span class="linenos">3170</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-3171"><a href="#Parser-3171"><span class="linenos">3171</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3172"><a href="#Parser-3172"><span class="linenos">3172</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"TABLESPACE"</span><span class="p">)</span> -</span><span id="Parser-3173"><a href="#Parser-3173"><span class="linenos">3173</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3174"><a href="#Parser-3174"><span class="linenos">3174</span></a> <span class="p">)</span> -</span><span id="Parser-3175"><a href="#Parser-3175"><span class="linenos">3175</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> -</span><span id="Parser-3176"><a href="#Parser-3176"><span class="linenos">3176</span></a> -</span><span id="Parser-3177"><a href="#Parser-3177"><span class="linenos">3177</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3178"><a href="#Parser-3178"><span class="linenos">3178</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">,</span> -</span><span id="Parser-3179"><a href="#Parser-3179"><span class="linenos">3179</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> -</span><span id="Parser-3180"><a href="#Parser-3180"><span class="linenos">3180</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> -</span><span id="Parser-3181"><a href="#Parser-3181"><span class="linenos">3181</span></a> <span class="n">include</span><span class="o">=</span><span class="n">include</span><span class="p">,</span> -</span><span id="Parser-3182"><a href="#Parser-3182"><span class="linenos">3182</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition_by</span><span class="p">,</span> -</span><span id="Parser-3183"><a href="#Parser-3183"><span class="linenos">3183</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> -</span><span id="Parser-3184"><a href="#Parser-3184"><span class="linenos">3184</span></a> <span class="n">with_storage</span><span class="o">=</span><span class="n">with_storage</span><span class="p">,</span> -</span><span id="Parser-3185"><a href="#Parser-3185"><span class="linenos">3185</span></a> <span class="n">tablespace</span><span class="o">=</span><span class="n">tablespace</span><span class="p">,</span> -</span><span id="Parser-3186"><a href="#Parser-3186"><span class="linenos">3186</span></a> <span class="p">)</span> -</span><span id="Parser-3187"><a href="#Parser-3187"><span class="linenos">3187</span></a> -</span><span id="Parser-3188"><a href="#Parser-3188"><span class="linenos">3188</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span> -</span><span id="Parser-3189"><a href="#Parser-3189"><span class="linenos">3189</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">index</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3190"><a href="#Parser-3190"><span class="linenos">3190</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">]:</span> -</span><span id="Parser-3191"><a href="#Parser-3191"><span class="linenos">3191</span></a> <span class="k">if</span> <span class="n">index</span> <span class="ow">or</span> <span class="n">anonymous</span><span class="p">:</span> -</span><span id="Parser-3192"><a href="#Parser-3192"><span class="linenos">3192</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3193"><a href="#Parser-3193"><span class="linenos">3193</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3194"><a href="#Parser-3194"><span class="linenos">3194</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3195"><a href="#Parser-3195"><span class="linenos">3195</span></a> -</span><span id="Parser-3196"><a href="#Parser-3196"><span class="linenos">3196</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-3197"><a href="#Parser-3197"><span class="linenos">3197</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> -</span><span id="Parser-3198"><a href="#Parser-3198"><span class="linenos">3198</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3199"><a href="#Parser-3199"><span class="linenos">3199</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3200"><a href="#Parser-3200"><span class="linenos">3200</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="Parser-3201"><a href="#Parser-3201"><span class="linenos">3201</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> -</span><span id="Parser-3202"><a href="#Parser-3202"><span class="linenos">3202</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> -</span><span id="Parser-3203"><a href="#Parser-3203"><span class="linenos">3203</span></a> -</span><span id="Parser-3204"><a href="#Parser-3204"><span class="linenos">3204</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> -</span><span id="Parser-3205"><a href="#Parser-3205"><span class="linenos">3205</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3206"><a href="#Parser-3206"><span class="linenos">3206</span></a> -</span><span id="Parser-3207"><a href="#Parser-3207"><span class="linenos">3207</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-3208"><a href="#Parser-3208"><span class="linenos">3208</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3157"><a href="#Parser-3157"><span class="linenos">3157</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPCLASS_FOLLOW_KEYWORDS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3158"><a href="#Parser-3158"><span class="linenos">3158</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3159"><a href="#Parser-3159"><span class="linenos">3159</span></a> +</span><span id="Parser-3160"><a href="#Parser-3160"><span class="linenos">3160</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OPTYPE_FOLLOW_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3161"><a href="#Parser-3161"><span class="linenos">3161</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Opclass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> +</span><span id="Parser-3162"><a href="#Parser-3162"><span class="linenos">3162</span></a> +</span><span id="Parser-3163"><a href="#Parser-3163"><span class="linenos">3163</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3164"><a href="#Parser-3164"><span class="linenos">3164</span></a> +</span><span id="Parser-3165"><a href="#Parser-3165"><span class="linenos">3165</span></a> <span class="k">def</span> <span class="nf">_parse_index_params</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">:</span> +</span><span id="Parser-3166"><a href="#Parser-3166"><span class="linenos">3166</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3167"><a href="#Parser-3167"><span class="linenos">3167</span></a> +</span><span id="Parser-3168"><a href="#Parser-3168"><span class="linenos">3168</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3169"><a href="#Parser-3169"><span class="linenos">3169</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_operator</span><span class="p">)</span> +</span><span id="Parser-3170"><a href="#Parser-3170"><span class="linenos">3170</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3171"><a href="#Parser-3171"><span class="linenos">3171</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3172"><a href="#Parser-3172"><span class="linenos">3172</span></a> +</span><span id="Parser-3173"><a href="#Parser-3173"><span class="linenos">3173</span></a> <span class="n">include</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3174"><a href="#Parser-3174"><span class="linenos">3174</span></a> <span class="n">partition_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="Parser-3175"><a href="#Parser-3175"><span class="linenos">3175</span></a> <span class="n">with_storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_properties</span><span class="p">()</span> +</span><span id="Parser-3176"><a href="#Parser-3176"><span class="linenos">3176</span></a> <span class="n">tablespace</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-3177"><a href="#Parser-3177"><span class="linenos">3177</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3178"><a href="#Parser-3178"><span class="linenos">3178</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"TABLESPACE"</span><span class="p">)</span> +</span><span id="Parser-3179"><a href="#Parser-3179"><span class="linenos">3179</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3180"><a href="#Parser-3180"><span class="linenos">3180</span></a> <span class="p">)</span> +</span><span id="Parser-3181"><a href="#Parser-3181"><span class="linenos">3181</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">()</span> +</span><span id="Parser-3182"><a href="#Parser-3182"><span class="linenos">3182</span></a> +</span><span id="Parser-3183"><a href="#Parser-3183"><span class="linenos">3183</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3184"><a href="#Parser-3184"><span class="linenos">3184</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IndexParameters</span><span class="p">,</span> +</span><span id="Parser-3185"><a href="#Parser-3185"><span class="linenos">3185</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> +</span><span id="Parser-3186"><a href="#Parser-3186"><span class="linenos">3186</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> +</span><span id="Parser-3187"><a href="#Parser-3187"><span class="linenos">3187</span></a> <span class="n">include</span><span class="o">=</span><span class="n">include</span><span class="p">,</span> +</span><span id="Parser-3188"><a href="#Parser-3188"><span class="linenos">3188</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition_by</span><span class="p">,</span> +</span><span id="Parser-3189"><a href="#Parser-3189"><span class="linenos">3189</span></a> <span class="n">where</span><span class="o">=</span><span class="n">where</span><span class="p">,</span> +</span><span id="Parser-3190"><a href="#Parser-3190"><span class="linenos">3190</span></a> <span class="n">with_storage</span><span class="o">=</span><span class="n">with_storage</span><span class="p">,</span> +</span><span id="Parser-3191"><a href="#Parser-3191"><span class="linenos">3191</span></a> <span class="n">tablespace</span><span class="o">=</span><span class="n">tablespace</span><span class="p">,</span> +</span><span id="Parser-3192"><a href="#Parser-3192"><span class="linenos">3192</span></a> <span class="p">)</span> +</span><span id="Parser-3193"><a href="#Parser-3193"><span class="linenos">3193</span></a> +</span><span id="Parser-3194"><a href="#Parser-3194"><span class="linenos">3194</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span> +</span><span id="Parser-3195"><a href="#Parser-3195"><span class="linenos">3195</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">index</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">anonymous</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3196"><a href="#Parser-3196"><span class="linenos">3196</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">]:</span> +</span><span id="Parser-3197"><a href="#Parser-3197"><span class="linenos">3197</span></a> <span class="k">if</span> <span class="n">index</span> <span class="ow">or</span> <span class="n">anonymous</span><span class="p">:</span> +</span><span id="Parser-3198"><a href="#Parser-3198"><span class="linenos">3198</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3199"><a href="#Parser-3199"><span class="linenos">3199</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3200"><a href="#Parser-3200"><span class="linenos">3200</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3201"><a href="#Parser-3201"><span class="linenos">3201</span></a> +</span><span id="Parser-3202"><a href="#Parser-3202"><span class="linenos">3202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-3203"><a href="#Parser-3203"><span class="linenos">3203</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> +</span><span id="Parser-3204"><a href="#Parser-3204"><span class="linenos">3204</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3205"><a href="#Parser-3205"><span class="linenos">3205</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3206"><a href="#Parser-3206"><span class="linenos">3206</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> +</span><span id="Parser-3207"><a href="#Parser-3207"><span class="linenos">3207</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> +</span><span id="Parser-3208"><a href="#Parser-3208"><span class="linenos">3208</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> </span><span id="Parser-3209"><a href="#Parser-3209"><span class="linenos">3209</span></a> -</span><span id="Parser-3210"><a href="#Parser-3210"><span class="linenos">3210</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> -</span><span id="Parser-3211"><a href="#Parser-3211"><span class="linenos">3211</span></a> -</span><span id="Parser-3212"><a href="#Parser-3212"><span class="linenos">3212</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3213"><a href="#Parser-3213"><span class="linenos">3213</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> -</span><span id="Parser-3214"><a href="#Parser-3214"><span class="linenos">3214</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> -</span><span id="Parser-3215"><a href="#Parser-3215"><span class="linenos">3215</span></a> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="Parser-3216"><a href="#Parser-3216"><span class="linenos">3216</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="Parser-3217"><a href="#Parser-3217"><span class="linenos">3217</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> -</span><span id="Parser-3218"><a href="#Parser-3218"><span class="linenos">3218</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> -</span><span id="Parser-3219"><a href="#Parser-3219"><span class="linenos">3219</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> -</span><span id="Parser-3220"><a href="#Parser-3220"><span class="linenos">3220</span></a> <span class="p">)</span> -</span><span id="Parser-3221"><a href="#Parser-3221"><span class="linenos">3221</span></a> -</span><span id="Parser-3222"><a href="#Parser-3222"><span class="linenos">3222</span></a> <span class="k">def</span> <span class="nf">_parse_table_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3223"><a href="#Parser-3223"><span class="linenos">3223</span></a> <span class="n">hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3224"><a href="#Parser-3224"><span class="linenos">3224</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3225"><a href="#Parser-3225"><span class="linenos">3225</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver16</span> -</span><span id="Parser-3226"><a href="#Parser-3226"><span class="linenos">3226</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-3227"><a href="#Parser-3227"><span class="linenos">3227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3228"><a href="#Parser-3228"><span class="linenos">3228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithTableHint</span><span class="p">,</span> -</span><span id="Parser-3229"><a href="#Parser-3229"><span class="linenos">3229</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-3230"><a href="#Parser-3230"><span class="linenos">3230</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3231"><a href="#Parser-3231"><span class="linenos">3231</span></a> <span class="p">),</span> -</span><span id="Parser-3232"><a href="#Parser-3232"><span class="linenos">3232</span></a> <span class="p">)</span> -</span><span id="Parser-3233"><a href="#Parser-3233"><span class="linenos">3233</span></a> <span class="p">)</span> -</span><span id="Parser-3234"><a href="#Parser-3234"><span class="linenos">3234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3235"><a href="#Parser-3235"><span class="linenos">3235</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3236"><a href="#Parser-3236"><span class="linenos">3236</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/index-hints.html</span> -</span><span id="Parser-3237"><a href="#Parser-3237"><span class="linenos">3237</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TABLE_INDEX_HINT_TOKENS</span><span class="p">):</span> -</span><span id="Parser-3238"><a href="#Parser-3238"><span class="linenos">3238</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexTableHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-3239"><a href="#Parser-3239"><span class="linenos">3239</span></a> -</span><span id="Parser-3240"><a href="#Parser-3240"><span class="linenos">3240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">))</span> -</span><span id="Parser-3241"><a href="#Parser-3241"><span class="linenos">3241</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-3242"><a href="#Parser-3242"><span class="linenos">3242</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"target"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-3243"><a href="#Parser-3243"><span class="linenos">3243</span></a> -</span><span id="Parser-3244"><a href="#Parser-3244"><span class="linenos">3244</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> -</span><span id="Parser-3245"><a href="#Parser-3245"><span class="linenos">3245</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> -</span><span id="Parser-3246"><a href="#Parser-3246"><span class="linenos">3246</span></a> -</span><span id="Parser-3247"><a href="#Parser-3247"><span class="linenos">3247</span></a> <span class="k">return</span> <span class="n">hints</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="Parser-3248"><a href="#Parser-3248"><span class="linenos">3248</span></a> -</span><span id="Parser-3249"><a href="#Parser-3249"><span class="linenos">3249</span></a> <span class="k">def</span> <span class="nf">_parse_table_part</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3250"><a href="#Parser-3250"><span class="linenos">3250</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Parser-3251"><a href="#Parser-3251"><span class="linenos">3251</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">optional_parens</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Parser-3252"><a href="#Parser-3252"><span class="linenos">3252</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3253"><a href="#Parser-3253"><span class="linenos">3253</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> -</span><span id="Parser-3254"><a href="#Parser-3254"><span class="linenos">3254</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-3255"><a href="#Parser-3255"><span class="linenos">3255</span></a> <span class="p">)</span> -</span><span id="Parser-3256"><a href="#Parser-3256"><span class="linenos">3256</span></a> -</span><span id="Parser-3257"><a href="#Parser-3257"><span class="linenos">3257</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span> -</span><span id="Parser-3258"><a href="#Parser-3258"><span class="linenos">3258</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">wildcard</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3259"><a href="#Parser-3259"><span class="linenos">3259</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> -</span><span id="Parser-3260"><a href="#Parser-3260"><span class="linenos">3260</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3261"><a href="#Parser-3261"><span class="linenos">3261</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3262"><a href="#Parser-3262"><span class="linenos">3262</span></a> <span class="n">table</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> -</span><span id="Parser-3263"><a href="#Parser-3263"><span class="linenos">3263</span></a> -</span><span id="Parser-3264"><a href="#Parser-3264"><span class="linenos">3264</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-3265"><a href="#Parser-3265"><span class="linenos">3265</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> -</span><span id="Parser-3266"><a href="#Parser-3266"><span class="linenos">3266</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> -</span><span id="Parser-3267"><a href="#Parser-3267"><span class="linenos">3267</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3268"><a href="#Parser-3268"><span class="linenos">3268</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> -</span><span id="Parser-3269"><a href="#Parser-3269"><span class="linenos">3269</span></a> <span class="p">)</span> -</span><span id="Parser-3270"><a href="#Parser-3270"><span class="linenos">3270</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3271"><a href="#Parser-3271"><span class="linenos">3271</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> -</span><span id="Parser-3272"><a href="#Parser-3272"><span class="linenos">3272</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="Parser-3273"><a href="#Parser-3273"><span class="linenos">3273</span></a> <span class="c1"># "" used for tsql FROM a..b case</span> -</span><span id="Parser-3274"><a href="#Parser-3274"><span class="linenos">3274</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Parser-3275"><a href="#Parser-3275"><span class="linenos">3275</span></a> -</span><span id="Parser-3276"><a href="#Parser-3276"><span class="linenos">3276</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-3277"><a href="#Parser-3277"><span class="linenos">3277</span></a> <span class="n">wildcard</span> -</span><span id="Parser-3278"><a href="#Parser-3278"><span class="linenos">3278</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> -</span><span id="Parser-3279"><a href="#Parser-3279"><span class="linenos">3279</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">table</span><span class="p">)</span> -</span><span id="Parser-3280"><a href="#Parser-3280"><span class="linenos">3280</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">)</span> -</span><span id="Parser-3281"><a href="#Parser-3281"><span class="linenos">3281</span></a> <span class="p">):</span> -</span><span id="Parser-3282"><a href="#Parser-3282"><span class="linenos">3282</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="Parser-3283"><a href="#Parser-3283"><span class="linenos">3283</span></a> <span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span> <span class="o">+=</span> <span class="s2">"*"</span> -</span><span id="Parser-3284"><a href="#Parser-3284"><span class="linenos">3284</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3285"><a href="#Parser-3285"><span class="linenos">3285</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"*"</span><span class="p">)</span> -</span><span id="Parser-3286"><a href="#Parser-3286"><span class="linenos">3286</span></a> -</span><span id="Parser-3287"><a href="#Parser-3287"><span class="linenos">3287</span></a> <span class="c1"># We bubble up comments from the Identifier to the Table</span> -</span><span id="Parser-3288"><a href="#Parser-3288"><span class="linenos">3288</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3289"><a href="#Parser-3289"><span class="linenos">3289</span></a> -</span><span id="Parser-3290"><a href="#Parser-3290"><span class="linenos">3290</span></a> <span class="k">if</span> <span class="n">is_db_reference</span><span class="p">:</span> -</span><span id="Parser-3291"><a href="#Parser-3291"><span class="linenos">3291</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> -</span><span id="Parser-3292"><a href="#Parser-3292"><span class="linenos">3292</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="Parser-3293"><a href="#Parser-3293"><span class="linenos">3293</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3294"><a href="#Parser-3294"><span class="linenos">3294</span></a> -</span><span id="Parser-3295"><a href="#Parser-3295"><span class="linenos">3295</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_db_reference</span><span class="p">:</span> -</span><span id="Parser-3296"><a href="#Parser-3296"><span class="linenos">3296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-3297"><a href="#Parser-3297"><span class="linenos">3297</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">db</span> <span class="ow">and</span> <span class="n">is_db_reference</span><span class="p">:</span> -</span><span id="Parser-3298"><a href="#Parser-3298"><span class="linenos">3298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected database name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-3299"><a href="#Parser-3299"><span class="linenos">3299</span></a> -</span><span id="Parser-3300"><a href="#Parser-3300"><span class="linenos">3300</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3301"><a href="#Parser-3301"><span class="linenos">3301</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> -</span><span id="Parser-3302"><a href="#Parser-3302"><span class="linenos">3302</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-3303"><a href="#Parser-3303"><span class="linenos">3303</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="Parser-3304"><a href="#Parser-3304"><span class="linenos">3304</span></a> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> -</span><span id="Parser-3305"><a href="#Parser-3305"><span class="linenos">3305</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> -</span><span id="Parser-3306"><a href="#Parser-3306"><span class="linenos">3306</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> -</span><span id="Parser-3307"><a href="#Parser-3307"><span class="linenos">3307</span></a> <span class="p">)</span> -</span><span id="Parser-3308"><a href="#Parser-3308"><span class="linenos">3308</span></a> -</span><span id="Parser-3309"><a href="#Parser-3309"><span class="linenos">3309</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> -</span><span id="Parser-3310"><a href="#Parser-3310"><span class="linenos">3310</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-3311"><a href="#Parser-3311"><span class="linenos">3311</span></a> <span class="n">schema</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="Parser-3312"><a href="#Parser-3312"><span class="linenos">3312</span></a> <span class="n">joins</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="Parser-3313"><a href="#Parser-3313"><span class="linenos">3313</span></a> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-3314"><a href="#Parser-3314"><span class="linenos">3314</span></a> <span class="n">parse_bracket</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="Parser-3315"><a href="#Parser-3315"><span class="linenos">3315</span></a> <span class="n">is_db_reference</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="Parser-3316"><a href="#Parser-3316"><span class="linenos">3316</span></a> <span class="n">parse_partition</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="Parser-3317"><a href="#Parser-3317"><span class="linenos">3317</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3318"><a href="#Parser-3318"><span class="linenos">3318</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> -</span><span id="Parser-3319"><a href="#Parser-3319"><span class="linenos">3319</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> -</span><span id="Parser-3320"><a href="#Parser-3320"><span class="linenos">3320</span></a> <span class="k">return</span> <span class="n">lateral</span> -</span><span id="Parser-3321"><a href="#Parser-3321"><span class="linenos">3321</span></a> -</span><span id="Parser-3322"><a href="#Parser-3322"><span class="linenos">3322</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="Parser-3323"><a href="#Parser-3323"><span class="linenos">3323</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="Parser-3324"><a href="#Parser-3324"><span class="linenos">3324</span></a> <span class="k">return</span> <span class="n">unnest</span> -</span><span id="Parser-3325"><a href="#Parser-3325"><span class="linenos">3325</span></a> -</span><span id="Parser-3326"><a href="#Parser-3326"><span class="linenos">3326</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> -</span><span id="Parser-3327"><a href="#Parser-3327"><span class="linenos">3327</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> -</span><span id="Parser-3328"><a href="#Parser-3328"><span class="linenos">3328</span></a> <span class="k">return</span> <span class="n">values</span> -</span><span id="Parser-3329"><a href="#Parser-3329"><span class="linenos">3329</span></a> -</span><span id="Parser-3330"><a href="#Parser-3330"><span class="linenos">3330</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3331"><a href="#Parser-3331"><span class="linenos">3331</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> -</span><span id="Parser-3332"><a href="#Parser-3332"><span class="linenos">3332</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> -</span><span id="Parser-3333"><a href="#Parser-3333"><span class="linenos">3333</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> -</span><span id="Parser-3334"><a href="#Parser-3334"><span class="linenos">3334</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="Parser-3210"><a href="#Parser-3210"><span class="linenos">3210</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> +</span><span id="Parser-3211"><a href="#Parser-3211"><span class="linenos">3211</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3212"><a href="#Parser-3212"><span class="linenos">3212</span></a> +</span><span id="Parser-3213"><a href="#Parser-3213"><span class="linenos">3213</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-3214"><a href="#Parser-3214"><span class="linenos">3214</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3215"><a href="#Parser-3215"><span class="linenos">3215</span></a> +</span><span id="Parser-3216"><a href="#Parser-3216"><span class="linenos">3216</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index_params</span><span class="p">()</span> +</span><span id="Parser-3217"><a href="#Parser-3217"><span class="linenos">3217</span></a> +</span><span id="Parser-3218"><a href="#Parser-3218"><span class="linenos">3218</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3219"><a href="#Parser-3219"><span class="linenos">3219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> +</span><span id="Parser-3220"><a href="#Parser-3220"><span class="linenos">3220</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> +</span><span id="Parser-3221"><a href="#Parser-3221"><span class="linenos">3221</span></a> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="Parser-3222"><a href="#Parser-3222"><span class="linenos">3222</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="Parser-3223"><a href="#Parser-3223"><span class="linenos">3223</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> +</span><span id="Parser-3224"><a href="#Parser-3224"><span class="linenos">3224</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> +</span><span id="Parser-3225"><a href="#Parser-3225"><span class="linenos">3225</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> +</span><span id="Parser-3226"><a href="#Parser-3226"><span class="linenos">3226</span></a> <span class="p">)</span> +</span><span id="Parser-3227"><a href="#Parser-3227"><span class="linenos">3227</span></a> +</span><span id="Parser-3228"><a href="#Parser-3228"><span class="linenos">3228</span></a> <span class="k">def</span> <span class="nf">_parse_table_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3229"><a href="#Parser-3229"><span class="linenos">3229</span></a> <span class="n">hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3230"><a href="#Parser-3230"><span class="linenos">3230</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3231"><a href="#Parser-3231"><span class="linenos">3231</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver16</span> +</span><span id="Parser-3232"><a href="#Parser-3232"><span class="linenos">3232</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-3233"><a href="#Parser-3233"><span class="linenos">3233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3234"><a href="#Parser-3234"><span class="linenos">3234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithTableHint</span><span class="p">,</span> +</span><span id="Parser-3235"><a href="#Parser-3235"><span class="linenos">3235</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-3236"><a href="#Parser-3236"><span class="linenos">3236</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3237"><a href="#Parser-3237"><span class="linenos">3237</span></a> <span class="p">),</span> +</span><span id="Parser-3238"><a href="#Parser-3238"><span class="linenos">3238</span></a> <span class="p">)</span> +</span><span id="Parser-3239"><a href="#Parser-3239"><span class="linenos">3239</span></a> <span class="p">)</span> +</span><span id="Parser-3240"><a href="#Parser-3240"><span class="linenos">3240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3241"><a href="#Parser-3241"><span class="linenos">3241</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3242"><a href="#Parser-3242"><span class="linenos">3242</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/index-hints.html</span> +</span><span id="Parser-3243"><a href="#Parser-3243"><span class="linenos">3243</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TABLE_INDEX_HINT_TOKENS</span><span class="p">):</span> +</span><span id="Parser-3244"><a href="#Parser-3244"><span class="linenos">3244</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IndexTableHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-3245"><a href="#Parser-3245"><span class="linenos">3245</span></a> +</span><span id="Parser-3246"><a href="#Parser-3246"><span class="linenos">3246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INDEX"</span><span class="p">,</span> <span class="s2">"KEY"</span><span class="p">))</span> +</span><span id="Parser-3247"><a href="#Parser-3247"><span class="linenos">3247</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-3248"><a href="#Parser-3248"><span class="linenos">3248</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"target"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-3249"><a href="#Parser-3249"><span class="linenos">3249</span></a> +</span><span id="Parser-3250"><a href="#Parser-3250"><span class="linenos">3250</span></a> <span class="n">hint</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> +</span><span id="Parser-3251"><a href="#Parser-3251"><span class="linenos">3251</span></a> <span class="n">hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> +</span><span id="Parser-3252"><a href="#Parser-3252"><span class="linenos">3252</span></a> +</span><span id="Parser-3253"><a href="#Parser-3253"><span class="linenos">3253</span></a> <span class="k">return</span> <span class="n">hints</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="Parser-3254"><a href="#Parser-3254"><span class="linenos">3254</span></a> +</span><span id="Parser-3255"><a href="#Parser-3255"><span class="linenos">3255</span></a> <span class="k">def</span> <span class="nf">_parse_table_part</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3256"><a href="#Parser-3256"><span class="linenos">3256</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Parser-3257"><a href="#Parser-3257"><span class="linenos">3257</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">optional_parens</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Parser-3258"><a href="#Parser-3258"><span class="linenos">3258</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3259"><a href="#Parser-3259"><span class="linenos">3259</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> +</span><span id="Parser-3260"><a href="#Parser-3260"><span class="linenos">3260</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-3261"><a href="#Parser-3261"><span class="linenos">3261</span></a> <span class="p">)</span> +</span><span id="Parser-3262"><a href="#Parser-3262"><span class="linenos">3262</span></a> +</span><span id="Parser-3263"><a href="#Parser-3263"><span class="linenos">3263</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span> +</span><span id="Parser-3264"><a href="#Parser-3264"><span class="linenos">3264</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">wildcard</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3265"><a href="#Parser-3265"><span class="linenos">3265</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> +</span><span id="Parser-3266"><a href="#Parser-3266"><span class="linenos">3266</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3267"><a href="#Parser-3267"><span class="linenos">3267</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3268"><a href="#Parser-3268"><span class="linenos">3268</span></a> <span class="n">table</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">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> +</span><span id="Parser-3269"><a href="#Parser-3269"><span class="linenos">3269</span></a> +</span><span id="Parser-3270"><a href="#Parser-3270"><span class="linenos">3270</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-3271"><a href="#Parser-3271"><span class="linenos">3271</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> +</span><span id="Parser-3272"><a href="#Parser-3272"><span class="linenos">3272</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> +</span><span id="Parser-3273"><a href="#Parser-3273"><span class="linenos">3273</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3274"><a href="#Parser-3274"><span class="linenos">3274</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> +</span><span id="Parser-3275"><a href="#Parser-3275"><span class="linenos">3275</span></a> <span class="p">)</span> +</span><span id="Parser-3276"><a href="#Parser-3276"><span class="linenos">3276</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3277"><a href="#Parser-3277"><span class="linenos">3277</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> +</span><span id="Parser-3278"><a href="#Parser-3278"><span class="linenos">3278</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> +</span><span id="Parser-3279"><a href="#Parser-3279"><span class="linenos">3279</span></a> <span class="c1"># "" used for tsql FROM a..b case</span> +</span><span id="Parser-3280"><a href="#Parser-3280"><span class="linenos">3280</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_part</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Parser-3281"><a href="#Parser-3281"><span class="linenos">3281</span></a> +</span><span id="Parser-3282"><a href="#Parser-3282"><span class="linenos">3282</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-3283"><a href="#Parser-3283"><span class="linenos">3283</span></a> <span class="n">wildcard</span> +</span><span id="Parser-3284"><a href="#Parser-3284"><span class="linenos">3284</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> +</span><span id="Parser-3285"><a href="#Parser-3285"><span class="linenos">3285</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">table</span><span class="p">)</span> +</span><span id="Parser-3286"><a href="#Parser-3286"><span class="linenos">3286</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">)</span> +</span><span id="Parser-3287"><a href="#Parser-3287"><span class="linenos">3287</span></a> <span class="p">):</span> +</span><span id="Parser-3288"><a href="#Parser-3288"><span class="linenos">3288</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="Parser-3289"><a href="#Parser-3289"><span class="linenos">3289</span></a> <span class="n">table</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"this"</span><span class="p">]</span> <span class="o">+=</span> <span class="s2">"*"</span> +</span><span id="Parser-3290"><a href="#Parser-3290"><span class="linenos">3290</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3291"><a href="#Parser-3291"><span class="linenos">3291</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="Parser-3292"><a href="#Parser-3292"><span class="linenos">3292</span></a> +</span><span id="Parser-3293"><a href="#Parser-3293"><span class="linenos">3293</span></a> <span class="c1"># We bubble up comments from the Identifier to the Table</span> +</span><span id="Parser-3294"><a href="#Parser-3294"><span class="linenos">3294</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3295"><a href="#Parser-3295"><span class="linenos">3295</span></a> +</span><span id="Parser-3296"><a href="#Parser-3296"><span class="linenos">3296</span></a> <span class="k">if</span> <span class="n">is_db_reference</span><span class="p">:</span> +</span><span id="Parser-3297"><a href="#Parser-3297"><span class="linenos">3297</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> +</span><span id="Parser-3298"><a href="#Parser-3298"><span class="linenos">3298</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> +</span><span id="Parser-3299"><a href="#Parser-3299"><span class="linenos">3299</span></a> <span class="n">table</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3300"><a href="#Parser-3300"><span class="linenos">3300</span></a> +</span><span id="Parser-3301"><a href="#Parser-3301"><span class="linenos">3301</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_db_reference</span><span class="p">:</span> +</span><span id="Parser-3302"><a href="#Parser-3302"><span class="linenos">3302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-3303"><a href="#Parser-3303"><span class="linenos">3303</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">db</span> <span class="ow">and</span> <span class="n">is_db_reference</span><span class="p">:</span> +</span><span id="Parser-3304"><a href="#Parser-3304"><span class="linenos">3304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected database name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-3305"><a href="#Parser-3305"><span class="linenos">3305</span></a> +</span><span id="Parser-3306"><a href="#Parser-3306"><span class="linenos">3306</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3307"><a href="#Parser-3307"><span class="linenos">3307</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> +</span><span id="Parser-3308"><a href="#Parser-3308"><span class="linenos">3308</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-3309"><a href="#Parser-3309"><span class="linenos">3309</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="Parser-3310"><a href="#Parser-3310"><span class="linenos">3310</span></a> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> +</span><span id="Parser-3311"><a href="#Parser-3311"><span class="linenos">3311</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> +</span><span id="Parser-3312"><a href="#Parser-3312"><span class="linenos">3312</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> +</span><span id="Parser-3313"><a href="#Parser-3313"><span class="linenos">3313</span></a> <span class="p">)</span> +</span><span id="Parser-3314"><a href="#Parser-3314"><span class="linenos">3314</span></a> +</span><span id="Parser-3315"><a href="#Parser-3315"><span class="linenos">3315</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> +</span><span id="Parser-3316"><a href="#Parser-3316"><span class="linenos">3316</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-3317"><a href="#Parser-3317"><span class="linenos">3317</span></a> <span class="n">schema</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="Parser-3318"><a href="#Parser-3318"><span class="linenos">3318</span></a> <span class="n">joins</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="Parser-3319"><a href="#Parser-3319"><span class="linenos">3319</span></a> <span class="n">alias_tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-3320"><a href="#Parser-3320"><span class="linenos">3320</span></a> <span class="n">parse_bracket</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="Parser-3321"><a href="#Parser-3321"><span class="linenos">3321</span></a> <span class="n">is_db_reference</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="Parser-3322"><a href="#Parser-3322"><span class="linenos">3322</span></a> <span class="n">parse_partition</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="Parser-3323"><a href="#Parser-3323"><span class="linenos">3323</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3324"><a href="#Parser-3324"><span class="linenos">3324</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> +</span><span id="Parser-3325"><a href="#Parser-3325"><span class="linenos">3325</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> +</span><span id="Parser-3326"><a href="#Parser-3326"><span class="linenos">3326</span></a> <span class="k">return</span> <span class="n">lateral</span> +</span><span id="Parser-3327"><a href="#Parser-3327"><span class="linenos">3327</span></a> +</span><span id="Parser-3328"><a href="#Parser-3328"><span class="linenos">3328</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="Parser-3329"><a href="#Parser-3329"><span class="linenos">3329</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="Parser-3330"><a href="#Parser-3330"><span class="linenos">3330</span></a> <span class="k">return</span> <span class="n">unnest</span> +</span><span id="Parser-3331"><a href="#Parser-3331"><span class="linenos">3331</span></a> +</span><span id="Parser-3332"><a href="#Parser-3332"><span class="linenos">3332</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> +</span><span id="Parser-3333"><a href="#Parser-3333"><span class="linenos">3333</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> +</span><span id="Parser-3334"><a href="#Parser-3334"><span class="linenos">3334</span></a> <span class="k">return</span> <span class="n">values</span> </span><span id="Parser-3335"><a href="#Parser-3335"><span class="linenos">3335</span></a> -</span><span id="Parser-3336"><a href="#Parser-3336"><span class="linenos">3336</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="n">parse_bracket</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-3337"><a href="#Parser-3337"><span class="linenos">3337</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">bracket</span><span class="p">)</span> <span class="k">if</span> <span class="n">bracket</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3338"><a href="#Parser-3338"><span class="linenos">3338</span></a> -</span><span id="Parser-3339"><a href="#Parser-3339"><span class="linenos">3339</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> -</span><span id="Parser-3340"><a href="#Parser-3340"><span class="linenos">3340</span></a> -</span><span id="Parser-3341"><a href="#Parser-3341"><span class="linenos">3341</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> -</span><span id="Parser-3342"><a href="#Parser-3342"><span class="linenos">3342</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> -</span><span id="Parser-3343"><a href="#Parser-3343"><span class="linenos">3343</span></a> <span class="n">bracket</span> -</span><span id="Parser-3344"><a href="#Parser-3344"><span class="linenos">3344</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span> -</span><span id="Parser-3345"><a href="#Parser-3345"><span class="linenos">3345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">)</span> -</span><span id="Parser-3346"><a href="#Parser-3346"><span class="linenos">3346</span></a> <span class="p">),</span> -</span><span id="Parser-3347"><a href="#Parser-3347"><span class="linenos">3347</span></a> <span class="p">)</span> -</span><span id="Parser-3348"><a href="#Parser-3348"><span class="linenos">3348</span></a> -</span><span id="Parser-3349"><a href="#Parser-3349"><span class="linenos">3349</span></a> <span class="k">if</span> <span class="n">only</span><span class="p">:</span> -</span><span id="Parser-3350"><a href="#Parser-3350"><span class="linenos">3350</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"only"</span><span class="p">,</span> <span class="n">only</span><span class="p">)</span> -</span><span id="Parser-3351"><a href="#Parser-3351"><span class="linenos">3351</span></a> -</span><span id="Parser-3352"><a href="#Parser-3352"><span class="linenos">3352</span></a> <span class="c1"># Postgres supports a wildcard (table) suffix operator, which is a no-op in this context</span> -</span><span id="Parser-3353"><a href="#Parser-3353"><span class="linenos">3353</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="Parser-3336"><a href="#Parser-3336"><span class="linenos">3336</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3337"><a href="#Parser-3337"><span class="linenos">3337</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> +</span><span id="Parser-3338"><a href="#Parser-3338"><span class="linenos">3338</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> +</span><span id="Parser-3339"><a href="#Parser-3339"><span class="linenos">3339</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> +</span><span id="Parser-3340"><a href="#Parser-3340"><span class="linenos">3340</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="Parser-3341"><a href="#Parser-3341"><span class="linenos">3341</span></a> +</span><span id="Parser-3342"><a href="#Parser-3342"><span class="linenos">3342</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="n">parse_bracket</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-3343"><a href="#Parser-3343"><span class="linenos">3343</span></a> <span class="n">bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">bracket</span><span class="p">)</span> <span class="k">if</span> <span class="n">bracket</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3344"><a href="#Parser-3344"><span class="linenos">3344</span></a> +</span><span id="Parser-3345"><a href="#Parser-3345"><span class="linenos">3345</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> +</span><span id="Parser-3346"><a href="#Parser-3346"><span class="linenos">3346</span></a> +</span><span id="Parser-3347"><a href="#Parser-3347"><span class="linenos">3347</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> +</span><span id="Parser-3348"><a href="#Parser-3348"><span class="linenos">3348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="Parser-3349"><a href="#Parser-3349"><span class="linenos">3349</span></a> <span class="n">bracket</span> +</span><span id="Parser-3350"><a href="#Parser-3350"><span class="linenos">3350</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span> +</span><span id="Parser-3351"><a href="#Parser-3351"><span class="linenos">3351</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_db_reference</span><span class="p">)</span> +</span><span id="Parser-3352"><a href="#Parser-3352"><span class="linenos">3352</span></a> <span class="p">),</span> +</span><span id="Parser-3353"><a href="#Parser-3353"><span class="linenos">3353</span></a> <span class="p">)</span> </span><span id="Parser-3354"><a href="#Parser-3354"><span class="linenos">3354</span></a> -</span><span id="Parser-3355"><a href="#Parser-3355"><span class="linenos">3355</span></a> <span class="n">parse_partition</span> <span class="o">=</span> <span class="n">parse_partition</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_PARTITION_SELECTION</span> -</span><span id="Parser-3356"><a href="#Parser-3356"><span class="linenos">3356</span></a> <span class="k">if</span> <span class="n">parse_partition</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3357"><a href="#Parser-3357"><span class="linenos">3357</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"partition"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">())</span> -</span><span id="Parser-3358"><a href="#Parser-3358"><span class="linenos">3358</span></a> -</span><span id="Parser-3359"><a href="#Parser-3359"><span class="linenos">3359</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> -</span><span id="Parser-3360"><a href="#Parser-3360"><span class="linenos">3360</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-3361"><a href="#Parser-3361"><span class="linenos">3361</span></a> -</span><span id="Parser-3362"><a href="#Parser-3362"><span class="linenos">3362</span></a> <span class="n">version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_version</span><span class="p">()</span> -</span><span id="Parser-3363"><a href="#Parser-3363"><span class="linenos">3363</span></a> -</span><span id="Parser-3364"><a href="#Parser-3364"><span class="linenos">3364</span></a> <span class="k">if</span> <span class="n">version</span><span class="p">:</span> -</span><span id="Parser-3365"><a href="#Parser-3365"><span class="linenos">3365</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"version"</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span> -</span><span id="Parser-3366"><a href="#Parser-3366"><span class="linenos">3366</span></a> -</span><span id="Parser-3367"><a href="#Parser-3367"><span class="linenos">3367</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> -</span><span id="Parser-3368"><a href="#Parser-3368"><span class="linenos">3368</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-3355"><a href="#Parser-3355"><span class="linenos">3355</span></a> <span class="k">if</span> <span class="n">only</span><span class="p">:</span> +</span><span id="Parser-3356"><a href="#Parser-3356"><span class="linenos">3356</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"only"</span><span class="p">,</span> <span class="n">only</span><span class="p">)</span> +</span><span id="Parser-3357"><a href="#Parser-3357"><span class="linenos">3357</span></a> +</span><span id="Parser-3358"><a href="#Parser-3358"><span class="linenos">3358</span></a> <span class="c1"># Postgres supports a wildcard (table) suffix operator, which is a no-op in this context</span> +</span><span id="Parser-3359"><a href="#Parser-3359"><span class="linenos">3359</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="Parser-3360"><a href="#Parser-3360"><span class="linenos">3360</span></a> +</span><span id="Parser-3361"><a href="#Parser-3361"><span class="linenos">3361</span></a> <span class="n">parse_partition</span> <span class="o">=</span> <span class="n">parse_partition</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUPPORTS_PARTITION_SELECTION</span> +</span><span id="Parser-3362"><a href="#Parser-3362"><span class="linenos">3362</span></a> <span class="k">if</span> <span class="n">parse_partition</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3363"><a href="#Parser-3363"><span class="linenos">3363</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"partition"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">())</span> +</span><span id="Parser-3364"><a href="#Parser-3364"><span class="linenos">3364</span></a> +</span><span id="Parser-3365"><a href="#Parser-3365"><span class="linenos">3365</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> +</span><span id="Parser-3366"><a href="#Parser-3366"><span class="linenos">3366</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-3367"><a href="#Parser-3367"><span class="linenos">3367</span></a> +</span><span id="Parser-3368"><a href="#Parser-3368"><span class="linenos">3368</span></a> <span class="n">version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_version</span><span class="p">()</span> </span><span id="Parser-3369"><a href="#Parser-3369"><span class="linenos">3369</span></a> -</span><span id="Parser-3370"><a href="#Parser-3370"><span class="linenos">3370</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-3371"><a href="#Parser-3371"><span class="linenos">3371</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-3372"><a href="#Parser-3372"><span class="linenos">3372</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> -</span><span id="Parser-3373"><a href="#Parser-3373"><span class="linenos">3373</span></a> -</span><span id="Parser-3374"><a href="#Parser-3374"><span class="linenos">3374</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">):</span> -</span><span id="Parser-3375"><a href="#Parser-3375"><span class="linenos">3375</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3376"><a href="#Parser-3376"><span class="linenos">3376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtIndex</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">to_column</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-3377"><a href="#Parser-3377"><span class="linenos">3377</span></a> <span class="p">)</span> -</span><span id="Parser-3378"><a href="#Parser-3378"><span class="linenos">3378</span></a> -</span><span id="Parser-3379"><a href="#Parser-3379"><span class="linenos">3379</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hints"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_hints</span><span class="p">())</span> -</span><span id="Parser-3380"><a href="#Parser-3380"><span class="linenos">3380</span></a> -</span><span id="Parser-3381"><a href="#Parser-3381"><span class="linenos">3381</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> -</span><span id="Parser-3382"><a href="#Parser-3382"><span class="linenos">3382</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> -</span><span id="Parser-3383"><a href="#Parser-3383"><span class="linenos">3383</span></a> -</span><span id="Parser-3384"><a href="#Parser-3384"><span class="linenos">3384</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> -</span><span id="Parser-3385"><a href="#Parser-3385"><span class="linenos">3385</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-3370"><a href="#Parser-3370"><span class="linenos">3370</span></a> <span class="k">if</span> <span class="n">version</span><span class="p">:</span> +</span><span id="Parser-3371"><a href="#Parser-3371"><span class="linenos">3371</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"version"</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span> +</span><span id="Parser-3372"><a href="#Parser-3372"><span class="linenos">3372</span></a> +</span><span id="Parser-3373"><a href="#Parser-3373"><span class="linenos">3373</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> +</span><span id="Parser-3374"><a href="#Parser-3374"><span class="linenos">3374</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-3375"><a href="#Parser-3375"><span class="linenos">3375</span></a> +</span><span id="Parser-3376"><a href="#Parser-3376"><span class="linenos">3376</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-3377"><a href="#Parser-3377"><span class="linenos">3377</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-3378"><a href="#Parser-3378"><span class="linenos">3378</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="Parser-3379"><a href="#Parser-3379"><span class="linenos">3379</span></a> +</span><span id="Parser-3380"><a href="#Parser-3380"><span class="linenos">3380</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">):</span> +</span><span id="Parser-3381"><a href="#Parser-3381"><span class="linenos">3381</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3382"><a href="#Parser-3382"><span class="linenos">3382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtIndex</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">to_column</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-3383"><a href="#Parser-3383"><span class="linenos">3383</span></a> <span class="p">)</span> +</span><span id="Parser-3384"><a href="#Parser-3384"><span class="linenos">3384</span></a> +</span><span id="Parser-3385"><a href="#Parser-3385"><span class="linenos">3385</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hints"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_hints</span><span class="p">())</span> </span><span id="Parser-3386"><a href="#Parser-3386"><span class="linenos">3386</span></a> -</span><span id="Parser-3387"><a href="#Parser-3387"><span class="linenos">3387</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> -</span><span id="Parser-3388"><a href="#Parser-3388"><span class="linenos">3388</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="Parser-3389"><a href="#Parser-3389"><span class="linenos">3389</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> -</span><span id="Parser-3390"><a href="#Parser-3390"><span class="linenos">3390</span></a> -</span><span id="Parser-3391"><a href="#Parser-3391"><span class="linenos">3391</span></a> <span class="k">if</span> <span class="n">joins</span><span class="p">:</span> -</span><span id="Parser-3392"><a href="#Parser-3392"><span class="linenos">3392</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> -</span><span id="Parser-3393"><a href="#Parser-3393"><span class="linenos">3393</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> -</span><span id="Parser-3394"><a href="#Parser-3394"><span class="linenos">3394</span></a> -</span><span id="Parser-3395"><a href="#Parser-3395"><span class="linenos">3395</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">):</span> -</span><span id="Parser-3396"><a href="#Parser-3396"><span class="linenos">3396</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"ordinality"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3397"><a href="#Parser-3397"><span class="linenos">3397</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="Parser-3398"><a href="#Parser-3398"><span class="linenos">3398</span></a> -</span><span id="Parser-3399"><a href="#Parser-3399"><span class="linenos">3399</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3387"><a href="#Parser-3387"><span class="linenos">3387</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> +</span><span id="Parser-3388"><a href="#Parser-3388"><span class="linenos">3388</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> +</span><span id="Parser-3389"><a href="#Parser-3389"><span class="linenos">3389</span></a> +</span><span id="Parser-3390"><a href="#Parser-3390"><span class="linenos">3390</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">ALIAS_POST_TABLESAMPLE</span><span class="p">:</span> +</span><span id="Parser-3391"><a href="#Parser-3391"><span class="linenos">3391</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-3392"><a href="#Parser-3392"><span class="linenos">3392</span></a> +</span><span id="Parser-3393"><a href="#Parser-3393"><span class="linenos">3393</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> +</span><span id="Parser-3394"><a href="#Parser-3394"><span class="linenos">3394</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="Parser-3395"><a href="#Parser-3395"><span class="linenos">3395</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> +</span><span id="Parser-3396"><a href="#Parser-3396"><span class="linenos">3396</span></a> +</span><span id="Parser-3397"><a href="#Parser-3397"><span class="linenos">3397</span></a> <span class="k">if</span> <span class="n">joins</span><span class="p">:</span> +</span><span id="Parser-3398"><a href="#Parser-3398"><span class="linenos">3398</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_joins</span><span class="p">():</span> +</span><span id="Parser-3399"><a href="#Parser-3399"><span class="linenos">3399</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> </span><span id="Parser-3400"><a href="#Parser-3400"><span class="linenos">3400</span></a> -</span><span id="Parser-3401"><a href="#Parser-3401"><span class="linenos">3401</span></a> <span class="k">def</span> <span class="nf">_parse_version</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">]:</span> -</span><span id="Parser-3402"><a href="#Parser-3402"><span class="linenos">3402</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> -</span><span id="Parser-3403"><a href="#Parser-3403"><span class="linenos">3403</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"TIMESTAMP"</span> -</span><span id="Parser-3404"><a href="#Parser-3404"><span class="linenos">3404</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">):</span> -</span><span id="Parser-3405"><a href="#Parser-3405"><span class="linenos">3405</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"VERSION"</span> -</span><span id="Parser-3406"><a href="#Parser-3406"><span class="linenos">3406</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3407"><a href="#Parser-3407"><span class="linenos">3407</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3408"><a href="#Parser-3408"><span class="linenos">3408</span></a> -</span><span id="Parser-3409"><a href="#Parser-3409"><span class="linenos">3409</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)):</span> -</span><span id="Parser-3410"><a href="#Parser-3410"><span class="linenos">3410</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-3411"><a href="#Parser-3411"><span class="linenos">3411</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-3412"><a href="#Parser-3412"><span class="linenos">3412</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">))</span> -</span><span id="Parser-3413"><a href="#Parser-3413"><span class="linenos">3413</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-3414"><a href="#Parser-3414"><span class="linenos">3414</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3415"><a href="#Parser-3415"><span class="linenos">3415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">]</span> -</span><span id="Parser-3416"><a href="#Parser-3416"><span class="linenos">3416</span></a> <span class="p">)</span> -</span><span id="Parser-3417"><a href="#Parser-3417"><span class="linenos">3417</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTAINED"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">):</span> -</span><span id="Parser-3418"><a href="#Parser-3418"><span class="linenos">3418</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"CONTAINED IN"</span> -</span><span id="Parser-3419"><a href="#Parser-3419"><span class="linenos">3419</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3420"><a href="#Parser-3420"><span class="linenos">3420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-3421"><a href="#Parser-3421"><span class="linenos">3421</span></a> <span class="p">)</span> -</span><span id="Parser-3422"><a href="#Parser-3422"><span class="linenos">3422</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> -</span><span id="Parser-3423"><a href="#Parser-3423"><span class="linenos">3423</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ALL"</span> -</span><span id="Parser-3424"><a href="#Parser-3424"><span class="linenos">3424</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3425"><a href="#Parser-3425"><span class="linenos">3425</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3426"><a href="#Parser-3426"><span class="linenos">3426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> -</span><span id="Parser-3427"><a href="#Parser-3427"><span class="linenos">3427</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"AS OF"</span> -</span><span id="Parser-3428"><a href="#Parser-3428"><span class="linenos">3428</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Parser-3429"><a href="#Parser-3429"><span class="linenos">3429</span></a> -</span><span id="Parser-3430"><a href="#Parser-3430"><span class="linenos">3430</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="Parser-3431"><a href="#Parser-3431"><span class="linenos">3431</span></a> -</span><span id="Parser-3432"><a href="#Parser-3432"><span class="linenos">3432</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">]:</span> -</span><span id="Parser-3433"><a href="#Parser-3433"><span class="linenos">3433</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> -</span><span id="Parser-3434"><a href="#Parser-3434"><span class="linenos">3434</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3401"><a href="#Parser-3401"><span class="linenos">3401</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">):</span> +</span><span id="Parser-3402"><a href="#Parser-3402"><span class="linenos">3402</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"ordinality"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3403"><a href="#Parser-3403"><span class="linenos">3403</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="Parser-3404"><a href="#Parser-3404"><span class="linenos">3404</span></a> +</span><span id="Parser-3405"><a href="#Parser-3405"><span class="linenos">3405</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3406"><a href="#Parser-3406"><span class="linenos">3406</span></a> +</span><span id="Parser-3407"><a href="#Parser-3407"><span class="linenos">3407</span></a> <span class="k">def</span> <span class="nf">_parse_version</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">]:</span> +</span><span id="Parser-3408"><a href="#Parser-3408"><span class="linenos">3408</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> +</span><span id="Parser-3409"><a href="#Parser-3409"><span class="linenos">3409</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"TIMESTAMP"</span> +</span><span id="Parser-3410"><a href="#Parser-3410"><span class="linenos">3410</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">):</span> +</span><span id="Parser-3411"><a href="#Parser-3411"><span class="linenos">3411</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"VERSION"</span> +</span><span id="Parser-3412"><a href="#Parser-3412"><span class="linenos">3412</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3413"><a href="#Parser-3413"><span class="linenos">3413</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3414"><a href="#Parser-3414"><span class="linenos">3414</span></a> +</span><span id="Parser-3415"><a href="#Parser-3415"><span class="linenos">3415</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)):</span> +</span><span id="Parser-3416"><a href="#Parser-3416"><span class="linenos">3416</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-3417"><a href="#Parser-3417"><span class="linenos">3417</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-3418"><a href="#Parser-3418"><span class="linenos">3418</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">))</span> +</span><span id="Parser-3419"><a href="#Parser-3419"><span class="linenos">3419</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-3420"><a href="#Parser-3420"><span class="linenos">3420</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3421"><a href="#Parser-3421"><span class="linenos">3421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">]</span> +</span><span id="Parser-3422"><a href="#Parser-3422"><span class="linenos">3422</span></a> <span class="p">)</span> +</span><span id="Parser-3423"><a href="#Parser-3423"><span class="linenos">3423</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTAINED"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">):</span> +</span><span id="Parser-3424"><a href="#Parser-3424"><span class="linenos">3424</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"CONTAINED IN"</span> +</span><span id="Parser-3425"><a href="#Parser-3425"><span class="linenos">3425</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3426"><a href="#Parser-3426"><span class="linenos">3426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-3427"><a href="#Parser-3427"><span class="linenos">3427</span></a> <span class="p">)</span> +</span><span id="Parser-3428"><a href="#Parser-3428"><span class="linenos">3428</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> +</span><span id="Parser-3429"><a href="#Parser-3429"><span class="linenos">3429</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ALL"</span> +</span><span id="Parser-3430"><a href="#Parser-3430"><span class="linenos">3430</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3431"><a href="#Parser-3431"><span class="linenos">3431</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3432"><a href="#Parser-3432"><span class="linenos">3432</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> +</span><span id="Parser-3433"><a href="#Parser-3433"><span class="linenos">3433</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"AS OF"</span> +</span><span id="Parser-3434"><a href="#Parser-3434"><span class="linenos">3434</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> </span><span id="Parser-3435"><a href="#Parser-3435"><span class="linenos">3435</span></a> -</span><span id="Parser-3436"><a href="#Parser-3436"><span class="linenos">3436</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="Parser-3437"><a href="#Parser-3437"><span class="linenos">3437</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">)</span> -</span><span id="Parser-3438"><a href="#Parser-3438"><span class="linenos">3438</span></a> -</span><span id="Parser-3439"><a href="#Parser-3439"><span class="linenos">3439</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">with_alias</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3440"><a href="#Parser-3440"><span class="linenos">3440</span></a> -</span><span id="Parser-3441"><a href="#Parser-3441"><span class="linenos">3441</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-3442"><a href="#Parser-3442"><span class="linenos">3442</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNNEST_COLUMN_ONLY</span><span class="p">:</span> -</span><span id="Parser-3443"><a href="#Parser-3443"><span class="linenos">3443</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="Parser-3444"><a href="#Parser-3444"><span class="linenos">3444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> -</span><span id="Parser-3445"><a href="#Parser-3445"><span class="linenos">3445</span></a> -</span><span id="Parser-3446"><a href="#Parser-3446"><span class="linenos">3446</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> -</span><span id="Parser-3447"><a href="#Parser-3447"><span class="linenos">3447</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-3448"><a href="#Parser-3448"><span class="linenos">3448</span></a> -</span><span id="Parser-3449"><a href="#Parser-3449"><span class="linenos">3449</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="Parser-3450"><a href="#Parser-3450"><span class="linenos">3450</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> -</span><span id="Parser-3451"><a href="#Parser-3451"><span class="linenos">3451</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">columns</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> -</span><span id="Parser-3452"><a href="#Parser-3452"><span class="linenos">3452</span></a> -</span><span id="Parser-3453"><a href="#Parser-3453"><span class="linenos">3453</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">offset</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> -</span><span id="Parser-3454"><a href="#Parser-3454"><span class="linenos">3454</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-3455"><a href="#Parser-3455"><span class="linenos">3455</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="Parser-3456"><a href="#Parser-3456"><span class="linenos">3456</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> -</span><span id="Parser-3457"><a href="#Parser-3457"><span class="linenos">3457</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="Parser-3436"><a href="#Parser-3436"><span class="linenos">3436</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="Parser-3437"><a href="#Parser-3437"><span class="linenos">3437</span></a> +</span><span id="Parser-3438"><a href="#Parser-3438"><span class="linenos">3438</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">]:</span> +</span><span id="Parser-3439"><a href="#Parser-3439"><span class="linenos">3439</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> +</span><span id="Parser-3440"><a href="#Parser-3440"><span class="linenos">3440</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3441"><a href="#Parser-3441"><span class="linenos">3441</span></a> +</span><span id="Parser-3442"><a href="#Parser-3442"><span class="linenos">3442</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="Parser-3443"><a href="#Parser-3443"><span class="linenos">3443</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">)</span> +</span><span id="Parser-3444"><a href="#Parser-3444"><span class="linenos">3444</span></a> +</span><span id="Parser-3445"><a href="#Parser-3445"><span class="linenos">3445</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">with_alias</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3446"><a href="#Parser-3446"><span class="linenos">3446</span></a> +</span><span id="Parser-3447"><a href="#Parser-3447"><span class="linenos">3447</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-3448"><a href="#Parser-3448"><span class="linenos">3448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNNEST_COLUMN_ONLY</span><span class="p">:</span> +</span><span id="Parser-3449"><a href="#Parser-3449"><span class="linenos">3449</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="Parser-3450"><a href="#Parser-3450"><span class="linenos">3450</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> +</span><span id="Parser-3451"><a href="#Parser-3451"><span class="linenos">3451</span></a> +</span><span id="Parser-3452"><a href="#Parser-3452"><span class="linenos">3452</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> +</span><span id="Parser-3453"><a href="#Parser-3453"><span class="linenos">3453</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-3454"><a href="#Parser-3454"><span class="linenos">3454</span></a> +</span><span id="Parser-3455"><a href="#Parser-3455"><span class="linenos">3455</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="Parser-3456"><a href="#Parser-3456"><span class="linenos">3456</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> +</span><span id="Parser-3457"><a href="#Parser-3457"><span class="linenos">3457</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">columns</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> </span><span id="Parser-3458"><a href="#Parser-3458"><span class="linenos">3458</span></a> -</span><span id="Parser-3459"><a href="#Parser-3459"><span class="linenos">3459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> -</span><span id="Parser-3460"><a href="#Parser-3460"><span class="linenos">3460</span></a> -</span><span id="Parser-3461"><a href="#Parser-3461"><span class="linenos">3461</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">]:</span> -</span><span id="Parser-3462"><a href="#Parser-3462"><span class="linenos">3462</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> -</span><span id="Parser-3463"><a href="#Parser-3463"><span class="linenos">3463</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">):</span> -</span><span id="Parser-3464"><a href="#Parser-3464"><span class="linenos">3464</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3465"><a href="#Parser-3465"><span class="linenos">3465</span></a> -</span><span id="Parser-3466"><a href="#Parser-3466"><span class="linenos">3466</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> -</span><span id="Parser-3467"><a href="#Parser-3467"><span class="linenos">3467</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="Parser-3468"><a href="#Parser-3468"><span class="linenos">3468</span></a> -</span><span id="Parser-3469"><a href="#Parser-3469"><span class="linenos">3469</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> -</span><span id="Parser-3470"><a href="#Parser-3470"><span class="linenos">3470</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3459"><a href="#Parser-3459"><span class="linenos">3459</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">offset</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> +</span><span id="Parser-3460"><a href="#Parser-3460"><span class="linenos">3460</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-3461"><a href="#Parser-3461"><span class="linenos">3461</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="Parser-3462"><a href="#Parser-3462"><span class="linenos">3462</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UNNEST_OFFSET_ALIAS_TOKENS</span> +</span><span id="Parser-3463"><a href="#Parser-3463"><span class="linenos">3463</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="Parser-3464"><a href="#Parser-3464"><span class="linenos">3464</span></a> +</span><span id="Parser-3465"><a href="#Parser-3465"><span class="linenos">3465</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">)</span> +</span><span id="Parser-3466"><a href="#Parser-3466"><span class="linenos">3466</span></a> +</span><span id="Parser-3467"><a href="#Parser-3467"><span class="linenos">3467</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">]:</span> +</span><span id="Parser-3468"><a href="#Parser-3468"><span class="linenos">3468</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> +</span><span id="Parser-3469"><a href="#Parser-3469"><span class="linenos">3469</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">):</span> +</span><span id="Parser-3470"><a href="#Parser-3470"><span class="linenos">3470</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-3471"><a href="#Parser-3471"><span class="linenos">3471</span></a> -</span><span id="Parser-3472"><a href="#Parser-3472"><span class="linenos">3472</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3473"><a href="#Parser-3473"><span class="linenos">3473</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="Parser-3474"><a href="#Parser-3474"><span class="linenos">3474</span></a> <span class="p">)</span> -</span><span id="Parser-3475"><a href="#Parser-3475"><span class="linenos">3475</span></a> -</span><span id="Parser-3476"><a href="#Parser-3476"><span class="linenos">3476</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">as_modifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">]:</span> -</span><span id="Parser-3477"><a href="#Parser-3477"><span class="linenos">3477</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> -</span><span id="Parser-3478"><a href="#Parser-3478"><span class="linenos">3478</span></a> <span class="n">as_modifier</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"SAMPLE"</span><span class="p">)</span> -</span><span id="Parser-3479"><a href="#Parser-3479"><span class="linenos">3479</span></a> <span class="p">):</span> -</span><span id="Parser-3480"><a href="#Parser-3480"><span class="linenos">3480</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3472"><a href="#Parser-3472"><span class="linenos">3472</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> +</span><span id="Parser-3473"><a href="#Parser-3473"><span class="linenos">3473</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="Parser-3474"><a href="#Parser-3474"><span class="linenos">3474</span></a> +</span><span id="Parser-3475"><a href="#Parser-3475"><span class="linenos">3475</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> +</span><span id="Parser-3476"><a href="#Parser-3476"><span class="linenos">3476</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3477"><a href="#Parser-3477"><span class="linenos">3477</span></a> +</span><span id="Parser-3478"><a href="#Parser-3478"><span class="linenos">3478</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3479"><a href="#Parser-3479"><span class="linenos">3479</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="Parser-3480"><a href="#Parser-3480"><span class="linenos">3480</span></a> <span class="p">)</span> </span><span id="Parser-3481"><a href="#Parser-3481"><span class="linenos">3481</span></a> -</span><span id="Parser-3482"><a href="#Parser-3482"><span class="linenos">3482</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3483"><a href="#Parser-3483"><span class="linenos">3483</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3484"><a href="#Parser-3484"><span class="linenos">3484</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3485"><a href="#Parser-3485"><span class="linenos">3485</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3486"><a href="#Parser-3486"><span class="linenos">3486</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3487"><a href="#Parser-3487"><span class="linenos">3487</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3488"><a href="#Parser-3488"><span class="linenos">3488</span></a> -</span><span id="Parser-3489"><a href="#Parser-3489"><span class="linenos">3489</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,),</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3490"><a href="#Parser-3490"><span class="linenos">3490</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="Parser-3491"><a href="#Parser-3491"><span class="linenos">3491</span></a> -</span><span id="Parser-3492"><a href="#Parser-3492"><span class="linenos">3492</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLESAMPLE_CSV</span><span class="p">:</span> -</span><span id="Parser-3493"><a href="#Parser-3493"><span class="linenos">3493</span></a> <span class="n">num</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3494"><a href="#Parser-3494"><span class="linenos">3494</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> -</span><span id="Parser-3495"><a href="#Parser-3495"><span class="linenos">3495</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3496"><a href="#Parser-3496"><span class="linenos">3496</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3497"><a href="#Parser-3497"><span class="linenos">3497</span></a> <span class="n">num</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-3498"><a href="#Parser-3498"><span class="linenos">3498</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">()</span> -</span><span id="Parser-3499"><a href="#Parser-3499"><span class="linenos">3499</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3500"><a href="#Parser-3500"><span class="linenos">3500</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-3501"><a href="#Parser-3501"><span class="linenos">3501</span></a> <span class="p">)</span> -</span><span id="Parser-3502"><a href="#Parser-3502"><span class="linenos">3502</span></a> -</span><span id="Parser-3503"><a href="#Parser-3503"><span class="linenos">3503</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKET"</span><span class="p">):</span> -</span><span id="Parser-3504"><a href="#Parser-3504"><span class="linenos">3504</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-3505"><a href="#Parser-3505"><span class="linenos">3505</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUT"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> -</span><span id="Parser-3506"><a href="#Parser-3506"><span class="linenos">3506</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-3507"><a href="#Parser-3507"><span class="linenos">3507</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-3508"><a href="#Parser-3508"><span class="linenos">3508</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-3509"><a href="#Parser-3509"><span class="linenos">3509</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)):</span> -</span><span id="Parser-3510"><a href="#Parser-3510"><span class="linenos">3510</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="Parser-3511"><a href="#Parser-3511"><span class="linenos">3511</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span><span class="p">:</span> -</span><span id="Parser-3512"><a href="#Parser-3512"><span class="linenos">3512</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="Parser-3513"><a href="#Parser-3513"><span class="linenos">3513</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3514"><a href="#Parser-3514"><span class="linenos">3514</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="Parser-3515"><a href="#Parser-3515"><span class="linenos">3515</span></a> -</span><span id="Parser-3516"><a href="#Parser-3516"><span class="linenos">3516</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> -</span><span id="Parser-3517"><a href="#Parser-3517"><span class="linenos">3517</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3518"><a href="#Parser-3518"><span class="linenos">3518</span></a> -</span><span id="Parser-3519"><a href="#Parser-3519"><span class="linenos">3519</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3520"><a href="#Parser-3520"><span class="linenos">3520</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3521"><a href="#Parser-3521"><span class="linenos">3521</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-3522"><a href="#Parser-3522"><span class="linenos">3522</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3523"><a href="#Parser-3523"><span class="linenos">3523</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"SEED"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">)):</span> -</span><span id="Parser-3524"><a href="#Parser-3524"><span class="linenos">3524</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> -</span><span id="Parser-3525"><a href="#Parser-3525"><span class="linenos">3525</span></a> -</span><span id="Parser-3526"><a href="#Parser-3526"><span class="linenos">3526</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">method</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> -</span><span id="Parser-3527"><a href="#Parser-3527"><span class="linenos">3527</span></a> <span class="n">method</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">)</span> -</span><span id="Parser-3528"><a href="#Parser-3528"><span class="linenos">3528</span></a> -</span><span id="Parser-3529"><a href="#Parser-3529"><span class="linenos">3529</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3530"><a href="#Parser-3530"><span class="linenos">3530</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> -</span><span id="Parser-3531"><a href="#Parser-3531"><span class="linenos">3531</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-3532"><a href="#Parser-3532"><span class="linenos">3532</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> -</span><span id="Parser-3533"><a href="#Parser-3533"><span class="linenos">3533</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> -</span><span id="Parser-3534"><a href="#Parser-3534"><span class="linenos">3534</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> -</span><span id="Parser-3535"><a href="#Parser-3535"><span class="linenos">3535</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> -</span><span id="Parser-3536"><a href="#Parser-3536"><span class="linenos">3536</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> -</span><span id="Parser-3537"><a href="#Parser-3537"><span class="linenos">3537</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> -</span><span id="Parser-3538"><a href="#Parser-3538"><span class="linenos">3538</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> -</span><span id="Parser-3539"><a href="#Parser-3539"><span class="linenos">3539</span></a> <span class="p">)</span> -</span><span id="Parser-3540"><a href="#Parser-3540"><span class="linenos">3540</span></a> -</span><span id="Parser-3541"><a href="#Parser-3541"><span class="linenos">3541</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]]:</span> -</span><span id="Parser-3542"><a href="#Parser-3542"><span class="linenos">3542</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="Parser-3543"><a href="#Parser-3543"><span class="linenos">3543</span></a> -</span><span id="Parser-3544"><a href="#Parser-3544"><span class="linenos">3544</span></a> <span class="k">def</span> <span class="nf">_parse_joins</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Iterator</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> -</span><span id="Parser-3545"><a href="#Parser-3545"><span class="linenos">3545</span></a> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-3482"><a href="#Parser-3482"><span class="linenos">3482</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">as_modifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">]:</span> +</span><span id="Parser-3483"><a href="#Parser-3483"><span class="linenos">3483</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span> +</span><span id="Parser-3484"><a href="#Parser-3484"><span class="linenos">3484</span></a> <span class="n">as_modifier</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"USING"</span><span class="p">,</span> <span class="s2">"SAMPLE"</span><span class="p">)</span> +</span><span id="Parser-3485"><a href="#Parser-3485"><span class="linenos">3485</span></a> <span class="p">):</span> +</span><span id="Parser-3486"><a href="#Parser-3486"><span class="linenos">3486</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3487"><a href="#Parser-3487"><span class="linenos">3487</span></a> +</span><span id="Parser-3488"><a href="#Parser-3488"><span class="linenos">3488</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3489"><a href="#Parser-3489"><span class="linenos">3489</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3490"><a href="#Parser-3490"><span class="linenos">3490</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3491"><a href="#Parser-3491"><span class="linenos">3491</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3492"><a href="#Parser-3492"><span class="linenos">3492</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3493"><a href="#Parser-3493"><span class="linenos">3493</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3494"><a href="#Parser-3494"><span class="linenos">3494</span></a> +</span><span id="Parser-3495"><a href="#Parser-3495"><span class="linenos">3495</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,),</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3496"><a href="#Parser-3496"><span class="linenos">3496</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="Parser-3497"><a href="#Parser-3497"><span class="linenos">3497</span></a> +</span><span id="Parser-3498"><a href="#Parser-3498"><span class="linenos">3498</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLESAMPLE_CSV</span><span class="p">:</span> +</span><span id="Parser-3499"><a href="#Parser-3499"><span class="linenos">3499</span></a> <span class="n">num</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3500"><a href="#Parser-3500"><span class="linenos">3500</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">)</span> +</span><span id="Parser-3501"><a href="#Parser-3501"><span class="linenos">3501</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3502"><a href="#Parser-3502"><span class="linenos">3502</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3503"><a href="#Parser-3503"><span class="linenos">3503</span></a> <span class="n">num</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-3504"><a href="#Parser-3504"><span class="linenos">3504</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">()</span> +</span><span id="Parser-3505"><a href="#Parser-3505"><span class="linenos">3505</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3506"><a href="#Parser-3506"><span class="linenos">3506</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-3507"><a href="#Parser-3507"><span class="linenos">3507</span></a> <span class="p">)</span> +</span><span id="Parser-3508"><a href="#Parser-3508"><span class="linenos">3508</span></a> +</span><span id="Parser-3509"><a href="#Parser-3509"><span class="linenos">3509</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BUCKET"</span><span class="p">):</span> +</span><span id="Parser-3510"><a href="#Parser-3510"><span class="linenos">3510</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-3511"><a href="#Parser-3511"><span class="linenos">3511</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OUT"</span><span class="p">,</span> <span class="s2">"OF"</span><span class="p">)</span> +</span><span id="Parser-3512"><a href="#Parser-3512"><span class="linenos">3512</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-3513"><a href="#Parser-3513"><span class="linenos">3513</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-3514"><a href="#Parser-3514"><span class="linenos">3514</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-3515"><a href="#Parser-3515"><span class="linenos">3515</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)):</span> +</span><span id="Parser-3516"><a href="#Parser-3516"><span class="linenos">3516</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="Parser-3517"><a href="#Parser-3517"><span class="linenos">3517</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TABLESAMPLE_SIZE_IS_PERCENT</span><span class="p">:</span> +</span><span id="Parser-3518"><a href="#Parser-3518"><span class="linenos">3518</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="Parser-3519"><a href="#Parser-3519"><span class="linenos">3519</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3520"><a href="#Parser-3520"><span class="linenos">3520</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="Parser-3521"><a href="#Parser-3521"><span class="linenos">3521</span></a> +</span><span id="Parser-3522"><a href="#Parser-3522"><span class="linenos">3522</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> +</span><span id="Parser-3523"><a href="#Parser-3523"><span class="linenos">3523</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3524"><a href="#Parser-3524"><span class="linenos">3524</span></a> +</span><span id="Parser-3525"><a href="#Parser-3525"><span class="linenos">3525</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3526"><a href="#Parser-3526"><span class="linenos">3526</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3527"><a href="#Parser-3527"><span class="linenos">3527</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-3528"><a href="#Parser-3528"><span class="linenos">3528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3529"><a href="#Parser-3529"><span class="linenos">3529</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"SEED"</span><span class="p">,</span> <span class="s2">"REPEATABLE"</span><span class="p">)):</span> +</span><span id="Parser-3530"><a href="#Parser-3530"><span class="linenos">3530</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> +</span><span id="Parser-3531"><a href="#Parser-3531"><span class="linenos">3531</span></a> +</span><span id="Parser-3532"><a href="#Parser-3532"><span class="linenos">3532</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">method</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">:</span> +</span><span id="Parser-3533"><a href="#Parser-3533"><span class="linenos">3533</span></a> <span class="n">method</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_SAMPLING_METHOD</span><span class="p">)</span> +</span><span id="Parser-3534"><a href="#Parser-3534"><span class="linenos">3534</span></a> +</span><span id="Parser-3535"><a href="#Parser-3535"><span class="linenos">3535</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3536"><a href="#Parser-3536"><span class="linenos">3536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> +</span><span id="Parser-3537"><a href="#Parser-3537"><span class="linenos">3537</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-3538"><a href="#Parser-3538"><span class="linenos">3538</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> +</span><span id="Parser-3539"><a href="#Parser-3539"><span class="linenos">3539</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> +</span><span id="Parser-3540"><a href="#Parser-3540"><span class="linenos">3540</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> +</span><span id="Parser-3541"><a href="#Parser-3541"><span class="linenos">3541</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> +</span><span id="Parser-3542"><a href="#Parser-3542"><span class="linenos">3542</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> +</span><span id="Parser-3543"><a href="#Parser-3543"><span class="linenos">3543</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> +</span><span id="Parser-3544"><a href="#Parser-3544"><span class="linenos">3544</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> +</span><span id="Parser-3545"><a href="#Parser-3545"><span class="linenos">3545</span></a> <span class="p">)</span> </span><span id="Parser-3546"><a href="#Parser-3546"><span class="linenos">3546</span></a> -</span><span id="Parser-3547"><a href="#Parser-3547"><span class="linenos">3547</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/pivot</span> -</span><span id="Parser-3548"><a href="#Parser-3548"><span class="linenos">3548</span></a> <span class="k">def</span> <span class="nf">_parse_simplified_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> -</span><span id="Parser-3549"><a href="#Parser-3549"><span class="linenos">3549</span></a> <span class="k">def</span> <span class="nf">_parse_on</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3550"><a href="#Parser-3550"><span class="linenos">3550</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-3551"><a href="#Parser-3551"><span class="linenos">3551</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="Parser-3547"><a href="#Parser-3547"><span class="linenos">3547</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]]:</span> +</span><span id="Parser-3548"><a href="#Parser-3548"><span class="linenos">3548</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="Parser-3549"><a href="#Parser-3549"><span class="linenos">3549</span></a> +</span><span id="Parser-3550"><a href="#Parser-3550"><span class="linenos">3550</span></a> <span class="k">def</span> <span class="nf">_parse_joins</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Iterator</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">]:</span> +</span><span id="Parser-3551"><a href="#Parser-3551"><span class="linenos">3551</span></a> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> </span><span id="Parser-3552"><a href="#Parser-3552"><span class="linenos">3552</span></a> -</span><span id="Parser-3553"><a href="#Parser-3553"><span class="linenos">3553</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-3554"><a href="#Parser-3554"><span class="linenos">3554</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_on</span><span class="p">)</span> -</span><span id="Parser-3555"><a href="#Parser-3555"><span class="linenos">3555</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-3556"><a href="#Parser-3556"><span class="linenos">3556</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> -</span><span id="Parser-3557"><a href="#Parser-3557"><span class="linenos">3557</span></a> <span class="p">)</span> -</span><span id="Parser-3558"><a href="#Parser-3558"><span class="linenos">3558</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> -</span><span id="Parser-3559"><a href="#Parser-3559"><span class="linenos">3559</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3560"><a href="#Parser-3560"><span class="linenos">3560</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> <span class="n">group</span><span class="o">=</span><span class="n">group</span> -</span><span id="Parser-3561"><a href="#Parser-3561"><span class="linenos">3561</span></a> <span class="p">)</span> -</span><span id="Parser-3562"><a href="#Parser-3562"><span class="linenos">3562</span></a> -</span><span id="Parser-3563"><a href="#Parser-3563"><span class="linenos">3563</span></a> <span class="k">def</span> <span class="nf">_parse_pivot_in</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> -</span><span id="Parser-3564"><a href="#Parser-3564"><span class="linenos">3564</span></a> <span class="k">def</span> <span class="nf">_parse_aliased_expression</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3565"><a href="#Parser-3565"><span class="linenos">3565</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3566"><a href="#Parser-3566"><span class="linenos">3566</span></a> -</span><span id="Parser-3567"><a href="#Parser-3567"><span class="linenos">3567</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-3568"><a href="#Parser-3568"><span class="linenos">3568</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-3569"><a href="#Parser-3569"><span class="linenos">3569</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-3570"><a href="#Parser-3570"><span class="linenos">3570</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PivotAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="Parser-3571"><a href="#Parser-3571"><span class="linenos">3571</span></a> -</span><span id="Parser-3572"><a href="#Parser-3572"><span class="linenos">3572</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3573"><a href="#Parser-3573"><span class="linenos">3573</span></a> -</span><span id="Parser-3574"><a href="#Parser-3574"><span class="linenos">3574</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-3575"><a href="#Parser-3575"><span class="linenos">3575</span></a> -</span><span id="Parser-3576"><a href="#Parser-3576"><span class="linenos">3576</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3577"><a href="#Parser-3577"><span class="linenos">3577</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN ("</span><span class="p">)</span> -</span><span id="Parser-3578"><a href="#Parser-3578"><span class="linenos">3578</span></a> -</span><span id="Parser-3579"><a href="#Parser-3579"><span class="linenos">3579</span></a> <span class="n">aliased_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_aliased_expression</span><span class="p">)</span> -</span><span id="Parser-3580"><a href="#Parser-3580"><span class="linenos">3580</span></a> -</span><span id="Parser-3581"><a href="#Parser-3581"><span class="linenos">3581</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3582"><a href="#Parser-3582"><span class="linenos">3582</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">aliased_expressions</span><span class="p">)</span> -</span><span id="Parser-3583"><a href="#Parser-3583"><span class="linenos">3583</span></a> -</span><span id="Parser-3584"><a href="#Parser-3584"><span class="linenos">3584</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]:</span> -</span><span id="Parser-3585"><a href="#Parser-3585"><span class="linenos">3585</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3586"><a href="#Parser-3586"><span class="linenos">3586</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3587"><a href="#Parser-3587"><span class="linenos">3587</span></a> -</span><span id="Parser-3588"><a href="#Parser-3588"><span class="linenos">3588</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> -</span><span id="Parser-3589"><a href="#Parser-3589"><span class="linenos">3589</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3590"><a href="#Parser-3590"><span class="linenos">3590</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> -</span><span id="Parser-3591"><a href="#Parser-3591"><span class="linenos">3591</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3592"><a href="#Parser-3592"><span class="linenos">3592</span></a> -</span><span id="Parser-3593"><a href="#Parser-3593"><span class="linenos">3593</span></a> <span class="c1"># https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-qry-select-unpivot.html#syntax</span> -</span><span id="Parser-3594"><a href="#Parser-3594"><span class="linenos">3594</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="Parser-3595"><a href="#Parser-3595"><span class="linenos">3595</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3596"><a href="#Parser-3596"><span class="linenos">3596</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"EXCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="Parser-3597"><a href="#Parser-3597"><span class="linenos">3597</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3598"><a href="#Parser-3598"><span class="linenos">3598</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3599"><a href="#Parser-3599"><span class="linenos">3599</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3600"><a href="#Parser-3600"><span class="linenos">3600</span></a> -</span><span id="Parser-3601"><a href="#Parser-3601"><span class="linenos">3601</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3602"><a href="#Parser-3602"><span class="linenos">3602</span></a> -</span><span id="Parser-3603"><a href="#Parser-3603"><span class="linenos">3603</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3604"><a href="#Parser-3604"><span class="linenos">3604</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3553"><a href="#Parser-3553"><span class="linenos">3553</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/pivot</span> +</span><span id="Parser-3554"><a href="#Parser-3554"><span class="linenos">3554</span></a> <span class="k">def</span> <span class="nf">_parse_simplified_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> +</span><span id="Parser-3555"><a href="#Parser-3555"><span class="linenos">3555</span></a> <span class="k">def</span> <span class="nf">_parse_on</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3556"><a href="#Parser-3556"><span class="linenos">3556</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-3557"><a href="#Parser-3557"><span class="linenos">3557</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="Parser-3558"><a href="#Parser-3558"><span class="linenos">3558</span></a> +</span><span id="Parser-3559"><a href="#Parser-3559"><span class="linenos">3559</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="Parser-3560"><a href="#Parser-3560"><span class="linenos">3560</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_on</span><span class="p">)</span> +</span><span id="Parser-3561"><a href="#Parser-3561"><span class="linenos">3561</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-3562"><a href="#Parser-3562"><span class="linenos">3562</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> +</span><span id="Parser-3563"><a href="#Parser-3563"><span class="linenos">3563</span></a> <span class="p">)</span> +</span><span id="Parser-3564"><a href="#Parser-3564"><span class="linenos">3564</span></a> <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">()</span> +</span><span id="Parser-3565"><a href="#Parser-3565"><span class="linenos">3565</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3566"><a href="#Parser-3566"><span class="linenos">3566</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> <span class="n">group</span><span class="o">=</span><span class="n">group</span> +</span><span id="Parser-3567"><a href="#Parser-3567"><span class="linenos">3567</span></a> <span class="p">)</span> +</span><span id="Parser-3568"><a href="#Parser-3568"><span class="linenos">3568</span></a> +</span><span id="Parser-3569"><a href="#Parser-3569"><span class="linenos">3569</span></a> <span class="k">def</span> <span class="nf">_parse_pivot_in</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> +</span><span id="Parser-3570"><a href="#Parser-3570"><span class="linenos">3570</span></a> <span class="k">def</span> <span class="nf">_parse_aliased_expression</span><span class="p">()</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3571"><a href="#Parser-3571"><span class="linenos">3571</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3572"><a href="#Parser-3572"><span class="linenos">3572</span></a> +</span><span id="Parser-3573"><a href="#Parser-3573"><span class="linenos">3573</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-3574"><a href="#Parser-3574"><span class="linenos">3574</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-3575"><a href="#Parser-3575"><span class="linenos">3575</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-3576"><a href="#Parser-3576"><span class="linenos">3576</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PivotAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="Parser-3577"><a href="#Parser-3577"><span class="linenos">3577</span></a> +</span><span id="Parser-3578"><a href="#Parser-3578"><span class="linenos">3578</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3579"><a href="#Parser-3579"><span class="linenos">3579</span></a> +</span><span id="Parser-3580"><a href="#Parser-3580"><span class="linenos">3580</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-3581"><a href="#Parser-3581"><span class="linenos">3581</span></a> +</span><span id="Parser-3582"><a href="#Parser-3582"><span class="linenos">3582</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3583"><a href="#Parser-3583"><span class="linenos">3583</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN ("</span><span class="p">)</span> +</span><span id="Parser-3584"><a href="#Parser-3584"><span class="linenos">3584</span></a> +</span><span id="Parser-3585"><a href="#Parser-3585"><span class="linenos">3585</span></a> <span class="n">aliased_expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_aliased_expression</span><span class="p">)</span> +</span><span id="Parser-3586"><a href="#Parser-3586"><span class="linenos">3586</span></a> +</span><span id="Parser-3587"><a href="#Parser-3587"><span class="linenos">3587</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3588"><a href="#Parser-3588"><span class="linenos">3588</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">aliased_expressions</span><span class="p">)</span> +</span><span id="Parser-3589"><a href="#Parser-3589"><span class="linenos">3589</span></a> +</span><span id="Parser-3590"><a href="#Parser-3590"><span class="linenos">3590</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">]:</span> +</span><span id="Parser-3591"><a href="#Parser-3591"><span class="linenos">3591</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3592"><a href="#Parser-3592"><span class="linenos">3592</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3593"><a href="#Parser-3593"><span class="linenos">3593</span></a> +</span><span id="Parser-3594"><a href="#Parser-3594"><span class="linenos">3594</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> +</span><span id="Parser-3595"><a href="#Parser-3595"><span class="linenos">3595</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3596"><a href="#Parser-3596"><span class="linenos">3596</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> +</span><span id="Parser-3597"><a href="#Parser-3597"><span class="linenos">3597</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3598"><a href="#Parser-3598"><span class="linenos">3598</span></a> +</span><span id="Parser-3599"><a href="#Parser-3599"><span class="linenos">3599</span></a> <span class="c1"># https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-qry-select-unpivot.html#syntax</span> +</span><span id="Parser-3600"><a href="#Parser-3600"><span class="linenos">3600</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="Parser-3601"><a href="#Parser-3601"><span class="linenos">3601</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3602"><a href="#Parser-3602"><span class="linenos">3602</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"EXCLUDE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="Parser-3603"><a href="#Parser-3603"><span class="linenos">3603</span></a> <span class="n">include_nulls</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3604"><a href="#Parser-3604"><span class="linenos">3604</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="Parser-3605"><a href="#Parser-3605"><span class="linenos">3605</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-3606"><a href="#Parser-3606"><span class="linenos">3606</span></a> -</span><span id="Parser-3607"><a href="#Parser-3607"><span class="linenos">3607</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> -</span><span id="Parser-3608"><a href="#Parser-3608"><span class="linenos">3608</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-3609"><a href="#Parser-3609"><span class="linenos">3609</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3610"><a href="#Parser-3610"><span class="linenos">3610</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> -</span><span id="Parser-3611"><a href="#Parser-3611"><span class="linenos">3611</span></a> -</span><span id="Parser-3612"><a href="#Parser-3612"><span class="linenos">3612</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-3613"><a href="#Parser-3613"><span class="linenos">3613</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse PIVOT's aggregation list"</span><span class="p">)</span> -</span><span id="Parser-3614"><a href="#Parser-3614"><span class="linenos">3614</span></a> -</span><span id="Parser-3615"><a href="#Parser-3615"><span class="linenos">3615</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-3616"><a href="#Parser-3616"><span class="linenos">3616</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> +</span><span id="Parser-3607"><a href="#Parser-3607"><span class="linenos">3607</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3608"><a href="#Parser-3608"><span class="linenos">3608</span></a> +</span><span id="Parser-3609"><a href="#Parser-3609"><span class="linenos">3609</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3610"><a href="#Parser-3610"><span class="linenos">3610</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3611"><a href="#Parser-3611"><span class="linenos">3611</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3612"><a href="#Parser-3612"><span class="linenos">3612</span></a> +</span><span id="Parser-3613"><a href="#Parser-3613"><span class="linenos">3613</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> +</span><span id="Parser-3614"><a href="#Parser-3614"><span class="linenos">3614</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-3615"><a href="#Parser-3615"><span class="linenos">3615</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3616"><a href="#Parser-3616"><span class="linenos">3616</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> </span><span id="Parser-3617"><a href="#Parser-3617"><span class="linenos">3617</span></a> -</span><span id="Parser-3618"><a href="#Parser-3618"><span class="linenos">3618</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot_in</span><span class="p">()</span> -</span><span id="Parser-3619"><a href="#Parser-3619"><span class="linenos">3619</span></a> -</span><span id="Parser-3620"><a href="#Parser-3620"><span class="linenos">3620</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3621"><a href="#Parser-3621"><span class="linenos">3621</span></a> -</span><span id="Parser-3622"><a href="#Parser-3622"><span class="linenos">3622</span></a> <span class="n">pivot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3623"><a href="#Parser-3623"><span class="linenos">3623</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> -</span><span id="Parser-3624"><a href="#Parser-3624"><span class="linenos">3624</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-3625"><a href="#Parser-3625"><span class="linenos">3625</span></a> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> -</span><span id="Parser-3626"><a href="#Parser-3626"><span class="linenos">3626</span></a> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">,</span> -</span><span id="Parser-3627"><a href="#Parser-3627"><span class="linenos">3627</span></a> <span class="n">include_nulls</span><span class="o">=</span><span class="n">include_nulls</span><span class="p">,</span> -</span><span id="Parser-3628"><a href="#Parser-3628"><span class="linenos">3628</span></a> <span class="p">)</span> -</span><span id="Parser-3629"><a href="#Parser-3629"><span class="linenos">3629</span></a> -</span><span id="Parser-3630"><a href="#Parser-3630"><span class="linenos">3630</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3631"><a href="#Parser-3631"><span class="linenos">3631</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="Parser-3632"><a href="#Parser-3632"><span class="linenos">3632</span></a> -</span><span id="Parser-3633"><a href="#Parser-3633"><span class="linenos">3633</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unpivot</span><span class="p">:</span> -</span><span id="Parser-3634"><a href="#Parser-3634"><span class="linenos">3634</span></a> <span class="n">names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivot_column_names</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">))</span> +</span><span id="Parser-3618"><a href="#Parser-3618"><span class="linenos">3618</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-3619"><a href="#Parser-3619"><span class="linenos">3619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse PIVOT's aggregation list"</span><span class="p">)</span> +</span><span id="Parser-3620"><a href="#Parser-3620"><span class="linenos">3620</span></a> +</span><span id="Parser-3621"><a href="#Parser-3621"><span class="linenos">3621</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-3622"><a href="#Parser-3622"><span class="linenos">3622</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> +</span><span id="Parser-3623"><a href="#Parser-3623"><span class="linenos">3623</span></a> +</span><span id="Parser-3624"><a href="#Parser-3624"><span class="linenos">3624</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot_in</span><span class="p">()</span> +</span><span id="Parser-3625"><a href="#Parser-3625"><span class="linenos">3625</span></a> +</span><span id="Parser-3626"><a href="#Parser-3626"><span class="linenos">3626</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3627"><a href="#Parser-3627"><span class="linenos">3627</span></a> +</span><span id="Parser-3628"><a href="#Parser-3628"><span class="linenos">3628</span></a> <span class="n">pivot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3629"><a href="#Parser-3629"><span class="linenos">3629</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> +</span><span id="Parser-3630"><a href="#Parser-3630"><span class="linenos">3630</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-3631"><a href="#Parser-3631"><span class="linenos">3631</span></a> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> +</span><span id="Parser-3632"><a href="#Parser-3632"><span class="linenos">3632</span></a> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">,</span> +</span><span id="Parser-3633"><a href="#Parser-3633"><span class="linenos">3633</span></a> <span class="n">include_nulls</span><span class="o">=</span><span class="n">include_nulls</span><span class="p">,</span> +</span><span id="Parser-3634"><a href="#Parser-3634"><span class="linenos">3634</span></a> <span class="p">)</span> </span><span id="Parser-3635"><a href="#Parser-3635"><span class="linenos">3635</span></a> -</span><span id="Parser-3636"><a href="#Parser-3636"><span class="linenos">3636</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3637"><a href="#Parser-3637"><span class="linenos">3637</span></a> <span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="n">pivot</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"field"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-3638"><a href="#Parser-3638"><span class="linenos">3638</span></a> <span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="k">else</span> <span class="n">fld</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="Parser-3639"><a href="#Parser-3639"><span class="linenos">3639</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span> -</span><span id="Parser-3640"><a href="#Parser-3640"><span class="linenos">3640</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PREFIXED_PIVOT_COLUMNS</span><span class="p">:</span> -</span><span id="Parser-3641"><a href="#Parser-3641"><span class="linenos">3641</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</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">field_name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> -</span><span id="Parser-3642"><a href="#Parser-3642"><span class="linenos">3642</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3643"><a href="#Parser-3643"><span class="linenos">3643</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> -</span><span id="Parser-3644"><a href="#Parser-3644"><span class="linenos">3644</span></a> -</span><span id="Parser-3645"><a href="#Parser-3645"><span class="linenos">3645</span></a> <span class="n">columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">))</span> -</span><span id="Parser-3646"><a href="#Parser-3646"><span class="linenos">3646</span></a> -</span><span id="Parser-3647"><a href="#Parser-3647"><span class="linenos">3647</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">columns</span><span class="p">)</span> -</span><span id="Parser-3648"><a href="#Parser-3648"><span class="linenos">3648</span></a> -</span><span id="Parser-3649"><a href="#Parser-3649"><span class="linenos">3649</span></a> <span class="k">return</span> <span class="n">pivot</span> +</span><span id="Parser-3636"><a href="#Parser-3636"><span class="linenos">3636</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3637"><a href="#Parser-3637"><span class="linenos">3637</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="Parser-3638"><a href="#Parser-3638"><span class="linenos">3638</span></a> +</span><span id="Parser-3639"><a href="#Parser-3639"><span class="linenos">3639</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unpivot</span><span class="p">:</span> +</span><span id="Parser-3640"><a href="#Parser-3640"><span class="linenos">3640</span></a> <span class="n">names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivot_column_names</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">))</span> +</span><span id="Parser-3641"><a href="#Parser-3641"><span class="linenos">3641</span></a> +</span><span id="Parser-3642"><a href="#Parser-3642"><span class="linenos">3642</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3643"><a href="#Parser-3643"><span class="linenos">3643</span></a> <span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="n">pivot</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"field"</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-3644"><a href="#Parser-3644"><span class="linenos">3644</span></a> <span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="k">else</span> <span class="n">fld</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="Parser-3645"><a href="#Parser-3645"><span class="linenos">3645</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span> +</span><span id="Parser-3646"><a href="#Parser-3646"><span class="linenos">3646</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PREFIXED_PIVOT_COLUMNS</span><span class="p">:</span> +</span><span id="Parser-3647"><a href="#Parser-3647"><span class="linenos">3647</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</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">field_name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> +</span><span id="Parser-3648"><a href="#Parser-3648"><span class="linenos">3648</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3649"><a href="#Parser-3649"><span class="linenos">3649</span></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="n">field_name</span> </span><span id="Parser-3650"><a href="#Parser-3650"><span class="linenos">3650</span></a> -</span><span id="Parser-3651"><a href="#Parser-3651"><span class="linenos">3651</span></a> <span class="k">def</span> <span class="nf">_pivot_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></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="Parser-3652"><a href="#Parser-3652"><span class="linenos">3652</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">]</span> -</span><span id="Parser-3653"><a href="#Parser-3653"><span class="linenos">3653</span></a> -</span><span id="Parser-3654"><a href="#Parser-3654"><span class="linenos">3654</span></a> <span class="k">def</span> <span class="nf">_parse_prewhere</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">]:</span> -</span><span id="Parser-3655"><a href="#Parser-3655"><span class="linenos">3655</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">):</span> -</span><span id="Parser-3656"><a href="#Parser-3656"><span class="linenos">3656</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3657"><a href="#Parser-3657"><span class="linenos">3657</span></a> -</span><span id="Parser-3658"><a href="#Parser-3658"><span class="linenos">3658</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3659"><a href="#Parser-3659"><span class="linenos">3659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3660"><a href="#Parser-3660"><span class="linenos">3660</span></a> <span class="p">)</span> -</span><span id="Parser-3661"><a href="#Parser-3661"><span class="linenos">3661</span></a> -</span><span id="Parser-3662"><a href="#Parser-3662"><span class="linenos">3662</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">]:</span> -</span><span id="Parser-3663"><a href="#Parser-3663"><span class="linenos">3663</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> -</span><span id="Parser-3664"><a href="#Parser-3664"><span class="linenos">3664</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3665"><a href="#Parser-3665"><span class="linenos">3665</span></a> -</span><span id="Parser-3666"><a href="#Parser-3666"><span class="linenos">3666</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3667"><a href="#Parser-3667"><span class="linenos">3667</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3668"><a href="#Parser-3668"><span class="linenos">3668</span></a> <span class="p">)</span> -</span><span id="Parser-3669"><a href="#Parser-3669"><span class="linenos">3669</span></a> -</span><span id="Parser-3670"><a href="#Parser-3670"><span class="linenos">3670</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">]:</span> -</span><span id="Parser-3671"><a href="#Parser-3671"><span class="linenos">3671</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> -</span><span id="Parser-3672"><a href="#Parser-3672"><span class="linenos">3672</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3673"><a href="#Parser-3673"><span class="linenos">3673</span></a> -</span><span id="Parser-3674"><a href="#Parser-3674"><span class="linenos">3674</span></a> <span class="n">elements</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> +</span><span id="Parser-3651"><a href="#Parser-3651"><span class="linenos">3651</span></a> <span class="n">columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">))</span> +</span><span id="Parser-3652"><a href="#Parser-3652"><span class="linenos">3652</span></a> +</span><span id="Parser-3653"><a href="#Parser-3653"><span class="linenos">3653</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">columns</span><span class="p">)</span> +</span><span id="Parser-3654"><a href="#Parser-3654"><span class="linenos">3654</span></a> +</span><span id="Parser-3655"><a href="#Parser-3655"><span class="linenos">3655</span></a> <span class="k">return</span> <span class="n">pivot</span> +</span><span id="Parser-3656"><a href="#Parser-3656"><span class="linenos">3656</span></a> +</span><span id="Parser-3657"><a href="#Parser-3657"><span class="linenos">3657</span></a> <span class="k">def</span> <span class="nf">_pivot_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></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="Parser-3658"><a href="#Parser-3658"><span class="linenos">3658</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">]</span> +</span><span id="Parser-3659"><a href="#Parser-3659"><span class="linenos">3659</span></a> +</span><span id="Parser-3660"><a href="#Parser-3660"><span class="linenos">3660</span></a> <span class="k">def</span> <span class="nf">_parse_prewhere</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">]:</span> +</span><span id="Parser-3661"><a href="#Parser-3661"><span class="linenos">3661</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PREWHERE</span><span class="p">):</span> +</span><span id="Parser-3662"><a href="#Parser-3662"><span class="linenos">3662</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3663"><a href="#Parser-3663"><span class="linenos">3663</span></a> +</span><span id="Parser-3664"><a href="#Parser-3664"><span class="linenos">3664</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3665"><a href="#Parser-3665"><span class="linenos">3665</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PreWhere</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3666"><a href="#Parser-3666"><span class="linenos">3666</span></a> <span class="p">)</span> +</span><span id="Parser-3667"><a href="#Parser-3667"><span class="linenos">3667</span></a> +</span><span id="Parser-3668"><a href="#Parser-3668"><span class="linenos">3668</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">]:</span> +</span><span id="Parser-3669"><a href="#Parser-3669"><span class="linenos">3669</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> +</span><span id="Parser-3670"><a href="#Parser-3670"><span class="linenos">3670</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3671"><a href="#Parser-3671"><span class="linenos">3671</span></a> +</span><span id="Parser-3672"><a href="#Parser-3672"><span class="linenos">3672</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3673"><a href="#Parser-3673"><span class="linenos">3673</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3674"><a href="#Parser-3674"><span class="linenos">3674</span></a> <span class="p">)</span> </span><span id="Parser-3675"><a href="#Parser-3675"><span class="linenos">3675</span></a> -</span><span id="Parser-3676"><a href="#Parser-3676"><span class="linenos">3676</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> -</span><span id="Parser-3677"><a href="#Parser-3677"><span class="linenos">3677</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3678"><a href="#Parser-3678"><span class="linenos">3678</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="Parser-3679"><a href="#Parser-3679"><span class="linenos">3679</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3680"><a href="#Parser-3680"><span class="linenos">3680</span></a> -</span><span id="Parser-3681"><a href="#Parser-3681"><span class="linenos">3681</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-3682"><a href="#Parser-3682"><span class="linenos">3682</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-3683"><a href="#Parser-3683"><span class="linenos">3683</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span> -</span><span id="Parser-3684"><a href="#Parser-3684"><span class="linenos">3684</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3685"><a href="#Parser-3685"><span class="linenos">3685</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3686"><a href="#Parser-3686"><span class="linenos">3686</span></a> <span class="p">)</span> -</span><span id="Parser-3687"><a href="#Parser-3687"><span class="linenos">3687</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-3688"><a href="#Parser-3688"><span class="linenos">3688</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-3689"><a href="#Parser-3689"><span class="linenos">3689</span></a> -</span><span id="Parser-3690"><a href="#Parser-3690"><span class="linenos">3690</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> -</span><span id="Parser-3691"><a href="#Parser-3691"><span class="linenos">3691</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> -</span><span id="Parser-3692"><a href="#Parser-3692"><span class="linenos">3692</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> -</span><span id="Parser-3693"><a href="#Parser-3693"><span class="linenos">3693</span></a> -</span><span id="Parser-3694"><a href="#Parser-3694"><span class="linenos">3694</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3695"><a href="#Parser-3695"><span class="linenos">3695</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3696"><a href="#Parser-3696"><span class="linenos">3696</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3697"><a href="#Parser-3697"><span class="linenos">3697</span></a> -</span><span id="Parser-3698"><a href="#Parser-3698"><span class="linenos">3698</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3699"><a href="#Parser-3699"><span class="linenos">3699</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="Parser-3700"><a href="#Parser-3700"><span class="linenos">3700</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> -</span><span id="Parser-3701"><a href="#Parser-3701"><span class="linenos">3701</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-3702"><a href="#Parser-3702"><span class="linenos">3702</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> +</span><span id="Parser-3676"><a href="#Parser-3676"><span class="linenos">3676</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">]:</span> +</span><span id="Parser-3677"><a href="#Parser-3677"><span class="linenos">3677</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> +</span><span id="Parser-3678"><a href="#Parser-3678"><span class="linenos">3678</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3679"><a href="#Parser-3679"><span class="linenos">3679</span></a> +</span><span id="Parser-3680"><a href="#Parser-3680"><span class="linenos">3680</span></a> <span class="n">elements</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> +</span><span id="Parser-3681"><a href="#Parser-3681"><span class="linenos">3681</span></a> +</span><span id="Parser-3682"><a href="#Parser-3682"><span class="linenos">3682</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">):</span> +</span><span id="Parser-3683"><a href="#Parser-3683"><span class="linenos">3683</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3684"><a href="#Parser-3684"><span class="linenos">3684</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="Parser-3685"><a href="#Parser-3685"><span class="linenos">3685</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"all"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3686"><a href="#Parser-3686"><span class="linenos">3686</span></a> +</span><span id="Parser-3687"><a href="#Parser-3687"><span class="linenos">3687</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-3688"><a href="#Parser-3688"><span class="linenos">3688</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-3689"><a href="#Parser-3689"><span class="linenos">3689</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span> +</span><span id="Parser-3690"><a href="#Parser-3690"><span class="linenos">3690</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3691"><a href="#Parser-3691"><span class="linenos">3691</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3692"><a href="#Parser-3692"><span class="linenos">3692</span></a> <span class="p">)</span> +</span><span id="Parser-3693"><a href="#Parser-3693"><span class="linenos">3693</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-3694"><a href="#Parser-3694"><span class="linenos">3694</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-3695"><a href="#Parser-3695"><span class="linenos">3695</span></a> +</span><span id="Parser-3696"><a href="#Parser-3696"><span class="linenos">3696</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> +</span><span id="Parser-3697"><a href="#Parser-3697"><span class="linenos">3697</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> +</span><span id="Parser-3698"><a href="#Parser-3698"><span class="linenos">3698</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> +</span><span id="Parser-3699"><a href="#Parser-3699"><span class="linenos">3699</span></a> +</span><span id="Parser-3700"><a href="#Parser-3700"><span class="linenos">3700</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3701"><a href="#Parser-3701"><span class="linenos">3701</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3702"><a href="#Parser-3702"><span class="linenos">3702</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-3703"><a href="#Parser-3703"><span class="linenos">3703</span></a> -</span><span id="Parser-3704"><a href="#Parser-3704"><span class="linenos">3704</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> -</span><span id="Parser-3705"><a href="#Parser-3705"><span class="linenos">3705</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-3706"><a href="#Parser-3706"><span class="linenos">3706</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> -</span><span id="Parser-3707"><a href="#Parser-3707"><span class="linenos">3707</span></a> -</span><span id="Parser-3708"><a href="#Parser-3708"><span class="linenos">3708</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TOTALS"</span><span class="p">):</span> -</span><span id="Parser-3709"><a href="#Parser-3709"><span class="linenos">3709</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3710"><a href="#Parser-3710"><span class="linenos">3710</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"totals"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-3711"><a href="#Parser-3711"><span class="linenos">3711</span></a> -</span><span id="Parser-3712"><a href="#Parser-3712"><span class="linenos">3712</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span> <span class="ow">or</span> <span class="n">totals</span><span class="p">):</span> -</span><span id="Parser-3713"><a href="#Parser-3713"><span class="linenos">3713</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="Parser-3714"><a href="#Parser-3714"><span class="linenos">3714</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3715"><a href="#Parser-3715"><span class="linenos">3715</span></a> <span class="k">break</span> -</span><span id="Parser-3716"><a href="#Parser-3716"><span class="linenos">3716</span></a> -</span><span id="Parser-3717"><a href="#Parser-3717"><span class="linenos">3717</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-3718"><a href="#Parser-3718"><span class="linenos">3718</span></a> -</span><span id="Parser-3719"><a href="#Parser-3719"><span class="linenos">3719</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3720"><a href="#Parser-3720"><span class="linenos">3720</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> -</span><span id="Parser-3721"><a href="#Parser-3721"><span class="linenos">3721</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3704"><a href="#Parser-3704"><span class="linenos">3704</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3705"><a href="#Parser-3705"><span class="linenos">3705</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="Parser-3706"><a href="#Parser-3706"><span class="linenos">3706</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> +</span><span id="Parser-3707"><a href="#Parser-3707"><span class="linenos">3707</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-3708"><a href="#Parser-3708"><span class="linenos">3708</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> +</span><span id="Parser-3709"><a href="#Parser-3709"><span class="linenos">3709</span></a> +</span><span id="Parser-3710"><a href="#Parser-3710"><span class="linenos">3710</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> +</span><span id="Parser-3711"><a href="#Parser-3711"><span class="linenos">3711</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-3712"><a href="#Parser-3712"><span class="linenos">3712</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> +</span><span id="Parser-3713"><a href="#Parser-3713"><span class="linenos">3713</span></a> +</span><span id="Parser-3714"><a href="#Parser-3714"><span class="linenos">3714</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TOTALS"</span><span class="p">):</span> +</span><span id="Parser-3715"><a href="#Parser-3715"><span class="linenos">3715</span></a> <span class="n">totals</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3716"><a href="#Parser-3716"><span class="linenos">3716</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"totals"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-3717"><a href="#Parser-3717"><span class="linenos">3717</span></a> +</span><span id="Parser-3718"><a href="#Parser-3718"><span class="linenos">3718</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span> <span class="ow">or</span> <span class="n">totals</span><span class="p">):</span> +</span><span id="Parser-3719"><a href="#Parser-3719"><span class="linenos">3719</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="Parser-3720"><a href="#Parser-3720"><span class="linenos">3720</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3721"><a href="#Parser-3721"><span class="linenos">3721</span></a> <span class="k">break</span> </span><span id="Parser-3722"><a href="#Parser-3722"><span class="linenos">3722</span></a> -</span><span id="Parser-3723"><a href="#Parser-3723"><span class="linenos">3723</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> +</span><span id="Parser-3723"><a href="#Parser-3723"><span class="linenos">3723</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="Parser-3724"><a href="#Parser-3724"><span class="linenos">3724</span></a> -</span><span id="Parser-3725"><a href="#Parser-3725"><span class="linenos">3725</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3726"><a href="#Parser-3726"><span class="linenos">3726</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3727"><a href="#Parser-3727"><span class="linenos">3727</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-3728"><a href="#Parser-3728"><span class="linenos">3728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3729"><a href="#Parser-3729"><span class="linenos">3729</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> +</span><span id="Parser-3725"><a href="#Parser-3725"><span class="linenos">3725</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3726"><a href="#Parser-3726"><span class="linenos">3726</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> +</span><span id="Parser-3727"><a href="#Parser-3727"><span class="linenos">3727</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3728"><a href="#Parser-3728"><span class="linenos">3728</span></a> +</span><span id="Parser-3729"><a href="#Parser-3729"><span class="linenos">3729</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> </span><span id="Parser-3730"><a href="#Parser-3730"><span class="linenos">3730</span></a> -</span><span id="Parser-3731"><a href="#Parser-3731"><span class="linenos">3731</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-3732"><a href="#Parser-3732"><span class="linenos">3732</span></a> -</span><span id="Parser-3733"><a href="#Parser-3733"><span class="linenos">3733</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">]:</span> -</span><span id="Parser-3734"><a href="#Parser-3734"><span class="linenos">3734</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> -</span><span id="Parser-3735"><a href="#Parser-3735"><span class="linenos">3735</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3736"><a href="#Parser-3736"><span class="linenos">3736</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="Parser-3737"><a href="#Parser-3737"><span class="linenos">3737</span></a> -</span><span id="Parser-3738"><a href="#Parser-3738"><span class="linenos">3738</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">]:</span> -</span><span id="Parser-3739"><a href="#Parser-3739"><span class="linenos">3739</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> -</span><span id="Parser-3740"><a href="#Parser-3740"><span class="linenos">3740</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3741"><a href="#Parser-3741"><span class="linenos">3741</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="Parser-3742"><a href="#Parser-3742"><span class="linenos">3742</span></a> -</span><span id="Parser-3743"><a href="#Parser-3743"><span class="linenos">3743</span></a> <span class="k">def</span> <span class="nf">_parse_connect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_start_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">]:</span> -</span><span id="Parser-3744"><a href="#Parser-3744"><span class="linenos">3744</span></a> <span class="k">if</span> <span class="n">skip_start_token</span><span class="p">:</span> -</span><span id="Parser-3745"><a href="#Parser-3745"><span class="linenos">3745</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3746"><a href="#Parser-3746"><span class="linenos">3746</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> -</span><span id="Parser-3747"><a href="#Parser-3747"><span class="linenos">3747</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3748"><a href="#Parser-3748"><span class="linenos">3748</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3749"><a href="#Parser-3749"><span class="linenos">3749</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3750"><a href="#Parser-3750"><span class="linenos">3750</span></a> -</span><span id="Parser-3751"><a href="#Parser-3751"><span class="linenos">3751</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">)</span> -</span><span id="Parser-3752"><a href="#Parser-3752"><span class="linenos">3752</span></a> <span class="n">nocycle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOCYCLE"</span><span class="p">)</span> -</span><span id="Parser-3753"><a href="#Parser-3753"><span class="linenos">3753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="s2">"PRIOR"</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3754"><a href="#Parser-3754"><span class="linenos">3754</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Prior</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-3755"><a href="#Parser-3755"><span class="linenos">3755</span></a> <span class="p">)</span> -</span><span id="Parser-3756"><a href="#Parser-3756"><span class="linenos">3756</span></a> <span class="n">connect</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3757"><a href="#Parser-3757"><span class="linenos">3757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"PRIOR"</span><span class="p">)</span> -</span><span id="Parser-3758"><a href="#Parser-3758"><span class="linenos">3758</span></a> -</span><span id="Parser-3759"><a href="#Parser-3759"><span class="linenos">3759</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> -</span><span id="Parser-3760"><a href="#Parser-3760"><span class="linenos">3760</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3761"><a href="#Parser-3761"><span class="linenos">3761</span></a> -</span><span id="Parser-3762"><a href="#Parser-3762"><span class="linenos">3762</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">connect</span><span class="o">=</span><span class="n">connect</span><span class="p">,</span> <span class="n">nocycle</span><span class="o">=</span><span class="n">nocycle</span><span class="p">)</span> -</span><span id="Parser-3763"><a href="#Parser-3763"><span class="linenos">3763</span></a> -</span><span id="Parser-3764"><a href="#Parser-3764"><span class="linenos">3764</span></a> <span class="k">def</span> <span class="nf">_parse_name_as_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">:</span> -</span><span id="Parser-3765"><a href="#Parser-3765"><span class="linenos">3765</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3766"><a href="#Parser-3766"><span class="linenos">3766</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> -</span><span id="Parser-3767"><a href="#Parser-3767"><span class="linenos">3767</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-3768"><a href="#Parser-3768"><span class="linenos">3768</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-3769"><a href="#Parser-3769"><span class="linenos">3769</span></a> <span class="p">)</span> -</span><span id="Parser-3770"><a href="#Parser-3770"><span class="linenos">3770</span></a> -</span><span id="Parser-3771"><a href="#Parser-3771"><span class="linenos">3771</span></a> <span class="k">def</span> <span class="nf">_parse_interpolate</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3772"><a href="#Parser-3772"><span class="linenos">3772</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INTERPOLATE"</span><span class="p">):</span> -</span><span id="Parser-3773"><a href="#Parser-3773"><span class="linenos">3773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> -</span><span id="Parser-3774"><a href="#Parser-3774"><span class="linenos">3774</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3775"><a href="#Parser-3775"><span class="linenos">3775</span></a> -</span><span id="Parser-3776"><a href="#Parser-3776"><span class="linenos">3776</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> -</span><span id="Parser-3777"><a href="#Parser-3777"><span class="linenos">3777</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3778"><a href="#Parser-3778"><span class="linenos">3778</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3779"><a href="#Parser-3779"><span class="linenos">3779</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3780"><a href="#Parser-3780"><span class="linenos">3780</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> -</span><span id="Parser-3781"><a href="#Parser-3781"><span class="linenos">3781</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_SIBLINGS_BY</span><span class="p">):</span> -</span><span id="Parser-3782"><a href="#Parser-3782"><span class="linenos">3782</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3783"><a href="#Parser-3783"><span class="linenos">3783</span></a> -</span><span id="Parser-3784"><a href="#Parser-3784"><span class="linenos">3784</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3785"><a href="#Parser-3785"><span class="linenos">3785</span></a> -</span><span id="Parser-3786"><a href="#Parser-3786"><span class="linenos">3786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3787"><a href="#Parser-3787"><span class="linenos">3787</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">,</span> -</span><span id="Parser-3788"><a href="#Parser-3788"><span class="linenos">3788</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3789"><a href="#Parser-3789"><span class="linenos">3789</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">),</span> -</span><span id="Parser-3790"><a href="#Parser-3790"><span class="linenos">3790</span></a> <span class="n">interpolate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interpolate</span><span class="p">(),</span> -</span><span id="Parser-3791"><a href="#Parser-3791"><span class="linenos">3791</span></a> <span class="n">siblings</span><span class="o">=</span><span class="n">siblings</span><span class="p">,</span> -</span><span id="Parser-3792"><a href="#Parser-3792"><span class="linenos">3792</span></a> <span class="p">)</span> -</span><span id="Parser-3793"><a href="#Parser-3793"><span class="linenos">3793</span></a> -</span><span id="Parser-3794"><a href="#Parser-3794"><span class="linenos">3794</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">token</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</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">E</span><span class="p">]:</span> -</span><span id="Parser-3795"><a href="#Parser-3795"><span class="linenos">3795</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token</span><span class="p">):</span> -</span><span id="Parser-3796"><a href="#Parser-3796"><span class="linenos">3796</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3797"><a href="#Parser-3797"><span class="linenos">3797</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> -</span><span id="Parser-3798"><a href="#Parser-3798"><span class="linenos">3798</span></a> -</span><span id="Parser-3799"><a href="#Parser-3799"><span class="linenos">3799</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span> -</span><span id="Parser-3800"><a href="#Parser-3800"><span class="linenos">3800</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3801"><a href="#Parser-3801"><span class="linenos">3801</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">]:</span> -</span><span id="Parser-3802"><a href="#Parser-3802"><span class="linenos">3802</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_method</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-3803"><a href="#Parser-3803"><span class="linenos">3803</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-3804"><a href="#Parser-3804"><span class="linenos">3804</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3805"><a href="#Parser-3805"><span class="linenos">3805</span></a> -</span><span id="Parser-3806"><a href="#Parser-3806"><span class="linenos">3806</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> -</span><span id="Parser-3807"><a href="#Parser-3807"><span class="linenos">3807</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3808"><a href="#Parser-3808"><span class="linenos">3808</span></a> -</span><span id="Parser-3809"><a href="#Parser-3809"><span class="linenos">3809</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">)</span> -</span><span id="Parser-3810"><a href="#Parser-3810"><span class="linenos">3810</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">)</span> +</span><span id="Parser-3731"><a href="#Parser-3731"><span class="linenos">3731</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3732"><a href="#Parser-3732"><span class="linenos">3732</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3733"><a href="#Parser-3733"><span class="linenos">3733</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-3734"><a href="#Parser-3734"><span class="linenos">3734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3735"><a href="#Parser-3735"><span class="linenos">3735</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> +</span><span id="Parser-3736"><a href="#Parser-3736"><span class="linenos">3736</span></a> +</span><span id="Parser-3737"><a href="#Parser-3737"><span class="linenos">3737</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-3738"><a href="#Parser-3738"><span class="linenos">3738</span></a> +</span><span id="Parser-3739"><a href="#Parser-3739"><span class="linenos">3739</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">]:</span> +</span><span id="Parser-3740"><a href="#Parser-3740"><span class="linenos">3740</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> +</span><span id="Parser-3741"><a href="#Parser-3741"><span class="linenos">3741</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3742"><a href="#Parser-3742"><span class="linenos">3742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="Parser-3743"><a href="#Parser-3743"><span class="linenos">3743</span></a> +</span><span id="Parser-3744"><a href="#Parser-3744"><span class="linenos">3744</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">]:</span> +</span><span id="Parser-3745"><a href="#Parser-3745"><span class="linenos">3745</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> +</span><span id="Parser-3746"><a href="#Parser-3746"><span class="linenos">3746</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3747"><a href="#Parser-3747"><span class="linenos">3747</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="Parser-3748"><a href="#Parser-3748"><span class="linenos">3748</span></a> +</span><span id="Parser-3749"><a href="#Parser-3749"><span class="linenos">3749</span></a> <span class="k">def</span> <span class="nf">_parse_connect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_start_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">]:</span> +</span><span id="Parser-3750"><a href="#Parser-3750"><span class="linenos">3750</span></a> <span class="k">if</span> <span class="n">skip_start_token</span><span class="p">:</span> +</span><span id="Parser-3751"><a href="#Parser-3751"><span class="linenos">3751</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3752"><a href="#Parser-3752"><span class="linenos">3752</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> +</span><span id="Parser-3753"><a href="#Parser-3753"><span class="linenos">3753</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3754"><a href="#Parser-3754"><span class="linenos">3754</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3755"><a href="#Parser-3755"><span class="linenos">3755</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3756"><a href="#Parser-3756"><span class="linenos">3756</span></a> +</span><span id="Parser-3757"><a href="#Parser-3757"><span class="linenos">3757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">)</span> +</span><span id="Parser-3758"><a href="#Parser-3758"><span class="linenos">3758</span></a> <span class="n">nocycle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOCYCLE"</span><span class="p">)</span> +</span><span id="Parser-3759"><a href="#Parser-3759"><span class="linenos">3759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="s2">"PRIOR"</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3760"><a href="#Parser-3760"><span class="linenos">3760</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Prior</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-3761"><a href="#Parser-3761"><span class="linenos">3761</span></a> <span class="p">)</span> +</span><span id="Parser-3762"><a href="#Parser-3762"><span class="linenos">3762</span></a> <span class="n">connect</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3763"><a href="#Parser-3763"><span class="linenos">3763</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"PRIOR"</span><span class="p">)</span> +</span><span id="Parser-3764"><a href="#Parser-3764"><span class="linenos">3764</span></a> +</span><span id="Parser-3765"><a href="#Parser-3765"><span class="linenos">3765</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> +</span><span id="Parser-3766"><a href="#Parser-3766"><span class="linenos">3766</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3767"><a href="#Parser-3767"><span class="linenos">3767</span></a> +</span><span id="Parser-3768"><a href="#Parser-3768"><span class="linenos">3768</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Connect</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">connect</span><span class="o">=</span><span class="n">connect</span><span class="p">,</span> <span class="n">nocycle</span><span class="o">=</span><span class="n">nocycle</span><span class="p">)</span> +</span><span id="Parser-3769"><a href="#Parser-3769"><span class="linenos">3769</span></a> +</span><span id="Parser-3770"><a href="#Parser-3770"><span class="linenos">3770</span></a> <span class="k">def</span> <span class="nf">_parse_name_as_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">:</span> +</span><span id="Parser-3771"><a href="#Parser-3771"><span class="linenos">3771</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3772"><a href="#Parser-3772"><span class="linenos">3772</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> +</span><span id="Parser-3773"><a href="#Parser-3773"><span class="linenos">3773</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-3774"><a href="#Parser-3774"><span class="linenos">3774</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-3775"><a href="#Parser-3775"><span class="linenos">3775</span></a> <span class="p">)</span> +</span><span id="Parser-3776"><a href="#Parser-3776"><span class="linenos">3776</span></a> +</span><span id="Parser-3777"><a href="#Parser-3777"><span class="linenos">3777</span></a> <span class="k">def</span> <span class="nf">_parse_interpolate</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3778"><a href="#Parser-3778"><span class="linenos">3778</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INTERPOLATE"</span><span class="p">):</span> +</span><span id="Parser-3779"><a href="#Parser-3779"><span class="linenos">3779</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_name_as_expression</span><span class="p">)</span> +</span><span id="Parser-3780"><a href="#Parser-3780"><span class="linenos">3780</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3781"><a href="#Parser-3781"><span class="linenos">3781</span></a> +</span><span id="Parser-3782"><a href="#Parser-3782"><span class="linenos">3782</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> +</span><span id="Parser-3783"><a href="#Parser-3783"><span class="linenos">3783</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3784"><a href="#Parser-3784"><span class="linenos">3784</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3785"><a href="#Parser-3785"><span class="linenos">3785</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3786"><a href="#Parser-3786"><span class="linenos">3786</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> +</span><span id="Parser-3787"><a href="#Parser-3787"><span class="linenos">3787</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_SIBLINGS_BY</span><span class="p">):</span> +</span><span id="Parser-3788"><a href="#Parser-3788"><span class="linenos">3788</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3789"><a href="#Parser-3789"><span class="linenos">3789</span></a> +</span><span id="Parser-3790"><a href="#Parser-3790"><span class="linenos">3790</span></a> <span class="n">siblings</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3791"><a href="#Parser-3791"><span class="linenos">3791</span></a> +</span><span id="Parser-3792"><a href="#Parser-3792"><span class="linenos">3792</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3793"><a href="#Parser-3793"><span class="linenos">3793</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">,</span> +</span><span id="Parser-3794"><a href="#Parser-3794"><span class="linenos">3794</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3795"><a href="#Parser-3795"><span class="linenos">3795</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">),</span> +</span><span id="Parser-3796"><a href="#Parser-3796"><span class="linenos">3796</span></a> <span class="n">interpolate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interpolate</span><span class="p">(),</span> +</span><span id="Parser-3797"><a href="#Parser-3797"><span class="linenos">3797</span></a> <span class="n">siblings</span><span class="o">=</span><span class="n">siblings</span><span class="p">,</span> +</span><span id="Parser-3798"><a href="#Parser-3798"><span class="linenos">3798</span></a> <span class="p">)</span> +</span><span id="Parser-3799"><a href="#Parser-3799"><span class="linenos">3799</span></a> +</span><span id="Parser-3800"><a href="#Parser-3800"><span class="linenos">3800</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">token</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</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">E</span><span class="p">]:</span> +</span><span id="Parser-3801"><a href="#Parser-3801"><span class="linenos">3801</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token</span><span class="p">):</span> +</span><span id="Parser-3802"><a href="#Parser-3802"><span class="linenos">3802</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3803"><a href="#Parser-3803"><span class="linenos">3803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> +</span><span id="Parser-3804"><a href="#Parser-3804"><span class="linenos">3804</span></a> +</span><span id="Parser-3805"><a href="#Parser-3805"><span class="linenos">3805</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span> +</span><span id="Parser-3806"><a href="#Parser-3806"><span class="linenos">3806</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3807"><a href="#Parser-3807"><span class="linenos">3807</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">]:</span> +</span><span id="Parser-3808"><a href="#Parser-3808"><span class="linenos">3808</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_method</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-3809"><a href="#Parser-3809"><span class="linenos">3809</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-3810"><a href="#Parser-3810"><span class="linenos">3810</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-3811"><a href="#Parser-3811"><span class="linenos">3811</span></a> -</span><span id="Parser-3812"><a href="#Parser-3812"><span class="linenos">3812</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> -</span><span id="Parser-3813"><a href="#Parser-3813"><span class="linenos">3813</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> +</span><span id="Parser-3812"><a href="#Parser-3812"><span class="linenos">3812</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> +</span><span id="Parser-3813"><a href="#Parser-3813"><span class="linenos">3813</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="kc">False</span><span class="p">)</span> </span><span id="Parser-3814"><a href="#Parser-3814"><span class="linenos">3814</span></a> -</span><span id="Parser-3815"><a href="#Parser-3815"><span class="linenos">3815</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-3816"><a href="#Parser-3816"><span class="linenos">3816</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> -</span><span id="Parser-3817"><a href="#Parser-3817"><span class="linenos">3817</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Parser-3818"><a href="#Parser-3818"><span class="linenos">3818</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="Parser-3819"><a href="#Parser-3819"><span class="linenos">3819</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="Parser-3820"><a href="#Parser-3820"><span class="linenos">3820</span></a> <span class="p">)</span> -</span><span id="Parser-3821"><a href="#Parser-3821"><span class="linenos">3821</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> -</span><span id="Parser-3822"><a href="#Parser-3822"><span class="linenos">3822</span></a> <span class="p">):</span> -</span><span id="Parser-3823"><a href="#Parser-3823"><span class="linenos">3823</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3824"><a href="#Parser-3824"><span class="linenos">3824</span></a> -</span><span id="Parser-3825"><a href="#Parser-3825"><span class="linenos">3825</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"FILL"</span><span class="p">):</span> -</span><span id="Parser-3826"><a href="#Parser-3826"><span class="linenos">3826</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3827"><a href="#Parser-3827"><span class="linenos">3827</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithFill</span><span class="p">,</span> -</span><span id="Parser-3828"><a href="#Parser-3828"><span class="linenos">3828</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-3829"><a href="#Parser-3829"><span class="linenos">3829</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Parser-3830"><a href="#Parser-3830"><span class="linenos">3830</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Parser-3831"><a href="#Parser-3831"><span class="linenos">3831</span></a> <span class="s2">"step"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STEP"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Parser-3832"><a href="#Parser-3832"><span class="linenos">3832</span></a> <span class="p">},</span> -</span><span id="Parser-3833"><a href="#Parser-3833"><span class="linenos">3833</span></a> <span class="p">)</span> -</span><span id="Parser-3834"><a href="#Parser-3834"><span class="linenos">3834</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3835"><a href="#Parser-3835"><span class="linenos">3835</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3836"><a href="#Parser-3836"><span class="linenos">3836</span></a> -</span><span id="Parser-3837"><a href="#Parser-3837"><span class="linenos">3837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3838"><a href="#Parser-3838"><span class="linenos">3838</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">,</span> <span class="n">with_fill</span><span class="o">=</span><span class="n">with_fill</span> -</span><span id="Parser-3839"><a href="#Parser-3839"><span class="linenos">3839</span></a> <span class="p">)</span> -</span><span id="Parser-3840"><a href="#Parser-3840"><span class="linenos">3840</span></a> -</span><span id="Parser-3841"><a href="#Parser-3841"><span class="linenos">3841</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> -</span><span id="Parser-3842"><a href="#Parser-3842"><span class="linenos">3842</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-3843"><a href="#Parser-3843"><span class="linenos">3843</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-3844"><a href="#Parser-3844"><span class="linenos">3844</span></a> <span class="n">top</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="Parser-3845"><a href="#Parser-3845"><span class="linenos">3845</span></a> <span class="n">skip_limit_token</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="Parser-3846"><a href="#Parser-3846"><span class="linenos">3846</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3847"><a href="#Parser-3847"><span class="linenos">3847</span></a> <span class="k">if</span> <span class="n">skip_limit_token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> -</span><span id="Parser-3848"><a href="#Parser-3848"><span class="linenos">3848</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-3849"><a href="#Parser-3849"><span class="linenos">3849</span></a> <span class="k">if</span> <span class="n">top</span><span class="p">:</span> -</span><span id="Parser-3850"><a href="#Parser-3850"><span class="linenos">3850</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="Parser-3851"><a href="#Parser-3851"><span class="linenos">3851</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> <span class="k">if</span> <span class="n">limit_paren</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-3852"><a href="#Parser-3852"><span class="linenos">3852</span></a> -</span><span id="Parser-3853"><a href="#Parser-3853"><span class="linenos">3853</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> -</span><span id="Parser-3854"><a href="#Parser-3854"><span class="linenos">3854</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3855"><a href="#Parser-3855"><span class="linenos">3855</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3856"><a href="#Parser-3856"><span class="linenos">3856</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-3857"><a href="#Parser-3857"><span class="linenos">3857</span></a> -</span><span id="Parser-3858"><a href="#Parser-3858"><span class="linenos">3858</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-3859"><a href="#Parser-3859"><span class="linenos">3859</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="Parser-3860"><a href="#Parser-3860"><span class="linenos">3860</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3815"><a href="#Parser-3815"><span class="linenos">3815</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">)</span> +</span><span id="Parser-3816"><a href="#Parser-3816"><span class="linenos">3816</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULLS"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">)</span> +</span><span id="Parser-3817"><a href="#Parser-3817"><span class="linenos">3817</span></a> +</span><span id="Parser-3818"><a href="#Parser-3818"><span class="linenos">3818</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> +</span><span id="Parser-3819"><a href="#Parser-3819"><span class="linenos">3819</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> +</span><span id="Parser-3820"><a href="#Parser-3820"><span class="linenos">3820</span></a> +</span><span id="Parser-3821"><a href="#Parser-3821"><span class="linenos">3821</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-3822"><a href="#Parser-3822"><span class="linenos">3822</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> +</span><span id="Parser-3823"><a href="#Parser-3823"><span class="linenos">3823</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Parser-3824"><a href="#Parser-3824"><span class="linenos">3824</span></a> <span class="p">(</span><span class="ow">not</span> <span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="Parser-3825"><a href="#Parser-3825"><span class="linenos">3825</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="Parser-3826"><a href="#Parser-3826"><span class="linenos">3826</span></a> <span class="p">)</span> +</span><span id="Parser-3827"><a href="#Parser-3827"><span class="linenos">3827</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NULL_ORDERING</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> +</span><span id="Parser-3828"><a href="#Parser-3828"><span class="linenos">3828</span></a> <span class="p">):</span> +</span><span id="Parser-3829"><a href="#Parser-3829"><span class="linenos">3829</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3830"><a href="#Parser-3830"><span class="linenos">3830</span></a> +</span><span id="Parser-3831"><a href="#Parser-3831"><span class="linenos">3831</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"FILL"</span><span class="p">):</span> +</span><span id="Parser-3832"><a href="#Parser-3832"><span class="linenos">3832</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3833"><a href="#Parser-3833"><span class="linenos">3833</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithFill</span><span class="p">,</span> +</span><span id="Parser-3834"><a href="#Parser-3834"><span class="linenos">3834</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-3835"><a href="#Parser-3835"><span class="linenos">3835</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Parser-3836"><a href="#Parser-3836"><span class="linenos">3836</span></a> <span class="s2">"to"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Parser-3837"><a href="#Parser-3837"><span class="linenos">3837</span></a> <span class="s2">"step"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STEP"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Parser-3838"><a href="#Parser-3838"><span class="linenos">3838</span></a> <span class="p">},</span> +</span><span id="Parser-3839"><a href="#Parser-3839"><span class="linenos">3839</span></a> <span class="p">)</span> +</span><span id="Parser-3840"><a href="#Parser-3840"><span class="linenos">3840</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3841"><a href="#Parser-3841"><span class="linenos">3841</span></a> <span class="n">with_fill</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3842"><a href="#Parser-3842"><span class="linenos">3842</span></a> +</span><span id="Parser-3843"><a href="#Parser-3843"><span class="linenos">3843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3844"><a href="#Parser-3844"><span class="linenos">3844</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">,</span> <span class="n">with_fill</span><span class="o">=</span><span class="n">with_fill</span> +</span><span id="Parser-3845"><a href="#Parser-3845"><span class="linenos">3845</span></a> <span class="p">)</span> +</span><span id="Parser-3846"><a href="#Parser-3846"><span class="linenos">3846</span></a> +</span><span id="Parser-3847"><a href="#Parser-3847"><span class="linenos">3847</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> +</span><span id="Parser-3848"><a href="#Parser-3848"><span class="linenos">3848</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-3849"><a href="#Parser-3849"><span class="linenos">3849</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-3850"><a href="#Parser-3850"><span class="linenos">3850</span></a> <span class="n">top</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="Parser-3851"><a href="#Parser-3851"><span class="linenos">3851</span></a> <span class="n">skip_limit_token</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="Parser-3852"><a href="#Parser-3852"><span class="linenos">3852</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3853"><a href="#Parser-3853"><span class="linenos">3853</span></a> <span class="k">if</span> <span class="n">skip_limit_token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> +</span><span id="Parser-3854"><a href="#Parser-3854"><span class="linenos">3854</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-3855"><a href="#Parser-3855"><span class="linenos">3855</span></a> <span class="k">if</span> <span class="n">top</span><span class="p">:</span> +</span><span id="Parser-3856"><a href="#Parser-3856"><span class="linenos">3856</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="Parser-3857"><a href="#Parser-3857"><span class="linenos">3857</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> <span class="k">if</span> <span class="n">limit_paren</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-3858"><a href="#Parser-3858"><span class="linenos">3858</span></a> +</span><span id="Parser-3859"><a href="#Parser-3859"><span class="linenos">3859</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> +</span><span id="Parser-3860"><a href="#Parser-3860"><span class="linenos">3860</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> </span><span id="Parser-3861"><a href="#Parser-3861"><span class="linenos">3861</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3862"><a href="#Parser-3862"><span class="linenos">3862</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3862"><a href="#Parser-3862"><span class="linenos">3862</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> </span><span id="Parser-3863"><a href="#Parser-3863"><span class="linenos">3863</span></a> -</span><span id="Parser-3864"><a href="#Parser-3864"><span class="linenos">3864</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3865"><a href="#Parser-3865"><span class="linenos">3865</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> -</span><span id="Parser-3866"><a href="#Parser-3866"><span class="linenos">3866</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3867"><a href="#Parser-3867"><span class="linenos">3867</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-3868"><a href="#Parser-3868"><span class="linenos">3868</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> -</span><span id="Parser-3869"><a href="#Parser-3869"><span class="linenos">3869</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-3870"><a href="#Parser-3870"><span class="linenos">3870</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">(),</span> -</span><span id="Parser-3871"><a href="#Parser-3871"><span class="linenos">3871</span></a> <span class="p">)</span> -</span><span id="Parser-3872"><a href="#Parser-3872"><span class="linenos">3872</span></a> -</span><span id="Parser-3873"><a href="#Parser-3873"><span class="linenos">3873</span></a> <span class="k">return</span> <span class="n">limit_exp</span> -</span><span id="Parser-3874"><a href="#Parser-3874"><span class="linenos">3874</span></a> -</span><span id="Parser-3875"><a href="#Parser-3875"><span class="linenos">3875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> -</span><span id="Parser-3876"><a href="#Parser-3876"><span class="linenos">3876</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> -</span><span id="Parser-3877"><a href="#Parser-3877"><span class="linenos">3877</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> +</span><span id="Parser-3864"><a href="#Parser-3864"><span class="linenos">3864</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-3865"><a href="#Parser-3865"><span class="linenos">3865</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="Parser-3866"><a href="#Parser-3866"><span class="linenos">3866</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3867"><a href="#Parser-3867"><span class="linenos">3867</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3868"><a href="#Parser-3868"><span class="linenos">3868</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3869"><a href="#Parser-3869"><span class="linenos">3869</span></a> +</span><span id="Parser-3870"><a href="#Parser-3870"><span class="linenos">3870</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3871"><a href="#Parser-3871"><span class="linenos">3871</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> +</span><span id="Parser-3872"><a href="#Parser-3872"><span class="linenos">3872</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3873"><a href="#Parser-3873"><span class="linenos">3873</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-3874"><a href="#Parser-3874"><span class="linenos">3874</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> +</span><span id="Parser-3875"><a href="#Parser-3875"><span class="linenos">3875</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-3876"><a href="#Parser-3876"><span class="linenos">3876</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">(),</span> +</span><span id="Parser-3877"><a href="#Parser-3877"><span class="linenos">3877</span></a> <span class="p">)</span> </span><span id="Parser-3878"><a href="#Parser-3878"><span class="linenos">3878</span></a> -</span><span id="Parser-3879"><a href="#Parser-3879"><span class="linenos">3879</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">FETCH_TOKENS</span><span class="p">)</span> -</span><span id="Parser-3880"><a href="#Parser-3880"><span class="linenos">3880</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> -</span><span id="Parser-3881"><a href="#Parser-3881"><span class="linenos">3881</span></a> -</span><span id="Parser-3882"><a href="#Parser-3882"><span class="linenos">3882</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="Parser-3883"><a href="#Parser-3883"><span class="linenos">3883</span></a> -</span><span id="Parser-3884"><a href="#Parser-3884"><span class="linenos">3884</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> -</span><span id="Parser-3885"><a href="#Parser-3885"><span class="linenos">3885</span></a> <span class="n">with_ties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIES"</span><span class="p">)</span> -</span><span id="Parser-3886"><a href="#Parser-3886"><span class="linenos">3886</span></a> -</span><span id="Parser-3887"><a href="#Parser-3887"><span class="linenos">3887</span></a> <span class="k">if</span> <span class="n">only</span> <span class="ow">and</span> <span class="n">with_ties</span><span class="p">:</span> -</span><span id="Parser-3888"><a href="#Parser-3888"><span class="linenos">3888</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ONLY and WITH TIES in FETCH clause"</span><span class="p">)</span> +</span><span id="Parser-3879"><a href="#Parser-3879"><span class="linenos">3879</span></a> <span class="k">return</span> <span class="n">limit_exp</span> +</span><span id="Parser-3880"><a href="#Parser-3880"><span class="linenos">3880</span></a> +</span><span id="Parser-3881"><a href="#Parser-3881"><span class="linenos">3881</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> +</span><span id="Parser-3882"><a href="#Parser-3882"><span class="linenos">3882</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> +</span><span id="Parser-3883"><a href="#Parser-3883"><span class="linenos">3883</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> +</span><span id="Parser-3884"><a href="#Parser-3884"><span class="linenos">3884</span></a> +</span><span id="Parser-3885"><a href="#Parser-3885"><span class="linenos">3885</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">FETCH_TOKENS</span><span class="p">)</span> +</span><span id="Parser-3886"><a href="#Parser-3886"><span class="linenos">3886</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> +</span><span id="Parser-3887"><a href="#Parser-3887"><span class="linenos">3887</span></a> +</span><span id="Parser-3888"><a href="#Parser-3888"><span class="linenos">3888</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> </span><span id="Parser-3889"><a href="#Parser-3889"><span class="linenos">3889</span></a> -</span><span id="Parser-3890"><a href="#Parser-3890"><span class="linenos">3890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3891"><a href="#Parser-3891"><span class="linenos">3891</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> -</span><span id="Parser-3892"><a href="#Parser-3892"><span class="linenos">3892</span></a> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> -</span><span id="Parser-3893"><a href="#Parser-3893"><span class="linenos">3893</span></a> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> -</span><span id="Parser-3894"><a href="#Parser-3894"><span class="linenos">3894</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> -</span><span id="Parser-3895"><a href="#Parser-3895"><span class="linenos">3895</span></a> <span class="n">with_ties</span><span class="o">=</span><span class="n">with_ties</span><span class="p">,</span> -</span><span id="Parser-3896"><a href="#Parser-3896"><span class="linenos">3896</span></a> <span class="p">)</span> -</span><span id="Parser-3897"><a href="#Parser-3897"><span class="linenos">3897</span></a> -</span><span id="Parser-3898"><a href="#Parser-3898"><span class="linenos">3898</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3899"><a href="#Parser-3899"><span class="linenos">3899</span></a> -</span><span id="Parser-3900"><a href="#Parser-3900"><span class="linenos">3900</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3901"><a href="#Parser-3901"><span class="linenos">3901</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> -</span><span id="Parser-3902"><a href="#Parser-3902"><span class="linenos">3902</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3890"><a href="#Parser-3890"><span class="linenos">3890</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> +</span><span id="Parser-3891"><a href="#Parser-3891"><span class="linenos">3891</span></a> <span class="n">with_ties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIES"</span><span class="p">)</span> +</span><span id="Parser-3892"><a href="#Parser-3892"><span class="linenos">3892</span></a> +</span><span id="Parser-3893"><a href="#Parser-3893"><span class="linenos">3893</span></a> <span class="k">if</span> <span class="n">only</span> <span class="ow">and</span> <span class="n">with_ties</span><span class="p">:</span> +</span><span id="Parser-3894"><a href="#Parser-3894"><span class="linenos">3894</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ONLY and WITH TIES in FETCH clause"</span><span class="p">)</span> +</span><span id="Parser-3895"><a href="#Parser-3895"><span class="linenos">3895</span></a> +</span><span id="Parser-3896"><a href="#Parser-3896"><span class="linenos">3896</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3897"><a href="#Parser-3897"><span class="linenos">3897</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> +</span><span id="Parser-3898"><a href="#Parser-3898"><span class="linenos">3898</span></a> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> +</span><span id="Parser-3899"><a href="#Parser-3899"><span class="linenos">3899</span></a> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> +</span><span id="Parser-3900"><a href="#Parser-3900"><span class="linenos">3900</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> +</span><span id="Parser-3901"><a href="#Parser-3901"><span class="linenos">3901</span></a> <span class="n">with_ties</span><span class="o">=</span><span class="n">with_ties</span><span class="p">,</span> +</span><span id="Parser-3902"><a href="#Parser-3902"><span class="linenos">3902</span></a> <span class="p">)</span> </span><span id="Parser-3903"><a href="#Parser-3903"><span class="linenos">3903</span></a> -</span><span id="Parser-3904"><a href="#Parser-3904"><span class="linenos">3904</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-3905"><a href="#Parser-3905"><span class="linenos">3905</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="Parser-3906"><a href="#Parser-3906"><span class="linenos">3906</span></a> -</span><span id="Parser-3907"><a href="#Parser-3907"><span class="linenos">3907</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3908"><a href="#Parser-3908"><span class="linenos">3908</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">()</span> -</span><span id="Parser-3909"><a href="#Parser-3909"><span class="linenos">3909</span></a> <span class="p">)</span> -</span><span id="Parser-3910"><a href="#Parser-3910"><span class="linenos">3910</span></a> -</span><span id="Parser-3911"><a href="#Parser-3911"><span class="linenos">3911</span></a> <span class="k">def</span> <span class="nf">_parse_limit_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3912"><a href="#Parser-3912"><span class="linenos">3912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-3913"><a href="#Parser-3913"><span class="linenos">3913</span></a> -</span><span id="Parser-3914"><a href="#Parser-3914"><span class="linenos">3914</span></a> <span class="k">def</span> <span class="nf">_parse_locks</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">]:</span> -</span><span id="Parser-3915"><a href="#Parser-3915"><span class="linenos">3915</span></a> <span class="n">locks</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3916"><a href="#Parser-3916"><span class="linenos">3916</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-3917"><a href="#Parser-3917"><span class="linenos">3917</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> -</span><span id="Parser-3918"><a href="#Parser-3918"><span class="linenos">3918</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3919"><a href="#Parser-3919"><span class="linenos">3919</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> -</span><span id="Parser-3920"><a href="#Parser-3920"><span class="linenos">3920</span></a> <span class="s2">"LOCK"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">,</span> <span class="s2">"MODE"</span> -</span><span id="Parser-3921"><a href="#Parser-3921"><span class="linenos">3921</span></a> <span class="p">):</span> -</span><span id="Parser-3922"><a href="#Parser-3922"><span class="linenos">3922</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3923"><a href="#Parser-3923"><span class="linenos">3923</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3924"><a href="#Parser-3924"><span class="linenos">3924</span></a> <span class="k">break</span> -</span><span id="Parser-3925"><a href="#Parser-3925"><span class="linenos">3925</span></a> -</span><span id="Parser-3926"><a href="#Parser-3926"><span class="linenos">3926</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3927"><a href="#Parser-3927"><span class="linenos">3927</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> -</span><span id="Parser-3928"><a href="#Parser-3928"><span class="linenos">3928</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-3929"><a href="#Parser-3929"><span class="linenos">3929</span></a> -</span><span id="Parser-3930"><a href="#Parser-3930"><span class="linenos">3930</span></a> <span class="n">wait</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="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3931"><a href="#Parser-3931"><span class="linenos">3931</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOWAIT"</span><span class="p">):</span> -</span><span id="Parser-3932"><a href="#Parser-3932"><span class="linenos">3932</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-3933"><a href="#Parser-3933"><span class="linenos">3933</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WAIT"</span><span class="p">):</span> -</span><span id="Parser-3934"><a href="#Parser-3934"><span class="linenos">3934</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-3935"><a href="#Parser-3935"><span class="linenos">3935</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SKIP"</span><span class="p">,</span> <span class="s2">"LOCKED"</span><span class="p">):</span> -</span><span id="Parser-3936"><a href="#Parser-3936"><span class="linenos">3936</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3937"><a href="#Parser-3937"><span class="linenos">3937</span></a> -</span><span id="Parser-3938"><a href="#Parser-3938"><span class="linenos">3938</span></a> <span class="n">locks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-3939"><a href="#Parser-3939"><span class="linenos">3939</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait</span><span class="p">)</span> -</span><span id="Parser-3940"><a href="#Parser-3940"><span class="linenos">3940</span></a> <span class="p">)</span> -</span><span id="Parser-3941"><a href="#Parser-3941"><span class="linenos">3941</span></a> -</span><span id="Parser-3942"><a href="#Parser-3942"><span class="linenos">3942</span></a> <span class="k">return</span> <span class="n">locks</span> +</span><span id="Parser-3904"><a href="#Parser-3904"><span class="linenos">3904</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3905"><a href="#Parser-3905"><span class="linenos">3905</span></a> +</span><span id="Parser-3906"><a href="#Parser-3906"><span class="linenos">3906</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3907"><a href="#Parser-3907"><span class="linenos">3907</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> +</span><span id="Parser-3908"><a href="#Parser-3908"><span class="linenos">3908</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3909"><a href="#Parser-3909"><span class="linenos">3909</span></a> +</span><span id="Parser-3910"><a href="#Parser-3910"><span class="linenos">3910</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3911"><a href="#Parser-3911"><span class="linenos">3911</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> +</span><span id="Parser-3912"><a href="#Parser-3912"><span class="linenos">3912</span></a> +</span><span id="Parser-3913"><a href="#Parser-3913"><span class="linenos">3913</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3914"><a href="#Parser-3914"><span class="linenos">3914</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit_by</span><span class="p">()</span> +</span><span id="Parser-3915"><a href="#Parser-3915"><span class="linenos">3915</span></a> <span class="p">)</span> +</span><span id="Parser-3916"><a href="#Parser-3916"><span class="linenos">3916</span></a> +</span><span id="Parser-3917"><a href="#Parser-3917"><span class="linenos">3917</span></a> <span class="k">def</span> <span class="nf">_parse_limit_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3918"><a href="#Parser-3918"><span class="linenos">3918</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-3919"><a href="#Parser-3919"><span class="linenos">3919</span></a> +</span><span id="Parser-3920"><a href="#Parser-3920"><span class="linenos">3920</span></a> <span class="k">def</span> <span class="nf">_parse_locks</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">]:</span> +</span><span id="Parser-3921"><a href="#Parser-3921"><span class="linenos">3921</span></a> <span class="n">locks</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3922"><a href="#Parser-3922"><span class="linenos">3922</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-3923"><a href="#Parser-3923"><span class="linenos">3923</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> +</span><span id="Parser-3924"><a href="#Parser-3924"><span class="linenos">3924</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3925"><a href="#Parser-3925"><span class="linenos">3925</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> +</span><span id="Parser-3926"><a href="#Parser-3926"><span class="linenos">3926</span></a> <span class="s2">"LOCK"</span><span class="p">,</span> <span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">,</span> <span class="s2">"MODE"</span> +</span><span id="Parser-3927"><a href="#Parser-3927"><span class="linenos">3927</span></a> <span class="p">):</span> +</span><span id="Parser-3928"><a href="#Parser-3928"><span class="linenos">3928</span></a> <span class="n">update</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3929"><a href="#Parser-3929"><span class="linenos">3929</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3930"><a href="#Parser-3930"><span class="linenos">3930</span></a> <span class="k">break</span> +</span><span id="Parser-3931"><a href="#Parser-3931"><span class="linenos">3931</span></a> +</span><span id="Parser-3932"><a href="#Parser-3932"><span class="linenos">3932</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3933"><a href="#Parser-3933"><span class="linenos">3933</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OF"</span><span class="p">):</span> +</span><span id="Parser-3934"><a href="#Parser-3934"><span class="linenos">3934</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-3935"><a href="#Parser-3935"><span class="linenos">3935</span></a> +</span><span id="Parser-3936"><a href="#Parser-3936"><span class="linenos">3936</span></a> <span class="n">wait</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="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3937"><a href="#Parser-3937"><span class="linenos">3937</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOWAIT"</span><span class="p">):</span> +</span><span id="Parser-3938"><a href="#Parser-3938"><span class="linenos">3938</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-3939"><a href="#Parser-3939"><span class="linenos">3939</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WAIT"</span><span class="p">):</span> +</span><span id="Parser-3940"><a href="#Parser-3940"><span class="linenos">3940</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-3941"><a href="#Parser-3941"><span class="linenos">3941</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SKIP"</span><span class="p">,</span> <span class="s2">"LOCKED"</span><span class="p">):</span> +</span><span id="Parser-3942"><a href="#Parser-3942"><span class="linenos">3942</span></a> <span class="n">wait</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Parser-3943"><a href="#Parser-3943"><span class="linenos">3943</span></a> -</span><span id="Parser-3944"><a href="#Parser-3944"><span class="linenos">3944</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3945"><a href="#Parser-3945"><span class="linenos">3945</span></a> <span class="k">while</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> -</span><span id="Parser-3946"><a href="#Parser-3946"><span class="linenos">3946</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-3944"><a href="#Parser-3944"><span class="linenos">3944</span></a> <span class="n">locks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-3945"><a href="#Parser-3945"><span class="linenos">3945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait</span><span class="p">)</span> +</span><span id="Parser-3946"><a href="#Parser-3946"><span class="linenos">3946</span></a> <span class="p">)</span> </span><span id="Parser-3947"><a href="#Parser-3947"><span class="linenos">3947</span></a> -</span><span id="Parser-3948"><a href="#Parser-3948"><span class="linenos">3948</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> -</span><span id="Parser-3949"><a href="#Parser-3949"><span class="linenos">3949</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> -</span><span id="Parser-3950"><a href="#Parser-3950"><span class="linenos">3950</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> -</span><span id="Parser-3951"><a href="#Parser-3951"><span class="linenos">3951</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> -</span><span id="Parser-3952"><a href="#Parser-3952"><span class="linenos">3952</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3953"><a href="#Parser-3953"><span class="linenos">3953</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> -</span><span id="Parser-3954"><a href="#Parser-3954"><span class="linenos">3954</span></a> -</span><span id="Parser-3955"><a href="#Parser-3955"><span class="linenos">3955</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> -</span><span id="Parser-3956"><a href="#Parser-3956"><span class="linenos">3956</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> -</span><span id="Parser-3957"><a href="#Parser-3957"><span class="linenos">3957</span></a> <span class="n">by_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">)</span> -</span><span id="Parser-3958"><a href="#Parser-3958"><span class="linenos">3958</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3959"><a href="#Parser-3959"><span class="linenos">3959</span></a> -</span><span id="Parser-3960"><a href="#Parser-3960"><span class="linenos">3960</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3961"><a href="#Parser-3961"><span class="linenos">3961</span></a> <span class="n">operation</span><span class="p">,</span> -</span><span id="Parser-3962"><a href="#Parser-3962"><span class="linenos">3962</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-3963"><a href="#Parser-3963"><span class="linenos">3963</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3964"><a href="#Parser-3964"><span class="linenos">3964</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> -</span><span id="Parser-3965"><a href="#Parser-3965"><span class="linenos">3965</span></a> <span class="n">by_name</span><span class="o">=</span><span class="n">by_name</span><span class="p">,</span> -</span><span id="Parser-3966"><a href="#Parser-3966"><span class="linenos">3966</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-3967"><a href="#Parser-3967"><span class="linenos">3967</span></a> <span class="p">)</span> -</span><span id="Parser-3968"><a href="#Parser-3968"><span class="linenos">3968</span></a> -</span><span id="Parser-3969"><a href="#Parser-3969"><span class="linenos">3969</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIERS_ATTACHED_TO_UNION</span><span class="p">:</span> -</span><span id="Parser-3970"><a href="#Parser-3970"><span class="linenos">3970</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">expression</span> -</span><span id="Parser-3971"><a href="#Parser-3971"><span class="linenos">3971</span></a> -</span><span id="Parser-3972"><a href="#Parser-3972"><span class="linenos">3972</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-3973"><a href="#Parser-3973"><span class="linenos">3973</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNION_MODIFIERS</span><span class="p">:</span> -</span><span id="Parser-3974"><a href="#Parser-3974"><span class="linenos">3974</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="Parser-3975"><a href="#Parser-3975"><span class="linenos">3975</span></a> <span class="k">if</span> <span class="n">expr</span><span class="p">:</span> -</span><span id="Parser-3976"><a href="#Parser-3976"><span class="linenos">3976</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expr</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> +</span><span id="Parser-3948"><a href="#Parser-3948"><span class="linenos">3948</span></a> <span class="k">return</span> <span class="n">locks</span> +</span><span id="Parser-3949"><a href="#Parser-3949"><span class="linenos">3949</span></a> +</span><span id="Parser-3950"><a href="#Parser-3950"><span class="linenos">3950</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3951"><a href="#Parser-3951"><span class="linenos">3951</span></a> <span class="k">while</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> +</span><span id="Parser-3952"><a href="#Parser-3952"><span class="linenos">3952</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-3953"><a href="#Parser-3953"><span class="linenos">3953</span></a> +</span><span id="Parser-3954"><a href="#Parser-3954"><span class="linenos">3954</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> +</span><span id="Parser-3955"><a href="#Parser-3955"><span class="linenos">3955</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> +</span><span id="Parser-3956"><a href="#Parser-3956"><span class="linenos">3956</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> +</span><span id="Parser-3957"><a href="#Parser-3957"><span class="linenos">3957</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> +</span><span id="Parser-3958"><a href="#Parser-3958"><span class="linenos">3958</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3959"><a href="#Parser-3959"><span class="linenos">3959</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> +</span><span id="Parser-3960"><a href="#Parser-3960"><span class="linenos">3960</span></a> +</span><span id="Parser-3961"><a href="#Parser-3961"><span class="linenos">3961</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> +</span><span id="Parser-3962"><a href="#Parser-3962"><span class="linenos">3962</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> +</span><span id="Parser-3963"><a href="#Parser-3963"><span class="linenos">3963</span></a> <span class="n">by_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"NAME"</span><span class="p">)</span> +</span><span id="Parser-3964"><a href="#Parser-3964"><span class="linenos">3964</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_set_operation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3965"><a href="#Parser-3965"><span class="linenos">3965</span></a> +</span><span id="Parser-3966"><a href="#Parser-3966"><span class="linenos">3966</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3967"><a href="#Parser-3967"><span class="linenos">3967</span></a> <span class="n">operation</span><span class="p">,</span> +</span><span id="Parser-3968"><a href="#Parser-3968"><span class="linenos">3968</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-3969"><a href="#Parser-3969"><span class="linenos">3969</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3970"><a href="#Parser-3970"><span class="linenos">3970</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> +</span><span id="Parser-3971"><a href="#Parser-3971"><span class="linenos">3971</span></a> <span class="n">by_name</span><span class="o">=</span><span class="n">by_name</span><span class="p">,</span> +</span><span id="Parser-3972"><a href="#Parser-3972"><span class="linenos">3972</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-3973"><a href="#Parser-3973"><span class="linenos">3973</span></a> <span class="p">)</span> +</span><span id="Parser-3974"><a href="#Parser-3974"><span class="linenos">3974</span></a> +</span><span id="Parser-3975"><a href="#Parser-3975"><span class="linenos">3975</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIERS_ATTACHED_TO_UNION</span><span class="p">:</span> +</span><span id="Parser-3976"><a href="#Parser-3976"><span class="linenos">3976</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">expression</span> </span><span id="Parser-3977"><a href="#Parser-3977"><span class="linenos">3977</span></a> -</span><span id="Parser-3978"><a href="#Parser-3978"><span class="linenos">3978</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3979"><a href="#Parser-3979"><span class="linenos">3979</span></a> -</span><span id="Parser-3980"><a href="#Parser-3980"><span class="linenos">3980</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3981"><a href="#Parser-3981"><span class="linenos">3981</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="Parser-3982"><a href="#Parser-3982"><span class="linenos">3982</span></a> -</span><span id="Parser-3983"><a href="#Parser-3983"><span class="linenos">3983</span></a> <span class="k">def</span> <span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3984"><a href="#Parser-3984"><span class="linenos">3984</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_disjunction</span><span class="p">()</span> +</span><span id="Parser-3978"><a href="#Parser-3978"><span class="linenos">3978</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-3979"><a href="#Parser-3979"><span class="linenos">3979</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNION_MODIFIERS</span><span class="p">:</span> +</span><span id="Parser-3980"><a href="#Parser-3980"><span class="linenos">3980</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="Parser-3981"><a href="#Parser-3981"><span class="linenos">3981</span></a> <span class="k">if</span> <span class="n">expr</span><span class="p">:</span> +</span><span id="Parser-3982"><a href="#Parser-3982"><span class="linenos">3982</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expr</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> +</span><span id="Parser-3983"><a href="#Parser-3983"><span class="linenos">3983</span></a> +</span><span id="Parser-3984"><a href="#Parser-3984"><span class="linenos">3984</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-3985"><a href="#Parser-3985"><span class="linenos">3985</span></a> -</span><span id="Parser-3986"><a href="#Parser-3986"><span class="linenos">3986</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">):</span> -</span><span id="Parser-3987"><a href="#Parser-3987"><span class="linenos">3987</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3988"><a href="#Parser-3988"><span class="linenos">3988</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="Parser-3989"><a href="#Parser-3989"><span class="linenos">3989</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3990"><a href="#Parser-3990"><span class="linenos">3990</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="Parser-3991"><a href="#Parser-3991"><span class="linenos">3991</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-3992"><a href="#Parser-3992"><span class="linenos">3992</span></a> <span class="p">)</span> -</span><span id="Parser-3993"><a href="#Parser-3993"><span class="linenos">3993</span></a> -</span><span id="Parser-3994"><a href="#Parser-3994"><span class="linenos">3994</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3995"><a href="#Parser-3995"><span class="linenos">3995</span></a> -</span><span id="Parser-3996"><a href="#Parser-3996"><span class="linenos">3996</span></a> <span class="k">def</span> <span class="nf">_parse_disjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3997"><a href="#Parser-3997"><span class="linenos">3997</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">DISJUNCTION</span><span class="p">)</span> -</span><span id="Parser-3998"><a href="#Parser-3998"><span class="linenos">3998</span></a> -</span><span id="Parser-3999"><a href="#Parser-3999"><span class="linenos">3999</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4000"><a href="#Parser-4000"><span class="linenos">4000</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> +</span><span id="Parser-3986"><a href="#Parser-3986"><span class="linenos">3986</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3987"><a href="#Parser-3987"><span class="linenos">3987</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="Parser-3988"><a href="#Parser-3988"><span class="linenos">3988</span></a> +</span><span id="Parser-3989"><a href="#Parser-3989"><span class="linenos">3989</span></a> <span class="k">def</span> <span class="nf">_parse_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3990"><a href="#Parser-3990"><span class="linenos">3990</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_disjunction</span><span class="p">()</span> +</span><span id="Parser-3991"><a href="#Parser-3991"><span class="linenos">3991</span></a> +</span><span id="Parser-3992"><a href="#Parser-3992"><span class="linenos">3992</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">):</span> +</span><span id="Parser-3993"><a href="#Parser-3993"><span class="linenos">3993</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3994"><a href="#Parser-3994"><span class="linenos">3994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ASSIGNMENT</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="Parser-3995"><a href="#Parser-3995"><span class="linenos">3995</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3996"><a href="#Parser-3996"><span class="linenos">3996</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="Parser-3997"><a href="#Parser-3997"><span class="linenos">3997</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-3998"><a href="#Parser-3998"><span class="linenos">3998</span></a> <span class="p">)</span> +</span><span id="Parser-3999"><a href="#Parser-3999"><span class="linenos">3999</span></a> +</span><span id="Parser-4000"><a href="#Parser-4000"><span class="linenos">4000</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-4001"><a href="#Parser-4001"><span class="linenos">4001</span></a> -</span><span id="Parser-4002"><a href="#Parser-4002"><span class="linenos">4002</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4003"><a href="#Parser-4003"><span class="linenos">4003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> +</span><span id="Parser-4002"><a href="#Parser-4002"><span class="linenos">4002</span></a> <span class="k">def</span> <span class="nf">_parse_disjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4003"><a href="#Parser-4003"><span class="linenos">4003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">DISJUNCTION</span><span class="p">)</span> </span><span id="Parser-4004"><a href="#Parser-4004"><span class="linenos">4004</span></a> -</span><span id="Parser-4005"><a href="#Parser-4005"><span class="linenos">4005</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4006"><a href="#Parser-4006"><span class="linenos">4006</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> +</span><span id="Parser-4005"><a href="#Parser-4005"><span class="linenos">4005</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4006"><a href="#Parser-4006"><span class="linenos">4006</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> </span><span id="Parser-4007"><a href="#Parser-4007"><span class="linenos">4007</span></a> -</span><span id="Parser-4008"><a href="#Parser-4008"><span class="linenos">4008</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4009"><a href="#Parser-4009"><span class="linenos">4009</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-4010"><a href="#Parser-4010"><span class="linenos">4010</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="Parser-4011"><a href="#Parser-4011"><span class="linenos">4011</span></a> -</span><span id="Parser-4012"><a href="#Parser-4012"><span class="linenos">4012</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> -</span><span id="Parser-4013"><a href="#Parser-4013"><span class="linenos">4013</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4014"><a href="#Parser-4014"><span class="linenos">4014</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-4015"><a href="#Parser-4015"><span class="linenos">4015</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4016"><a href="#Parser-4016"><span class="linenos">4016</span></a> -</span><span id="Parser-4017"><a href="#Parser-4017"><span class="linenos">4017</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="Parser-4018"><a href="#Parser-4018"><span class="linenos">4018</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> -</span><span id="Parser-4019"><a href="#Parser-4019"><span class="linenos">4019</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="Parser-4020"><a href="#Parser-4020"><span class="linenos">4020</span></a> -</span><span id="Parser-4021"><a href="#Parser-4021"><span class="linenos">4021</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> -</span><span id="Parser-4022"><a href="#Parser-4022"><span class="linenos">4022</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> -</span><span id="Parser-4023"><a href="#Parser-4023"><span class="linenos">4023</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> -</span><span id="Parser-4024"><a href="#Parser-4024"><span class="linenos">4024</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="Parser-4025"><a href="#Parser-4025"><span class="linenos">4025</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4008"><a href="#Parser-4008"><span class="linenos">4008</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4009"><a href="#Parser-4009"><span class="linenos">4009</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> +</span><span id="Parser-4010"><a href="#Parser-4010"><span class="linenos">4010</span></a> +</span><span id="Parser-4011"><a href="#Parser-4011"><span class="linenos">4011</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4012"><a href="#Parser-4012"><span class="linenos">4012</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> +</span><span id="Parser-4013"><a href="#Parser-4013"><span class="linenos">4013</span></a> +</span><span id="Parser-4014"><a href="#Parser-4014"><span class="linenos">4014</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4015"><a href="#Parser-4015"><span class="linenos">4015</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-4016"><a href="#Parser-4016"><span class="linenos">4016</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="Parser-4017"><a href="#Parser-4017"><span class="linenos">4017</span></a> +</span><span id="Parser-4018"><a href="#Parser-4018"><span class="linenos">4018</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> +</span><span id="Parser-4019"><a href="#Parser-4019"><span class="linenos">4019</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4020"><a href="#Parser-4020"><span class="linenos">4020</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-4021"><a href="#Parser-4021"><span class="linenos">4021</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4022"><a href="#Parser-4022"><span class="linenos">4022</span></a> +</span><span id="Parser-4023"><a href="#Parser-4023"><span class="linenos">4023</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="Parser-4024"><a href="#Parser-4024"><span class="linenos">4024</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> +</span><span id="Parser-4025"><a href="#Parser-4025"><span class="linenos">4025</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> </span><span id="Parser-4026"><a href="#Parser-4026"><span class="linenos">4026</span></a> -</span><span id="Parser-4027"><a href="#Parser-4027"><span class="linenos">4027</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> -</span><span id="Parser-4028"><a href="#Parser-4028"><span class="linenos">4028</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4029"><a href="#Parser-4029"><span class="linenos">4029</span></a> -</span><span id="Parser-4030"><a href="#Parser-4030"><span class="linenos">4030</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> -</span><span id="Parser-4031"><a href="#Parser-4031"><span class="linenos">4031</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4027"><a href="#Parser-4027"><span class="linenos">4027</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> +</span><span id="Parser-4028"><a href="#Parser-4028"><span class="linenos">4028</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> +</span><span id="Parser-4029"><a href="#Parser-4029"><span class="linenos">4029</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> +</span><span id="Parser-4030"><a href="#Parser-4030"><span class="linenos">4030</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> +</span><span id="Parser-4031"><a href="#Parser-4031"><span class="linenos">4031</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> </span><span id="Parser-4032"><a href="#Parser-4032"><span class="linenos">4032</span></a> -</span><span id="Parser-4033"><a href="#Parser-4033"><span class="linenos">4033</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4034"><a href="#Parser-4034"><span class="linenos">4034</span></a> -</span><span id="Parser-4035"><a href="#Parser-4035"><span class="linenos">4035</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4036"><a href="#Parser-4036"><span class="linenos">4036</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="Parser-4037"><a href="#Parser-4037"><span class="linenos">4037</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="Parser-4033"><a href="#Parser-4033"><span class="linenos">4033</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> +</span><span id="Parser-4034"><a href="#Parser-4034"><span class="linenos">4034</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4035"><a href="#Parser-4035"><span class="linenos">4035</span></a> +</span><span id="Parser-4036"><a href="#Parser-4036"><span class="linenos">4036</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> +</span><span id="Parser-4037"><a href="#Parser-4037"><span class="linenos">4037</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> </span><span id="Parser-4038"><a href="#Parser-4038"><span class="linenos">4038</span></a> -</span><span id="Parser-4039"><a href="#Parser-4039"><span class="linenos">4039</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DISTINCT"</span><span class="p">,</span> <span class="s2">"FROM"</span><span class="p">):</span> -</span><span id="Parser-4040"><a href="#Parser-4040"><span class="linenos">4040</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> -</span><span id="Parser-4041"><a href="#Parser-4041"><span class="linenos">4041</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4042"><a href="#Parser-4042"><span class="linenos">4042</span></a> -</span><span id="Parser-4043"><a href="#Parser-4043"><span class="linenos">4043</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">()</span> -</span><span id="Parser-4044"><a href="#Parser-4044"><span class="linenos">4044</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-4045"><a href="#Parser-4045"><span class="linenos">4045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4046"><a href="#Parser-4046"><span class="linenos">4046</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4047"><a href="#Parser-4047"><span class="linenos">4047</span></a> -</span><span id="Parser-4048"><a href="#Parser-4048"><span class="linenos">4048</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-4049"><a href="#Parser-4049"><span class="linenos">4049</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="Parser-4050"><a href="#Parser-4050"><span class="linenos">4050</span></a> -</span><span id="Parser-4051"><a href="#Parser-4051"><span class="linenos">4051</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> -</span><span id="Parser-4052"><a href="#Parser-4052"><span class="linenos">4052</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">(</span><span class="n">with_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4053"><a href="#Parser-4053"><span class="linenos">4053</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="Parser-4054"><a href="#Parser-4054"><span class="linenos">4054</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="Parser-4055"><a href="#Parser-4055"><span class="linenos">4055</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)):</span> -</span><span id="Parser-4056"><a href="#Parser-4056"><span class="linenos">4056</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span> -</span><span id="Parser-4057"><a href="#Parser-4057"><span class="linenos">4057</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> -</span><span id="Parser-4058"><a href="#Parser-4058"><span class="linenos">4058</span></a> -</span><span id="Parser-4059"><a href="#Parser-4059"><span class="linenos">4059</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> -</span><span id="Parser-4060"><a href="#Parser-4060"><span class="linenos">4060</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Parser-4061"><a href="#Parser-4061"><span class="linenos">4061</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4062"><a href="#Parser-4062"><span class="linenos">4062</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4063"><a href="#Parser-4063"><span class="linenos">4063</span></a> -</span><span id="Parser-4064"><a href="#Parser-4064"><span class="linenos">4064</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> -</span><span id="Parser-4065"><a href="#Parser-4065"><span class="linenos">4065</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4066"><a href="#Parser-4066"><span class="linenos">4066</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">):</span> -</span><span id="Parser-4067"><a href="#Parser-4067"><span class="linenos">4067</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> -</span><span id="Parser-4068"><a href="#Parser-4068"><span class="linenos">4068</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4069"><a href="#Parser-4069"><span class="linenos">4069</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-4070"><a href="#Parser-4070"><span class="linenos">4070</span></a> -</span><span id="Parser-4071"><a href="#Parser-4071"><span class="linenos">4071</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4072"><a href="#Parser-4072"><span class="linenos">4072</span></a> -</span><span id="Parser-4073"><a href="#Parser-4073"><span class="linenos">4073</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">:</span> -</span><span id="Parser-4074"><a href="#Parser-4074"><span class="linenos">4074</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-4075"><a href="#Parser-4075"><span class="linenos">4075</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="Parser-4076"><a href="#Parser-4076"><span class="linenos">4076</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-4077"><a href="#Parser-4077"><span class="linenos">4077</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="Parser-4039"><a href="#Parser-4039"><span class="linenos">4039</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4040"><a href="#Parser-4040"><span class="linenos">4040</span></a> +</span><span id="Parser-4041"><a href="#Parser-4041"><span class="linenos">4041</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4042"><a href="#Parser-4042"><span class="linenos">4042</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="Parser-4043"><a href="#Parser-4043"><span class="linenos">4043</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="Parser-4044"><a href="#Parser-4044"><span class="linenos">4044</span></a> +</span><span id="Parser-4045"><a href="#Parser-4045"><span class="linenos">4045</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DISTINCT"</span><span class="p">,</span> <span class="s2">"FROM"</span><span class="p">):</span> +</span><span id="Parser-4046"><a href="#Parser-4046"><span class="linenos">4046</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> +</span><span id="Parser-4047"><a href="#Parser-4047"><span class="linenos">4047</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-4048"><a href="#Parser-4048"><span class="linenos">4048</span></a> +</span><span id="Parser-4049"><a href="#Parser-4049"><span class="linenos">4049</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">()</span> +</span><span id="Parser-4050"><a href="#Parser-4050"><span class="linenos">4050</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-4051"><a href="#Parser-4051"><span class="linenos">4051</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4052"><a href="#Parser-4052"><span class="linenos">4052</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4053"><a href="#Parser-4053"><span class="linenos">4053</span></a> +</span><span id="Parser-4054"><a href="#Parser-4054"><span class="linenos">4054</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-4055"><a href="#Parser-4055"><span class="linenos">4055</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="Parser-4056"><a href="#Parser-4056"><span class="linenos">4056</span></a> +</span><span id="Parser-4057"><a href="#Parser-4057"><span class="linenos">4057</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">:</span> +</span><span id="Parser-4058"><a href="#Parser-4058"><span class="linenos">4058</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">(</span><span class="n">with_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4059"><a href="#Parser-4059"><span class="linenos">4059</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="Parser-4060"><a href="#Parser-4060"><span class="linenos">4060</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="Parser-4061"><a href="#Parser-4061"><span class="linenos">4061</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)):</span> +</span><span id="Parser-4062"><a href="#Parser-4062"><span class="linenos">4062</span></a> <span class="n">matched_l_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span> +</span><span id="Parser-4063"><a href="#Parser-4063"><span class="linenos">4063</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> +</span><span id="Parser-4064"><a href="#Parser-4064"><span class="linenos">4064</span></a> +</span><span id="Parser-4065"><a href="#Parser-4065"><span class="linenos">4065</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">):</span> +</span><span id="Parser-4066"><a href="#Parser-4066"><span class="linenos">4066</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Parser-4067"><a href="#Parser-4067"><span class="linenos">4067</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4068"><a href="#Parser-4068"><span class="linenos">4068</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4069"><a href="#Parser-4069"><span class="linenos">4069</span></a> +</span><span id="Parser-4070"><a href="#Parser-4070"><span class="linenos">4070</span></a> <span class="k">if</span> <span class="n">matched_l_paren</span><span class="p">:</span> +</span><span id="Parser-4071"><a href="#Parser-4071"><span class="linenos">4071</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4072"><a href="#Parser-4072"><span class="linenos">4072</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">):</span> +</span><span id="Parser-4073"><a href="#Parser-4073"><span class="linenos">4073</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ]"</span><span class="p">)</span> +</span><span id="Parser-4074"><a href="#Parser-4074"><span class="linenos">4074</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4075"><a href="#Parser-4075"><span class="linenos">4075</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-4076"><a href="#Parser-4076"><span class="linenos">4076</span></a> +</span><span id="Parser-4077"><a href="#Parser-4077"><span class="linenos">4077</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-4078"><a href="#Parser-4078"><span class="linenos">4078</span></a> -</span><span id="Parser-4079"><a href="#Parser-4079"><span class="linenos">4079</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4080"><a href="#Parser-4080"><span class="linenos">4080</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> -</span><span id="Parser-4081"><a href="#Parser-4081"><span class="linenos">4081</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4082"><a href="#Parser-4082"><span class="linenos">4082</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="Parser-4083"><a href="#Parser-4083"><span class="linenos">4083</span></a> -</span><span id="Parser-4084"><a href="#Parser-4084"><span class="linenos">4084</span></a> <span class="k">def</span> <span class="nf">_parse_interval</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">]:</span> -</span><span id="Parser-4085"><a href="#Parser-4085"><span class="linenos">4085</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4086"><a href="#Parser-4086"><span class="linenos">4086</span></a> -</span><span id="Parser-4087"><a href="#Parser-4087"><span class="linenos">4087</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> <span class="ow">and</span> <span class="n">match_interval</span><span class="p">:</span> -</span><span id="Parser-4088"><a href="#Parser-4088"><span class="linenos">4088</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4079"><a href="#Parser-4079"><span class="linenos">4079</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">:</span> +</span><span id="Parser-4080"><a href="#Parser-4080"><span class="linenos">4080</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-4081"><a href="#Parser-4081"><span class="linenos">4081</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="Parser-4082"><a href="#Parser-4082"><span class="linenos">4082</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-4083"><a href="#Parser-4083"><span class="linenos">4083</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="Parser-4084"><a href="#Parser-4084"><span class="linenos">4084</span></a> +</span><span id="Parser-4085"><a href="#Parser-4085"><span class="linenos">4085</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4086"><a href="#Parser-4086"><span class="linenos">4086</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> +</span><span id="Parser-4087"><a href="#Parser-4087"><span class="linenos">4087</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4088"><a href="#Parser-4088"><span class="linenos">4088</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> </span><span id="Parser-4089"><a href="#Parser-4089"><span class="linenos">4089</span></a> -</span><span id="Parser-4090"><a href="#Parser-4090"><span class="linenos">4090</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4091"><a href="#Parser-4091"><span class="linenos">4091</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-4092"><a href="#Parser-4092"><span class="linenos">4092</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4093"><a href="#Parser-4093"><span class="linenos">4093</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-4094"><a href="#Parser-4094"><span class="linenos">4094</span></a> -</span><span id="Parser-4095"><a href="#Parser-4095"><span class="linenos">4095</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="Parser-4096"><a href="#Parser-4096"><span class="linenos">4096</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> -</span><span id="Parser-4097"><a href="#Parser-4097"><span class="linenos">4097</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span> -</span><span id="Parser-4098"><a href="#Parser-4098"><span class="linenos">4098</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">quoted</span> -</span><span id="Parser-4099"><a href="#Parser-4099"><span class="linenos">4099</span></a> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"IS"</span> -</span><span id="Parser-4100"><a href="#Parser-4100"><span class="linenos">4100</span></a> <span class="p">):</span> -</span><span id="Parser-4101"><a href="#Parser-4101"><span class="linenos">4101</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4102"><a href="#Parser-4102"><span class="linenos">4102</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4103"><a href="#Parser-4103"><span class="linenos">4103</span></a> -</span><span id="Parser-4104"><a href="#Parser-4104"><span class="linenos">4104</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="Parser-4105"><a href="#Parser-4105"><span class="linenos">4105</span></a> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4106"><a href="#Parser-4106"><span class="linenos">4106</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4107"><a href="#Parser-4107"><span class="linenos">4107</span></a> <span class="p">)</span> -</span><span id="Parser-4108"><a href="#Parser-4108"><span class="linenos">4108</span></a> -</span><span id="Parser-4109"><a href="#Parser-4109"><span class="linenos">4109</span></a> <span class="c1"># Most dialects support, e.g., the form INTERVAL '5' day, thus we try to parse</span> -</span><span id="Parser-4110"><a href="#Parser-4110"><span class="linenos">4110</span></a> <span class="c1"># each INTERVAL expression into this canonical form so it's easy to transpile</span> -</span><span id="Parser-4111"><a href="#Parser-4111"><span class="linenos">4111</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="Parser-4112"><a href="#Parser-4112"><span class="linenos">4112</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-4113"><a href="#Parser-4113"><span class="linenos">4113</span></a> <span class="k">elif</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Parser-4114"><a href="#Parser-4114"><span class="linenos">4114</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-4115"><a href="#Parser-4115"><span class="linenos">4115</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-4116"><a href="#Parser-4116"><span class="linenos">4116</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> -</span><span id="Parser-4117"><a href="#Parser-4117"><span class="linenos">4117</span></a> <span class="c1"># Unconsume the eagerly-parsed unit, since the real unit was part of the string</span> -</span><span id="Parser-4118"><a href="#Parser-4118"><span class="linenos">4118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-4119"><a href="#Parser-4119"><span class="linenos">4119</span></a> -</span><span id="Parser-4120"><a href="#Parser-4120"><span class="linenos">4120</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Parser-4121"><a href="#Parser-4121"><span class="linenos">4121</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-4122"><a href="#Parser-4122"><span class="linenos">4122</span></a> -</span><span id="Parser-4123"><a href="#Parser-4123"><span class="linenos">4123</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">INTERVAL_SPANS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="Parser-4124"><a href="#Parser-4124"><span class="linenos">4124</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4125"><a href="#Parser-4125"><span class="linenos">4125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4126"><a href="#Parser-4126"><span class="linenos">4126</span></a> <span class="p">)</span> -</span><span id="Parser-4127"><a href="#Parser-4127"><span class="linenos">4127</span></a> -</span><span id="Parser-4128"><a href="#Parser-4128"><span class="linenos">4128</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> -</span><span id="Parser-4129"><a href="#Parser-4129"><span class="linenos">4129</span></a> -</span><span id="Parser-4130"><a href="#Parser-4130"><span class="linenos">4130</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4131"><a href="#Parser-4131"><span class="linenos">4131</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">)</span> -</span><span id="Parser-4132"><a href="#Parser-4132"><span class="linenos">4132</span></a> -</span><span id="Parser-4133"><a href="#Parser-4133"><span class="linenos">4133</span></a> <span class="c1"># Convert INTERVAL 'val_1' unit_1 [+] ... [+] 'val_n' unit_n into a sum of intervals</span> -</span><span id="Parser-4134"><a href="#Parser-4134"><span class="linenos">4134</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4135"><a href="#Parser-4135"><span class="linenos">4135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4136"><a href="#Parser-4136"><span class="linenos">4136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">(</span><span class="n">match_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4137"><a href="#Parser-4137"><span class="linenos">4137</span></a> <span class="p">)</span> +</span><span id="Parser-4090"><a href="#Parser-4090"><span class="linenos">4090</span></a> <span class="k">def</span> <span class="nf">_parse_interval</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">]:</span> +</span><span id="Parser-4091"><a href="#Parser-4091"><span class="linenos">4091</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4092"><a href="#Parser-4092"><span class="linenos">4092</span></a> +</span><span id="Parser-4093"><a href="#Parser-4093"><span class="linenos">4093</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> <span class="ow">and</span> <span class="n">match_interval</span><span class="p">:</span> +</span><span id="Parser-4094"><a href="#Parser-4094"><span class="linenos">4094</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4095"><a href="#Parser-4095"><span class="linenos">4095</span></a> +</span><span id="Parser-4096"><a href="#Parser-4096"><span class="linenos">4096</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-4097"><a href="#Parser-4097"><span class="linenos">4097</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4098"><a href="#Parser-4098"><span class="linenos">4098</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4099"><a href="#Parser-4099"><span class="linenos">4099</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-4100"><a href="#Parser-4100"><span class="linenos">4100</span></a> +</span><span id="Parser-4101"><a href="#Parser-4101"><span class="linenos">4101</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="Parser-4102"><a href="#Parser-4102"><span class="linenos">4102</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> +</span><span id="Parser-4103"><a href="#Parser-4103"><span class="linenos">4103</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span> +</span><span id="Parser-4104"><a href="#Parser-4104"><span class="linenos">4104</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">quoted</span> +</span><span id="Parser-4105"><a href="#Parser-4105"><span class="linenos">4105</span></a> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"IS"</span> +</span><span id="Parser-4106"><a href="#Parser-4106"><span class="linenos">4106</span></a> <span class="p">):</span> +</span><span id="Parser-4107"><a href="#Parser-4107"><span class="linenos">4107</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4108"><a href="#Parser-4108"><span class="linenos">4108</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4109"><a href="#Parser-4109"><span class="linenos">4109</span></a> +</span><span id="Parser-4110"><a href="#Parser-4110"><span class="linenos">4110</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="Parser-4111"><a href="#Parser-4111"><span class="linenos">4111</span></a> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4112"><a href="#Parser-4112"><span class="linenos">4112</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4113"><a href="#Parser-4113"><span class="linenos">4113</span></a> <span class="p">)</span> +</span><span id="Parser-4114"><a href="#Parser-4114"><span class="linenos">4114</span></a> +</span><span id="Parser-4115"><a href="#Parser-4115"><span class="linenos">4115</span></a> <span class="c1"># Most dialects support, e.g., the form INTERVAL '5' day, thus we try to parse</span> +</span><span id="Parser-4116"><a href="#Parser-4116"><span class="linenos">4116</span></a> <span class="c1"># each INTERVAL expression into this canonical form so it's easy to transpile</span> +</span><span id="Parser-4117"><a href="#Parser-4117"><span class="linenos">4117</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="Parser-4118"><a href="#Parser-4118"><span class="linenos">4118</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-4119"><a href="#Parser-4119"><span class="linenos">4119</span></a> <span class="k">elif</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Parser-4120"><a href="#Parser-4120"><span class="linenos">4120</span></a> <span class="n">parts</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-4121"><a href="#Parser-4121"><span class="linenos">4121</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-4122"><a href="#Parser-4122"><span class="linenos">4122</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> +</span><span id="Parser-4123"><a href="#Parser-4123"><span class="linenos">4123</span></a> <span class="c1"># Unconsume the eagerly-parsed unit, since the real unit was part of the string</span> +</span><span id="Parser-4124"><a href="#Parser-4124"><span class="linenos">4124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-4125"><a href="#Parser-4125"><span class="linenos">4125</span></a> +</span><span id="Parser-4126"><a href="#Parser-4126"><span class="linenos">4126</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Parser-4127"><a href="#Parser-4127"><span class="linenos">4127</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-4128"><a href="#Parser-4128"><span class="linenos">4128</span></a> +</span><span id="Parser-4129"><a href="#Parser-4129"><span class="linenos">4129</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">INTERVAL_SPANS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="Parser-4130"><a href="#Parser-4130"><span class="linenos">4130</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4131"><a href="#Parser-4131"><span class="linenos">4131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4132"><a href="#Parser-4132"><span class="linenos">4132</span></a> <span class="p">)</span> +</span><span id="Parser-4133"><a href="#Parser-4133"><span class="linenos">4133</span></a> +</span><span id="Parser-4134"><a href="#Parser-4134"><span class="linenos">4134</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">)</span> +</span><span id="Parser-4135"><a href="#Parser-4135"><span class="linenos">4135</span></a> +</span><span id="Parser-4136"><a href="#Parser-4136"><span class="linenos">4136</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4137"><a href="#Parser-4137"><span class="linenos">4137</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">)</span> </span><span id="Parser-4138"><a href="#Parser-4138"><span class="linenos">4138</span></a> -</span><span id="Parser-4139"><a href="#Parser-4139"><span class="linenos">4139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4140"><a href="#Parser-4140"><span class="linenos">4140</span></a> <span class="k">return</span> <span class="n">interval</span> -</span><span id="Parser-4141"><a href="#Parser-4141"><span class="linenos">4141</span></a> -</span><span id="Parser-4142"><a href="#Parser-4142"><span class="linenos">4142</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4143"><a href="#Parser-4143"><span class="linenos">4143</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-4139"><a href="#Parser-4139"><span class="linenos">4139</span></a> <span class="c1"># Convert INTERVAL 'val_1' unit_1 [+] ... [+] 'val_n' unit_n into a sum of intervals</span> +</span><span id="Parser-4140"><a href="#Parser-4140"><span class="linenos">4140</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-4141"><a href="#Parser-4141"><span class="linenos">4141</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4142"><a href="#Parser-4142"><span class="linenos">4142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">(</span><span class="n">match_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4143"><a href="#Parser-4143"><span class="linenos">4143</span></a> <span class="p">)</span> </span><span id="Parser-4144"><a href="#Parser-4144"><span class="linenos">4144</span></a> -</span><span id="Parser-4145"><a href="#Parser-4145"><span class="linenos">4145</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-4146"><a href="#Parser-4146"><span class="linenos">4146</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> -</span><span id="Parser-4147"><a href="#Parser-4147"><span class="linenos">4147</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4148"><a href="#Parser-4148"><span class="linenos">4148</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="Parser-4149"><a href="#Parser-4149"><span class="linenos">4149</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-4150"><a href="#Parser-4150"><span class="linenos">4150</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="Parser-4151"><a href="#Parser-4151"><span class="linenos">4151</span></a> <span class="p">)</span> -</span><span id="Parser-4152"><a href="#Parser-4152"><span class="linenos">4152</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">):</span> +</span><span id="Parser-4145"><a href="#Parser-4145"><span class="linenos">4145</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4146"><a href="#Parser-4146"><span class="linenos">4146</span></a> <span class="k">return</span> <span class="n">interval</span> +</span><span id="Parser-4147"><a href="#Parser-4147"><span class="linenos">4147</span></a> +</span><span id="Parser-4148"><a href="#Parser-4148"><span class="linenos">4148</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4149"><a href="#Parser-4149"><span class="linenos">4149</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-4150"><a href="#Parser-4150"><span class="linenos">4150</span></a> +</span><span id="Parser-4151"><a href="#Parser-4151"><span class="linenos">4151</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-4152"><a href="#Parser-4152"><span class="linenos">4152</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> </span><span id="Parser-4153"><a href="#Parser-4153"><span class="linenos">4153</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4154"><a href="#Parser-4154"><span class="linenos">4154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> +</span><span id="Parser-4154"><a href="#Parser-4154"><span class="linenos">4154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> </span><span id="Parser-4155"><a href="#Parser-4155"><span class="linenos">4155</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> </span><span id="Parser-4156"><a href="#Parser-4156"><span class="linenos">4156</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="Parser-4157"><a href="#Parser-4157"><span class="linenos">4157</span></a> <span class="n">safe</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">STRICT_STRING_CONCAT</span><span class="p">,</span> -</span><span id="Parser-4158"><a href="#Parser-4158"><span class="linenos">4158</span></a> <span class="p">)</span> -</span><span id="Parser-4159"><a href="#Parser-4159"><span class="linenos">4159</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">):</span> -</span><span id="Parser-4160"><a href="#Parser-4160"><span class="linenos">4160</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Coalesce</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> -</span><span id="Parser-4161"><a href="#Parser-4161"><span class="linenos">4161</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="Parser-4162"><a href="#Parser-4162"><span class="linenos">4162</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4163"><a href="#Parser-4163"><span class="linenos">4163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-4157"><a href="#Parser-4157"><span class="linenos">4157</span></a> <span class="p">)</span> +</span><span id="Parser-4158"><a href="#Parser-4158"><span class="linenos">4158</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">DPIPE_IS_STRING_CONCAT</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">):</span> +</span><span id="Parser-4159"><a href="#Parser-4159"><span class="linenos">4159</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4160"><a href="#Parser-4160"><span class="linenos">4160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> +</span><span id="Parser-4161"><a href="#Parser-4161"><span class="linenos">4161</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-4162"><a href="#Parser-4162"><span class="linenos">4162</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="Parser-4163"><a href="#Parser-4163"><span class="linenos">4163</span></a> <span class="n">safe</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">STRICT_STRING_CONCAT</span><span class="p">,</span> </span><span id="Parser-4164"><a href="#Parser-4164"><span class="linenos">4164</span></a> <span class="p">)</span> -</span><span id="Parser-4165"><a href="#Parser-4165"><span class="linenos">4165</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="Parser-4166"><a href="#Parser-4166"><span class="linenos">4166</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4167"><a href="#Parser-4167"><span class="linenos">4167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-4168"><a href="#Parser-4168"><span class="linenos">4168</span></a> <span class="p">)</span> -</span><span id="Parser-4169"><a href="#Parser-4169"><span class="linenos">4169</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4170"><a href="#Parser-4170"><span class="linenos">4170</span></a> <span class="k">break</span> -</span><span id="Parser-4171"><a href="#Parser-4171"><span class="linenos">4171</span></a> -</span><span id="Parser-4172"><a href="#Parser-4172"><span class="linenos">4172</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4173"><a href="#Parser-4173"><span class="linenos">4173</span></a> -</span><span id="Parser-4174"><a href="#Parser-4174"><span class="linenos">4174</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4175"><a href="#Parser-4175"><span class="linenos">4175</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> -</span><span id="Parser-4176"><a href="#Parser-4176"><span class="linenos">4176</span></a> -</span><span id="Parser-4177"><a href="#Parser-4177"><span class="linenos">4177</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4178"><a href="#Parser-4178"><span class="linenos">4178</span></a> <span class="n">parse_method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span> -</span><span id="Parser-4179"><a href="#Parser-4179"><span class="linenos">4179</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-4180"><a href="#Parser-4180"><span class="linenos">4180</span></a> -</span><span id="Parser-4181"><a href="#Parser-4181"><span class="linenos">4181</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">):</span> -</span><span id="Parser-4182"><a href="#Parser-4182"><span class="linenos">4182</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> -</span><span id="Parser-4183"><a href="#Parser-4183"><span class="linenos">4183</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-4184"><a href="#Parser-4184"><span class="linenos">4184</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-4185"><a href="#Parser-4185"><span class="linenos">4185</span></a> -</span><span id="Parser-4186"><a href="#Parser-4186"><span class="linenos">4186</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">klass</span> <span class="ow">is</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">isalpha</span><span class="p">():</span> -</span><span id="Parser-4187"><a href="#Parser-4187"><span class="linenos">4187</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-4188"><a href="#Parser-4188"><span class="linenos">4188</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4189"><a href="#Parser-4189"><span class="linenos">4189</span></a> -</span><span id="Parser-4190"><a href="#Parser-4190"><span class="linenos">4190</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-4165"><a href="#Parser-4165"><span class="linenos">4165</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">):</span> +</span><span id="Parser-4166"><a href="#Parser-4166"><span class="linenos">4166</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Coalesce</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">())</span> +</span><span id="Parser-4167"><a href="#Parser-4167"><span class="linenos">4167</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="Parser-4168"><a href="#Parser-4168"><span class="linenos">4168</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4169"><a href="#Parser-4169"><span class="linenos">4169</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-4170"><a href="#Parser-4170"><span class="linenos">4170</span></a> <span class="p">)</span> +</span><span id="Parser-4171"><a href="#Parser-4171"><span class="linenos">4171</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="Parser-4172"><a href="#Parser-4172"><span class="linenos">4172</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4173"><a href="#Parser-4173"><span class="linenos">4173</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-4174"><a href="#Parser-4174"><span class="linenos">4174</span></a> <span class="p">)</span> +</span><span id="Parser-4175"><a href="#Parser-4175"><span class="linenos">4175</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4176"><a href="#Parser-4176"><span class="linenos">4176</span></a> <span class="k">break</span> +</span><span id="Parser-4177"><a href="#Parser-4177"><span class="linenos">4177</span></a> +</span><span id="Parser-4178"><a href="#Parser-4178"><span class="linenos">4178</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4179"><a href="#Parser-4179"><span class="linenos">4179</span></a> +</span><span id="Parser-4180"><a href="#Parser-4180"><span class="linenos">4180</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4181"><a href="#Parser-4181"><span class="linenos">4181</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> +</span><span id="Parser-4182"><a href="#Parser-4182"><span class="linenos">4182</span></a> +</span><span id="Parser-4183"><a href="#Parser-4183"><span class="linenos">4183</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4184"><a href="#Parser-4184"><span class="linenos">4184</span></a> <span class="n">parse_method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span> +</span><span id="Parser-4185"><a href="#Parser-4185"><span class="linenos">4185</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-4186"><a href="#Parser-4186"><span class="linenos">4186</span></a> +</span><span id="Parser-4187"><a href="#Parser-4187"><span class="linenos">4187</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">):</span> +</span><span id="Parser-4188"><a href="#Parser-4188"><span class="linenos">4188</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">]</span> +</span><span id="Parser-4189"><a href="#Parser-4189"><span class="linenos">4189</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-4190"><a href="#Parser-4190"><span class="linenos">4190</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> </span><span id="Parser-4191"><a href="#Parser-4191"><span class="linenos">4191</span></a> -</span><span id="Parser-4192"><a href="#Parser-4192"><span class="linenos">4192</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">):</span> -</span><span id="Parser-4193"><a href="#Parser-4193"><span class="linenos">4193</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"typed"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TYPED_DIVISION</span> -</span><span id="Parser-4194"><a href="#Parser-4194"><span class="linenos">4194</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"safe"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SAFE_DIVISION</span> +</span><span id="Parser-4192"><a href="#Parser-4192"><span class="linenos">4192</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="n">klass</span> <span class="ow">is</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">isalpha</span><span class="p">():</span> +</span><span id="Parser-4193"><a href="#Parser-4193"><span class="linenos">4193</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-4194"><a href="#Parser-4194"><span class="linenos">4194</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-4195"><a href="#Parser-4195"><span class="linenos">4195</span></a> -</span><span id="Parser-4196"><a href="#Parser-4196"><span class="linenos">4196</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4196"><a href="#Parser-4196"><span class="linenos">4196</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> </span><span id="Parser-4197"><a href="#Parser-4197"><span class="linenos">4197</span></a> -</span><span id="Parser-4198"><a href="#Parser-4198"><span class="linenos">4198</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4199"><a href="#Parser-4199"><span class="linenos">4199</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span> -</span><span id="Parser-4200"><a href="#Parser-4200"><span class="linenos">4200</span></a> -</span><span id="Parser-4201"><a href="#Parser-4201"><span class="linenos">4201</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4202"><a href="#Parser-4202"><span class="linenos">4202</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-4203"><a href="#Parser-4203"><span class="linenos">4203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-4204"><a href="#Parser-4204"><span class="linenos">4204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> -</span><span id="Parser-4205"><a href="#Parser-4205"><span class="linenos">4205</span></a> -</span><span id="Parser-4206"><a href="#Parser-4206"><span class="linenos">4206</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span> -</span><span id="Parser-4207"><a href="#Parser-4207"><span class="linenos">4207</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-4208"><a href="#Parser-4208"><span class="linenos">4208</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4209"><a href="#Parser-4209"><span class="linenos">4209</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">parse_interval</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">()</span> -</span><span id="Parser-4210"><a href="#Parser-4210"><span class="linenos">4210</span></a> <span class="k">if</span> <span class="n">interval</span><span class="p">:</span> -</span><span id="Parser-4211"><a href="#Parser-4211"><span class="linenos">4211</span></a> <span class="k">return</span> <span class="n">interval</span> -</span><span id="Parser-4212"><a href="#Parser-4212"><span class="linenos">4212</span></a> -</span><span id="Parser-4213"><a href="#Parser-4213"><span class="linenos">4213</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4214"><a href="#Parser-4214"><span class="linenos">4214</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4215"><a href="#Parser-4215"><span class="linenos">4215</span></a> -</span><span id="Parser-4216"><a href="#Parser-4216"><span class="linenos">4216</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="p">:</span> -</span><span id="Parser-4217"><a href="#Parser-4217"><span class="linenos">4217</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4218"><a href="#Parser-4218"><span class="linenos">4218</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-4219"><a href="#Parser-4219"><span class="linenos">4219</span></a> -</span><span id="Parser-4220"><a href="#Parser-4220"><span class="linenos">4220</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="Parser-4221"><a href="#Parser-4221"><span class="linenos">4221</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_LITERAL_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">data_type</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4222"><a href="#Parser-4222"><span class="linenos">4222</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-4223"><a href="#Parser-4223"><span class="linenos">4223</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">data_type</span><span class="p">)</span> -</span><span id="Parser-4224"><a href="#Parser-4224"><span class="linenos">4224</span></a> -</span><span id="Parser-4225"><a href="#Parser-4225"><span class="linenos">4225</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="Parser-4226"><a href="#Parser-4226"><span class="linenos">4226</span></a> -</span><span id="Parser-4227"><a href="#Parser-4227"><span class="linenos">4227</span></a> <span class="c1"># The expressions arg gets set by the parser when we have something like DECIMAL(38, 0)</span> -</span><span id="Parser-4228"><a href="#Parser-4228"><span class="linenos">4228</span></a> <span class="c1"># in the input SQL. In that case, we'll produce these tokens: DECIMAL ( 38 , 0 )</span> -</span><span id="Parser-4229"><a href="#Parser-4229"><span class="linenos">4229</span></a> <span class="c1">#</span> -</span><span id="Parser-4230"><a href="#Parser-4230"><span class="linenos">4230</span></a> <span class="c1"># If the index difference here is greater than 1, that means the parser itself must have</span> -</span><span id="Parser-4231"><a href="#Parser-4231"><span class="linenos">4231</span></a> <span class="c1"># consumed additional tokens such as the DECIMAL scale and precision in the above example.</span> -</span><span id="Parser-4232"><a href="#Parser-4232"><span class="linenos">4232</span></a> <span class="c1">#</span> -</span><span id="Parser-4233"><a href="#Parser-4233"><span class="linenos">4233</span></a> <span class="c1"># If it's not greater than 1, then it must be 1, because we've consumed at least the type</span> -</span><span id="Parser-4234"><a href="#Parser-4234"><span class="linenos">4234</span></a> <span class="c1"># keyword, meaning that the expressions arg of the DataType must have gotten set by a</span> -</span><span id="Parser-4235"><a href="#Parser-4235"><span class="linenos">4235</span></a> <span class="c1"># callable in the TYPE_CONVERTERS mapping. For example, Snowflake converts DECIMAL to</span> -</span><span id="Parser-4236"><a href="#Parser-4236"><span class="linenos">4236</span></a> <span class="c1"># DECIMAL(38, 0)) in order to facilitate the data type's transpilation.</span> -</span><span id="Parser-4237"><a href="#Parser-4237"><span class="linenos">4237</span></a> <span class="c1">#</span> -</span><span id="Parser-4238"><a href="#Parser-4238"><span class="linenos">4238</span></a> <span class="c1"># In these cases, we don't really want to return the converted type, but instead retreat</span> -</span><span id="Parser-4239"><a href="#Parser-4239"><span class="linenos">4239</span></a> <span class="c1"># and try to parse a Column or Identifier in the section below.</span> -</span><span id="Parser-4240"><a href="#Parser-4240"><span class="linenos">4240</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">index2</span> <span class="o">-</span> <span class="n">index</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-4241"><a href="#Parser-4241"><span class="linenos">4241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> -</span><span id="Parser-4242"><a href="#Parser-4242"><span class="linenos">4242</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="Parser-4243"><a href="#Parser-4243"><span class="linenos">4243</span></a> -</span><span id="Parser-4244"><a href="#Parser-4244"><span class="linenos">4244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4245"><a href="#Parser-4245"><span class="linenos">4245</span></a> -</span><span id="Parser-4246"><a href="#Parser-4246"><span class="linenos">4246</span></a> <span class="k">if</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> -</span><span id="Parser-4247"><a href="#Parser-4247"><span class="linenos">4247</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-4248"><a href="#Parser-4248"><span class="linenos">4248</span></a> -</span><span id="Parser-4249"><a href="#Parser-4249"><span class="linenos">4249</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-4250"><a href="#Parser-4250"><span class="linenos">4250</span></a> <span class="k">return</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4198"><a href="#Parser-4198"><span class="linenos">4198</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">):</span> +</span><span id="Parser-4199"><a href="#Parser-4199"><span class="linenos">4199</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"typed"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TYPED_DIVISION</span> +</span><span id="Parser-4200"><a href="#Parser-4200"><span class="linenos">4200</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"safe"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SAFE_DIVISION</span> +</span><span id="Parser-4201"><a href="#Parser-4201"><span class="linenos">4201</span></a> +</span><span id="Parser-4202"><a href="#Parser-4202"><span class="linenos">4202</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4203"><a href="#Parser-4203"><span class="linenos">4203</span></a> +</span><span id="Parser-4204"><a href="#Parser-4204"><span class="linenos">4204</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4205"><a href="#Parser-4205"><span class="linenos">4205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span> +</span><span id="Parser-4206"><a href="#Parser-4206"><span class="linenos">4206</span></a> +</span><span id="Parser-4207"><a href="#Parser-4207"><span class="linenos">4207</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4208"><a href="#Parser-4208"><span class="linenos">4208</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-4209"><a href="#Parser-4209"><span class="linenos">4209</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-4210"><a href="#Parser-4210"><span class="linenos">4210</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> +</span><span id="Parser-4211"><a href="#Parser-4211"><span class="linenos">4211</span></a> +</span><span id="Parser-4212"><a href="#Parser-4212"><span class="linenos">4212</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span> +</span><span id="Parser-4213"><a href="#Parser-4213"><span class="linenos">4213</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_interval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4214"><a href="#Parser-4214"><span class="linenos">4214</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4215"><a href="#Parser-4215"><span class="linenos">4215</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">parse_interval</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_interval</span><span class="p">()</span> +</span><span id="Parser-4216"><a href="#Parser-4216"><span class="linenos">4216</span></a> <span class="k">if</span> <span class="n">interval</span><span class="p">:</span> +</span><span id="Parser-4217"><a href="#Parser-4217"><span class="linenos">4217</span></a> <span class="k">return</span> <span class="n">interval</span> +</span><span id="Parser-4218"><a href="#Parser-4218"><span class="linenos">4218</span></a> +</span><span id="Parser-4219"><a href="#Parser-4219"><span class="linenos">4219</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4220"><a href="#Parser-4220"><span class="linenos">4220</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4221"><a href="#Parser-4221"><span class="linenos">4221</span></a> +</span><span id="Parser-4222"><a href="#Parser-4222"><span class="linenos">4222</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="p">:</span> +</span><span id="Parser-4223"><a href="#Parser-4223"><span class="linenos">4223</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4224"><a href="#Parser-4224"><span class="linenos">4224</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4225"><a href="#Parser-4225"><span class="linenos">4225</span></a> +</span><span id="Parser-4226"><a href="#Parser-4226"><span class="linenos">4226</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="Parser-4227"><a href="#Parser-4227"><span class="linenos">4227</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_LITERAL_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">data_type</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4228"><a href="#Parser-4228"><span class="linenos">4228</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-4229"><a href="#Parser-4229"><span class="linenos">4229</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">data_type</span><span class="p">)</span> +</span><span id="Parser-4230"><a href="#Parser-4230"><span class="linenos">4230</span></a> +</span><span id="Parser-4231"><a href="#Parser-4231"><span class="linenos">4231</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="Parser-4232"><a href="#Parser-4232"><span class="linenos">4232</span></a> +</span><span id="Parser-4233"><a href="#Parser-4233"><span class="linenos">4233</span></a> <span class="c1"># The expressions arg gets set by the parser when we have something like DECIMAL(38, 0)</span> +</span><span id="Parser-4234"><a href="#Parser-4234"><span class="linenos">4234</span></a> <span class="c1"># in the input SQL. In that case, we'll produce these tokens: DECIMAL ( 38 , 0 )</span> +</span><span id="Parser-4235"><a href="#Parser-4235"><span class="linenos">4235</span></a> <span class="c1">#</span> +</span><span id="Parser-4236"><a href="#Parser-4236"><span class="linenos">4236</span></a> <span class="c1"># If the index difference here is greater than 1, that means the parser itself must have</span> +</span><span id="Parser-4237"><a href="#Parser-4237"><span class="linenos">4237</span></a> <span class="c1"># consumed additional tokens such as the DECIMAL scale and precision in the above example.</span> +</span><span id="Parser-4238"><a href="#Parser-4238"><span class="linenos">4238</span></a> <span class="c1">#</span> +</span><span id="Parser-4239"><a href="#Parser-4239"><span class="linenos">4239</span></a> <span class="c1"># If it's not greater than 1, then it must be 1, because we've consumed at least the type</span> +</span><span id="Parser-4240"><a href="#Parser-4240"><span class="linenos">4240</span></a> <span class="c1"># keyword, meaning that the expressions arg of the DataType must have gotten set by a</span> +</span><span id="Parser-4241"><a href="#Parser-4241"><span class="linenos">4241</span></a> <span class="c1"># callable in the TYPE_CONVERTERS mapping. For example, Snowflake converts DECIMAL to</span> +</span><span id="Parser-4242"><a href="#Parser-4242"><span class="linenos">4242</span></a> <span class="c1"># DECIMAL(38, 0)) in order to facilitate the data type's transpilation.</span> +</span><span id="Parser-4243"><a href="#Parser-4243"><span class="linenos">4243</span></a> <span class="c1">#</span> +</span><span id="Parser-4244"><a href="#Parser-4244"><span class="linenos">4244</span></a> <span class="c1"># In these cases, we don't really want to return the converted type, but instead retreat</span> +</span><span id="Parser-4245"><a href="#Parser-4245"><span class="linenos">4245</span></a> <span class="c1"># and try to parse a Column or Identifier in the section below.</span> +</span><span id="Parser-4246"><a href="#Parser-4246"><span class="linenos">4246</span></a> <span class="k">if</span> <span class="n">data_type</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">index2</span> <span class="o">-</span> <span class="n">index</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-4247"><a href="#Parser-4247"><span class="linenos">4247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> +</span><span id="Parser-4248"><a href="#Parser-4248"><span class="linenos">4248</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="Parser-4249"><a href="#Parser-4249"><span class="linenos">4249</span></a> +</span><span id="Parser-4250"><a href="#Parser-4250"><span class="linenos">4250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> </span><span id="Parser-4251"><a href="#Parser-4251"><span class="linenos">4251</span></a> -</span><span id="Parser-4252"><a href="#Parser-4252"><span class="linenos">4252</span></a> <span class="k">def</span> <span class="nf">_parse_type_size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">]:</span> -</span><span id="Parser-4253"><a href="#Parser-4253"><span class="linenos">4253</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Parser-4254"><a href="#Parser-4254"><span class="linenos">4254</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-4255"><a href="#Parser-4255"><span class="linenos">4255</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4256"><a href="#Parser-4256"><span class="linenos">4256</span></a> -</span><span id="Parser-4257"><a href="#Parser-4257"><span class="linenos">4257</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span><span class="p">:</span> -</span><span id="Parser-4258"><a href="#Parser-4258"><span class="linenos">4258</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-4259"><a href="#Parser-4259"><span class="linenos">4259</span></a> -</span><span id="Parser-4260"><a href="#Parser-4260"><span class="linenos">4260</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4261"><a href="#Parser-4261"><span class="linenos">4261</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4262"><a href="#Parser-4262"><span class="linenos">4262</span></a> <span class="p">)</span> -</span><span id="Parser-4263"><a href="#Parser-4263"><span class="linenos">4263</span></a> -</span><span id="Parser-4264"><a href="#Parser-4264"><span class="linenos">4264</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span> -</span><span id="Parser-4265"><a href="#Parser-4265"><span class="linenos">4265</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-4266"><a href="#Parser-4266"><span class="linenos">4266</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4267"><a href="#Parser-4267"><span class="linenos">4267</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4268"><a href="#Parser-4268"><span class="linenos">4268</span></a> -</span><span id="Parser-4269"><a href="#Parser-4269"><span class="linenos">4269</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4270"><a href="#Parser-4270"><span class="linenos">4270</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> -</span><span id="Parser-4271"><a href="#Parser-4271"><span class="linenos">4271</span></a> -</span><span id="Parser-4272"><a href="#Parser-4272"><span class="linenos">4272</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> -</span><span id="Parser-4273"><a href="#Parser-4273"><span class="linenos">4273</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">allow_identifiers</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="Parser-4274"><a href="#Parser-4274"><span class="linenos">4274</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> -</span><span id="Parser-4275"><a href="#Parser-4275"><span class="linenos">4275</span></a> <span class="p">)</span> -</span><span id="Parser-4276"><a href="#Parser-4276"><span class="linenos">4276</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> -</span><span id="Parser-4277"><a href="#Parser-4277"><span class="linenos">4277</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">identifier</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-4278"><a href="#Parser-4278"><span class="linenos">4278</span></a> -</span><span id="Parser-4279"><a href="#Parser-4279"><span class="linenos">4279</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-4280"><a href="#Parser-4280"><span class="linenos">4280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected identifier"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-4281"><a href="#Parser-4281"><span class="linenos">4281</span></a> -</span><span id="Parser-4282"><a href="#Parser-4282"><span class="linenos">4282</span></a> <span class="k">if</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> -</span><span id="Parser-4283"><a href="#Parser-4283"><span class="linenos">4283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="Parser-4284"><a href="#Parser-4284"><span class="linenos">4284</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SUPPORTS_USER_DEFINED_TYPES</span><span class="p">:</span> -</span><span id="Parser-4285"><a href="#Parser-4285"><span class="linenos">4285</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span> -</span><span id="Parser-4286"><a href="#Parser-4286"><span class="linenos">4286</span></a> -</span><span id="Parser-4287"><a href="#Parser-4287"><span class="linenos">4287</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-4288"><a href="#Parser-4288"><span class="linenos">4288</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_name</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">_advance_any</span><span class="p">()</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Parser-4289"><a href="#Parser-4289"><span class="linenos">4289</span></a> -</span><span id="Parser-4290"><a href="#Parser-4290"><span class="linenos">4290</span></a> <span class="n">this</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">type_name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4291"><a href="#Parser-4291"><span class="linenos">4291</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4292"><a href="#Parser-4292"><span class="linenos">4292</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-4293"><a href="#Parser-4293"><span class="linenos">4293</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4294"><a href="#Parser-4294"><span class="linenos">4294</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4295"><a href="#Parser-4295"><span class="linenos">4295</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4296"><a href="#Parser-4296"><span class="linenos">4296</span></a> -</span><span id="Parser-4297"><a href="#Parser-4297"><span class="linenos">4297</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-4298"><a href="#Parser-4298"><span class="linenos">4298</span></a> -</span><span id="Parser-4299"><a href="#Parser-4299"><span class="linenos">4299</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> -</span><span id="Parser-4300"><a href="#Parser-4300"><span class="linenos">4300</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-4301"><a href="#Parser-4301"><span class="linenos">4301</span></a> -</span><span id="Parser-4302"><a href="#Parser-4302"><span class="linenos">4302</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">:</span> -</span><span id="Parser-4303"><a href="#Parser-4303"><span class="linenos">4303</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ObjectIdentifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-4252"><a href="#Parser-4252"><span class="linenos">4252</span></a> <span class="k">if</span> <span class="n">fallback_to_identifier</span><span class="p">:</span> +</span><span id="Parser-4253"><a href="#Parser-4253"><span class="linenos">4253</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-4254"><a href="#Parser-4254"><span class="linenos">4254</span></a> +</span><span id="Parser-4255"><a href="#Parser-4255"><span class="linenos">4255</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-4256"><a href="#Parser-4256"><span class="linenos">4256</span></a> <span class="k">return</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4257"><a href="#Parser-4257"><span class="linenos">4257</span></a> +</span><span id="Parser-4258"><a href="#Parser-4258"><span class="linenos">4258</span></a> <span class="k">def</span> <span class="nf">_parse_type_size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">]:</span> +</span><span id="Parser-4259"><a href="#Parser-4259"><span class="linenos">4259</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="Parser-4260"><a href="#Parser-4260"><span class="linenos">4260</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-4261"><a href="#Parser-4261"><span class="linenos">4261</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4262"><a href="#Parser-4262"><span class="linenos">4262</span></a> +</span><span id="Parser-4263"><a href="#Parser-4263"><span class="linenos">4263</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">table</span><span class="p">:</span> +</span><span id="Parser-4264"><a href="#Parser-4264"><span class="linenos">4264</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-4265"><a href="#Parser-4265"><span class="linenos">4265</span></a> +</span><span id="Parser-4266"><a href="#Parser-4266"><span class="linenos">4266</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4267"><a href="#Parser-4267"><span class="linenos">4267</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataTypeParam</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4268"><a href="#Parser-4268"><span class="linenos">4268</span></a> <span class="p">)</span> +</span><span id="Parser-4269"><a href="#Parser-4269"><span class="linenos">4269</span></a> +</span><span id="Parser-4270"><a href="#Parser-4270"><span class="linenos">4270</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span> +</span><span id="Parser-4271"><a href="#Parser-4271"><span class="linenos">4271</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-4272"><a href="#Parser-4272"><span class="linenos">4272</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4273"><a href="#Parser-4273"><span class="linenos">4273</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4274"><a href="#Parser-4274"><span class="linenos">4274</span></a> +</span><span id="Parser-4275"><a href="#Parser-4275"><span class="linenos">4275</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4276"><a href="#Parser-4276"><span class="linenos">4276</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> +</span><span id="Parser-4277"><a href="#Parser-4277"><span class="linenos">4277</span></a> +</span><span id="Parser-4278"><a href="#Parser-4278"><span class="linenos">4278</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> +</span><span id="Parser-4279"><a href="#Parser-4279"><span class="linenos">4279</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">allow_identifiers</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="Parser-4280"><a href="#Parser-4280"><span class="linenos">4280</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> +</span><span id="Parser-4281"><a href="#Parser-4281"><span class="linenos">4281</span></a> <span class="p">)</span> +</span><span id="Parser-4282"><a href="#Parser-4282"><span class="linenos">4282</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> +</span><span id="Parser-4283"><a href="#Parser-4283"><span class="linenos">4283</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">identifier</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-4284"><a href="#Parser-4284"><span class="linenos">4284</span></a> +</span><span id="Parser-4285"><a href="#Parser-4285"><span class="linenos">4285</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-4286"><a href="#Parser-4286"><span class="linenos">4286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected identifier"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-4287"><a href="#Parser-4287"><span class="linenos">4287</span></a> +</span><span id="Parser-4288"><a href="#Parser-4288"><span class="linenos">4288</span></a> <span class="k">if</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> +</span><span id="Parser-4289"><a href="#Parser-4289"><span class="linenos">4289</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="Parser-4290"><a href="#Parser-4290"><span class="linenos">4290</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">SUPPORTS_USER_DEFINED_TYPES</span><span class="p">:</span> +</span><span id="Parser-4291"><a href="#Parser-4291"><span class="linenos">4291</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span> +</span><span id="Parser-4292"><a href="#Parser-4292"><span class="linenos">4292</span></a> +</span><span id="Parser-4293"><a href="#Parser-4293"><span class="linenos">4293</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-4294"><a href="#Parser-4294"><span class="linenos">4294</span></a> <span class="n">type_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_name</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">_advance_any</span><span class="p">()</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Parser-4295"><a href="#Parser-4295"><span class="linenos">4295</span></a> +</span><span id="Parser-4296"><a href="#Parser-4296"><span class="linenos">4296</span></a> <span class="n">this</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">type_name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4297"><a href="#Parser-4297"><span class="linenos">4297</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4298"><a href="#Parser-4298"><span class="linenos">4298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-4299"><a href="#Parser-4299"><span class="linenos">4299</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4300"><a href="#Parser-4300"><span class="linenos">4300</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4301"><a href="#Parser-4301"><span class="linenos">4301</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4302"><a href="#Parser-4302"><span class="linenos">4302</span></a> +</span><span id="Parser-4303"><a href="#Parser-4303"><span class="linenos">4303</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> </span><span id="Parser-4304"><a href="#Parser-4304"><span class="linenos">4304</span></a> -</span><span id="Parser-4305"><a href="#Parser-4305"><span class="linenos">4305</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> -</span><span id="Parser-4306"><a href="#Parser-4306"><span class="linenos">4306</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_TYPE_TOKENS</span> -</span><span id="Parser-4307"><a href="#Parser-4307"><span class="linenos">4307</span></a> <span class="n">is_aggregate</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">AGGREGATE_TYPE_TOKENS</span> -</span><span id="Parser-4308"><a href="#Parser-4308"><span class="linenos">4308</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4309"><a href="#Parser-4309"><span class="linenos">4309</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4305"><a href="#Parser-4305"><span class="linenos">4305</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> +</span><span id="Parser-4306"><a href="#Parser-4306"><span class="linenos">4306</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-4307"><a href="#Parser-4307"><span class="linenos">4307</span></a> +</span><span id="Parser-4308"><a href="#Parser-4308"><span class="linenos">4308</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT_IDENTIFIER</span><span class="p">:</span> +</span><span id="Parser-4309"><a href="#Parser-4309"><span class="linenos">4309</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ObjectIdentifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> </span><span id="Parser-4310"><a href="#Parser-4310"><span class="linenos">4310</span></a> -</span><span id="Parser-4311"><a href="#Parser-4311"><span class="linenos">4311</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-4312"><a href="#Parser-4312"><span class="linenos">4312</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="Parser-4313"><a href="#Parser-4313"><span class="linenos">4313</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-4314"><a href="#Parser-4314"><span class="linenos">4314</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> -</span><span id="Parser-4315"><a href="#Parser-4315"><span class="linenos">4315</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-4316"><a href="#Parser-4316"><span class="linenos">4316</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> -</span><span id="Parser-4317"><a href="#Parser-4317"><span class="linenos">4317</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> -</span><span id="Parser-4318"><a href="#Parser-4318"><span class="linenos">4318</span></a> <span class="p">)</span> -</span><span id="Parser-4319"><a href="#Parser-4319"><span class="linenos">4319</span></a> <span class="p">)</span> -</span><span id="Parser-4320"><a href="#Parser-4320"><span class="linenos">4320</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">:</span> -</span><span id="Parser-4321"><a href="#Parser-4321"><span class="linenos">4321</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> -</span><span id="Parser-4322"><a href="#Parser-4322"><span class="linenos">4322</span></a> <span class="k">elif</span> <span class="n">is_aggregate</span><span class="p">:</span> -</span><span id="Parser-4323"><a href="#Parser-4323"><span class="linenos">4323</span></a> <span class="n">func_or_ident</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="Parser-4324"><a href="#Parser-4324"><span class="linenos">4324</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> -</span><span id="Parser-4325"><a href="#Parser-4325"><span class="linenos">4325</span></a> <span class="p">)</span> -</span><span id="Parser-4326"><a href="#Parser-4326"><span class="linenos">4326</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">func_or_ident</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-4327"><a href="#Parser-4327"><span class="linenos">4327</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4328"><a href="#Parser-4328"><span class="linenos">4328</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-4329"><a href="#Parser-4329"><span class="linenos">4329</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> -</span><span id="Parser-4330"><a href="#Parser-4330"><span class="linenos">4330</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> -</span><span id="Parser-4331"><a href="#Parser-4331"><span class="linenos">4331</span></a> <span class="p">)</span> -</span><span id="Parser-4332"><a href="#Parser-4332"><span class="linenos">4332</span></a> <span class="p">)</span> -</span><span id="Parser-4333"><a href="#Parser-4333"><span class="linenos">4333</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">func_or_ident</span><span class="p">)</span> -</span><span id="Parser-4334"><a href="#Parser-4334"><span class="linenos">4334</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4335"><a href="#Parser-4335"><span class="linenos">4335</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type_size</span><span class="p">)</span> -</span><span id="Parser-4336"><a href="#Parser-4336"><span class="linenos">4336</span></a> -</span><span id="Parser-4337"><a href="#Parser-4337"><span class="linenos">4337</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-4338"><a href="#Parser-4338"><span class="linenos">4338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4339"><a href="#Parser-4339"><span class="linenos">4339</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4340"><a href="#Parser-4340"><span class="linenos">4340</span></a> -</span><span id="Parser-4341"><a href="#Parser-4341"><span class="linenos">4341</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-4342"><a href="#Parser-4342"><span class="linenos">4342</span></a> -</span><span id="Parser-4343"><a href="#Parser-4343"><span class="linenos">4343</span></a> <span class="n">values</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="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4344"><a href="#Parser-4344"><span class="linenos">4344</span></a> -</span><span id="Parser-4345"><a href="#Parser-4345"><span class="linenos">4345</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="Parser-4346"><a href="#Parser-4346"><span class="linenos">4346</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="Parser-4347"><a href="#Parser-4347"><span class="linenos">4347</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-4348"><a href="#Parser-4348"><span class="linenos">4348</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4349"><a href="#Parser-4349"><span class="linenos">4349</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-4350"><a href="#Parser-4350"><span class="linenos">4350</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> -</span><span id="Parser-4351"><a href="#Parser-4351"><span class="linenos">4351</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> -</span><span id="Parser-4352"><a href="#Parser-4352"><span class="linenos">4352</span></a> <span class="p">)</span> -</span><span id="Parser-4353"><a href="#Parser-4353"><span class="linenos">4353</span></a> <span class="p">)</span> -</span><span id="Parser-4354"><a href="#Parser-4354"><span class="linenos">4354</span></a> -</span><span id="Parser-4355"><a href="#Parser-4355"><span class="linenos">4355</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="Parser-4356"><a href="#Parser-4356"><span class="linenos">4356</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="Parser-4357"><a href="#Parser-4357"><span class="linenos">4357</span></a> -</span><span id="Parser-4358"><a href="#Parser-4358"><span class="linenos">4358</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> -</span><span id="Parser-4359"><a href="#Parser-4359"><span class="linenos">4359</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="Parser-4360"><a href="#Parser-4360"><span class="linenos">4360</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> -</span><span id="Parser-4361"><a href="#Parser-4361"><span class="linenos">4361</span></a> -</span><span id="Parser-4362"><a href="#Parser-4362"><span class="linenos">4362</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> -</span><span id="Parser-4363"><a href="#Parser-4363"><span class="linenos">4363</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="Parser-4364"><a href="#Parser-4364"><span class="linenos">4364</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-4365"><a href="#Parser-4365"><span class="linenos">4365</span></a> <span class="n">tz_type</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-4366"><a href="#Parser-4366"><span class="linenos">4366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span> -</span><span id="Parser-4367"><a href="#Parser-4367"><span class="linenos">4367</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMES</span> -</span><span id="Parser-4368"><a href="#Parser-4368"><span class="linenos">4368</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span> -</span><span id="Parser-4369"><a href="#Parser-4369"><span class="linenos">4369</span></a> <span class="p">)</span> -</span><span id="Parser-4370"><a href="#Parser-4370"><span class="linenos">4370</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">tz_type</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4371"><a href="#Parser-4371"><span class="linenos">4371</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="Parser-4372"><a href="#Parser-4372"><span class="linenos">4372</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-4373"><a href="#Parser-4373"><span class="linenos">4373</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4374"><a href="#Parser-4374"><span class="linenos">4374</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="Parser-4375"><a href="#Parser-4375"><span class="linenos">4375</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-4376"><a href="#Parser-4376"><span class="linenos">4376</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> -</span><span id="Parser-4377"><a href="#Parser-4377"><span class="linenos">4377</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4378"><a href="#Parser-4378"><span class="linenos">4378</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> -</span><span id="Parser-4379"><a href="#Parser-4379"><span class="linenos">4379</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="Parser-4380"><a href="#Parser-4380"><span class="linenos">4380</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-4381"><a href="#Parser-4381"><span class="linenos">4381</span></a> -</span><span id="Parser-4382"><a href="#Parser-4382"><span class="linenos">4382</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span> -</span><span id="Parser-4383"><a href="#Parser-4383"><span class="linenos">4383</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4384"><a href="#Parser-4384"><span class="linenos">4384</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> -</span><span id="Parser-4385"><a href="#Parser-4385"><span class="linenos">4385</span></a> -</span><span id="Parser-4386"><a href="#Parser-4386"><span class="linenos">4386</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> -</span><span id="Parser-4387"><a href="#Parser-4387"><span class="linenos">4387</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4388"><a href="#Parser-4388"><span class="linenos">4388</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-4389"><a href="#Parser-4389"><span class="linenos">4389</span></a> -</span><span id="Parser-4390"><a href="#Parser-4390"><span class="linenos">4390</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> -</span><span id="Parser-4391"><a href="#Parser-4391"><span class="linenos">4391</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4392"><a href="#Parser-4392"><span class="linenos">4392</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4393"><a href="#Parser-4393"><span class="linenos">4393</span></a> -</span><span id="Parser-4394"><a href="#Parser-4394"><span class="linenos">4394</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> -</span><span id="Parser-4395"><a href="#Parser-4395"><span class="linenos">4395</span></a> -</span><span id="Parser-4396"><a href="#Parser-4396"><span class="linenos">4396</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-4397"><a href="#Parser-4397"><span class="linenos">4397</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNSIGNED"</span><span class="p">):</span> -</span><span id="Parser-4398"><a href="#Parser-4398"><span class="linenos">4398</span></a> <span class="n">unsigned_type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_token</span><span class="p">)</span> -</span><span id="Parser-4399"><a href="#Parser-4399"><span class="linenos">4399</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unsigned_type_token</span><span class="p">:</span> -</span><span id="Parser-4400"><a href="#Parser-4400"><span class="linenos">4400</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s2"> to unsigned."</span><span class="p">)</span> -</span><span id="Parser-4401"><a href="#Parser-4401"><span class="linenos">4401</span></a> -</span><span id="Parser-4402"><a href="#Parser-4402"><span class="linenos">4402</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="n">unsigned_type_token</span> <span class="ow">or</span> <span class="n">type_token</span> -</span><span id="Parser-4403"><a href="#Parser-4403"><span class="linenos">4403</span></a> -</span><span id="Parser-4404"><a href="#Parser-4404"><span class="linenos">4404</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="Parser-4405"><a href="#Parser-4405"><span class="linenos">4405</span></a> <span class="n">this</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">Type</span><span class="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">],</span> -</span><span id="Parser-4406"><a href="#Parser-4406"><span class="linenos">4406</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-4407"><a href="#Parser-4407"><span class="linenos">4407</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> -</span><span id="Parser-4408"><a href="#Parser-4408"><span class="linenos">4408</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> -</span><span id="Parser-4409"><a href="#Parser-4409"><span class="linenos">4409</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="Parser-4410"><a href="#Parser-4410"><span class="linenos">4410</span></a> <span class="p">)</span> -</span><span id="Parser-4411"><a href="#Parser-4411"><span class="linenos">4411</span></a> <span class="k">elif</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-4412"><a href="#Parser-4412"><span class="linenos">4412</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4413"><a href="#Parser-4413"><span class="linenos">4413</span></a> -</span><span id="Parser-4414"><a href="#Parser-4414"><span class="linenos">4414</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4415"><a href="#Parser-4415"><span class="linenos">4415</span></a> -</span><span id="Parser-4416"><a href="#Parser-4416"><span class="linenos">4416</span></a> <span class="c1"># Postgres supports the INT ARRAY[3] syntax as a synonym for INT[3]</span> -</span><span id="Parser-4417"><a href="#Parser-4417"><span class="linenos">4417</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">)</span> +</span><span id="Parser-4311"><a href="#Parser-4311"><span class="linenos">4311</span></a> <span class="c1"># https://materialize.com/docs/sql/types/map/</span> +</span><span id="Parser-4312"><a href="#Parser-4312"><span class="linenos">4312</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="Parser-4313"><a href="#Parser-4313"><span class="linenos">4313</span></a> <span class="n">key_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="Parser-4314"><a href="#Parser-4314"><span class="linenos">4314</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="Parser-4315"><a href="#Parser-4315"><span class="linenos">4315</span></a> <span class="p">)</span> +</span><span id="Parser-4316"><a href="#Parser-4316"><span class="linenos">4316</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">):</span> +</span><span id="Parser-4317"><a href="#Parser-4317"><span class="linenos">4317</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4318"><a href="#Parser-4318"><span class="linenos">4318</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4319"><a href="#Parser-4319"><span class="linenos">4319</span></a> +</span><span id="Parser-4320"><a href="#Parser-4320"><span class="linenos">4320</span></a> <span class="n">value_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="Parser-4321"><a href="#Parser-4321"><span class="linenos">4321</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="Parser-4322"><a href="#Parser-4322"><span class="linenos">4322</span></a> <span class="p">)</span> +</span><span id="Parser-4323"><a href="#Parser-4323"><span class="linenos">4323</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="Parser-4324"><a href="#Parser-4324"><span class="linenos">4324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4325"><a href="#Parser-4325"><span class="linenos">4325</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4326"><a href="#Parser-4326"><span class="linenos">4326</span></a> +</span><span id="Parser-4327"><a href="#Parser-4327"><span class="linenos">4327</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="Parser-4328"><a href="#Parser-4328"><span class="linenos">4328</span></a> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="Parser-4329"><a href="#Parser-4329"><span class="linenos">4329</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">key_type</span><span class="p">,</span> <span class="n">value_type</span><span class="p">],</span> +</span><span id="Parser-4330"><a href="#Parser-4330"><span class="linenos">4330</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-4331"><a href="#Parser-4331"><span class="linenos">4331</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="Parser-4332"><a href="#Parser-4332"><span class="linenos">4332</span></a> <span class="p">)</span> +</span><span id="Parser-4333"><a href="#Parser-4333"><span class="linenos">4333</span></a> +</span><span id="Parser-4334"><a href="#Parser-4334"><span class="linenos">4334</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> +</span><span id="Parser-4335"><a href="#Parser-4335"><span class="linenos">4335</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_TYPE_TOKENS</span> +</span><span id="Parser-4336"><a href="#Parser-4336"><span class="linenos">4336</span></a> <span class="n">is_aggregate</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">AGGREGATE_TYPE_TOKENS</span> +</span><span id="Parser-4337"><a href="#Parser-4337"><span class="linenos">4337</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4338"><a href="#Parser-4338"><span class="linenos">4338</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4339"><a href="#Parser-4339"><span class="linenos">4339</span></a> +</span><span id="Parser-4340"><a href="#Parser-4340"><span class="linenos">4340</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-4341"><a href="#Parser-4341"><span class="linenos">4341</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="Parser-4342"><a href="#Parser-4342"><span class="linenos">4342</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-4343"><a href="#Parser-4343"><span class="linenos">4343</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> +</span><span id="Parser-4344"><a href="#Parser-4344"><span class="linenos">4344</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-4345"><a href="#Parser-4345"><span class="linenos">4345</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="Parser-4346"><a href="#Parser-4346"><span class="linenos">4346</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="Parser-4347"><a href="#Parser-4347"><span class="linenos">4347</span></a> <span class="p">)</span> +</span><span id="Parser-4348"><a href="#Parser-4348"><span class="linenos">4348</span></a> <span class="p">)</span> +</span><span id="Parser-4349"><a href="#Parser-4349"><span class="linenos">4349</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENUM_TYPE_TOKENS</span><span class="p">:</span> +</span><span id="Parser-4350"><a href="#Parser-4350"><span class="linenos">4350</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">)</span> +</span><span id="Parser-4351"><a href="#Parser-4351"><span class="linenos">4351</span></a> <span class="k">elif</span> <span class="n">is_aggregate</span><span class="p">:</span> +</span><span id="Parser-4352"><a href="#Parser-4352"><span class="linenos">4352</span></a> <span class="n">func_or_ident</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="Parser-4353"><a href="#Parser-4353"><span class="linenos">4353</span></a> <span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,)</span> +</span><span id="Parser-4354"><a href="#Parser-4354"><span class="linenos">4354</span></a> <span class="p">)</span> +</span><span id="Parser-4355"><a href="#Parser-4355"><span class="linenos">4355</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">func_or_ident</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-4356"><a href="#Parser-4356"><span class="linenos">4356</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4357"><a href="#Parser-4357"><span class="linenos">4357</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-4358"><a href="#Parser-4358"><span class="linenos">4358</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="Parser-4359"><a href="#Parser-4359"><span class="linenos">4359</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="Parser-4360"><a href="#Parser-4360"><span class="linenos">4360</span></a> <span class="p">)</span> +</span><span id="Parser-4361"><a href="#Parser-4361"><span class="linenos">4361</span></a> <span class="p">)</span> +</span><span id="Parser-4362"><a href="#Parser-4362"><span class="linenos">4362</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">func_or_ident</span><span class="p">)</span> +</span><span id="Parser-4363"><a href="#Parser-4363"><span class="linenos">4363</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4364"><a href="#Parser-4364"><span class="linenos">4364</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type_size</span><span class="p">)</span> +</span><span id="Parser-4365"><a href="#Parser-4365"><span class="linenos">4365</span></a> +</span><span id="Parser-4366"><a href="#Parser-4366"><span class="linenos">4366</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-4367"><a href="#Parser-4367"><span class="linenos">4367</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4368"><a href="#Parser-4368"><span class="linenos">4368</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4369"><a href="#Parser-4369"><span class="linenos">4369</span></a> +</span><span id="Parser-4370"><a href="#Parser-4370"><span class="linenos">4370</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-4371"><a href="#Parser-4371"><span class="linenos">4371</span></a> +</span><span id="Parser-4372"><a href="#Parser-4372"><span class="linenos">4372</span></a> <span class="n">values</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="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4373"><a href="#Parser-4373"><span class="linenos">4373</span></a> +</span><span id="Parser-4374"><a href="#Parser-4374"><span class="linenos">4374</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="Parser-4375"><a href="#Parser-4375"><span class="linenos">4375</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="Parser-4376"><a href="#Parser-4376"><span class="linenos">4376</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_types</span><span class="p">(</span><span class="n">type_required</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-4377"><a href="#Parser-4377"><span class="linenos">4377</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4378"><a href="#Parser-4378"><span class="linenos">4378</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-4379"><a href="#Parser-4379"><span class="linenos">4379</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span> +</span><span id="Parser-4380"><a href="#Parser-4380"><span class="linenos">4380</span></a> <span class="n">check_func</span><span class="o">=</span><span class="n">check_func</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> <span class="n">allow_identifiers</span><span class="o">=</span><span class="n">allow_identifiers</span> +</span><span id="Parser-4381"><a href="#Parser-4381"><span class="linenos">4381</span></a> <span class="p">)</span> +</span><span id="Parser-4382"><a href="#Parser-4382"><span class="linenos">4382</span></a> <span class="p">)</span> +</span><span id="Parser-4383"><a href="#Parser-4383"><span class="linenos">4383</span></a> +</span><span id="Parser-4384"><a href="#Parser-4384"><span class="linenos">4384</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="Parser-4385"><a href="#Parser-4385"><span class="linenos">4385</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="Parser-4386"><a href="#Parser-4386"><span class="linenos">4386</span></a> +</span><span id="Parser-4387"><a href="#Parser-4387"><span class="linenos">4387</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> +</span><span id="Parser-4388"><a href="#Parser-4388"><span class="linenos">4388</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="Parser-4389"><a href="#Parser-4389"><span class="linenos">4389</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> +</span><span id="Parser-4390"><a href="#Parser-4390"><span class="linenos">4390</span></a> +</span><span id="Parser-4391"><a href="#Parser-4391"><span class="linenos">4391</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> +</span><span id="Parser-4392"><a href="#Parser-4392"><span class="linenos">4392</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="Parser-4393"><a href="#Parser-4393"><span class="linenos">4393</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4394"><a href="#Parser-4394"><span class="linenos">4394</span></a> <span class="n">tz_type</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-4395"><a href="#Parser-4395"><span class="linenos">4395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMETZ</span> +</span><span id="Parser-4396"><a href="#Parser-4396"><span class="linenos">4396</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMES</span> +</span><span id="Parser-4397"><a href="#Parser-4397"><span class="linenos">4397</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span> +</span><span id="Parser-4398"><a href="#Parser-4398"><span class="linenos">4398</span></a> <span class="p">)</span> +</span><span id="Parser-4399"><a href="#Parser-4399"><span class="linenos">4399</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">tz_type</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4400"><a href="#Parser-4400"><span class="linenos">4400</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"LOCAL"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="Parser-4401"><a href="#Parser-4401"><span class="linenos">4401</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4402"><a href="#Parser-4402"><span class="linenos">4402</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4403"><a href="#Parser-4403"><span class="linenos">4403</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="Parser-4404"><a href="#Parser-4404"><span class="linenos">4404</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4405"><a href="#Parser-4405"><span class="linenos">4405</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> +</span><span id="Parser-4406"><a href="#Parser-4406"><span class="linenos">4406</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4407"><a href="#Parser-4407"><span class="linenos">4407</span></a> <span class="k">if</span> <span class="n">unit</span><span class="p">:</span> +</span><span id="Parser-4408"><a href="#Parser-4408"><span class="linenos">4408</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="Parser-4409"><a href="#Parser-4409"><span class="linenos">4409</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntervalSpan</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-4410"><a href="#Parser-4410"><span class="linenos">4410</span></a> +</span><span id="Parser-4411"><a href="#Parser-4411"><span class="linenos">4411</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span> +</span><span id="Parser-4412"><a href="#Parser-4412"><span class="linenos">4412</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4413"><a href="#Parser-4413"><span class="linenos">4413</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span> +</span><span id="Parser-4414"><a href="#Parser-4414"><span class="linenos">4414</span></a> +</span><span id="Parser-4415"><a href="#Parser-4415"><span class="linenos">4415</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> +</span><span id="Parser-4416"><a href="#Parser-4416"><span class="linenos">4416</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4417"><a href="#Parser-4417"><span class="linenos">4417</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> </span><span id="Parser-4418"><a href="#Parser-4418"><span class="linenos">4418</span></a> -</span><span id="Parser-4419"><a href="#Parser-4419"><span class="linenos">4419</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-4420"><a href="#Parser-4420"><span class="linenos">4420</span></a> <span class="n">matched_l_bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)</span> -</span><span id="Parser-4421"><a href="#Parser-4421"><span class="linenos">4421</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">matched_l_bracket</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">matched_array</span><span class="p">:</span> -</span><span id="Parser-4422"><a href="#Parser-4422"><span class="linenos">4422</span></a> <span class="k">break</span> -</span><span id="Parser-4423"><a href="#Parser-4423"><span class="linenos">4423</span></a> -</span><span id="Parser-4424"><a href="#Parser-4424"><span class="linenos">4424</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-4425"><a href="#Parser-4425"><span class="linenos">4425</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> -</span><span id="Parser-4426"><a href="#Parser-4426"><span class="linenos">4426</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">schema</span><span class="p">:</span> -</span><span id="Parser-4427"><a href="#Parser-4427"><span class="linenos">4427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4428"><a href="#Parser-4428"><span class="linenos">4428</span></a> <span class="k">break</span> -</span><span id="Parser-4429"><a href="#Parser-4429"><span class="linenos">4429</span></a> -</span><span id="Parser-4430"><a href="#Parser-4430"><span class="linenos">4430</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="Parser-4431"><a href="#Parser-4431"><span class="linenos">4431</span></a> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span> -</span><span id="Parser-4432"><a href="#Parser-4432"><span class="linenos">4432</span></a> <span class="p">)</span> -</span><span id="Parser-4433"><a href="#Parser-4433"><span class="linenos">4433</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> -</span><span id="Parser-4434"><a href="#Parser-4434"><span class="linenos">4434</span></a> -</span><span id="Parser-4435"><a href="#Parser-4435"><span class="linenos">4435</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="Parser-4436"><a href="#Parser-4436"><span class="linenos">4436</span></a> <span class="n">converter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4437"><a href="#Parser-4437"><span class="linenos">4437</span></a> <span class="k">if</span> <span class="n">converter</span><span class="p">:</span> -</span><span id="Parser-4438"><a href="#Parser-4438"><span class="linenos">4438</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">converter</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="p">))</span> -</span><span id="Parser-4439"><a href="#Parser-4439"><span class="linenos">4439</span></a> -</span><span id="Parser-4440"><a href="#Parser-4440"><span class="linenos">4440</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4441"><a href="#Parser-4441"><span class="linenos">4441</span></a> -</span><span id="Parser-4442"><a href="#Parser-4442"><span class="linenos">4442</span></a> <span class="k">def</span> <span class="nf">_parse_struct_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_required</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4443"><a href="#Parser-4443"><span class="linenos">4443</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4444"><a href="#Parser-4444"><span class="linenos">4444</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-4445"><a href="#Parser-4445"><span class="linenos">4445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">(</span><span class="n">parse_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4446"><a href="#Parser-4446"><span class="linenos">4446</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-4447"><a href="#Parser-4447"><span class="linenos">4447</span></a> <span class="p">)</span> -</span><span id="Parser-4448"><a href="#Parser-4448"><span class="linenos">4448</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> -</span><span id="Parser-4449"><a href="#Parser-4449"><span class="linenos">4449</span></a> -</span><span id="Parser-4450"><a href="#Parser-4450"><span class="linenos">4450</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-4451"><a href="#Parser-4451"><span class="linenos">4451</span></a> <span class="n">type_required</span> -</span><span id="Parser-4452"><a href="#Parser-4452"><span class="linenos">4452</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> -</span><span id="Parser-4453"><a href="#Parser-4453"><span class="linenos">4453</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4454"><a href="#Parser-4454"><span class="linenos">4454</span></a> <span class="p">):</span> -</span><span id="Parser-4455"><a href="#Parser-4455"><span class="linenos">4455</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4456"><a href="#Parser-4456"><span class="linenos">4456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-4457"><a href="#Parser-4457"><span class="linenos">4457</span></a> -</span><span id="Parser-4458"><a href="#Parser-4458"><span class="linenos">4458</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4459"><a href="#Parser-4459"><span class="linenos">4459</span></a> -</span><span id="Parser-4460"><a href="#Parser-4460"><span class="linenos">4460</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4461"><a href="#Parser-4461"><span class="linenos">4461</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> -</span><span id="Parser-4462"><a href="#Parser-4462"><span class="linenos">4462</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4463"><a href="#Parser-4463"><span class="linenos">4463</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> -</span><span id="Parser-4464"><a href="#Parser-4464"><span class="linenos">4464</span></a> -</span><span id="Parser-4465"><a href="#Parser-4465"><span class="linenos">4465</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4466"><a href="#Parser-4466"><span class="linenos">4466</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> -</span><span id="Parser-4467"><a href="#Parser-4467"><span class="linenos">4467</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4468"><a href="#Parser-4468"><span class="linenos">4468</span></a> -</span><span id="Parser-4469"><a href="#Parser-4469"><span class="linenos">4469</span></a> <span class="k">def</span> <span class="nf">_parse_column_reference</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4470"><a href="#Parser-4470"><span class="linenos">4470</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-4471"><a href="#Parser-4471"><span class="linenos">4471</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-4472"><a href="#Parser-4472"><span class="linenos">4472</span></a> <span class="ow">not</span> <span class="n">this</span> -</span><span id="Parser-4473"><a href="#Parser-4473"><span class="linenos">4473</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4474"><a href="#Parser-4474"><span class="linenos">4474</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">VALUES_FOLLOWED_BY_PAREN</span> -</span><span id="Parser-4475"><a href="#Parser-4475"><span class="linenos">4475</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="Parser-4476"><a href="#Parser-4476"><span class="linenos">4476</span></a> <span class="p">):</span> -</span><span id="Parser-4477"><a href="#Parser-4477"><span class="linenos">4477</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-4478"><a href="#Parser-4478"><span class="linenos">4478</span></a> -</span><span id="Parser-4479"><a href="#Parser-4479"><span class="linenos">4479</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="Parser-4480"><a href="#Parser-4480"><span class="linenos">4480</span></a> <span class="c1"># We bubble up comments from the Identifier to the Column</span> -</span><span id="Parser-4481"><a href="#Parser-4481"><span class="linenos">4481</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4419"><a href="#Parser-4419"><span class="linenos">4419</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> +</span><span id="Parser-4420"><a href="#Parser-4420"><span class="linenos">4420</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4421"><a href="#Parser-4421"><span class="linenos">4421</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4422"><a href="#Parser-4422"><span class="linenos">4422</span></a> +</span><span id="Parser-4423"><a href="#Parser-4423"><span class="linenos">4423</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> +</span><span id="Parser-4424"><a href="#Parser-4424"><span class="linenos">4424</span></a> +</span><span id="Parser-4425"><a href="#Parser-4425"><span class="linenos">4425</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-4426"><a href="#Parser-4426"><span class="linenos">4426</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNSIGNED"</span><span class="p">):</span> +</span><span id="Parser-4427"><a href="#Parser-4427"><span class="linenos">4427</span></a> <span class="n">unsigned_type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SIGNED_TO_UNSIGNED_TYPE_TOKEN</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_token</span><span class="p">)</span> +</span><span id="Parser-4428"><a href="#Parser-4428"><span class="linenos">4428</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">unsigned_type_token</span><span class="p">:</span> +</span><span id="Parser-4429"><a href="#Parser-4429"><span class="linenos">4429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s2"> to unsigned."</span><span class="p">)</span> +</span><span id="Parser-4430"><a href="#Parser-4430"><span class="linenos">4430</span></a> +</span><span id="Parser-4431"><a href="#Parser-4431"><span class="linenos">4431</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="n">unsigned_type_token</span> <span class="ow">or</span> <span class="n">type_token</span> +</span><span id="Parser-4432"><a href="#Parser-4432"><span class="linenos">4432</span></a> +</span><span id="Parser-4433"><a href="#Parser-4433"><span class="linenos">4433</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="Parser-4434"><a href="#Parser-4434"><span class="linenos">4434</span></a> <span class="n">this</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">Type</span><span class="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">],</span> +</span><span id="Parser-4435"><a href="#Parser-4435"><span class="linenos">4435</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-4436"><a href="#Parser-4436"><span class="linenos">4436</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> +</span><span id="Parser-4437"><a href="#Parser-4437"><span class="linenos">4437</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> +</span><span id="Parser-4438"><a href="#Parser-4438"><span class="linenos">4438</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="Parser-4439"><a href="#Parser-4439"><span class="linenos">4439</span></a> <span class="p">)</span> +</span><span id="Parser-4440"><a href="#Parser-4440"><span class="linenos">4440</span></a> <span class="k">elif</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-4441"><a href="#Parser-4441"><span class="linenos">4441</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4442"><a href="#Parser-4442"><span class="linenos">4442</span></a> +</span><span id="Parser-4443"><a href="#Parser-4443"><span class="linenos">4443</span></a> <span class="c1"># https://materialize.com/docs/sql/types/list/#type-name</span> +</span><span id="Parser-4444"><a href="#Parser-4444"><span class="linenos">4444</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LIST</span><span class="p">):</span> +</span><span id="Parser-4445"><a href="#Parser-4445"><span class="linenos">4445</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">LIST</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4446"><a href="#Parser-4446"><span class="linenos">4446</span></a> +</span><span id="Parser-4447"><a href="#Parser-4447"><span class="linenos">4447</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4448"><a href="#Parser-4448"><span class="linenos">4448</span></a> +</span><span id="Parser-4449"><a href="#Parser-4449"><span class="linenos">4449</span></a> <span class="c1"># Postgres supports the INT ARRAY[3] syntax as a synonym for INT[3]</span> +</span><span id="Parser-4450"><a href="#Parser-4450"><span class="linenos">4450</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">)</span> +</span><span id="Parser-4451"><a href="#Parser-4451"><span class="linenos">4451</span></a> +</span><span id="Parser-4452"><a href="#Parser-4452"><span class="linenos">4452</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-4453"><a href="#Parser-4453"><span class="linenos">4453</span></a> <span class="n">matched_l_bracket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">)</span> +</span><span id="Parser-4454"><a href="#Parser-4454"><span class="linenos">4454</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">matched_l_bracket</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">matched_array</span><span class="p">:</span> +</span><span id="Parser-4455"><a href="#Parser-4455"><span class="linenos">4455</span></a> <span class="k">break</span> +</span><span id="Parser-4456"><a href="#Parser-4456"><span class="linenos">4456</span></a> +</span><span id="Parser-4457"><a href="#Parser-4457"><span class="linenos">4457</span></a> <span class="n">matched_array</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4458"><a href="#Parser-4458"><span class="linenos">4458</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">None</span> +</span><span id="Parser-4459"><a href="#Parser-4459"><span class="linenos">4459</span></a> <span class="k">if</span> <span class="n">values</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">schema</span><span class="p">:</span> +</span><span id="Parser-4460"><a href="#Parser-4460"><span class="linenos">4460</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4461"><a href="#Parser-4461"><span class="linenos">4461</span></a> <span class="k">break</span> +</span><span id="Parser-4462"><a href="#Parser-4462"><span class="linenos">4462</span></a> +</span><span id="Parser-4463"><a href="#Parser-4463"><span class="linenos">4463</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="Parser-4464"><a href="#Parser-4464"><span class="linenos">4464</span></a> <span class="n">this</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">Type</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span> +</span><span id="Parser-4465"><a href="#Parser-4465"><span class="linenos">4465</span></a> <span class="p">)</span> +</span><span id="Parser-4466"><a href="#Parser-4466"><span class="linenos">4466</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> +</span><span id="Parser-4467"><a href="#Parser-4467"><span class="linenos">4467</span></a> +</span><span id="Parser-4468"><a href="#Parser-4468"><span class="linenos">4468</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="Parser-4469"><a href="#Parser-4469"><span class="linenos">4469</span></a> <span class="n">converter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_CONVERTER</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4470"><a href="#Parser-4470"><span class="linenos">4470</span></a> <span class="k">if</span> <span class="n">converter</span><span class="p">:</span> +</span><span id="Parser-4471"><a href="#Parser-4471"><span class="linenos">4471</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">converter</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> <span class="n">this</span><span class="p">))</span> +</span><span id="Parser-4472"><a href="#Parser-4472"><span class="linenos">4472</span></a> +</span><span id="Parser-4473"><a href="#Parser-4473"><span class="linenos">4473</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4474"><a href="#Parser-4474"><span class="linenos">4474</span></a> +</span><span id="Parser-4475"><a href="#Parser-4475"><span class="linenos">4475</span></a> <span class="k">def</span> <span class="nf">_parse_struct_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_required</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4476"><a href="#Parser-4476"><span class="linenos">4476</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4477"><a href="#Parser-4477"><span class="linenos">4477</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-4478"><a href="#Parser-4478"><span class="linenos">4478</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">(</span><span class="n">parse_interval</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">fallback_to_identifier</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4479"><a href="#Parser-4479"><span class="linenos">4479</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-4480"><a href="#Parser-4480"><span class="linenos">4480</span></a> <span class="p">)</span> +</span><span id="Parser-4481"><a href="#Parser-4481"><span class="linenos">4481</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> </span><span id="Parser-4482"><a href="#Parser-4482"><span class="linenos">4482</span></a> -</span><span id="Parser-4483"><a href="#Parser-4483"><span class="linenos">4483</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4484"><a href="#Parser-4484"><span class="linenos">4484</span></a> -</span><span id="Parser-4485"><a href="#Parser-4485"><span class="linenos">4485</span></a> <span class="k">def</span> <span class="nf">_parse_colon_as_json_extract</span><span class="p">(</span> -</span><span id="Parser-4486"><a href="#Parser-4486"><span class="linenos">4486</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-4487"><a href="#Parser-4487"><span class="linenos">4487</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4488"><a href="#Parser-4488"><span class="linenos">4488</span></a> <span class="n">casts</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-4489"><a href="#Parser-4489"><span class="linenos">4489</span></a> <span class="n">json_path</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-4483"><a href="#Parser-4483"><span class="linenos">4483</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-4484"><a href="#Parser-4484"><span class="linenos">4484</span></a> <span class="n">type_required</span> +</span><span id="Parser-4485"><a href="#Parser-4485"><span class="linenos">4485</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> +</span><span id="Parser-4486"><a href="#Parser-4486"><span class="linenos">4486</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4487"><a href="#Parser-4487"><span class="linenos">4487</span></a> <span class="p">):</span> +</span><span id="Parser-4488"><a href="#Parser-4488"><span class="linenos">4488</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4489"><a href="#Parser-4489"><span class="linenos">4489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> </span><span id="Parser-4490"><a href="#Parser-4490"><span class="linenos">4490</span></a> -</span><span id="Parser-4491"><a href="#Parser-4491"><span class="linenos">4491</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="Parser-4492"><a href="#Parser-4492"><span class="linenos">4492</span></a> <span class="n">start_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4493"><a href="#Parser-4493"><span class="linenos">4493</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-4494"><a href="#Parser-4494"><span class="linenos">4494</span></a> -</span><span id="Parser-4495"><a href="#Parser-4495"><span class="linenos">4495</span></a> <span class="c1"># The cast :: operator has a lower precedence than the extraction operator :, so</span> -</span><span id="Parser-4496"><a href="#Parser-4496"><span class="linenos">4496</span></a> <span class="c1"># we rearrange the AST appropriately to avoid casting the JSON path</span> -</span><span id="Parser-4497"><a href="#Parser-4497"><span class="linenos">4497</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="Parser-4498"><a href="#Parser-4498"><span class="linenos">4498</span></a> <span class="n">casts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">to</span><span class="p">)</span> -</span><span id="Parser-4499"><a href="#Parser-4499"><span class="linenos">4499</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">this</span> -</span><span id="Parser-4500"><a href="#Parser-4500"><span class="linenos">4500</span></a> -</span><span id="Parser-4501"><a href="#Parser-4501"><span class="linenos">4501</span></a> <span class="k">if</span> <span class="n">casts</span><span class="p">:</span> -</span><span id="Parser-4502"><a href="#Parser-4502"><span class="linenos">4502</span></a> <span class="n">dcolon_offset</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span> -</span><span id="Parser-4503"><a href="#Parser-4503"><span class="linenos">4503</span></a> <span class="n">i</span> -</span><span id="Parser-4504"><a href="#Parser-4504"><span class="linenos">4504</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">:])</span> -</span><span id="Parser-4505"><a href="#Parser-4505"><span class="linenos">4505</span></a> <span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span> -</span><span id="Parser-4506"><a href="#Parser-4506"><span class="linenos">4506</span></a> <span class="p">)</span> -</span><span id="Parser-4507"><a href="#Parser-4507"><span class="linenos">4507</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span> <span class="o">+</span> <span class="n">dcolon_offset</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-4508"><a href="#Parser-4508"><span class="linenos">4508</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4509"><a href="#Parser-4509"><span class="linenos">4509</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-4510"><a href="#Parser-4510"><span class="linenos">4510</span></a> -</span><span id="Parser-4511"><a href="#Parser-4511"><span class="linenos">4511</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> -</span><span id="Parser-4512"><a href="#Parser-4512"><span class="linenos">4512</span></a> <span class="n">json_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">],</span> <span class="n">end_token</span><span class="p">))</span> -</span><span id="Parser-4513"><a href="#Parser-4513"><span class="linenos">4513</span></a> -</span><span id="Parser-4514"><a href="#Parser-4514"><span class="linenos">4514</span></a> <span class="k">if</span> <span class="n">json_path</span><span class="p">:</span> -</span><span id="Parser-4515"><a href="#Parser-4515"><span class="linenos">4515</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4516"><a href="#Parser-4516"><span class="linenos">4516</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> -</span><span id="Parser-4517"><a href="#Parser-4517"><span class="linenos">4517</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-4518"><a href="#Parser-4518"><span class="linenos">4518</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">json_path</span><span class="p">))),</span> -</span><span id="Parser-4519"><a href="#Parser-4519"><span class="linenos">4519</span></a> <span class="p">)</span> -</span><span id="Parser-4520"><a href="#Parser-4520"><span class="linenos">4520</span></a> -</span><span id="Parser-4521"><a href="#Parser-4521"><span class="linenos">4521</span></a> <span class="k">while</span> <span class="n">casts</span><span class="p">:</span> -</span><span id="Parser-4522"><a href="#Parser-4522"><span class="linenos">4522</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">casts</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> +</span><span id="Parser-4491"><a href="#Parser-4491"><span class="linenos">4491</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4492"><a href="#Parser-4492"><span class="linenos">4492</span></a> +</span><span id="Parser-4493"><a href="#Parser-4493"><span class="linenos">4493</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4494"><a href="#Parser-4494"><span class="linenos">4494</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AT"</span><span class="p">,</span> <span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ZONE"</span><span class="p">):</span> +</span><span id="Parser-4495"><a href="#Parser-4495"><span class="linenos">4495</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4496"><a href="#Parser-4496"><span class="linenos">4496</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> +</span><span id="Parser-4497"><a href="#Parser-4497"><span class="linenos">4497</span></a> +</span><span id="Parser-4498"><a href="#Parser-4498"><span class="linenos">4498</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4499"><a href="#Parser-4499"><span class="linenos">4499</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> +</span><span id="Parser-4500"><a href="#Parser-4500"><span class="linenos">4500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4501"><a href="#Parser-4501"><span class="linenos">4501</span></a> +</span><span id="Parser-4502"><a href="#Parser-4502"><span class="linenos">4502</span></a> <span class="k">def</span> <span class="nf">_parse_column_reference</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4503"><a href="#Parser-4503"><span class="linenos">4503</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-4504"><a href="#Parser-4504"><span class="linenos">4504</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-4505"><a href="#Parser-4505"><span class="linenos">4505</span></a> <span class="ow">not</span> <span class="n">this</span> +</span><span id="Parser-4506"><a href="#Parser-4506"><span class="linenos">4506</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4507"><a href="#Parser-4507"><span class="linenos">4507</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">VALUES_FOLLOWED_BY_PAREN</span> +</span><span id="Parser-4508"><a href="#Parser-4508"><span class="linenos">4508</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="Parser-4509"><a href="#Parser-4509"><span class="linenos">4509</span></a> <span class="p">):</span> +</span><span id="Parser-4510"><a href="#Parser-4510"><span class="linenos">4510</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-4511"><a href="#Parser-4511"><span class="linenos">4511</span></a> +</span><span id="Parser-4512"><a href="#Parser-4512"><span class="linenos">4512</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="Parser-4513"><a href="#Parser-4513"><span class="linenos">4513</span></a> <span class="c1"># We bubble up comments from the Identifier to the Column</span> +</span><span id="Parser-4514"><a href="#Parser-4514"><span class="linenos">4514</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">(),</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4515"><a href="#Parser-4515"><span class="linenos">4515</span></a> +</span><span id="Parser-4516"><a href="#Parser-4516"><span class="linenos">4516</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4517"><a href="#Parser-4517"><span class="linenos">4517</span></a> +</span><span id="Parser-4518"><a href="#Parser-4518"><span class="linenos">4518</span></a> <span class="k">def</span> <span class="nf">_parse_colon_as_json_extract</span><span class="p">(</span> +</span><span id="Parser-4519"><a href="#Parser-4519"><span class="linenos">4519</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-4520"><a href="#Parser-4520"><span class="linenos">4520</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4521"><a href="#Parser-4521"><span class="linenos">4521</span></a> <span class="n">casts</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-4522"><a href="#Parser-4522"><span class="linenos">4522</span></a> <span class="n">json_path</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Parser-4523"><a href="#Parser-4523"><span class="linenos">4523</span></a> -</span><span id="Parser-4524"><a href="#Parser-4524"><span class="linenos">4524</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4525"><a href="#Parser-4525"><span class="linenos">4525</span></a> -</span><span id="Parser-4526"><a href="#Parser-4526"><span class="linenos">4526</span></a> <span class="k">def</span> <span class="nf">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4527"><a href="#Parser-4527"><span class="linenos">4527</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4528"><a href="#Parser-4528"><span class="linenos">4528</span></a> -</span><span id="Parser-4529"><a href="#Parser-4529"><span class="linenos">4529</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> -</span><span id="Parser-4530"><a href="#Parser-4530"><span class="linenos">4530</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-4531"><a href="#Parser-4531"><span class="linenos">4531</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> -</span><span id="Parser-4532"><a href="#Parser-4532"><span class="linenos">4532</span></a> -</span><span id="Parser-4533"><a href="#Parser-4533"><span class="linenos">4533</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> -</span><span id="Parser-4534"><a href="#Parser-4534"><span class="linenos">4534</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-4535"><a href="#Parser-4535"><span class="linenos">4535</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> -</span><span id="Parser-4536"><a href="#Parser-4536"><span class="linenos">4536</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> -</span><span id="Parser-4537"><a href="#Parser-4537"><span class="linenos">4537</span></a> <span class="k">elif</span> <span class="n">op</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-4538"><a href="#Parser-4538"><span class="linenos">4538</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> -</span><span id="Parser-4539"><a href="#Parser-4539"><span class="linenos">4539</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4540"><a href="#Parser-4540"><span class="linenos">4540</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">anonymous_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4541"><a href="#Parser-4541"><span class="linenos">4541</span></a> -</span><span id="Parser-4542"><a href="#Parser-4542"><span class="linenos">4542</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-4543"><a href="#Parser-4543"><span class="linenos">4543</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> -</span><span id="Parser-4544"><a href="#Parser-4544"><span class="linenos">4544</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> -</span><span id="Parser-4545"><a href="#Parser-4545"><span class="linenos">4545</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> -</span><span id="Parser-4546"><a href="#Parser-4546"><span class="linenos">4546</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">replace_tree</span><span class="p">(</span> -</span><span id="Parser-4547"><a href="#Parser-4547"><span class="linenos">4547</span></a> <span class="n">this</span><span class="p">,</span> -</span><span id="Parser-4548"><a href="#Parser-4548"><span class="linenos">4548</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-4549"><a href="#Parser-4549"><span class="linenos">4549</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4550"><a href="#Parser-4550"><span class="linenos">4550</span></a> <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">table</span> -</span><span id="Parser-4551"><a href="#Parser-4551"><span class="linenos">4551</span></a> <span class="k">else</span> <span class="n">n</span><span class="o">.</span><span class="n">this</span> -</span><span id="Parser-4552"><a href="#Parser-4552"><span class="linenos">4552</span></a> <span class="p">)</span> -</span><span id="Parser-4553"><a href="#Parser-4553"><span class="linenos">4553</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> -</span><span id="Parser-4554"><a href="#Parser-4554"><span class="linenos">4554</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span> -</span><span id="Parser-4555"><a href="#Parser-4555"><span class="linenos">4555</span></a> <span class="p">)</span> +</span><span id="Parser-4524"><a href="#Parser-4524"><span class="linenos">4524</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="Parser-4525"><a href="#Parser-4525"><span class="linenos">4525</span></a> <span class="n">start_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4526"><a href="#Parser-4526"><span class="linenos">4526</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-4527"><a href="#Parser-4527"><span class="linenos">4527</span></a> +</span><span id="Parser-4528"><a href="#Parser-4528"><span class="linenos">4528</span></a> <span class="c1"># The cast :: operator has a lower precedence than the extraction operator :, so</span> +</span><span id="Parser-4529"><a href="#Parser-4529"><span class="linenos">4529</span></a> <span class="c1"># we rearrange the AST appropriately to avoid casting the JSON path</span> +</span><span id="Parser-4530"><a href="#Parser-4530"><span class="linenos">4530</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="Parser-4531"><a href="#Parser-4531"><span class="linenos">4531</span></a> <span class="n">casts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">to</span><span class="p">)</span> +</span><span id="Parser-4532"><a href="#Parser-4532"><span class="linenos">4532</span></a> <span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-4533"><a href="#Parser-4533"><span class="linenos">4533</span></a> +</span><span id="Parser-4534"><a href="#Parser-4534"><span class="linenos">4534</span></a> <span class="k">if</span> <span class="n">casts</span><span class="p">:</span> +</span><span id="Parser-4535"><a href="#Parser-4535"><span class="linenos">4535</span></a> <span class="n">dcolon_offset</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span> +</span><span id="Parser-4536"><a href="#Parser-4536"><span class="linenos">4536</span></a> <span class="n">i</span> +</span><span id="Parser-4537"><a href="#Parser-4537"><span class="linenos">4537</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">:])</span> +</span><span id="Parser-4538"><a href="#Parser-4538"><span class="linenos">4538</span></a> <span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span> +</span><span id="Parser-4539"><a href="#Parser-4539"><span class="linenos">4539</span></a> <span class="p">)</span> +</span><span id="Parser-4540"><a href="#Parser-4540"><span class="linenos">4540</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span> <span class="o">+</span> <span class="n">dcolon_offset</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-4541"><a href="#Parser-4541"><span class="linenos">4541</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4542"><a href="#Parser-4542"><span class="linenos">4542</span></a> <span class="n">end_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-4543"><a href="#Parser-4543"><span class="linenos">4543</span></a> +</span><span id="Parser-4544"><a href="#Parser-4544"><span class="linenos">4544</span></a> <span class="k">if</span> <span class="n">path</span><span class="p">:</span> +</span><span id="Parser-4545"><a href="#Parser-4545"><span class="linenos">4545</span></a> <span class="n">json_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="n">start_index</span><span class="p">],</span> <span class="n">end_token</span><span class="p">))</span> +</span><span id="Parser-4546"><a href="#Parser-4546"><span class="linenos">4546</span></a> +</span><span id="Parser-4547"><a href="#Parser-4547"><span class="linenos">4547</span></a> <span class="k">if</span> <span class="n">json_path</span><span class="p">:</span> +</span><span id="Parser-4548"><a href="#Parser-4548"><span class="linenos">4548</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4549"><a href="#Parser-4549"><span class="linenos">4549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> +</span><span id="Parser-4550"><a href="#Parser-4550"><span class="linenos">4550</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-4551"><a href="#Parser-4551"><span class="linenos">4551</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">to_json_path</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">json_path</span><span class="p">))),</span> +</span><span id="Parser-4552"><a href="#Parser-4552"><span class="linenos">4552</span></a> <span class="p">)</span> +</span><span id="Parser-4553"><a href="#Parser-4553"><span class="linenos">4553</span></a> +</span><span id="Parser-4554"><a href="#Parser-4554"><span class="linenos">4554</span></a> <span class="k">while</span> <span class="n">casts</span><span class="p">:</span> +</span><span id="Parser-4555"><a href="#Parser-4555"><span class="linenos">4555</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">casts</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span> </span><span id="Parser-4556"><a href="#Parser-4556"><span class="linenos">4556</span></a> -</span><span id="Parser-4557"><a href="#Parser-4557"><span class="linenos">4557</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> -</span><span id="Parser-4558"><a href="#Parser-4558"><span class="linenos">4558</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> -</span><span id="Parser-4559"><a href="#Parser-4559"><span class="linenos">4559</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> -</span><span id="Parser-4560"><a href="#Parser-4560"><span class="linenos">4560</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4561"><a href="#Parser-4561"><span class="linenos">4561</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> -</span><span id="Parser-4562"><a href="#Parser-4562"><span class="linenos">4562</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> -</span><span id="Parser-4563"><a href="#Parser-4563"><span class="linenos">4563</span></a> <span class="n">table</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-4564"><a href="#Parser-4564"><span class="linenos">4564</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> -</span><span id="Parser-4565"><a href="#Parser-4565"><span class="linenos">4565</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> -</span><span id="Parser-4566"><a href="#Parser-4566"><span class="linenos">4566</span></a> <span class="p">)</span> -</span><span id="Parser-4567"><a href="#Parser-4567"><span class="linenos">4567</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4568"><a href="#Parser-4568"><span class="linenos">4568</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> -</span><span id="Parser-4569"><a href="#Parser-4569"><span class="linenos">4569</span></a> -</span><span id="Parser-4570"><a href="#Parser-4570"><span class="linenos">4570</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4571"><a href="#Parser-4571"><span class="linenos">4571</span></a> -</span><span id="Parser-4572"><a href="#Parser-4572"><span class="linenos">4572</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_colon_as_json_extract</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLON_IS_JSON_EXTRACT</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="Parser-4573"><a href="#Parser-4573"><span class="linenos">4573</span></a> -</span><span id="Parser-4574"><a href="#Parser-4574"><span class="linenos">4574</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4575"><a href="#Parser-4575"><span class="linenos">4575</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-4576"><a href="#Parser-4576"><span class="linenos">4576</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-4577"><a href="#Parser-4577"><span class="linenos">4577</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-4578"><a href="#Parser-4578"><span class="linenos">4578</span></a> -</span><span id="Parser-4579"><a href="#Parser-4579"><span class="linenos">4579</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> -</span><span id="Parser-4580"><a href="#Parser-4580"><span class="linenos">4580</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> -</span><span id="Parser-4581"><a href="#Parser-4581"><span class="linenos">4581</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> -</span><span id="Parser-4582"><a href="#Parser-4582"><span class="linenos">4582</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> -</span><span id="Parser-4583"><a href="#Parser-4583"><span class="linenos">4583</span></a> -</span><span id="Parser-4584"><a href="#Parser-4584"><span class="linenos">4584</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-4585"><a href="#Parser-4585"><span class="linenos">4585</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4586"><a href="#Parser-4586"><span class="linenos">4586</span></a> -</span><span id="Parser-4587"><a href="#Parser-4587"><span class="linenos">4587</span></a> <span class="k">return</span> <span class="n">primary</span> -</span><span id="Parser-4588"><a href="#Parser-4588"><span class="linenos">4588</span></a> -</span><span id="Parser-4589"><a href="#Parser-4589"><span class="linenos">4589</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> -</span><span id="Parser-4590"><a href="#Parser-4590"><span class="linenos">4590</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-4591"><a href="#Parser-4591"><span class="linenos">4591</span></a> -</span><span id="Parser-4592"><a href="#Parser-4592"><span class="linenos">4592</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-4593"><a href="#Parser-4593"><span class="linenos">4593</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-4594"><a href="#Parser-4594"><span class="linenos">4594</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="Parser-4595"><a href="#Parser-4595"><span class="linenos">4595</span></a> -</span><span id="Parser-4596"><a href="#Parser-4596"><span class="linenos">4596</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="Parser-4597"><a href="#Parser-4597"><span class="linenos">4597</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> -</span><span id="Parser-4598"><a href="#Parser-4598"><span class="linenos">4598</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4599"><a href="#Parser-4599"><span class="linenos">4599</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> -</span><span id="Parser-4600"><a href="#Parser-4600"><span class="linenos">4600</span></a> -</span><span id="Parser-4601"><a href="#Parser-4601"><span class="linenos">4601</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Parser-4557"><a href="#Parser-4557"><span class="linenos">4557</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4558"><a href="#Parser-4558"><span class="linenos">4558</span></a> +</span><span id="Parser-4559"><a href="#Parser-4559"><span class="linenos">4559</span></a> <span class="k">def</span> <span class="nf">_parse_column_ops</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4560"><a href="#Parser-4560"><span class="linenos">4560</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4561"><a href="#Parser-4561"><span class="linenos">4561</span></a> +</span><span id="Parser-4562"><a href="#Parser-4562"><span class="linenos">4562</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> +</span><span id="Parser-4563"><a href="#Parser-4563"><span class="linenos">4563</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-4564"><a href="#Parser-4564"><span class="linenos">4564</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> +</span><span id="Parser-4565"><a href="#Parser-4565"><span class="linenos">4565</span></a> +</span><span id="Parser-4566"><a href="#Parser-4566"><span class="linenos">4566</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> +</span><span id="Parser-4567"><a href="#Parser-4567"><span class="linenos">4567</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-4568"><a href="#Parser-4568"><span class="linenos">4568</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> +</span><span id="Parser-4569"><a href="#Parser-4569"><span class="linenos">4569</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> +</span><span id="Parser-4570"><a href="#Parser-4570"><span class="linenos">4570</span></a> <span class="k">elif</span> <span class="n">op</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-4571"><a href="#Parser-4571"><span class="linenos">4571</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_reference</span><span class="p">()</span> +</span><span id="Parser-4572"><a href="#Parser-4572"><span class="linenos">4572</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4573"><a href="#Parser-4573"><span class="linenos">4573</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">anonymous_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4574"><a href="#Parser-4574"><span class="linenos">4574</span></a> +</span><span id="Parser-4575"><a href="#Parser-4575"><span class="linenos">4575</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">)</span> <span class="ow">and</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-4576"><a href="#Parser-4576"><span class="linenos">4576</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> +</span><span id="Parser-4577"><a href="#Parser-4577"><span class="linenos">4577</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> +</span><span id="Parser-4578"><a href="#Parser-4578"><span class="linenos">4578</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> +</span><span id="Parser-4579"><a href="#Parser-4579"><span class="linenos">4579</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">replace_tree</span><span class="p">(</span> +</span><span id="Parser-4580"><a href="#Parser-4580"><span class="linenos">4580</span></a> <span class="n">this</span><span class="p">,</span> +</span><span id="Parser-4581"><a href="#Parser-4581"><span class="linenos">4581</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-4582"><a href="#Parser-4582"><span class="linenos">4582</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">n</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4583"><a href="#Parser-4583"><span class="linenos">4583</span></a> <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">table</span> +</span><span id="Parser-4584"><a href="#Parser-4584"><span class="linenos">4584</span></a> <span class="k">else</span> <span class="n">n</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-4585"><a href="#Parser-4585"><span class="linenos">4585</span></a> <span class="p">)</span> +</span><span id="Parser-4586"><a href="#Parser-4586"><span class="linenos">4586</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> +</span><span id="Parser-4587"><a href="#Parser-4587"><span class="linenos">4587</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span> +</span><span id="Parser-4588"><a href="#Parser-4588"><span class="linenos">4588</span></a> <span class="p">)</span> +</span><span id="Parser-4589"><a href="#Parser-4589"><span class="linenos">4589</span></a> +</span><span id="Parser-4590"><a href="#Parser-4590"><span class="linenos">4590</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> +</span><span id="Parser-4591"><a href="#Parser-4591"><span class="linenos">4591</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> +</span><span id="Parser-4592"><a href="#Parser-4592"><span class="linenos">4592</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> +</span><span id="Parser-4593"><a href="#Parser-4593"><span class="linenos">4593</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4594"><a href="#Parser-4594"><span class="linenos">4594</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> +</span><span id="Parser-4595"><a href="#Parser-4595"><span class="linenos">4595</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> +</span><span id="Parser-4596"><a href="#Parser-4596"><span class="linenos">4596</span></a> <span class="n">table</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-4597"><a href="#Parser-4597"><span class="linenos">4597</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> +</span><span id="Parser-4598"><a href="#Parser-4598"><span class="linenos">4598</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> +</span><span id="Parser-4599"><a href="#Parser-4599"><span class="linenos">4599</span></a> <span class="p">)</span> +</span><span id="Parser-4600"><a href="#Parser-4600"><span class="linenos">4600</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4601"><a href="#Parser-4601"><span class="linenos">4601</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> </span><span id="Parser-4602"><a href="#Parser-4602"><span class="linenos">4602</span></a> -</span><span id="Parser-4603"><a href="#Parser-4603"><span class="linenos">4603</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4604"><a href="#Parser-4604"><span class="linenos">4604</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> -</span><span id="Parser-4605"><a href="#Parser-4605"><span class="linenos">4605</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span> -</span><span id="Parser-4606"><a href="#Parser-4606"><span class="linenos">4606</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4607"><a href="#Parser-4607"><span class="linenos">4607</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">):</span> -</span><span id="Parser-4608"><a href="#Parser-4608"><span class="linenos">4608</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span> -</span><span id="Parser-4609"><a href="#Parser-4609"><span class="linenos">4609</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span> -</span><span id="Parser-4610"><a href="#Parser-4610"><span class="linenos">4610</span></a> <span class="p">)</span> -</span><span id="Parser-4611"><a href="#Parser-4611"><span class="linenos">4611</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">:</span> -</span><span id="Parser-4612"><a href="#Parser-4612"><span class="linenos">4612</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4613"><a href="#Parser-4613"><span class="linenos">4613</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4614"><a href="#Parser-4614"><span class="linenos">4614</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4615"><a href="#Parser-4615"><span class="linenos">4615</span></a> -</span><span id="Parser-4616"><a href="#Parser-4616"><span class="linenos">4616</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-4617"><a href="#Parser-4617"><span class="linenos">4617</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> -</span><span id="Parser-4618"><a href="#Parser-4618"><span class="linenos">4618</span></a> -</span><span id="Parser-4619"><a href="#Parser-4619"><span class="linenos">4619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4620"><a href="#Parser-4620"><span class="linenos">4620</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4603"><a href="#Parser-4603"><span class="linenos">4603</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4604"><a href="#Parser-4604"><span class="linenos">4604</span></a> +</span><span id="Parser-4605"><a href="#Parser-4605"><span class="linenos">4605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_colon_as_json_extract</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLON_IS_JSON_EXTRACT</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="Parser-4606"><a href="#Parser-4606"><span class="linenos">4606</span></a> +</span><span id="Parser-4607"><a href="#Parser-4607"><span class="linenos">4607</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4608"><a href="#Parser-4608"><span class="linenos">4608</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-4609"><a href="#Parser-4609"><span class="linenos">4609</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-4610"><a href="#Parser-4610"><span class="linenos">4610</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-4611"><a href="#Parser-4611"><span class="linenos">4611</span></a> +</span><span id="Parser-4612"><a href="#Parser-4612"><span class="linenos">4612</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> +</span><span id="Parser-4613"><a href="#Parser-4613"><span class="linenos">4613</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> +</span><span id="Parser-4614"><a href="#Parser-4614"><span class="linenos">4614</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> +</span><span id="Parser-4615"><a href="#Parser-4615"><span class="linenos">4615</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> +</span><span id="Parser-4616"><a href="#Parser-4616"><span class="linenos">4616</span></a> +</span><span id="Parser-4617"><a href="#Parser-4617"><span class="linenos">4617</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-4618"><a href="#Parser-4618"><span class="linenos">4618</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4619"><a href="#Parser-4619"><span class="linenos">4619</span></a> +</span><span id="Parser-4620"><a href="#Parser-4620"><span class="linenos">4620</span></a> <span class="k">return</span> <span class="n">primary</span> </span><span id="Parser-4621"><a href="#Parser-4621"><span class="linenos">4621</span></a> -</span><span id="Parser-4622"><a href="#Parser-4622"><span class="linenos">4622</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4623"><a href="#Parser-4623"><span class="linenos">4623</span></a> -</span><span id="Parser-4624"><a href="#Parser-4624"><span class="linenos">4624</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span> -</span><span id="Parser-4625"><a href="#Parser-4625"><span class="linenos">4625</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-4626"><a href="#Parser-4626"><span class="linenos">4626</span></a> <span class="n">any_token</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="Parser-4627"><a href="#Parser-4627"><span class="linenos">4627</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-4628"><a href="#Parser-4628"><span class="linenos">4628</span></a> <span class="n">anonymous_func</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="Parser-4629"><a href="#Parser-4629"><span class="linenos">4629</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4630"><a href="#Parser-4630"><span class="linenos">4630</span></a> <span class="k">if</span> <span class="n">anonymous_func</span><span class="p">:</span> -</span><span id="Parser-4631"><a href="#Parser-4631"><span class="linenos">4631</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-4632"><a href="#Parser-4632"><span class="linenos">4632</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">)</span> -</span><span id="Parser-4633"><a href="#Parser-4633"><span class="linenos">4633</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-4634"><a href="#Parser-4634"><span class="linenos">4634</span></a> <span class="p">)</span> -</span><span id="Parser-4635"><a href="#Parser-4635"><span class="linenos">4635</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4636"><a href="#Parser-4636"><span class="linenos">4636</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span> -</span><span id="Parser-4637"><a href="#Parser-4637"><span class="linenos">4637</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span> -</span><span id="Parser-4638"><a href="#Parser-4638"><span class="linenos">4638</span></a> <span class="p">)</span> -</span><span id="Parser-4639"><a href="#Parser-4639"><span class="linenos">4639</span></a> <span class="k">return</span> <span class="n">field</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">tokens</span><span class="p">)</span> -</span><span id="Parser-4640"><a href="#Parser-4640"><span class="linenos">4640</span></a> -</span><span id="Parser-4641"><a href="#Parser-4641"><span class="linenos">4641</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> -</span><span id="Parser-4642"><a href="#Parser-4642"><span class="linenos">4642</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-4643"><a href="#Parser-4643"><span class="linenos">4643</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-4644"><a href="#Parser-4644"><span class="linenos">4644</span></a> <span class="n">anonymous</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="Parser-4645"><a href="#Parser-4645"><span class="linenos">4645</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-4646"><a href="#Parser-4646"><span class="linenos">4646</span></a> <span class="n">any_token</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="Parser-4647"><a href="#Parser-4647"><span class="linenos">4647</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4648"><a href="#Parser-4648"><span class="linenos">4648</span></a> <span class="c1"># This allows us to also parse {fn <function>} syntax (Snowflake, MySQL support this)</span> -</span><span id="Parser-4649"><a href="#Parser-4649"><span class="linenos">4649</span></a> <span class="c1"># See: https://community.snowflake.com/s/article/SQL-Escape-Sequences</span> -</span><span id="Parser-4650"><a href="#Parser-4650"><span class="linenos">4650</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-4651"><a href="#Parser-4651"><span class="linenos">4651</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-4652"><a href="#Parser-4652"><span class="linenos">4652</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4653"><a href="#Parser-4653"><span class="linenos">4653</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> -</span><span id="Parser-4654"><a href="#Parser-4654"><span class="linenos">4654</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FN"</span> -</span><span id="Parser-4655"><a href="#Parser-4655"><span class="linenos">4655</span></a> <span class="p">):</span> -</span><span id="Parser-4656"><a href="#Parser-4656"><span class="linenos">4656</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="Parser-4657"><a href="#Parser-4657"><span class="linenos">4657</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-4658"><a href="#Parser-4658"><span class="linenos">4658</span></a> -</span><span id="Parser-4659"><a href="#Parser-4659"><span class="linenos">4659</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_call</span><span class="p">(</span> -</span><span id="Parser-4660"><a href="#Parser-4660"><span class="linenos">4660</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span> -</span><span id="Parser-4661"><a href="#Parser-4661"><span class="linenos">4661</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span> -</span><span id="Parser-4662"><a href="#Parser-4662"><span class="linenos">4662</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span> -</span><span id="Parser-4663"><a href="#Parser-4663"><span class="linenos">4663</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> -</span><span id="Parser-4664"><a href="#Parser-4664"><span class="linenos">4664</span></a> <span class="p">)</span> -</span><span id="Parser-4665"><a href="#Parser-4665"><span class="linenos">4665</span></a> -</span><span id="Parser-4666"><a href="#Parser-4666"><span class="linenos">4666</span></a> <span class="k">if</span> <span class="n">fn_syntax</span><span class="p">:</span> -</span><span id="Parser-4667"><a href="#Parser-4667"><span class="linenos">4667</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> -</span><span id="Parser-4668"><a href="#Parser-4668"><span class="linenos">4668</span></a> -</span><span id="Parser-4669"><a href="#Parser-4669"><span class="linenos">4669</span></a> <span class="k">return</span> <span class="n">func</span> -</span><span id="Parser-4670"><a href="#Parser-4670"><span class="linenos">4670</span></a> -</span><span id="Parser-4671"><a href="#Parser-4671"><span class="linenos">4671</span></a> <span class="k">def</span> <span class="nf">_parse_function_call</span><span class="p">(</span> -</span><span id="Parser-4672"><a href="#Parser-4672"><span class="linenos">4672</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-4673"><a href="#Parser-4673"><span class="linenos">4673</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-4674"><a href="#Parser-4674"><span class="linenos">4674</span></a> <span class="n">anonymous</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="Parser-4675"><a href="#Parser-4675"><span class="linenos">4675</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-4676"><a href="#Parser-4676"><span class="linenos">4676</span></a> <span class="n">any_token</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="Parser-4677"><a href="#Parser-4677"><span class="linenos">4677</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4678"><a href="#Parser-4678"><span class="linenos">4678</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-4679"><a href="#Parser-4679"><span class="linenos">4679</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4680"><a href="#Parser-4680"><span class="linenos">4680</span></a> -</span><span id="Parser-4681"><a href="#Parser-4681"><span class="linenos">4681</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">comments</span> -</span><span id="Parser-4682"><a href="#Parser-4682"><span class="linenos">4682</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-4683"><a href="#Parser-4683"><span class="linenos">4683</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-4684"><a href="#Parser-4684"><span class="linenos">4684</span></a> <span class="n">upper</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-4685"><a href="#Parser-4685"><span class="linenos">4685</span></a> -</span><span id="Parser-4686"><a href="#Parser-4686"><span class="linenos">4686</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="Parser-4687"><a href="#Parser-4687"><span class="linenos">4687</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">parser</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">INVALID_FUNC_NAME_TOKENS</span><span class="p">:</span> -</span><span id="Parser-4688"><a href="#Parser-4688"><span class="linenos">4688</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-4689"><a href="#Parser-4689"><span class="linenos">4689</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="Parser-4690"><a href="#Parser-4690"><span class="linenos">4690</span></a> -</span><span id="Parser-4691"><a href="#Parser-4691"><span class="linenos">4691</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="Parser-4692"><a href="#Parser-4692"><span class="linenos">4692</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> -</span><span id="Parser-4693"><a href="#Parser-4693"><span class="linenos">4693</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-4694"><a href="#Parser-4694"><span class="linenos">4694</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> -</span><span id="Parser-4695"><a href="#Parser-4695"><span class="linenos">4695</span></a> -</span><span id="Parser-4696"><a href="#Parser-4696"><span class="linenos">4696</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4697"><a href="#Parser-4697"><span class="linenos">4697</span></a> -</span><span id="Parser-4698"><a href="#Parser-4698"><span class="linenos">4698</span></a> <span class="k">if</span> <span class="n">any_token</span><span class="p">:</span> -</span><span id="Parser-4699"><a href="#Parser-4699"><span class="linenos">4699</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">:</span> -</span><span id="Parser-4700"><a href="#Parser-4700"><span class="linenos">4700</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4701"><a href="#Parser-4701"><span class="linenos">4701</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> -</span><span id="Parser-4702"><a href="#Parser-4702"><span class="linenos">4702</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4622"><a href="#Parser-4622"><span class="linenos">4622</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> +</span><span id="Parser-4623"><a href="#Parser-4623"><span class="linenos">4623</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-4624"><a href="#Parser-4624"><span class="linenos">4624</span></a> +</span><span id="Parser-4625"><a href="#Parser-4625"><span class="linenos">4625</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-4626"><a href="#Parser-4626"><span class="linenos">4626</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-4627"><a href="#Parser-4627"><span class="linenos">4627</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="Parser-4628"><a href="#Parser-4628"><span class="linenos">4628</span></a> +</span><span id="Parser-4629"><a href="#Parser-4629"><span class="linenos">4629</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="Parser-4630"><a href="#Parser-4630"><span class="linenos">4630</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> +</span><span id="Parser-4631"><a href="#Parser-4631"><span class="linenos">4631</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4632"><a href="#Parser-4632"><span class="linenos">4632</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expressions</span><span class="p">()</span> +</span><span id="Parser-4633"><a href="#Parser-4633"><span class="linenos">4633</span></a> +</span><span id="Parser-4634"><a href="#Parser-4634"><span class="linenos">4634</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Parser-4635"><a href="#Parser-4635"><span class="linenos">4635</span></a> +</span><span id="Parser-4636"><a href="#Parser-4636"><span class="linenos">4636</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-4637"><a href="#Parser-4637"><span class="linenos">4637</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">)</span> +</span><span id="Parser-4638"><a href="#Parser-4638"><span class="linenos">4638</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span> +</span><span id="Parser-4639"><a href="#Parser-4639"><span class="linenos">4639</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4640"><a href="#Parser-4640"><span class="linenos">4640</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">):</span> +</span><span id="Parser-4641"><a href="#Parser-4641"><span class="linenos">4641</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span> +</span><span id="Parser-4642"><a href="#Parser-4642"><span class="linenos">4642</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> <span class="n">parse_alias</span><span class="o">=</span><span class="kc">False</span> +</span><span id="Parser-4643"><a href="#Parser-4643"><span class="linenos">4643</span></a> <span class="p">)</span> +</span><span id="Parser-4644"><a href="#Parser-4644"><span class="linenos">4644</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">:</span> +</span><span id="Parser-4645"><a href="#Parser-4645"><span class="linenos">4645</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4646"><a href="#Parser-4646"><span class="linenos">4646</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4647"><a href="#Parser-4647"><span class="linenos">4647</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4648"><a href="#Parser-4648"><span class="linenos">4648</span></a> +</span><span id="Parser-4649"><a href="#Parser-4649"><span class="linenos">4649</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-4650"><a href="#Parser-4650"><span class="linenos">4650</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> +</span><span id="Parser-4651"><a href="#Parser-4651"><span class="linenos">4651</span></a> +</span><span id="Parser-4652"><a href="#Parser-4652"><span class="linenos">4652</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4653"><a href="#Parser-4653"><span class="linenos">4653</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4654"><a href="#Parser-4654"><span class="linenos">4654</span></a> +</span><span id="Parser-4655"><a href="#Parser-4655"><span class="linenos">4655</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4656"><a href="#Parser-4656"><span class="linenos">4656</span></a> +</span><span id="Parser-4657"><a href="#Parser-4657"><span class="linenos">4657</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span> +</span><span id="Parser-4658"><a href="#Parser-4658"><span class="linenos">4658</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-4659"><a href="#Parser-4659"><span class="linenos">4659</span></a> <span class="n">any_token</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="Parser-4660"><a href="#Parser-4660"><span class="linenos">4660</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-4661"><a href="#Parser-4661"><span class="linenos">4661</span></a> <span class="n">anonymous_func</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="Parser-4662"><a href="#Parser-4662"><span class="linenos">4662</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4663"><a href="#Parser-4663"><span class="linenos">4663</span></a> <span class="k">if</span> <span class="n">anonymous_func</span><span class="p">:</span> +</span><span id="Parser-4664"><a href="#Parser-4664"><span class="linenos">4664</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-4665"><a href="#Parser-4665"><span class="linenos">4665</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span><span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">)</span> +</span><span id="Parser-4666"><a href="#Parser-4666"><span class="linenos">4666</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4667"><a href="#Parser-4667"><span class="linenos">4667</span></a> <span class="p">)</span> +</span><span id="Parser-4668"><a href="#Parser-4668"><span class="linenos">4668</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4669"><a href="#Parser-4669"><span class="linenos">4669</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">(</span> +</span><span id="Parser-4670"><a href="#Parser-4670"><span class="linenos">4670</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous_func</span><span class="p">,</span> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span> +</span><span id="Parser-4671"><a href="#Parser-4671"><span class="linenos">4671</span></a> <span class="p">)</span> +</span><span id="Parser-4672"><a href="#Parser-4672"><span class="linenos">4672</span></a> <span class="k">return</span> <span class="n">field</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">tokens</span><span class="p">)</span> +</span><span id="Parser-4673"><a href="#Parser-4673"><span class="linenos">4673</span></a> +</span><span id="Parser-4674"><a href="#Parser-4674"><span class="linenos">4674</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> +</span><span id="Parser-4675"><a href="#Parser-4675"><span class="linenos">4675</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-4676"><a href="#Parser-4676"><span class="linenos">4676</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-4677"><a href="#Parser-4677"><span class="linenos">4677</span></a> <span class="n">anonymous</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="Parser-4678"><a href="#Parser-4678"><span class="linenos">4678</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-4679"><a href="#Parser-4679"><span class="linenos">4679</span></a> <span class="n">any_token</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="Parser-4680"><a href="#Parser-4680"><span class="linenos">4680</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4681"><a href="#Parser-4681"><span class="linenos">4681</span></a> <span class="c1"># This allows us to also parse {fn <function>} syntax (Snowflake, MySQL support this)</span> +</span><span id="Parser-4682"><a href="#Parser-4682"><span class="linenos">4682</span></a> <span class="c1"># See: https://community.snowflake.com/s/article/SQL-Escape-Sequences</span> +</span><span id="Parser-4683"><a href="#Parser-4683"><span class="linenos">4683</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-4684"><a href="#Parser-4684"><span class="linenos">4684</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-4685"><a href="#Parser-4685"><span class="linenos">4685</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-4686"><a href="#Parser-4686"><span class="linenos">4686</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> +</span><span id="Parser-4687"><a href="#Parser-4687"><span class="linenos">4687</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FN"</span> +</span><span id="Parser-4688"><a href="#Parser-4688"><span class="linenos">4688</span></a> <span class="p">):</span> +</span><span id="Parser-4689"><a href="#Parser-4689"><span class="linenos">4689</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="Parser-4690"><a href="#Parser-4690"><span class="linenos">4690</span></a> <span class="n">fn_syntax</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-4691"><a href="#Parser-4691"><span class="linenos">4691</span></a> +</span><span id="Parser-4692"><a href="#Parser-4692"><span class="linenos">4692</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_call</span><span class="p">(</span> +</span><span id="Parser-4693"><a href="#Parser-4693"><span class="linenos">4693</span></a> <span class="n">functions</span><span class="o">=</span><span class="n">functions</span><span class="p">,</span> +</span><span id="Parser-4694"><a href="#Parser-4694"><span class="linenos">4694</span></a> <span class="n">anonymous</span><span class="o">=</span><span class="n">anonymous</span><span class="p">,</span> +</span><span id="Parser-4695"><a href="#Parser-4695"><span class="linenos">4695</span></a> <span class="n">optional_parens</span><span class="o">=</span><span class="n">optional_parens</span><span class="p">,</span> +</span><span id="Parser-4696"><a href="#Parser-4696"><span class="linenos">4696</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> +</span><span id="Parser-4697"><a href="#Parser-4697"><span class="linenos">4697</span></a> <span class="p">)</span> +</span><span id="Parser-4698"><a href="#Parser-4698"><span class="linenos">4698</span></a> +</span><span id="Parser-4699"><a href="#Parser-4699"><span class="linenos">4699</span></a> <span class="k">if</span> <span class="n">fn_syntax</span><span class="p">:</span> +</span><span id="Parser-4700"><a href="#Parser-4700"><span class="linenos">4700</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> +</span><span id="Parser-4701"><a href="#Parser-4701"><span class="linenos">4701</span></a> +</span><span id="Parser-4702"><a href="#Parser-4702"><span class="linenos">4702</span></a> <span class="k">return</span> <span class="n">func</span> </span><span id="Parser-4703"><a href="#Parser-4703"><span class="linenos">4703</span></a> -</span><span id="Parser-4704"><a href="#Parser-4704"><span class="linenos">4704</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="Parser-4705"><a href="#Parser-4705"><span class="linenos">4705</span></a> -</span><span id="Parser-4706"><a href="#Parser-4706"><span class="linenos">4706</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="Parser-4707"><a href="#Parser-4707"><span class="linenos">4707</span></a> <span class="k">if</span> <span class="n">parser</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> -</span><span id="Parser-4708"><a href="#Parser-4708"><span class="linenos">4708</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-4709"><a href="#Parser-4709"><span class="linenos">4709</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4710"><a href="#Parser-4710"><span class="linenos">4710</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="Parser-4711"><a href="#Parser-4711"><span class="linenos">4711</span></a> -</span><span id="Parser-4712"><a href="#Parser-4712"><span class="linenos">4712</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-4713"><a href="#Parser-4713"><span class="linenos">4713</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> -</span><span id="Parser-4714"><a href="#Parser-4714"><span class="linenos">4714</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-4715"><a href="#Parser-4715"><span class="linenos">4715</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4716"><a href="#Parser-4716"><span class="linenos">4716</span></a> -</span><span id="Parser-4717"><a href="#Parser-4717"><span class="linenos">4717</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-4718"><a href="#Parser-4718"><span class="linenos">4718</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> -</span><span id="Parser-4719"><a href="#Parser-4719"><span class="linenos">4719</span></a> -</span><span id="Parser-4720"><a href="#Parser-4720"><span class="linenos">4720</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="Parser-4721"><a href="#Parser-4721"><span class="linenos">4721</span></a> -</span><span id="Parser-4722"><a href="#Parser-4722"><span class="linenos">4722</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">upper</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> -</span><span id="Parser-4723"><a href="#Parser-4723"><span class="linenos">4723</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> -</span><span id="Parser-4724"><a href="#Parser-4724"><span class="linenos">4724</span></a> -</span><span id="Parser-4725"><a href="#Parser-4725"><span class="linenos">4725</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-4726"><a href="#Parser-4726"><span class="linenos">4726</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-4727"><a href="#Parser-4727"><span class="linenos">4727</span></a> -</span><span id="Parser-4728"><a href="#Parser-4728"><span class="linenos">4728</span></a> <span class="k">if</span> <span class="n">function</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> -</span><span id="Parser-4729"><a href="#Parser-4729"><span class="linenos">4729</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> -</span><span id="Parser-4730"><a href="#Parser-4730"><span class="linenos">4730</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="Parser-4731"><a href="#Parser-4731"><span class="linenos">4731</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4732"><a href="#Parser-4732"><span class="linenos">4732</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-4733"><a href="#Parser-4733"><span class="linenos">4733</span></a> -</span><span id="Parser-4734"><a href="#Parser-4734"><span class="linenos">4734</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-4735"><a href="#Parser-4735"><span class="linenos">4735</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> -</span><span id="Parser-4736"><a href="#Parser-4736"><span class="linenos">4736</span></a> <span class="n">func</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="o">=</span> <span class="n">this</span> -</span><span id="Parser-4737"><a href="#Parser-4737"><span class="linenos">4737</span></a> -</span><span id="Parser-4738"><a href="#Parser-4738"><span class="linenos">4738</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">func</span> -</span><span id="Parser-4739"><a href="#Parser-4739"><span class="linenos">4739</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4740"><a href="#Parser-4740"><span class="linenos">4740</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">:</span> -</span><span id="Parser-4741"><a href="#Parser-4741"><span class="linenos">4741</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4742"><a href="#Parser-4742"><span class="linenos">4742</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-4743"><a href="#Parser-4743"><span class="linenos">4743</span></a> -</span><span id="Parser-4744"><a href="#Parser-4744"><span class="linenos">4744</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Parser-4745"><a href="#Parser-4745"><span class="linenos">4745</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> -</span><span id="Parser-4746"><a href="#Parser-4746"><span class="linenos">4746</span></a> -</span><span id="Parser-4747"><a href="#Parser-4747"><span class="linenos">4747</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4748"><a href="#Parser-4748"><span class="linenos">4748</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4704"><a href="#Parser-4704"><span class="linenos">4704</span></a> <span class="k">def</span> <span class="nf">_parse_function_call</span><span class="p">(</span> +</span><span id="Parser-4705"><a href="#Parser-4705"><span class="linenos">4705</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-4706"><a href="#Parser-4706"><span class="linenos">4706</span></a> <span class="n">functions</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">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-4707"><a href="#Parser-4707"><span class="linenos">4707</span></a> <span class="n">anonymous</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="Parser-4708"><a href="#Parser-4708"><span class="linenos">4708</span></a> <span class="n">optional_parens</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-4709"><a href="#Parser-4709"><span class="linenos">4709</span></a> <span class="n">any_token</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="Parser-4710"><a href="#Parser-4710"><span class="linenos">4710</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4711"><a href="#Parser-4711"><span class="linenos">4711</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-4712"><a href="#Parser-4712"><span class="linenos">4712</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4713"><a href="#Parser-4713"><span class="linenos">4713</span></a> +</span><span id="Parser-4714"><a href="#Parser-4714"><span class="linenos">4714</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">comments</span> +</span><span id="Parser-4715"><a href="#Parser-4715"><span class="linenos">4715</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-4716"><a href="#Parser-4716"><span class="linenos">4716</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-4717"><a href="#Parser-4717"><span class="linenos">4717</span></a> <span class="n">upper</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-4718"><a href="#Parser-4718"><span class="linenos">4718</span></a> +</span><span id="Parser-4719"><a href="#Parser-4719"><span class="linenos">4719</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="Parser-4720"><a href="#Parser-4720"><span class="linenos">4720</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">parser</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">INVALID_FUNC_NAME_TOKENS</span><span class="p">:</span> +</span><span id="Parser-4721"><a href="#Parser-4721"><span class="linenos">4721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-4722"><a href="#Parser-4722"><span class="linenos">4722</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="Parser-4723"><a href="#Parser-4723"><span class="linenos">4723</span></a> +</span><span id="Parser-4724"><a href="#Parser-4724"><span class="linenos">4724</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="Parser-4725"><a href="#Parser-4725"><span class="linenos">4725</span></a> <span class="k">if</span> <span class="n">optional_parens</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> +</span><span id="Parser-4726"><a href="#Parser-4726"><span class="linenos">4726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-4727"><a href="#Parser-4727"><span class="linenos">4727</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> +</span><span id="Parser-4728"><a href="#Parser-4728"><span class="linenos">4728</span></a> +</span><span id="Parser-4729"><a href="#Parser-4729"><span class="linenos">4729</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4730"><a href="#Parser-4730"><span class="linenos">4730</span></a> +</span><span id="Parser-4731"><a href="#Parser-4731"><span class="linenos">4731</span></a> <span class="k">if</span> <span class="n">any_token</span><span class="p">:</span> +</span><span id="Parser-4732"><a href="#Parser-4732"><span class="linenos">4732</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">:</span> +</span><span id="Parser-4733"><a href="#Parser-4733"><span class="linenos">4733</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4734"><a href="#Parser-4734"><span class="linenos">4734</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> +</span><span id="Parser-4735"><a href="#Parser-4735"><span class="linenos">4735</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4736"><a href="#Parser-4736"><span class="linenos">4736</span></a> +</span><span id="Parser-4737"><a href="#Parser-4737"><span class="linenos">4737</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="Parser-4738"><a href="#Parser-4738"><span class="linenos">4738</span></a> +</span><span id="Parser-4739"><a href="#Parser-4739"><span class="linenos">4739</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="Parser-4740"><a href="#Parser-4740"><span class="linenos">4740</span></a> <span class="k">if</span> <span class="n">parser</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> +</span><span id="Parser-4741"><a href="#Parser-4741"><span class="linenos">4741</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-4742"><a href="#Parser-4742"><span class="linenos">4742</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4743"><a href="#Parser-4743"><span class="linenos">4743</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="Parser-4744"><a href="#Parser-4744"><span class="linenos">4744</span></a> +</span><span id="Parser-4745"><a href="#Parser-4745"><span class="linenos">4745</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-4746"><a href="#Parser-4746"><span class="linenos">4746</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="Parser-4747"><a href="#Parser-4747"><span class="linenos">4747</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-4748"><a href="#Parser-4748"><span class="linenos">4748</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-4749"><a href="#Parser-4749"><span class="linenos">4749</span></a> -</span><span id="Parser-4750"><a href="#Parser-4750"><span class="linenos">4750</span></a> <span class="k">def</span> <span class="nf">_kv_to_prop_eq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4751"><a href="#Parser-4751"><span class="linenos">4751</span></a> <span class="n">transformed</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-4750"><a href="#Parser-4750"><span class="linenos">4750</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-4751"><a href="#Parser-4751"><span class="linenos">4751</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> </span><span id="Parser-4752"><a href="#Parser-4752"><span class="linenos">4752</span></a> -</span><span id="Parser-4753"><a href="#Parser-4753"><span class="linenos">4753</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-4754"><a href="#Parser-4754"><span class="linenos">4754</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEY_VALUE_DEFINITIONS</span><span class="p">):</span> -</span><span id="Parser-4755"><a href="#Parser-4755"><span class="linenos">4755</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> -</span><span id="Parser-4756"><a href="#Parser-4756"><span class="linenos">4756</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4753"><a href="#Parser-4753"><span class="linenos">4753</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="Parser-4754"><a href="#Parser-4754"><span class="linenos">4754</span></a> +</span><span id="Parser-4755"><a href="#Parser-4755"><span class="linenos">4755</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">upper</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS_WITH_ALIASED_ARGS</span> +</span><span id="Parser-4756"><a href="#Parser-4756"><span class="linenos">4756</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">))</span> </span><span id="Parser-4757"><a href="#Parser-4757"><span class="linenos">4757</span></a> -</span><span id="Parser-4758"><a href="#Parser-4758"><span class="linenos">4758</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span> -</span><span id="Parser-4759"><a href="#Parser-4759"><span class="linenos">4759</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4760"><a href="#Parser-4760"><span class="linenos">4760</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span> -</span><span id="Parser-4761"><a href="#Parser-4761"><span class="linenos">4761</span></a> <span class="p">)</span> -</span><span id="Parser-4762"><a href="#Parser-4762"><span class="linenos">4762</span></a> -</span><span id="Parser-4763"><a href="#Parser-4763"><span class="linenos">4763</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-4764"><a href="#Parser-4764"><span class="linenos">4764</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-4765"><a href="#Parser-4765"><span class="linenos">4765</span></a> -</span><span id="Parser-4766"><a href="#Parser-4766"><span class="linenos">4766</span></a> <span class="n">transformed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> -</span><span id="Parser-4767"><a href="#Parser-4767"><span class="linenos">4767</span></a> -</span><span id="Parser-4768"><a href="#Parser-4768"><span class="linenos">4768</span></a> <span class="k">return</span> <span class="n">transformed</span> -</span><span id="Parser-4769"><a href="#Parser-4769"><span class="linenos">4769</span></a> -</span><span id="Parser-4770"><a href="#Parser-4770"><span class="linenos">4770</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4771"><a href="#Parser-4771"><span class="linenos">4771</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="Parser-4772"><a href="#Parser-4772"><span class="linenos">4772</span></a> -</span><span id="Parser-4773"><a href="#Parser-4773"><span class="linenos">4773</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> -</span><span id="Parser-4774"><a href="#Parser-4774"><span class="linenos">4774</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</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">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4775"><a href="#Parser-4775"><span class="linenos">4775</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4776"><a href="#Parser-4776"><span class="linenos">4776</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-4777"><a href="#Parser-4777"><span class="linenos">4777</span></a> -</span><span id="Parser-4778"><a href="#Parser-4778"><span class="linenos">4778</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-4779"><a href="#Parser-4779"><span class="linenos">4779</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="Parser-4780"><a href="#Parser-4780"><span class="linenos">4780</span></a> -</span><span id="Parser-4781"><a href="#Parser-4781"><span class="linenos">4781</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-4782"><a href="#Parser-4782"><span class="linenos">4782</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4783"><a href="#Parser-4783"><span class="linenos">4783</span></a> -</span><span id="Parser-4784"><a href="#Parser-4784"><span class="linenos">4784</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="Parser-4785"><a href="#Parser-4785"><span class="linenos">4785</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-4786"><a href="#Parser-4786"><span class="linenos">4786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4787"><a href="#Parser-4787"><span class="linenos">4787</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> -</span><span id="Parser-4788"><a href="#Parser-4788"><span class="linenos">4788</span></a> <span class="p">)</span> -</span><span id="Parser-4789"><a href="#Parser-4789"><span class="linenos">4789</span></a> -</span><span id="Parser-4790"><a href="#Parser-4790"><span class="linenos">4790</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Introducer</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="Parser-4791"><a href="#Parser-4791"><span class="linenos">4791</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-4792"><a href="#Parser-4792"><span class="linenos">4792</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> -</span><span id="Parser-4793"><a href="#Parser-4793"><span class="linenos">4793</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> -</span><span id="Parser-4794"><a href="#Parser-4794"><span class="linenos">4794</span></a> -</span><span id="Parser-4795"><a href="#Parser-4795"><span class="linenos">4795</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-4796"><a href="#Parser-4796"><span class="linenos">4796</span></a> -</span><span id="Parser-4797"><a href="#Parser-4797"><span class="linenos">4797</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">:</span> -</span><span id="Parser-4798"><a href="#Parser-4798"><span class="linenos">4798</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4799"><a href="#Parser-4799"><span class="linenos">4799</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4758"><a href="#Parser-4758"><span class="linenos">4758</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-4759"><a href="#Parser-4759"><span class="linenos">4759</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-4760"><a href="#Parser-4760"><span class="linenos">4760</span></a> +</span><span id="Parser-4761"><a href="#Parser-4761"><span class="linenos">4761</span></a> <span class="k">if</span> <span class="n">function</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">anonymous</span><span class="p">:</span> +</span><span id="Parser-4762"><a href="#Parser-4762"><span class="linenos">4762</span></a> <span class="k">if</span> <span class="s2">"dialect"</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span> +</span><span id="Parser-4763"><a href="#Parser-4763"><span class="linenos">4763</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Parser-4764"><a href="#Parser-4764"><span class="linenos">4764</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4765"><a href="#Parser-4765"><span class="linenos">4765</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-4766"><a href="#Parser-4766"><span class="linenos">4766</span></a> +</span><span id="Parser-4767"><a href="#Parser-4767"><span class="linenos">4767</span></a> <span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-4768"><a href="#Parser-4768"><span class="linenos">4768</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">NORMALIZE_FUNCTIONS</span><span class="p">:</span> +</span><span id="Parser-4769"><a href="#Parser-4769"><span class="linenos">4769</span></a> <span class="n">func</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="o">=</span> <span class="n">this</span> +</span><span id="Parser-4770"><a href="#Parser-4770"><span class="linenos">4770</span></a> +</span><span id="Parser-4771"><a href="#Parser-4771"><span class="linenos">4771</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">func</span> +</span><span id="Parser-4772"><a href="#Parser-4772"><span class="linenos">4772</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4773"><a href="#Parser-4773"><span class="linenos">4773</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">:</span> +</span><span id="Parser-4774"><a href="#Parser-4774"><span class="linenos">4774</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4775"><a href="#Parser-4775"><span class="linenos">4775</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-4776"><a href="#Parser-4776"><span class="linenos">4776</span></a> +</span><span id="Parser-4777"><a href="#Parser-4777"><span class="linenos">4777</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Parser-4778"><a href="#Parser-4778"><span class="linenos">4778</span></a> <span class="n">this</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> +</span><span id="Parser-4779"><a href="#Parser-4779"><span class="linenos">4779</span></a> +</span><span id="Parser-4780"><a href="#Parser-4780"><span class="linenos">4780</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4781"><a href="#Parser-4781"><span class="linenos">4781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4782"><a href="#Parser-4782"><span class="linenos">4782</span></a> +</span><span id="Parser-4783"><a href="#Parser-4783"><span class="linenos">4783</span></a> <span class="k">def</span> <span class="nf">_kv_to_prop_eq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4784"><a href="#Parser-4784"><span class="linenos">4784</span></a> <span class="n">transformed</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-4785"><a href="#Parser-4785"><span class="linenos">4785</span></a> +</span><span id="Parser-4786"><a href="#Parser-4786"><span class="linenos">4786</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-4787"><a href="#Parser-4787"><span class="linenos">4787</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEY_VALUE_DEFINITIONS</span><span class="p">):</span> +</span><span id="Parser-4788"><a href="#Parser-4788"><span class="linenos">4788</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span> +</span><span id="Parser-4789"><a href="#Parser-4789"><span class="linenos">4789</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4790"><a href="#Parser-4790"><span class="linenos">4790</span></a> +</span><span id="Parser-4791"><a href="#Parser-4791"><span class="linenos">4791</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">):</span> +</span><span id="Parser-4792"><a href="#Parser-4792"><span class="linenos">4792</span></a> <span class="n">e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4793"><a href="#Parser-4793"><span class="linenos">4793</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span> +</span><span id="Parser-4794"><a href="#Parser-4794"><span class="linenos">4794</span></a> <span class="p">)</span> +</span><span id="Parser-4795"><a href="#Parser-4795"><span class="linenos">4795</span></a> +</span><span id="Parser-4796"><a href="#Parser-4796"><span class="linenos">4796</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-4797"><a href="#Parser-4797"><span class="linenos">4797</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-4798"><a href="#Parser-4798"><span class="linenos">4798</span></a> +</span><span id="Parser-4799"><a href="#Parser-4799"><span class="linenos">4799</span></a> <span class="n">transformed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> </span><span id="Parser-4800"><a href="#Parser-4800"><span class="linenos">4800</span></a> -</span><span id="Parser-4801"><a href="#Parser-4801"><span class="linenos">4801</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-4802"><a href="#Parser-4802"><span class="linenos">4802</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="Parser-4803"><a href="#Parser-4803"><span class="linenos">4803</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-4804"><a href="#Parser-4804"><span class="linenos">4804</span></a> -</span><span id="Parser-4805"><a href="#Parser-4805"><span class="linenos">4805</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="Parser-4806"><a href="#Parser-4806"><span class="linenos">4806</span></a> -</span><span id="Parser-4807"><a href="#Parser-4807"><span class="linenos">4807</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4808"><a href="#Parser-4808"><span class="linenos">4808</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-4809"><a href="#Parser-4809"><span class="linenos">4809</span></a> -</span><span id="Parser-4810"><a href="#Parser-4810"><span class="linenos">4810</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4811"><a href="#Parser-4811"><span class="linenos">4811</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4812"><a href="#Parser-4812"><span class="linenos">4812</span></a> -</span><span id="Parser-4813"><a href="#Parser-4813"><span class="linenos">4813</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-4814"><a href="#Parser-4814"><span class="linenos">4814</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> -</span><span id="Parser-4815"><a href="#Parser-4815"><span class="linenos">4815</span></a> <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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">)</span> -</span><span id="Parser-4816"><a href="#Parser-4816"><span class="linenos">4816</span></a> <span class="p">)</span> -</span><span id="Parser-4817"><a href="#Parser-4817"><span class="linenos">4817</span></a> -</span><span id="Parser-4818"><a href="#Parser-4818"><span class="linenos">4818</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-4819"><a href="#Parser-4819"><span class="linenos">4819</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4820"><a href="#Parser-4820"><span class="linenos">4820</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4821"><a href="#Parser-4821"><span class="linenos">4821</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">()]</span> +</span><span id="Parser-4801"><a href="#Parser-4801"><span class="linenos">4801</span></a> <span class="k">return</span> <span class="n">transformed</span> +</span><span id="Parser-4802"><a href="#Parser-4802"><span class="linenos">4802</span></a> +</span><span id="Parser-4803"><a href="#Parser-4803"><span class="linenos">4803</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4804"><a href="#Parser-4804"><span class="linenos">4804</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="Parser-4805"><a href="#Parser-4805"><span class="linenos">4805</span></a> +</span><span id="Parser-4806"><a href="#Parser-4806"><span class="linenos">4806</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> +</span><span id="Parser-4807"><a href="#Parser-4807"><span class="linenos">4807</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</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">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4808"><a href="#Parser-4808"><span class="linenos">4808</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4809"><a href="#Parser-4809"><span class="linenos">4809</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-4810"><a href="#Parser-4810"><span class="linenos">4810</span></a> +</span><span id="Parser-4811"><a href="#Parser-4811"><span class="linenos">4811</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-4812"><a href="#Parser-4812"><span class="linenos">4812</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="Parser-4813"><a href="#Parser-4813"><span class="linenos">4813</span></a> +</span><span id="Parser-4814"><a href="#Parser-4814"><span class="linenos">4814</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-4815"><a href="#Parser-4815"><span class="linenos">4815</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4816"><a href="#Parser-4816"><span class="linenos">4816</span></a> +</span><span id="Parser-4817"><a href="#Parser-4817"><span class="linenos">4817</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="Parser-4818"><a href="#Parser-4818"><span class="linenos">4818</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-4819"><a href="#Parser-4819"><span class="linenos">4819</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4820"><a href="#Parser-4820"><span class="linenos">4820</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> +</span><span id="Parser-4821"><a href="#Parser-4821"><span class="linenos">4821</span></a> <span class="p">)</span> </span><span id="Parser-4822"><a href="#Parser-4822"><span class="linenos">4822</span></a> -</span><span id="Parser-4823"><a href="#Parser-4823"><span class="linenos">4823</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> -</span><span id="Parser-4824"><a href="#Parser-4824"><span class="linenos">4824</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-4825"><a href="#Parser-4825"><span class="linenos">4825</span></a> -</span><span id="Parser-4826"><a href="#Parser-4826"><span class="linenos">4826</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4823"><a href="#Parser-4823"><span class="linenos">4823</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Introducer</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="Parser-4824"><a href="#Parser-4824"><span class="linenos">4824</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4825"><a href="#Parser-4825"><span class="linenos">4825</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> +</span><span id="Parser-4826"><a href="#Parser-4826"><span class="linenos">4826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> </span><span id="Parser-4827"><a href="#Parser-4827"><span class="linenos">4827</span></a> -</span><span id="Parser-4828"><a href="#Parser-4828"><span class="linenos">4828</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-4828"><a href="#Parser-4828"><span class="linenos">4828</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> </span><span id="Parser-4829"><a href="#Parser-4829"><span class="linenos">4829</span></a> -</span><span id="Parser-4830"><a href="#Parser-4830"><span class="linenos">4830</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="Parser-4831"><a href="#Parser-4831"><span class="linenos">4831</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4832"><a href="#Parser-4832"><span class="linenos">4832</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="Parser-4833"><a href="#Parser-4833"><span class="linenos">4833</span></a> <span class="p">)</span> -</span><span id="Parser-4834"><a href="#Parser-4834"><span class="linenos">4834</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4835"><a href="#Parser-4835"><span class="linenos">4835</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="Parser-4836"><a href="#Parser-4836"><span class="linenos">4836</span></a> -</span><span id="Parser-4837"><a href="#Parser-4837"><span class="linenos">4837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span> -</span><span id="Parser-4838"><a href="#Parser-4838"><span class="linenos">4838</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)))</span> -</span><span id="Parser-4839"><a href="#Parser-4839"><span class="linenos">4839</span></a> <span class="p">)</span> -</span><span id="Parser-4840"><a href="#Parser-4840"><span class="linenos">4840</span></a> -</span><span id="Parser-4841"><a href="#Parser-4841"><span class="linenos">4841</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4842"><a href="#Parser-4842"><span class="linenos">4842</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-4843"><a href="#Parser-4843"><span class="linenos">4843</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-4844"><a href="#Parser-4844"><span class="linenos">4844</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4830"><a href="#Parser-4830"><span class="linenos">4830</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">:</span> +</span><span id="Parser-4831"><a href="#Parser-4831"><span class="linenos">4831</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4832"><a href="#Parser-4832"><span class="linenos">4832</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4833"><a href="#Parser-4833"><span class="linenos">4833</span></a> +</span><span id="Parser-4834"><a href="#Parser-4834"><span class="linenos">4834</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-4835"><a href="#Parser-4835"><span class="linenos">4835</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="Parser-4836"><a href="#Parser-4836"><span class="linenos">4836</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-4837"><a href="#Parser-4837"><span class="linenos">4837</span></a> +</span><span id="Parser-4838"><a href="#Parser-4838"><span class="linenos">4838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="Parser-4839"><a href="#Parser-4839"><span class="linenos">4839</span></a> +</span><span id="Parser-4840"><a href="#Parser-4840"><span class="linenos">4840</span></a> <span class="k">def</span> <span class="nf">_parse_lambda_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4841"><a href="#Parser-4841"><span class="linenos">4841</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-4842"><a href="#Parser-4842"><span class="linenos">4842</span></a> +</span><span id="Parser-4843"><a href="#Parser-4843"><span class="linenos">4843</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4844"><a href="#Parser-4844"><span class="linenos">4844</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> </span><span id="Parser-4845"><a href="#Parser-4845"><span class="linenos">4845</span></a> -</span><span id="Parser-4846"><a href="#Parser-4846"><span class="linenos">4846</span></a> <span class="c1"># Disambiguate between schema and subquery/CTE, e.g. in INSERT INTO table (<expr>),</span> -</span><span id="Parser-4847"><a href="#Parser-4847"><span class="linenos">4847</span></a> <span class="c1"># expr can be of both types</span> -</span><span id="Parser-4848"><a href="#Parser-4848"><span class="linenos">4848</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SELECT_START_TOKENS</span><span class="p">):</span> -</span><span id="Parser-4849"><a href="#Parser-4849"><span class="linenos">4849</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-4850"><a href="#Parser-4850"><span class="linenos">4850</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4851"><a href="#Parser-4851"><span class="linenos">4851</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">())</span> -</span><span id="Parser-4852"><a href="#Parser-4852"><span class="linenos">4852</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-4853"><a href="#Parser-4853"><span class="linenos">4853</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-4854"><a href="#Parser-4854"><span class="linenos">4854</span></a> -</span><span id="Parser-4855"><a href="#Parser-4855"><span class="linenos">4855</span></a> <span class="k">def</span> <span class="nf">_parse_field_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4856"><a href="#Parser-4856"><span class="linenos">4856</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-4857"><a href="#Parser-4857"><span class="linenos">4857</span></a> -</span><span id="Parser-4858"><a href="#Parser-4858"><span class="linenos">4858</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4859"><a href="#Parser-4859"><span class="linenos">4859</span></a> <span class="c1"># column defs are not really columns, they're identifiers</span> -</span><span id="Parser-4860"><a href="#Parser-4860"><span class="linenos">4860</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-4861"><a href="#Parser-4861"><span class="linenos">4861</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-4846"><a href="#Parser-4846"><span class="linenos">4846</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-4847"><a href="#Parser-4847"><span class="linenos">4847</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span> +</span><span id="Parser-4848"><a href="#Parser-4848"><span class="linenos">4848</span></a> <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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">)</span> +</span><span id="Parser-4849"><a href="#Parser-4849"><span class="linenos">4849</span></a> <span class="p">)</span> +</span><span id="Parser-4850"><a href="#Parser-4850"><span class="linenos">4850</span></a> +</span><span id="Parser-4851"><a href="#Parser-4851"><span class="linenos">4851</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-4852"><a href="#Parser-4852"><span class="linenos">4852</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4853"><a href="#Parser-4853"><span class="linenos">4853</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4854"><a href="#Parser-4854"><span class="linenos">4854</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda_arg</span><span class="p">()]</span> +</span><span id="Parser-4855"><a href="#Parser-4855"><span class="linenos">4855</span></a> +</span><span id="Parser-4856"><a href="#Parser-4856"><span class="linenos">4856</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> +</span><span id="Parser-4857"><a href="#Parser-4857"><span class="linenos">4857</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-4858"><a href="#Parser-4858"><span class="linenos">4858</span></a> +</span><span id="Parser-4859"><a href="#Parser-4859"><span class="linenos">4859</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4860"><a href="#Parser-4860"><span class="linenos">4860</span></a> +</span><span id="Parser-4861"><a href="#Parser-4861"><span class="linenos">4861</span></a> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> </span><span id="Parser-4862"><a href="#Parser-4862"><span class="linenos">4862</span></a> -</span><span id="Parser-4863"><a href="#Parser-4863"><span class="linenos">4863</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4864"><a href="#Parser-4864"><span class="linenos">4864</span></a> -</span><span id="Parser-4865"><a href="#Parser-4865"><span class="linenos">4865</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> -</span><span id="Parser-4866"><a href="#Parser-4866"><span class="linenos">4866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4867"><a href="#Parser-4867"><span class="linenos">4867</span></a> -</span><span id="Parser-4868"><a href="#Parser-4868"><span class="linenos">4868</span></a> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-4863"><a href="#Parser-4863"><span class="linenos">4863</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="Parser-4864"><a href="#Parser-4864"><span class="linenos">4864</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4865"><a href="#Parser-4865"><span class="linenos">4865</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="Parser-4866"><a href="#Parser-4866"><span class="linenos">4866</span></a> <span class="p">)</span> +</span><span id="Parser-4867"><a href="#Parser-4867"><span class="linenos">4867</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4868"><a href="#Parser-4868"><span class="linenos">4868</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> </span><span id="Parser-4869"><a href="#Parser-4869"><span class="linenos">4869</span></a> -</span><span id="Parser-4870"><a href="#Parser-4870"><span class="linenos">4870</span></a> <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">))</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> -</span><span id="Parser-4871"><a href="#Parser-4871"><span class="linenos">4871</span></a> <span class="p">(</span><span class="s2">"ALIAS"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">)</span> -</span><span id="Parser-4872"><a href="#Parser-4872"><span class="linenos">4872</span></a> <span class="p">):</span> -</span><span id="Parser-4873"><a href="#Parser-4873"><span class="linenos">4873</span></a> <span class="n">persisted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"MATERIALIZED"</span> -</span><span id="Parser-4874"><a href="#Parser-4874"><span class="linenos">4874</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-4875"><a href="#Parser-4875"><span class="linenos">4875</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4876"><a href="#Parser-4876"><span class="linenos">4876</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">,</span> -</span><span id="Parser-4877"><a href="#Parser-4877"><span class="linenos">4877</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-4878"><a href="#Parser-4878"><span class="linenos">4878</span></a> <span class="n">persisted</span><span class="o">=</span><span class="n">persisted</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PERSISTED"</span><span class="p">),</span> -</span><span id="Parser-4879"><a href="#Parser-4879"><span class="linenos">4879</span></a> <span class="n">not_null</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">),</span> -</span><span id="Parser-4880"><a href="#Parser-4880"><span class="linenos">4880</span></a> <span class="p">)</span> -</span><span id="Parser-4881"><a href="#Parser-4881"><span class="linenos">4881</span></a> <span class="p">)</span> -</span><span id="Parser-4882"><a href="#Parser-4882"><span class="linenos">4882</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4883"><a href="#Parser-4883"><span class="linenos">4883</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-4884"><a href="#Parser-4884"><span class="linenos">4884</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-4885"><a href="#Parser-4885"><span class="linenos">4885</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransformColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-4886"><a href="#Parser-4886"><span class="linenos">4886</span></a> <span class="p">)</span> +</span><span id="Parser-4870"><a href="#Parser-4870"><span class="linenos">4870</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span> +</span><span id="Parser-4871"><a href="#Parser-4871"><span class="linenos">4871</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)))</span> +</span><span id="Parser-4872"><a href="#Parser-4872"><span class="linenos">4872</span></a> <span class="p">)</span> +</span><span id="Parser-4873"><a href="#Parser-4873"><span class="linenos">4873</span></a> +</span><span id="Parser-4874"><a href="#Parser-4874"><span class="linenos">4874</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4875"><a href="#Parser-4875"><span class="linenos">4875</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-4876"><a href="#Parser-4876"><span class="linenos">4876</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-4877"><a href="#Parser-4877"><span class="linenos">4877</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4878"><a href="#Parser-4878"><span class="linenos">4878</span></a> +</span><span id="Parser-4879"><a href="#Parser-4879"><span class="linenos">4879</span></a> <span class="c1"># Disambiguate between schema and subquery/CTE, e.g. in INSERT INTO table (<expr>),</span> +</span><span id="Parser-4880"><a href="#Parser-4880"><span class="linenos">4880</span></a> <span class="c1"># expr can be of both types</span> +</span><span id="Parser-4881"><a href="#Parser-4881"><span class="linenos">4881</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SELECT_START_TOKENS</span><span class="p">):</span> +</span><span id="Parser-4882"><a href="#Parser-4882"><span class="linenos">4882</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-4883"><a href="#Parser-4883"><span class="linenos">4883</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4884"><a href="#Parser-4884"><span class="linenos">4884</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">())</span> +</span><span id="Parser-4885"><a href="#Parser-4885"><span class="linenos">4885</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-4886"><a href="#Parser-4886"><span class="linenos">4886</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> </span><span id="Parser-4887"><a href="#Parser-4887"><span class="linenos">4887</span></a> -</span><span id="Parser-4888"><a href="#Parser-4888"><span class="linenos">4888</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-4889"><a href="#Parser-4889"><span class="linenos">4889</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> -</span><span id="Parser-4890"><a href="#Parser-4890"><span class="linenos">4890</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="Parser-4891"><a href="#Parser-4891"><span class="linenos">4891</span></a> <span class="k">break</span> -</span><span id="Parser-4892"><a href="#Parser-4892"><span class="linenos">4892</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> -</span><span id="Parser-4893"><a href="#Parser-4893"><span class="linenos">4893</span></a> -</span><span id="Parser-4894"><a href="#Parser-4894"><span class="linenos">4894</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> -</span><span id="Parser-4895"><a href="#Parser-4895"><span class="linenos">4895</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4896"><a href="#Parser-4896"><span class="linenos">4896</span></a> -</span><span id="Parser-4897"><a href="#Parser-4897"><span class="linenos">4897</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> -</span><span id="Parser-4898"><a href="#Parser-4898"><span class="linenos">4898</span></a> -</span><span id="Parser-4899"><a href="#Parser-4899"><span class="linenos">4899</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span> -</span><span id="Parser-4900"><a href="#Parser-4900"><span class="linenos">4900</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-4901"><a href="#Parser-4901"><span class="linenos">4901</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> -</span><span id="Parser-4902"><a href="#Parser-4902"><span class="linenos">4902</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4903"><a href="#Parser-4903"><span class="linenos">4903</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-4904"><a href="#Parser-4904"><span class="linenos">4904</span></a> -</span><span id="Parser-4905"><a href="#Parser-4905"><span class="linenos">4905</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4906"><a href="#Parser-4906"><span class="linenos">4906</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-4907"><a href="#Parser-4907"><span class="linenos">4907</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Parser-4908"><a href="#Parser-4908"><span class="linenos">4908</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-4909"><a href="#Parser-4909"><span class="linenos">4909</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> -</span><span id="Parser-4910"><a href="#Parser-4910"><span class="linenos">4910</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-4911"><a href="#Parser-4911"><span class="linenos">4911</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> -</span><span id="Parser-4912"><a href="#Parser-4912"><span class="linenos">4912</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-4913"><a href="#Parser-4913"><span class="linenos">4913</span></a> -</span><span id="Parser-4914"><a href="#Parser-4914"><span class="linenos">4914</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> -</span><span id="Parser-4915"><a href="#Parser-4915"><span class="linenos">4915</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> -</span><span id="Parser-4916"><a href="#Parser-4916"><span class="linenos">4916</span></a> -</span><span id="Parser-4917"><a href="#Parser-4917"><span class="linenos">4917</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> -</span><span id="Parser-4918"><a href="#Parser-4918"><span class="linenos">4918</span></a> -</span><span id="Parser-4919"><a href="#Parser-4919"><span class="linenos">4919</span></a> <span class="k">def</span> <span class="nf">_parse_auto_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">]:</span> -</span><span id="Parser-4920"><a href="#Parser-4920"><span class="linenos">4920</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REFRESH"</span><span class="p">):</span> -</span><span id="Parser-4921"><a href="#Parser-4921"><span class="linenos">4921</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-4922"><a href="#Parser-4922"><span class="linenos">4922</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4923"><a href="#Parser-4923"><span class="linenos">4923</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-4924"><a href="#Parser-4924"><span class="linenos">4924</span></a> -</span><span id="Parser-4925"><a href="#Parser-4925"><span class="linenos">4925</span></a> <span class="k">def</span> <span class="nf">_parse_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> -</span><span id="Parser-4926"><a href="#Parser-4926"><span class="linenos">4926</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4927"><a href="#Parser-4927"><span class="linenos">4927</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4928"><a href="#Parser-4928"><span class="linenos">4928</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-4929"><a href="#Parser-4929"><span class="linenos">4929</span></a> <span class="p">)</span> -</span><span id="Parser-4930"><a href="#Parser-4930"><span class="linenos">4930</span></a> -</span><span id="Parser-4931"><a href="#Parser-4931"><span class="linenos">4931</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4932"><a href="#Parser-4932"><span class="linenos">4932</span></a> -</span><span id="Parser-4933"><a href="#Parser-4933"><span class="linenos">4933</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span> -</span><span id="Parser-4934"><a href="#Parser-4934"><span class="linenos">4934</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-4935"><a href="#Parser-4935"><span class="linenos">4935</span></a> <span class="p">)</span> <span class="o">-></span> <span class="p">(</span> -</span><span id="Parser-4936"><a href="#Parser-4936"><span class="linenos">4936</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> -</span><span id="Parser-4937"><a href="#Parser-4937"><span class="linenos">4937</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span> -</span><span id="Parser-4938"><a href="#Parser-4938"><span class="linenos">4938</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span> -</span><span id="Parser-4939"><a href="#Parser-4939"><span class="linenos">4939</span></a> <span class="p">):</span> -</span><span id="Parser-4940"><a href="#Parser-4940"><span class="linenos">4940</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"DEFAULT"</span><span class="p">):</span> -</span><span id="Parser-4941"><a href="#Parser-4941"><span class="linenos">4941</span></a> <span class="n">on_null</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">)</span> -</span><span id="Parser-4942"><a href="#Parser-4942"><span class="linenos">4942</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-4943"><a href="#Parser-4943"><span class="linenos">4943</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">on_null</span><span class="o">=</span><span class="n">on_null</span> -</span><span id="Parser-4944"><a href="#Parser-4944"><span class="linenos">4944</span></a> <span class="p">)</span> -</span><span id="Parser-4945"><a href="#Parser-4945"><span class="linenos">4945</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-4946"><a href="#Parser-4946"><span class="linenos">4946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="Parser-4947"><a href="#Parser-4947"><span class="linenos">4947</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4948"><a href="#Parser-4948"><span class="linenos">4948</span></a> -</span><span id="Parser-4949"><a href="#Parser-4949"><span class="linenos">4949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-4950"><a href="#Parser-4950"><span class="linenos">4950</span></a> -</span><span id="Parser-4951"><a href="#Parser-4951"><span class="linenos">4951</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="Parser-4952"><a href="#Parser-4952"><span class="linenos">4952</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">)</span> -</span><span id="Parser-4953"><a href="#Parser-4953"><span class="linenos">4953</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> -</span><span id="Parser-4954"><a href="#Parser-4954"><span class="linenos">4954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> -</span><span id="Parser-4955"><a href="#Parser-4955"><span class="linenos">4955</span></a> <span class="n">hidden</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HIDDEN"</span><span class="p">)</span> -</span><span id="Parser-4956"><a href="#Parser-4956"><span class="linenos">4956</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">hidden</span><span class="o">=</span><span class="n">hidden</span><span class="p">)</span> +</span><span id="Parser-4888"><a href="#Parser-4888"><span class="linenos">4888</span></a> <span class="k">def</span> <span class="nf">_parse_field_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4889"><a href="#Parser-4889"><span class="linenos">4889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-4890"><a href="#Parser-4890"><span class="linenos">4890</span></a> +</span><span id="Parser-4891"><a href="#Parser-4891"><span class="linenos">4891</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-4892"><a href="#Parser-4892"><span class="linenos">4892</span></a> <span class="c1"># column defs are not really columns, they're identifiers</span> +</span><span id="Parser-4893"><a href="#Parser-4893"><span class="linenos">4893</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-4894"><a href="#Parser-4894"><span class="linenos">4894</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-4895"><a href="#Parser-4895"><span class="linenos">4895</span></a> +</span><span id="Parser-4896"><a href="#Parser-4896"><span class="linenos">4896</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4897"><a href="#Parser-4897"><span class="linenos">4897</span></a> +</span><span id="Parser-4898"><a href="#Parser-4898"><span class="linenos">4898</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> +</span><span id="Parser-4899"><a href="#Parser-4899"><span class="linenos">4899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-4900"><a href="#Parser-4900"><span class="linenos">4900</span></a> +</span><span id="Parser-4901"><a href="#Parser-4901"><span class="linenos">4901</span></a> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-4902"><a href="#Parser-4902"><span class="linenos">4902</span></a> +</span><span id="Parser-4903"><a href="#Parser-4903"><span class="linenos">4903</span></a> <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">))</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> +</span><span id="Parser-4904"><a href="#Parser-4904"><span class="linenos">4904</span></a> <span class="p">(</span><span class="s2">"ALIAS"</span><span class="p">,</span> <span class="s2">"MATERIALIZED"</span><span class="p">)</span> +</span><span id="Parser-4905"><a href="#Parser-4905"><span class="linenos">4905</span></a> <span class="p">):</span> +</span><span id="Parser-4906"><a href="#Parser-4906"><span class="linenos">4906</span></a> <span class="n">persisted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"MATERIALIZED"</span> +</span><span id="Parser-4907"><a href="#Parser-4907"><span class="linenos">4907</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-4908"><a href="#Parser-4908"><span class="linenos">4908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4909"><a href="#Parser-4909"><span class="linenos">4909</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span><span class="p">,</span> +</span><span id="Parser-4910"><a href="#Parser-4910"><span class="linenos">4910</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-4911"><a href="#Parser-4911"><span class="linenos">4911</span></a> <span class="n">persisted</span><span class="o">=</span><span class="n">persisted</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PERSISTED"</span><span class="p">),</span> +</span><span id="Parser-4912"><a href="#Parser-4912"><span class="linenos">4912</span></a> <span class="n">not_null</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">),</span> +</span><span id="Parser-4913"><a href="#Parser-4913"><span class="linenos">4913</span></a> <span class="p">)</span> +</span><span id="Parser-4914"><a href="#Parser-4914"><span class="linenos">4914</span></a> <span class="p">)</span> +</span><span id="Parser-4915"><a href="#Parser-4915"><span class="linenos">4915</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-4916"><a href="#Parser-4916"><span class="linenos">4916</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-4917"><a href="#Parser-4917"><span class="linenos">4917</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-4918"><a href="#Parser-4918"><span class="linenos">4918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransformColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-4919"><a href="#Parser-4919"><span class="linenos">4919</span></a> <span class="p">)</span> +</span><span id="Parser-4920"><a href="#Parser-4920"><span class="linenos">4920</span></a> +</span><span id="Parser-4921"><a href="#Parser-4921"><span class="linenos">4921</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-4922"><a href="#Parser-4922"><span class="linenos">4922</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> +</span><span id="Parser-4923"><a href="#Parser-4923"><span class="linenos">4923</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="Parser-4924"><a href="#Parser-4924"><span class="linenos">4924</span></a> <span class="k">break</span> +</span><span id="Parser-4925"><a href="#Parser-4925"><span class="linenos">4925</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="Parser-4926"><a href="#Parser-4926"><span class="linenos">4926</span></a> +</span><span id="Parser-4927"><a href="#Parser-4927"><span class="linenos">4927</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> +</span><span id="Parser-4928"><a href="#Parser-4928"><span class="linenos">4928</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-4929"><a href="#Parser-4929"><span class="linenos">4929</span></a> +</span><span id="Parser-4930"><a href="#Parser-4930"><span class="linenos">4930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> +</span><span id="Parser-4931"><a href="#Parser-4931"><span class="linenos">4931</span></a> +</span><span id="Parser-4932"><a href="#Parser-4932"><span class="linenos">4932</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span> +</span><span id="Parser-4933"><a href="#Parser-4933"><span class="linenos">4933</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-4934"><a href="#Parser-4934"><span class="linenos">4934</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">:</span> +</span><span id="Parser-4935"><a href="#Parser-4935"><span class="linenos">4935</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4936"><a href="#Parser-4936"><span class="linenos">4936</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-4937"><a href="#Parser-4937"><span class="linenos">4937</span></a> +</span><span id="Parser-4938"><a href="#Parser-4938"><span class="linenos">4938</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-4939"><a href="#Parser-4939"><span class="linenos">4939</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-4940"><a href="#Parser-4940"><span class="linenos">4940</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Parser-4941"><a href="#Parser-4941"><span class="linenos">4941</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-4942"><a href="#Parser-4942"><span class="linenos">4942</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> +</span><span id="Parser-4943"><a href="#Parser-4943"><span class="linenos">4943</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-4944"><a href="#Parser-4944"><span class="linenos">4944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> +</span><span id="Parser-4945"><a href="#Parser-4945"><span class="linenos">4945</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-4946"><a href="#Parser-4946"><span class="linenos">4946</span></a> +</span><span id="Parser-4947"><a href="#Parser-4947"><span class="linenos">4947</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> +</span><span id="Parser-4948"><a href="#Parser-4948"><span class="linenos">4948</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> +</span><span id="Parser-4949"><a href="#Parser-4949"><span class="linenos">4949</span></a> +</span><span id="Parser-4950"><a href="#Parser-4950"><span class="linenos">4950</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> +</span><span id="Parser-4951"><a href="#Parser-4951"><span class="linenos">4951</span></a> +</span><span id="Parser-4952"><a href="#Parser-4952"><span class="linenos">4952</span></a> <span class="k">def</span> <span class="nf">_parse_auto_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">]:</span> +</span><span id="Parser-4953"><a href="#Parser-4953"><span class="linenos">4953</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REFRESH"</span><span class="p">):</span> +</span><span id="Parser-4954"><a href="#Parser-4954"><span class="linenos">4954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-4955"><a href="#Parser-4955"><span class="linenos">4955</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-4956"><a href="#Parser-4956"><span class="linenos">4956</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoRefreshProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">upper</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> </span><span id="Parser-4957"><a href="#Parser-4957"><span class="linenos">4957</span></a> -</span><span id="Parser-4958"><a href="#Parser-4958"><span class="linenos">4958</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IDENTITY"</span><span class="p">)</span> -</span><span id="Parser-4959"><a href="#Parser-4959"><span class="linenos">4959</span></a> -</span><span id="Parser-4960"><a href="#Parser-4960"><span class="linenos">4960</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-4961"><a href="#Parser-4961"><span class="linenos">4961</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> -</span><span id="Parser-4962"><a href="#Parser-4962"><span class="linenos">4962</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4963"><a href="#Parser-4963"><span class="linenos">4963</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-4964"><a href="#Parser-4964"><span class="linenos">4964</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4965"><a href="#Parser-4965"><span class="linenos">4965</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="Parser-4966"><a href="#Parser-4966"><span class="linenos">4966</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4967"><a href="#Parser-4967"><span class="linenos">4967</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="Parser-4968"><a href="#Parser-4968"><span class="linenos">4968</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4969"><a href="#Parser-4969"><span class="linenos">4969</span></a> -</span><span id="Parser-4970"><a href="#Parser-4970"><span class="linenos">4970</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="Parser-4971"><a href="#Parser-4971"><span class="linenos">4971</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4972"><a href="#Parser-4972"><span class="linenos">4972</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="Parser-4973"><a href="#Parser-4973"><span class="linenos">4973</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-4974"><a href="#Parser-4974"><span class="linenos">4974</span></a> -</span><span id="Parser-4975"><a href="#Parser-4975"><span class="linenos">4975</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identity</span><span class="p">:</span> -</span><span id="Parser-4976"><a href="#Parser-4976"><span class="linenos">4976</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">())</span> -</span><span id="Parser-4977"><a href="#Parser-4977"><span class="linenos">4977</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"start"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-4978"><a href="#Parser-4978"><span class="linenos">4978</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-4979"><a href="#Parser-4979"><span class="linenos">4979</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> -</span><span id="Parser-4980"><a href="#Parser-4980"><span class="linenos">4980</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-4958"><a href="#Parser-4958"><span class="linenos">4958</span></a> <span class="k">def</span> <span class="nf">_parse_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">:</span> +</span><span id="Parser-4959"><a href="#Parser-4959"><span class="linenos">4959</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-4960"><a href="#Parser-4960"><span class="linenos">4960</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4961"><a href="#Parser-4961"><span class="linenos">4961</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-4962"><a href="#Parser-4962"><span class="linenos">4962</span></a> <span class="p">)</span> +</span><span id="Parser-4963"><a href="#Parser-4963"><span class="linenos">4963</span></a> +</span><span id="Parser-4964"><a href="#Parser-4964"><span class="linenos">4964</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-4965"><a href="#Parser-4965"><span class="linenos">4965</span></a> +</span><span id="Parser-4966"><a href="#Parser-4966"><span class="linenos">4966</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span> +</span><span id="Parser-4967"><a href="#Parser-4967"><span class="linenos">4967</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-4968"><a href="#Parser-4968"><span class="linenos">4968</span></a> <span class="p">)</span> <span class="o">-></span> <span class="p">(</span> +</span><span id="Parser-4969"><a href="#Parser-4969"><span class="linenos">4969</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span> +</span><span id="Parser-4970"><a href="#Parser-4970"><span class="linenos">4970</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">ComputedColumnConstraint</span> +</span><span id="Parser-4971"><a href="#Parser-4971"><span class="linenos">4971</span></a> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span> +</span><span id="Parser-4972"><a href="#Parser-4972"><span class="linenos">4972</span></a> <span class="p">):</span> +</span><span id="Parser-4973"><a href="#Parser-4973"><span class="linenos">4973</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"DEFAULT"</span><span class="p">):</span> +</span><span id="Parser-4974"><a href="#Parser-4974"><span class="linenos">4974</span></a> <span class="n">on_null</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">)</span> +</span><span id="Parser-4975"><a href="#Parser-4975"><span class="linenos">4975</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-4976"><a href="#Parser-4976"><span class="linenos">4976</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">on_null</span><span class="o">=</span><span class="n">on_null</span> +</span><span id="Parser-4977"><a href="#Parser-4977"><span class="linenos">4977</span></a> <span class="p">)</span> +</span><span id="Parser-4978"><a href="#Parser-4978"><span class="linenos">4978</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-4979"><a href="#Parser-4979"><span class="linenos">4979</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="Parser-4980"><a href="#Parser-4980"><span class="linenos">4980</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-4981"><a href="#Parser-4981"><span class="linenos">4981</span></a> -</span><span id="Parser-4982"><a href="#Parser-4982"><span class="linenos">4982</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-4982"><a href="#Parser-4982"><span class="linenos">4982</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> </span><span id="Parser-4983"><a href="#Parser-4983"><span class="linenos">4983</span></a> -</span><span id="Parser-4984"><a href="#Parser-4984"><span class="linenos">4984</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-4985"><a href="#Parser-4985"><span class="linenos">4985</span></a> -</span><span id="Parser-4986"><a href="#Parser-4986"><span class="linenos">4986</span></a> <span class="k">def</span> <span class="nf">_parse_inline</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">:</span> -</span><span id="Parser-4987"><a href="#Parser-4987"><span class="linenos">4987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LENGTH"</span><span class="p">)</span> -</span><span id="Parser-4988"><a href="#Parser-4988"><span class="linenos">4988</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-4989"><a href="#Parser-4989"><span class="linenos">4989</span></a> -</span><span id="Parser-4990"><a href="#Parser-4990"><span class="linenos">4990</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-4991"><a href="#Parser-4991"><span class="linenos">4991</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="Parser-4992"><a href="#Parser-4992"><span class="linenos">4992</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> -</span><span id="Parser-4993"><a href="#Parser-4993"><span class="linenos">4993</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> -</span><span id="Parser-4994"><a href="#Parser-4994"><span class="linenos">4994</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-4995"><a href="#Parser-4995"><span class="linenos">4995</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"REPLICATION"</span><span class="p">):</span> -</span><span id="Parser-4996"><a href="#Parser-4996"><span class="linenos">4996</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotForReplicationColumnConstraint</span><span class="p">)</span> -</span><span id="Parser-4997"><a href="#Parser-4997"><span class="linenos">4997</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-4998"><a href="#Parser-4998"><span class="linenos">4998</span></a> -</span><span id="Parser-4999"><a href="#Parser-4999"><span class="linenos">4999</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5000"><a href="#Parser-5000"><span class="linenos">5000</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="Parser-5001"><a href="#Parser-5001"><span class="linenos">5001</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-5002"><a href="#Parser-5002"><span class="linenos">5002</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5003"><a href="#Parser-5003"><span class="linenos">5003</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5004"><a href="#Parser-5004"><span class="linenos">5004</span></a> -</span><span id="Parser-5005"><a href="#Parser-5005"><span class="linenos">5005</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> -</span><span id="Parser-5006"><a href="#Parser-5006"><span class="linenos">5006</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5007"><a href="#Parser-5007"><span class="linenos">5007</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> -</span><span id="Parser-5008"><a href="#Parser-5008"><span class="linenos">5008</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5009"><a href="#Parser-5009"><span class="linenos">5009</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> -</span><span id="Parser-5010"><a href="#Parser-5010"><span class="linenos">5010</span></a> <span class="p">)</span> -</span><span id="Parser-5011"><a href="#Parser-5011"><span class="linenos">5011</span></a> -</span><span id="Parser-5012"><a href="#Parser-5012"><span class="linenos">5012</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5013"><a href="#Parser-5013"><span class="linenos">5013</span></a> -</span><span id="Parser-5014"><a href="#Parser-5014"><span class="linenos">5014</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5015"><a href="#Parser-5015"><span class="linenos">5015</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="Parser-5016"><a href="#Parser-5016"><span class="linenos">5016</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> -</span><span id="Parser-5017"><a href="#Parser-5017"><span class="linenos">5017</span></a> -</span><span id="Parser-5018"><a href="#Parser-5018"><span class="linenos">5018</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5019"><a href="#Parser-5019"><span class="linenos">5019</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Constraint</span><span class="p">,</span> -</span><span id="Parser-5020"><a href="#Parser-5020"><span class="linenos">5020</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="Parser-5021"><a href="#Parser-5021"><span class="linenos">5021</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraints</span><span class="p">(),</span> -</span><span id="Parser-5022"><a href="#Parser-5022"><span class="linenos">5022</span></a> <span class="p">)</span> -</span><span id="Parser-5023"><a href="#Parser-5023"><span class="linenos">5023</span></a> -</span><span id="Parser-5024"><a href="#Parser-5024"><span class="linenos">5024</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5025"><a href="#Parser-5025"><span class="linenos">5025</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-5026"><a href="#Parser-5026"><span class="linenos">5026</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-5027"><a href="#Parser-5027"><span class="linenos">5027</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="Parser-5028"><a href="#Parser-5028"><span class="linenos">5028</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="Parser-5029"><a href="#Parser-5029"><span class="linenos">5029</span></a> <span class="k">break</span> -</span><span id="Parser-5030"><a href="#Parser-5030"><span class="linenos">5030</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="Parser-4984"><a href="#Parser-4984"><span class="linenos">4984</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="Parser-4985"><a href="#Parser-4985"><span class="linenos">4985</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">)</span> +</span><span id="Parser-4986"><a href="#Parser-4986"><span class="linenos">4986</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> +</span><span id="Parser-4987"><a href="#Parser-4987"><span class="linenos">4987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> +</span><span id="Parser-4988"><a href="#Parser-4988"><span class="linenos">4988</span></a> <span class="n">hidden</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"HIDDEN"</span><span class="p">)</span> +</span><span id="Parser-4989"><a href="#Parser-4989"><span class="linenos">4989</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsRowColumnConstraint</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">hidden</span><span class="o">=</span><span class="n">hidden</span><span class="p">)</span> +</span><span id="Parser-4990"><a href="#Parser-4990"><span class="linenos">4990</span></a> +</span><span id="Parser-4991"><a href="#Parser-4991"><span class="linenos">4991</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IDENTITY"</span><span class="p">)</span> +</span><span id="Parser-4992"><a href="#Parser-4992"><span class="linenos">4992</span></a> +</span><span id="Parser-4993"><a href="#Parser-4993"><span class="linenos">4993</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-4994"><a href="#Parser-4994"><span class="linenos">4994</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">):</span> +</span><span id="Parser-4995"><a href="#Parser-4995"><span class="linenos">4995</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-4996"><a href="#Parser-4996"><span class="linenos">4996</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-4997"><a href="#Parser-4997"><span class="linenos">4997</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-4998"><a href="#Parser-4998"><span class="linenos">4998</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="Parser-4999"><a href="#Parser-4999"><span class="linenos">4999</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5000"><a href="#Parser-5000"><span class="linenos">5000</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="Parser-5001"><a href="#Parser-5001"><span class="linenos">5001</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5002"><a href="#Parser-5002"><span class="linenos">5002</span></a> +</span><span id="Parser-5003"><a href="#Parser-5003"><span class="linenos">5003</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="Parser-5004"><a href="#Parser-5004"><span class="linenos">5004</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5005"><a href="#Parser-5005"><span class="linenos">5005</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="Parser-5006"><a href="#Parser-5006"><span class="linenos">5006</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-5007"><a href="#Parser-5007"><span class="linenos">5007</span></a> +</span><span id="Parser-5008"><a href="#Parser-5008"><span class="linenos">5008</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identity</span><span class="p">:</span> +</span><span id="Parser-5009"><a href="#Parser-5009"><span class="linenos">5009</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">())</span> +</span><span id="Parser-5010"><a href="#Parser-5010"><span class="linenos">5010</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"start"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-5011"><a href="#Parser-5011"><span class="linenos">5011</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-5012"><a href="#Parser-5012"><span class="linenos">5012</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Parser-5013"><a href="#Parser-5013"><span class="linenos">5013</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5014"><a href="#Parser-5014"><span class="linenos">5014</span></a> +</span><span id="Parser-5015"><a href="#Parser-5015"><span class="linenos">5015</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-5016"><a href="#Parser-5016"><span class="linenos">5016</span></a> +</span><span id="Parser-5017"><a href="#Parser-5017"><span class="linenos">5017</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5018"><a href="#Parser-5018"><span class="linenos">5018</span></a> +</span><span id="Parser-5019"><a href="#Parser-5019"><span class="linenos">5019</span></a> <span class="k">def</span> <span class="nf">_parse_inline</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">:</span> +</span><span id="Parser-5020"><a href="#Parser-5020"><span class="linenos">5020</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LENGTH"</span><span class="p">)</span> +</span><span id="Parser-5021"><a href="#Parser-5021"><span class="linenos">5021</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5022"><a href="#Parser-5022"><span class="linenos">5022</span></a> +</span><span id="Parser-5023"><a href="#Parser-5023"><span class="linenos">5023</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5024"><a href="#Parser-5024"><span class="linenos">5024</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="Parser-5025"><a href="#Parser-5025"><span class="linenos">5025</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> +</span><span id="Parser-5026"><a href="#Parser-5026"><span class="linenos">5026</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> +</span><span id="Parser-5027"><a href="#Parser-5027"><span class="linenos">5027</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5028"><a href="#Parser-5028"><span class="linenos">5028</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"REPLICATION"</span><span class="p">):</span> +</span><span id="Parser-5029"><a href="#Parser-5029"><span class="linenos">5029</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotForReplicationColumnConstraint</span><span class="p">)</span> +</span><span id="Parser-5030"><a href="#Parser-5030"><span class="linenos">5030</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-5031"><a href="#Parser-5031"><span class="linenos">5031</span></a> -</span><span id="Parser-5032"><a href="#Parser-5032"><span class="linenos">5032</span></a> <span class="k">return</span> <span class="n">constraints</span> -</span><span id="Parser-5033"><a href="#Parser-5033"><span class="linenos">5033</span></a> -</span><span id="Parser-5034"><a href="#Parser-5034"><span class="linenos">5034</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> -</span><span id="Parser-5035"><a href="#Parser-5035"><span class="linenos">5035</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</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">Collection</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="Parser-5036"><a href="#Parser-5036"><span class="linenos">5036</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5037"><a href="#Parser-5037"><span class="linenos">5037</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> -</span><span id="Parser-5038"><a href="#Parser-5038"><span class="linenos">5038</span></a> <span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span> -</span><span id="Parser-5039"><a href="#Parser-5039"><span class="linenos">5039</span></a> <span class="p">):</span> -</span><span id="Parser-5040"><a href="#Parser-5040"><span class="linenos">5040</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5041"><a href="#Parser-5041"><span class="linenos">5041</span></a> -</span><span id="Parser-5042"><a href="#Parser-5042"><span class="linenos">5042</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-5043"><a href="#Parser-5043"><span class="linenos">5043</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> -</span><span id="Parser-5044"><a href="#Parser-5044"><span class="linenos">5044</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="Parser-5045"><a href="#Parser-5045"><span class="linenos">5045</span></a> -</span><span id="Parser-5046"><a href="#Parser-5046"><span class="linenos">5046</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-5047"><a href="#Parser-5047"><span class="linenos">5047</span></a> -</span><span id="Parser-5048"><a href="#Parser-5048"><span class="linenos">5048</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">:</span> -</span><span id="Parser-5049"><a href="#Parser-5049"><span class="linenos">5049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> -</span><span id="Parser-5050"><a href="#Parser-5050"><span class="linenos">5050</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5051"><a href="#Parser-5051"><span class="linenos">5051</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">,</span> -</span><span id="Parser-5052"><a href="#Parser-5052"><span class="linenos">5052</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)),</span> -</span><span id="Parser-5053"><a href="#Parser-5053"><span class="linenos">5053</span></a> <span class="n">index_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="Parser-5054"><a href="#Parser-5054"><span class="linenos">5054</span></a> <span class="n">on_conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> +</span><span id="Parser-5032"><a href="#Parser-5032"><span class="linenos">5032</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5033"><a href="#Parser-5033"><span class="linenos">5033</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="Parser-5034"><a href="#Parser-5034"><span class="linenos">5034</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-5035"><a href="#Parser-5035"><span class="linenos">5035</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5036"><a href="#Parser-5036"><span class="linenos">5036</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5037"><a href="#Parser-5037"><span class="linenos">5037</span></a> +</span><span id="Parser-5038"><a href="#Parser-5038"><span class="linenos">5038</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> +</span><span id="Parser-5039"><a href="#Parser-5039"><span class="linenos">5039</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5040"><a href="#Parser-5040"><span class="linenos">5040</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> +</span><span id="Parser-5041"><a href="#Parser-5041"><span class="linenos">5041</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5042"><a href="#Parser-5042"><span class="linenos">5042</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> +</span><span id="Parser-5043"><a href="#Parser-5043"><span class="linenos">5043</span></a> <span class="p">)</span> +</span><span id="Parser-5044"><a href="#Parser-5044"><span class="linenos">5044</span></a> +</span><span id="Parser-5045"><a href="#Parser-5045"><span class="linenos">5045</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5046"><a href="#Parser-5046"><span class="linenos">5046</span></a> +</span><span id="Parser-5047"><a href="#Parser-5047"><span class="linenos">5047</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5048"><a href="#Parser-5048"><span class="linenos">5048</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="Parser-5049"><a href="#Parser-5049"><span class="linenos">5049</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> +</span><span id="Parser-5050"><a href="#Parser-5050"><span class="linenos">5050</span></a> +</span><span id="Parser-5051"><a href="#Parser-5051"><span class="linenos">5051</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5052"><a href="#Parser-5052"><span class="linenos">5052</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Constraint</span><span class="p">,</span> +</span><span id="Parser-5053"><a href="#Parser-5053"><span class="linenos">5053</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="Parser-5054"><a href="#Parser-5054"><span class="linenos">5054</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraints</span><span class="p">(),</span> </span><span id="Parser-5055"><a href="#Parser-5055"><span class="linenos">5055</span></a> <span class="p">)</span> </span><span id="Parser-5056"><a href="#Parser-5056"><span class="linenos">5056</span></a> -</span><span id="Parser-5057"><a href="#Parser-5057"><span class="linenos">5057</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="Parser-5058"><a href="#Parser-5058"><span class="linenos">5058</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-5057"><a href="#Parser-5057"><span class="linenos">5057</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5058"><a href="#Parser-5058"><span class="linenos">5058</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Parser-5059"><a href="#Parser-5059"><span class="linenos">5059</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-5060"><a href="#Parser-5060"><span class="linenos">5060</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-5061"><a href="#Parser-5061"><span class="linenos">5061</span></a> <span class="k">break</span> -</span><span id="Parser-5062"><a href="#Parser-5062"><span class="linenos">5062</span></a> -</span><span id="Parser-5063"><a href="#Parser-5063"><span class="linenos">5063</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-5064"><a href="#Parser-5064"><span class="linenos">5064</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5065"><a href="#Parser-5065"><span class="linenos">5065</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-5060"><a href="#Parser-5060"><span class="linenos">5060</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="Parser-5061"><a href="#Parser-5061"><span class="linenos">5061</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="Parser-5062"><a href="#Parser-5062"><span class="linenos">5062</span></a> <span class="k">break</span> +</span><span id="Parser-5063"><a href="#Parser-5063"><span class="linenos">5063</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="Parser-5064"><a href="#Parser-5064"><span class="linenos">5064</span></a> +</span><span id="Parser-5065"><a href="#Parser-5065"><span class="linenos">5065</span></a> <span class="k">return</span> <span class="n">constraints</span> </span><span id="Parser-5066"><a href="#Parser-5066"><span class="linenos">5066</span></a> -</span><span id="Parser-5067"><a href="#Parser-5067"><span class="linenos">5067</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> -</span><span id="Parser-5068"><a href="#Parser-5068"><span class="linenos">5068</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="Parser-5069"><a href="#Parser-5069"><span class="linenos">5069</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">):</span> -</span><span id="Parser-5070"><a href="#Parser-5070"><span class="linenos">5070</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> -</span><span id="Parser-5071"><a href="#Parser-5071"><span class="linenos">5071</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> -</span><span id="Parser-5072"><a href="#Parser-5072"><span class="linenos">5072</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"RESTRICT"</span> -</span><span id="Parser-5073"><a href="#Parser-5073"><span class="linenos">5073</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="Parser-5074"><a href="#Parser-5074"><span class="linenos">5074</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> -</span><span id="Parser-5075"><a href="#Parser-5075"><span class="linenos">5075</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-5076"><a href="#Parser-5076"><span class="linenos">5076</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> -</span><span id="Parser-5077"><a href="#Parser-5077"><span class="linenos">5077</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5078"><a href="#Parser-5078"><span class="linenos">5078</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> -</span><span id="Parser-5079"><a href="#Parser-5079"><span class="linenos">5079</span></a> -</span><span id="Parser-5080"><a href="#Parser-5080"><span class="linenos">5080</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-5081"><a href="#Parser-5081"><span class="linenos">5081</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> -</span><span id="Parser-5082"><a href="#Parser-5082"><span class="linenos">5082</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> -</span><span id="Parser-5083"><a href="#Parser-5083"><span class="linenos">5083</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> -</span><span id="Parser-5084"><a href="#Parser-5084"><span class="linenos">5084</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> -</span><span id="Parser-5085"><a href="#Parser-5085"><span class="linenos">5085</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> -</span><span id="Parser-5086"><a href="#Parser-5086"><span class="linenos">5086</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> -</span><span id="Parser-5087"><a href="#Parser-5087"><span class="linenos">5087</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> -</span><span id="Parser-5088"><a href="#Parser-5088"><span class="linenos">5088</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> -</span><span id="Parser-5089"><a href="#Parser-5089"><span class="linenos">5089</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> -</span><span id="Parser-5090"><a href="#Parser-5090"><span class="linenos">5090</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> -</span><span id="Parser-5091"><a href="#Parser-5091"><span class="linenos">5091</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5092"><a href="#Parser-5092"><span class="linenos">5092</span></a> <span class="k">break</span> -</span><span id="Parser-5093"><a href="#Parser-5093"><span class="linenos">5093</span></a> -</span><span id="Parser-5094"><a href="#Parser-5094"><span class="linenos">5094</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="Parser-5067"><a href="#Parser-5067"><span class="linenos">5067</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> +</span><span id="Parser-5068"><a href="#Parser-5068"><span class="linenos">5068</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</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">Collection</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="Parser-5069"><a href="#Parser-5069"><span class="linenos">5069</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5070"><a href="#Parser-5070"><span class="linenos">5070</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span> +</span><span id="Parser-5071"><a href="#Parser-5071"><span class="linenos">5071</span></a> <span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span> +</span><span id="Parser-5072"><a href="#Parser-5072"><span class="linenos">5072</span></a> <span class="p">):</span> +</span><span id="Parser-5073"><a href="#Parser-5073"><span class="linenos">5073</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5074"><a href="#Parser-5074"><span class="linenos">5074</span></a> +</span><span id="Parser-5075"><a href="#Parser-5075"><span class="linenos">5075</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-5076"><a href="#Parser-5076"><span class="linenos">5076</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> +</span><span id="Parser-5077"><a href="#Parser-5077"><span class="linenos">5077</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</span><span id="Parser-5078"><a href="#Parser-5078"><span class="linenos">5078</span></a> +</span><span id="Parser-5079"><a href="#Parser-5079"><span class="linenos">5079</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-5080"><a href="#Parser-5080"><span class="linenos">5080</span></a> +</span><span id="Parser-5081"><a href="#Parser-5081"><span class="linenos">5081</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">:</span> +</span><span id="Parser-5082"><a href="#Parser-5082"><span class="linenos">5082</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> +</span><span id="Parser-5083"><a href="#Parser-5083"><span class="linenos">5083</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5084"><a href="#Parser-5084"><span class="linenos">5084</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">,</span> +</span><span id="Parser-5085"><a href="#Parser-5085"><span class="linenos">5085</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)),</span> +</span><span id="Parser-5086"><a href="#Parser-5086"><span class="linenos">5086</span></a> <span class="n">index_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="Parser-5087"><a href="#Parser-5087"><span class="linenos">5087</span></a> <span class="n">on_conflict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_conflict</span><span class="p">(),</span> +</span><span id="Parser-5088"><a href="#Parser-5088"><span class="linenos">5088</span></a> <span class="p">)</span> +</span><span id="Parser-5089"><a href="#Parser-5089"><span class="linenos">5089</span></a> +</span><span id="Parser-5090"><a href="#Parser-5090"><span class="linenos">5090</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="Parser-5091"><a href="#Parser-5091"><span class="linenos">5091</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-5092"><a href="#Parser-5092"><span class="linenos">5092</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-5093"><a href="#Parser-5093"><span class="linenos">5093</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-5094"><a href="#Parser-5094"><span class="linenos">5094</span></a> <span class="k">break</span> </span><span id="Parser-5095"><a href="#Parser-5095"><span class="linenos">5095</span></a> -</span><span id="Parser-5096"><a href="#Parser-5096"><span class="linenos">5096</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">]:</span> -</span><span id="Parser-5097"><a href="#Parser-5097"><span class="linenos">5097</span></a> <span class="k">if</span> <span class="n">match</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> -</span><span id="Parser-5098"><a href="#Parser-5098"><span class="linenos">5098</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5096"><a href="#Parser-5096"><span class="linenos">5096</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-5097"><a href="#Parser-5097"><span class="linenos">5097</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5098"><a href="#Parser-5098"><span class="linenos">5098</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> </span><span id="Parser-5099"><a href="#Parser-5099"><span class="linenos">5099</span></a> -</span><span id="Parser-5100"><a href="#Parser-5100"><span class="linenos">5100</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5101"><a href="#Parser-5101"><span class="linenos">5101</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5102"><a href="#Parser-5102"><span class="linenos">5102</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="Parser-5103"><a href="#Parser-5103"><span class="linenos">5103</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="Parser-5104"><a href="#Parser-5104"><span class="linenos">5104</span></a> -</span><span id="Parser-5105"><a href="#Parser-5105"><span class="linenos">5105</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">:</span> -</span><span id="Parser-5106"><a href="#Parser-5106"><span class="linenos">5106</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-5107"><a href="#Parser-5107"><span class="linenos">5107</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> -</span><span id="Parser-5108"><a href="#Parser-5108"><span class="linenos">5108</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-5109"><a href="#Parser-5109"><span class="linenos">5109</span></a> -</span><span id="Parser-5110"><a href="#Parser-5110"><span class="linenos">5110</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-5111"><a href="#Parser-5111"><span class="linenos">5111</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> -</span><span id="Parser-5112"><a href="#Parser-5112"><span class="linenos">5112</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> -</span><span id="Parser-5113"><a href="#Parser-5113"><span class="linenos">5113</span></a> -</span><span id="Parser-5114"><a href="#Parser-5114"><span class="linenos">5114</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="Parser-5115"><a href="#Parser-5115"><span class="linenos">5115</span></a> -</span><span id="Parser-5116"><a href="#Parser-5116"><span class="linenos">5116</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> -</span><span id="Parser-5117"><a href="#Parser-5117"><span class="linenos">5117</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="Parser-5118"><a href="#Parser-5118"><span class="linenos">5118</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> -</span><span id="Parser-5119"><a href="#Parser-5119"><span class="linenos">5119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> -</span><span id="Parser-5120"><a href="#Parser-5120"><span class="linenos">5120</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-5121"><a href="#Parser-5121"><span class="linenos">5121</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5122"><a href="#Parser-5122"><span class="linenos">5122</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-5123"><a href="#Parser-5123"><span class="linenos">5123</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-5124"><a href="#Parser-5124"><span class="linenos">5124</span></a> -</span><span id="Parser-5125"><a href="#Parser-5125"><span class="linenos">5125</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> +</span><span id="Parser-5100"><a href="#Parser-5100"><span class="linenos">5100</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> +</span><span id="Parser-5101"><a href="#Parser-5101"><span class="linenos">5101</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="Parser-5102"><a href="#Parser-5102"><span class="linenos">5102</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">):</span> +</span><span id="Parser-5103"><a href="#Parser-5103"><span class="linenos">5103</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> +</span><span id="Parser-5104"><a href="#Parser-5104"><span class="linenos">5104</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> +</span><span id="Parser-5105"><a href="#Parser-5105"><span class="linenos">5105</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"RESTRICT"</span> +</span><span id="Parser-5106"><a href="#Parser-5106"><span class="linenos">5106</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="Parser-5107"><a href="#Parser-5107"><span class="linenos">5107</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> +</span><span id="Parser-5108"><a href="#Parser-5108"><span class="linenos">5108</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-5109"><a href="#Parser-5109"><span class="linenos">5109</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> +</span><span id="Parser-5110"><a href="#Parser-5110"><span class="linenos">5110</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5111"><a href="#Parser-5111"><span class="linenos">5111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> +</span><span id="Parser-5112"><a href="#Parser-5112"><span class="linenos">5112</span></a> +</span><span id="Parser-5113"><a href="#Parser-5113"><span class="linenos">5113</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-5114"><a href="#Parser-5114"><span class="linenos">5114</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> +</span><span id="Parser-5115"><a href="#Parser-5115"><span class="linenos">5115</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> +</span><span id="Parser-5116"><a href="#Parser-5116"><span class="linenos">5116</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> +</span><span id="Parser-5117"><a href="#Parser-5117"><span class="linenos">5117</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> +</span><span id="Parser-5118"><a href="#Parser-5118"><span class="linenos">5118</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> +</span><span id="Parser-5119"><a href="#Parser-5119"><span class="linenos">5119</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> +</span><span id="Parser-5120"><a href="#Parser-5120"><span class="linenos">5120</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> +</span><span id="Parser-5121"><a href="#Parser-5121"><span class="linenos">5121</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> +</span><span id="Parser-5122"><a href="#Parser-5122"><span class="linenos">5122</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> +</span><span id="Parser-5123"><a href="#Parser-5123"><span class="linenos">5123</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> +</span><span id="Parser-5124"><a href="#Parser-5124"><span class="linenos">5124</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5125"><a href="#Parser-5125"><span class="linenos">5125</span></a> <span class="k">break</span> </span><span id="Parser-5126"><a href="#Parser-5126"><span class="linenos">5126</span></a> -</span><span id="Parser-5127"><a href="#Parser-5127"><span class="linenos">5127</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5128"><a href="#Parser-5128"><span class="linenos">5128</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> -</span><span id="Parser-5129"><a href="#Parser-5129"><span class="linenos">5129</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-5130"><a href="#Parser-5130"><span class="linenos">5130</span></a> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> -</span><span id="Parser-5131"><a href="#Parser-5131"><span class="linenos">5131</span></a> <span class="o">**</span><span class="n">options</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-5132"><a href="#Parser-5132"><span class="linenos">5132</span></a> <span class="p">)</span> -</span><span id="Parser-5133"><a href="#Parser-5133"><span class="linenos">5133</span></a> -</span><span id="Parser-5134"><a href="#Parser-5134"><span class="linenos">5134</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5135"><a href="#Parser-5135"><span class="linenos">5135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-5136"><a href="#Parser-5136"><span class="linenos">5136</span></a> -</span><span id="Parser-5137"><a href="#Parser-5137"><span class="linenos">5137</span></a> <span class="k">def</span> <span class="nf">_parse_period_for_system_time</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">]:</span> -</span><span id="Parser-5138"><a href="#Parser-5138"><span class="linenos">5138</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> -</span><span id="Parser-5139"><a href="#Parser-5139"><span class="linenos">5139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-5140"><a href="#Parser-5140"><span class="linenos">5140</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5141"><a href="#Parser-5141"><span class="linenos">5141</span></a> -</span><span id="Parser-5142"><a href="#Parser-5142"><span class="linenos">5142</span></a> <span class="n">id_vars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-5143"><a href="#Parser-5143"><span class="linenos">5143</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5144"><a href="#Parser-5144"><span class="linenos">5144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">,</span> -</span><span id="Parser-5145"><a href="#Parser-5145"><span class="linenos">5145</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> -</span><span id="Parser-5146"><a href="#Parser-5146"><span class="linenos">5146</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> -</span><span id="Parser-5147"><a href="#Parser-5147"><span class="linenos">5147</span></a> <span class="p">)</span> +</span><span id="Parser-5127"><a href="#Parser-5127"><span class="linenos">5127</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="Parser-5128"><a href="#Parser-5128"><span class="linenos">5128</span></a> +</span><span id="Parser-5129"><a href="#Parser-5129"><span class="linenos">5129</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">]:</span> +</span><span id="Parser-5130"><a href="#Parser-5130"><span class="linenos">5130</span></a> <span class="k">if</span> <span class="n">match</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> +</span><span id="Parser-5131"><a href="#Parser-5131"><span class="linenos">5131</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5132"><a href="#Parser-5132"><span class="linenos">5132</span></a> +</span><span id="Parser-5133"><a href="#Parser-5133"><span class="linenos">5133</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5134"><a href="#Parser-5134"><span class="linenos">5134</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5135"><a href="#Parser-5135"><span class="linenos">5135</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="Parser-5136"><a href="#Parser-5136"><span class="linenos">5136</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-5137"><a href="#Parser-5137"><span class="linenos">5137</span></a> +</span><span id="Parser-5138"><a href="#Parser-5138"><span class="linenos">5138</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">:</span> +</span><span id="Parser-5139"><a href="#Parser-5139"><span class="linenos">5139</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-5140"><a href="#Parser-5140"><span class="linenos">5140</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> +</span><span id="Parser-5141"><a href="#Parser-5141"><span class="linenos">5141</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-5142"><a href="#Parser-5142"><span class="linenos">5142</span></a> +</span><span id="Parser-5143"><a href="#Parser-5143"><span class="linenos">5143</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-5144"><a href="#Parser-5144"><span class="linenos">5144</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> +</span><span id="Parser-5145"><a href="#Parser-5145"><span class="linenos">5145</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> +</span><span id="Parser-5146"><a href="#Parser-5146"><span class="linenos">5146</span></a> +</span><span id="Parser-5147"><a href="#Parser-5147"><span class="linenos">5147</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> </span><span id="Parser-5148"><a href="#Parser-5148"><span class="linenos">5148</span></a> -</span><span id="Parser-5149"><a href="#Parser-5149"><span class="linenos">5149</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span> -</span><span id="Parser-5150"><a href="#Parser-5150"><span class="linenos">5150</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-5151"><a href="#Parser-5151"><span class="linenos">5151</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span> -</span><span id="Parser-5152"><a href="#Parser-5152"><span class="linenos">5152</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-5153"><a href="#Parser-5153"><span class="linenos">5153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> -</span><span id="Parser-5154"><a href="#Parser-5154"><span class="linenos">5154</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> -</span><span id="Parser-5155"><a href="#Parser-5155"><span class="linenos">5155</span></a> <span class="p">)</span> -</span><span id="Parser-5156"><a href="#Parser-5156"><span class="linenos">5156</span></a> -</span><span id="Parser-5157"><a href="#Parser-5157"><span class="linenos">5157</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">in_props</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-5158"><a href="#Parser-5158"><span class="linenos">5158</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> +</span><span id="Parser-5149"><a href="#Parser-5149"><span class="linenos">5149</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"ACTION"</span><span class="p">):</span> +</span><span id="Parser-5150"><a href="#Parser-5150"><span class="linenos">5150</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="Parser-5151"><a href="#Parser-5151"><span class="linenos">5151</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> +</span><span id="Parser-5152"><a href="#Parser-5152"><span class="linenos">5152</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> +</span><span id="Parser-5153"><a href="#Parser-5153"><span class="linenos">5153</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-5154"><a href="#Parser-5154"><span class="linenos">5154</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5155"><a href="#Parser-5155"><span class="linenos">5155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-5156"><a href="#Parser-5156"><span class="linenos">5156</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-5157"><a href="#Parser-5157"><span class="linenos">5157</span></a> +</span><span id="Parser-5158"><a href="#Parser-5158"><span class="linenos">5158</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> </span><span id="Parser-5159"><a href="#Parser-5159"><span class="linenos">5159</span></a> -</span><span id="Parser-5160"><a href="#Parser-5160"><span class="linenos">5160</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span> -</span><span id="Parser-5161"><a href="#Parser-5161"><span class="linenos">5161</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key_part</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">wrapped_optional</span> -</span><span id="Parser-5162"><a href="#Parser-5162"><span class="linenos">5162</span></a> <span class="p">)</span> -</span><span id="Parser-5163"><a href="#Parser-5163"><span class="linenos">5163</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="Parser-5164"><a href="#Parser-5164"><span class="linenos">5164</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="Parser-5165"><a href="#Parser-5165"><span class="linenos">5165</span></a> -</span><span id="Parser-5166"><a href="#Parser-5166"><span class="linenos">5166</span></a> <span class="k">def</span> <span class="nf">_parse_bracket_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">is_map</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5167"><a href="#Parser-5167"><span class="linenos">5167</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-5168"><a href="#Parser-5168"><span class="linenos">5168</span></a> -</span><span id="Parser-5169"><a href="#Parser-5169"><span class="linenos">5169</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5170"><a href="#Parser-5170"><span class="linenos">5170</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> -</span><span id="Parser-5171"><a href="#Parser-5171"><span class="linenos">5171</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5172"><a href="#Parser-5172"><span class="linenos">5172</span></a> -</span><span id="Parser-5173"><a href="#Parser-5173"><span class="linenos">5173</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-5174"><a href="#Parser-5174"><span class="linenos">5174</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-5175"><a href="#Parser-5175"><span class="linenos">5175</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket_key_value</span><span class="p">(</span><span class="n">is_map</span><span class="o">=</span><span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> -</span><span id="Parser-5176"><a href="#Parser-5176"><span class="linenos">5176</span></a> <span class="p">)</span> -</span><span id="Parser-5177"><a href="#Parser-5177"><span class="linenos">5177</span></a> -</span><span id="Parser-5178"><a href="#Parser-5178"><span class="linenos">5178</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> -</span><span id="Parser-5179"><a href="#Parser-5179"><span class="linenos">5179</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> -</span><span id="Parser-5180"><a href="#Parser-5180"><span class="linenos">5180</span></a> <span class="k">elif</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span> -</span><span id="Parser-5181"><a href="#Parser-5181"><span class="linenos">5181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> -</span><span id="Parser-5182"><a href="#Parser-5182"><span class="linenos">5182</span></a> -</span><span id="Parser-5183"><a href="#Parser-5183"><span class="linenos">5183</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> -</span><span id="Parser-5184"><a href="#Parser-5184"><span class="linenos">5184</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> -</span><span id="Parser-5185"><a href="#Parser-5185"><span class="linenos">5185</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">expressions</span><span class="p">))</span> -</span><span id="Parser-5186"><a href="#Parser-5186"><span class="linenos">5186</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"ARRAY"</span><span class="p">:</span> -</span><span id="Parser-5187"><a href="#Parser-5187"><span class="linenos">5187</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-5188"><a href="#Parser-5188"><span class="linenos">5188</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5189"><a href="#Parser-5189"><span class="linenos">5189</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">INDEX_OFFSET</span><span class="p">)</span> -</span><span id="Parser-5190"><a href="#Parser-5190"><span class="linenos">5190</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-5191"><a href="#Parser-5191"><span class="linenos">5191</span></a> -</span><span id="Parser-5192"><a href="#Parser-5192"><span class="linenos">5192</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5193"><a href="#Parser-5193"><span class="linenos">5193</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5194"><a href="#Parser-5194"><span class="linenos">5194</span></a> -</span><span id="Parser-5195"><a href="#Parser-5195"><span class="linenos">5195</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5196"><a href="#Parser-5196"><span class="linenos">5196</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="Parser-5197"><a href="#Parser-5197"><span class="linenos">5197</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="Parser-5198"><a href="#Parser-5198"><span class="linenos">5198</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5199"><a href="#Parser-5199"><span class="linenos">5199</span></a> -</span><span id="Parser-5200"><a href="#Parser-5200"><span class="linenos">5200</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5201"><a href="#Parser-5201"><span class="linenos">5201</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-5202"><a href="#Parser-5202"><span class="linenos">5202</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5203"><a href="#Parser-5203"><span class="linenos">5203</span></a> -</span><span id="Parser-5204"><a href="#Parser-5204"><span class="linenos">5204</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-5205"><a href="#Parser-5205"><span class="linenos">5205</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-5206"><a href="#Parser-5206"><span class="linenos">5206</span></a> -</span><span id="Parser-5207"><a href="#Parser-5207"><span class="linenos">5207</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="Parser-5208"><a href="#Parser-5208"><span class="linenos">5208</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-5209"><a href="#Parser-5209"><span class="linenos">5209</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="Parser-5210"><a href="#Parser-5210"><span class="linenos">5210</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-5211"><a href="#Parser-5211"><span class="linenos">5211</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> -</span><span id="Parser-5212"><a href="#Parser-5212"><span class="linenos">5212</span></a> -</span><span id="Parser-5213"><a href="#Parser-5213"><span class="linenos">5213</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> -</span><span id="Parser-5214"><a href="#Parser-5214"><span class="linenos">5214</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5160"><a href="#Parser-5160"><span class="linenos">5160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5161"><a href="#Parser-5161"><span class="linenos">5161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> +</span><span id="Parser-5162"><a href="#Parser-5162"><span class="linenos">5162</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-5163"><a href="#Parser-5163"><span class="linenos">5163</span></a> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> +</span><span id="Parser-5164"><a href="#Parser-5164"><span class="linenos">5164</span></a> <span class="o">**</span><span class="n">options</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-5165"><a href="#Parser-5165"><span class="linenos">5165</span></a> <span class="p">)</span> +</span><span id="Parser-5166"><a href="#Parser-5166"><span class="linenos">5166</span></a> +</span><span id="Parser-5167"><a href="#Parser-5167"><span class="linenos">5167</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5168"><a href="#Parser-5168"><span class="linenos">5168</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-5169"><a href="#Parser-5169"><span class="linenos">5169</span></a> +</span><span id="Parser-5170"><a href="#Parser-5170"><span class="linenos">5170</span></a> <span class="k">def</span> <span class="nf">_parse_period_for_system_time</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">]:</span> +</span><span id="Parser-5171"><a href="#Parser-5171"><span class="linenos">5171</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">):</span> +</span><span id="Parser-5172"><a href="#Parser-5172"><span class="linenos">5172</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-5173"><a href="#Parser-5173"><span class="linenos">5173</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5174"><a href="#Parser-5174"><span class="linenos">5174</span></a> +</span><span id="Parser-5175"><a href="#Parser-5175"><span class="linenos">5175</span></a> <span class="n">id_vars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-5176"><a href="#Parser-5176"><span class="linenos">5176</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5177"><a href="#Parser-5177"><span class="linenos">5177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PeriodForSystemTimeConstraint</span><span class="p">,</span> +</span><span id="Parser-5178"><a href="#Parser-5178"><span class="linenos">5178</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> +</span><span id="Parser-5179"><a href="#Parser-5179"><span class="linenos">5179</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">id_vars</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> +</span><span id="Parser-5180"><a href="#Parser-5180"><span class="linenos">5180</span></a> <span class="p">)</span> +</span><span id="Parser-5181"><a href="#Parser-5181"><span class="linenos">5181</span></a> +</span><span id="Parser-5182"><a href="#Parser-5182"><span class="linenos">5182</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span> +</span><span id="Parser-5183"><a href="#Parser-5183"><span class="linenos">5183</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">wrapped_optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">in_props</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-5184"><a href="#Parser-5184"><span class="linenos">5184</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">:</span> +</span><span id="Parser-5185"><a href="#Parser-5185"><span class="linenos">5185</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-5186"><a href="#Parser-5186"><span class="linenos">5186</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> +</span><span id="Parser-5187"><a href="#Parser-5187"><span class="linenos">5187</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> +</span><span id="Parser-5188"><a href="#Parser-5188"><span class="linenos">5188</span></a> <span class="p">)</span> +</span><span id="Parser-5189"><a href="#Parser-5189"><span class="linenos">5189</span></a> +</span><span id="Parser-5190"><a href="#Parser-5190"><span class="linenos">5190</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">in_props</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-5191"><a href="#Parser-5191"><span class="linenos">5191</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> +</span><span id="Parser-5192"><a href="#Parser-5192"><span class="linenos">5192</span></a> +</span><span id="Parser-5193"><a href="#Parser-5193"><span class="linenos">5193</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span> +</span><span id="Parser-5194"><a href="#Parser-5194"><span class="linenos">5194</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key_part</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">wrapped_optional</span> +</span><span id="Parser-5195"><a href="#Parser-5195"><span class="linenos">5195</span></a> <span class="p">)</span> +</span><span id="Parser-5196"><a href="#Parser-5196"><span class="linenos">5196</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="Parser-5197"><a href="#Parser-5197"><span class="linenos">5197</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-5198"><a href="#Parser-5198"><span class="linenos">5198</span></a> +</span><span id="Parser-5199"><a href="#Parser-5199"><span class="linenos">5199</span></a> <span class="k">def</span> <span class="nf">_parse_bracket_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">is_map</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5200"><a href="#Parser-5200"><span class="linenos">5200</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-5201"><a href="#Parser-5201"><span class="linenos">5201</span></a> +</span><span id="Parser-5202"><a href="#Parser-5202"><span class="linenos">5202</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5203"><a href="#Parser-5203"><span class="linenos">5203</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> +</span><span id="Parser-5204"><a href="#Parser-5204"><span class="linenos">5204</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5205"><a href="#Parser-5205"><span class="linenos">5205</span></a> +</span><span id="Parser-5206"><a href="#Parser-5206"><span class="linenos">5206</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-5207"><a href="#Parser-5207"><span class="linenos">5207</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-5208"><a href="#Parser-5208"><span class="linenos">5208</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket_key_value</span><span class="p">(</span><span class="n">is_map</span><span class="o">=</span><span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> +</span><span id="Parser-5209"><a href="#Parser-5209"><span class="linenos">5209</span></a> <span class="p">)</span> +</span><span id="Parser-5210"><a href="#Parser-5210"><span class="linenos">5210</span></a> +</span><span id="Parser-5211"><a href="#Parser-5211"><span class="linenos">5211</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="Parser-5212"><a href="#Parser-5212"><span class="linenos">5212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> +</span><span id="Parser-5213"><a href="#Parser-5213"><span class="linenos">5213</span></a> <span class="k">elif</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">):</span> +</span><span id="Parser-5214"><a href="#Parser-5214"><span class="linenos">5214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> </span><span id="Parser-5215"><a href="#Parser-5215"><span class="linenos">5215</span></a> -</span><span id="Parser-5216"><a href="#Parser-5216"><span class="linenos">5216</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> -</span><span id="Parser-5217"><a href="#Parser-5217"><span class="linenos">5217</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">default</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="ow">and</span> <span class="n">default</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"END"</span><span class="p">:</span> -</span><span id="Parser-5218"><a href="#Parser-5218"><span class="linenos">5218</span></a> <span class="n">default</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="s2">"interval"</span><span class="p">)</span> -</span><span id="Parser-5219"><a href="#Parser-5219"><span class="linenos">5219</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5220"><a href="#Parser-5220"><span class="linenos">5220</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5221"><a href="#Parser-5221"><span class="linenos">5221</span></a> -</span><span id="Parser-5222"><a href="#Parser-5222"><span class="linenos">5222</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5223"><a href="#Parser-5223"><span class="linenos">5223</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> -</span><span id="Parser-5224"><a href="#Parser-5224"><span class="linenos">5224</span></a> <span class="p">)</span> +</span><span id="Parser-5216"><a href="#Parser-5216"><span class="linenos">5216</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> +</span><span id="Parser-5217"><a href="#Parser-5217"><span class="linenos">5217</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> +</span><span id="Parser-5218"><a href="#Parser-5218"><span class="linenos">5218</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_kv_to_prop_eq</span><span class="p">(</span><span class="n">expressions</span><span class="p">))</span> +</span><span id="Parser-5219"><a href="#Parser-5219"><span class="linenos">5219</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-5220"><a href="#Parser-5220"><span class="linenos">5220</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-5221"><a href="#Parser-5221"><span class="linenos">5221</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5222"><a href="#Parser-5222"><span class="linenos">5222</span></a> <span class="n">constructor_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ARRAY_CONSTRUCTORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-5223"><a href="#Parser-5223"><span class="linenos">5223</span></a> <span class="k">if</span> <span class="n">constructor_type</span><span class="p">:</span> +</span><span id="Parser-5224"><a href="#Parser-5224"><span class="linenos">5224</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">constructor_type</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="Parser-5225"><a href="#Parser-5225"><span class="linenos">5225</span></a> -</span><span id="Parser-5226"><a href="#Parser-5226"><span class="linenos">5226</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5227"><a href="#Parser-5227"><span class="linenos">5227</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-5228"><a href="#Parser-5228"><span class="linenos">5228</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="Parser-5229"><a href="#Parser-5229"><span class="linenos">5229</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-5230"><a href="#Parser-5230"><span class="linenos">5230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-5231"><a href="#Parser-5231"><span class="linenos">5231</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5232"><a href="#Parser-5232"><span class="linenos">5232</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="Parser-5233"><a href="#Parser-5233"><span class="linenos">5233</span></a> -</span><span id="Parser-5234"><a href="#Parser-5234"><span class="linenos">5234</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_IF_COMMANDS</span> <span class="ow">and</span> <span class="n">index</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-5235"><a href="#Parser-5235"><span class="linenos">5235</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5226"><a href="#Parser-5226"><span class="linenos">5226</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">INDEX_OFFSET</span><span class="p">)</span> +</span><span id="Parser-5227"><a href="#Parser-5227"><span class="linenos">5227</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-5228"><a href="#Parser-5228"><span class="linenos">5228</span></a> +</span><span id="Parser-5229"><a href="#Parser-5229"><span class="linenos">5229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5230"><a href="#Parser-5230"><span class="linenos">5230</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5231"><a href="#Parser-5231"><span class="linenos">5231</span></a> +</span><span id="Parser-5232"><a href="#Parser-5232"><span class="linenos">5232</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5233"><a href="#Parser-5233"><span class="linenos">5233</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="Parser-5234"><a href="#Parser-5234"><span class="linenos">5234</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="Parser-5235"><a href="#Parser-5235"><span class="linenos">5235</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-5236"><a href="#Parser-5236"><span class="linenos">5236</span></a> -</span><span id="Parser-5237"><a href="#Parser-5237"><span class="linenos">5237</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-5238"><a href="#Parser-5238"><span class="linenos">5238</span></a> -</span><span id="Parser-5239"><a href="#Parser-5239"><span class="linenos">5239</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">condition</span><span class="p">:</span> -</span><span id="Parser-5240"><a href="#Parser-5240"><span class="linenos">5240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-5241"><a href="#Parser-5241"><span class="linenos">5241</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5242"><a href="#Parser-5242"><span class="linenos">5242</span></a> -</span><span id="Parser-5243"><a href="#Parser-5243"><span class="linenos">5243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="Parser-5244"><a href="#Parser-5244"><span class="linenos">5244</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-5245"><a href="#Parser-5245"><span class="linenos">5245</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-5246"><a href="#Parser-5246"><span class="linenos">5246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> -</span><span id="Parser-5247"><a href="#Parser-5247"><span class="linenos">5247</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> -</span><span id="Parser-5248"><a href="#Parser-5248"><span class="linenos">5248</span></a> -</span><span id="Parser-5249"><a href="#Parser-5249"><span class="linenos">5249</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5250"><a href="#Parser-5250"><span class="linenos">5250</span></a> -</span><span id="Parser-5251"><a href="#Parser-5251"><span class="linenos">5251</span></a> <span class="k">def</span> <span class="nf">_parse_next_value_for</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5252"><a href="#Parser-5252"><span class="linenos">5252</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">,</span> <span class="s2">"FOR"</span><span class="p">):</span> -</span><span id="Parser-5253"><a href="#Parser-5253"><span class="linenos">5253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-5254"><a href="#Parser-5254"><span class="linenos">5254</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5255"><a href="#Parser-5255"><span class="linenos">5255</span></a> -</span><span id="Parser-5256"><a href="#Parser-5256"><span class="linenos">5256</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5257"><a href="#Parser-5257"><span class="linenos">5257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NextValueFor</span><span class="p">,</span> -</span><span id="Parser-5258"><a href="#Parser-5258"><span class="linenos">5258</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> -</span><span id="Parser-5259"><a href="#Parser-5259"><span class="linenos">5259</span></a> <span class="n">order</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">),</span> -</span><span id="Parser-5260"><a href="#Parser-5260"><span class="linenos">5260</span></a> <span class="p">)</span> -</span><span id="Parser-5261"><a href="#Parser-5261"><span class="linenos">5261</span></a> -</span><span id="Parser-5262"><a href="#Parser-5262"><span class="linenos">5262</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">:</span> -</span><span id="Parser-5263"><a href="#Parser-5263"><span class="linenos">5263</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Parser-5264"><a href="#Parser-5264"><span class="linenos">5264</span></a> -</span><span id="Parser-5265"><a href="#Parser-5265"><span class="linenos">5265</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-5266"><a href="#Parser-5266"><span class="linenos">5266</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-5267"><a href="#Parser-5267"><span class="linenos">5267</span></a> -</span><span id="Parser-5268"><a href="#Parser-5268"><span class="linenos">5268</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-5269"><a href="#Parser-5269"><span class="linenos">5269</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5237"><a href="#Parser-5237"><span class="linenos">5237</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5238"><a href="#Parser-5238"><span class="linenos">5238</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-5239"><a href="#Parser-5239"><span class="linenos">5239</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5240"><a href="#Parser-5240"><span class="linenos">5240</span></a> +</span><span id="Parser-5241"><a href="#Parser-5241"><span class="linenos">5241</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-5242"><a href="#Parser-5242"><span class="linenos">5242</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5243"><a href="#Parser-5243"><span class="linenos">5243</span></a> +</span><span id="Parser-5244"><a href="#Parser-5244"><span class="linenos">5244</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="Parser-5245"><a href="#Parser-5245"><span class="linenos">5245</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5246"><a href="#Parser-5246"><span class="linenos">5246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="Parser-5247"><a href="#Parser-5247"><span class="linenos">5247</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5248"><a href="#Parser-5248"><span class="linenos">5248</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> +</span><span id="Parser-5249"><a href="#Parser-5249"><span class="linenos">5249</span></a> +</span><span id="Parser-5250"><a href="#Parser-5250"><span class="linenos">5250</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> +</span><span id="Parser-5251"><a href="#Parser-5251"><span class="linenos">5251</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5252"><a href="#Parser-5252"><span class="linenos">5252</span></a> +</span><span id="Parser-5253"><a href="#Parser-5253"><span class="linenos">5253</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> +</span><span id="Parser-5254"><a href="#Parser-5254"><span class="linenos">5254</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">default</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="ow">and</span> <span class="n">default</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"END"</span><span class="p">:</span> +</span><span id="Parser-5255"><a href="#Parser-5255"><span class="linenos">5255</span></a> <span class="n">default</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="s2">"interval"</span><span class="p">)</span> +</span><span id="Parser-5256"><a href="#Parser-5256"><span class="linenos">5256</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5257"><a href="#Parser-5257"><span class="linenos">5257</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5258"><a href="#Parser-5258"><span class="linenos">5258</span></a> +</span><span id="Parser-5259"><a href="#Parser-5259"><span class="linenos">5259</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5260"><a href="#Parser-5260"><span class="linenos">5260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> +</span><span id="Parser-5261"><a href="#Parser-5261"><span class="linenos">5261</span></a> <span class="p">)</span> +</span><span id="Parser-5262"><a href="#Parser-5262"><span class="linenos">5262</span></a> +</span><span id="Parser-5263"><a href="#Parser-5263"><span class="linenos">5263</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5264"><a href="#Parser-5264"><span class="linenos">5264</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-5265"><a href="#Parser-5265"><span class="linenos">5265</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="Parser-5266"><a href="#Parser-5266"><span class="linenos">5266</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5267"><a href="#Parser-5267"><span class="linenos">5267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-5268"><a href="#Parser-5268"><span class="linenos">5268</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5269"><a href="#Parser-5269"><span class="linenos">5269</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="Parser-5270"><a href="#Parser-5270"><span class="linenos">5270</span></a> -</span><span id="Parser-5271"><a href="#Parser-5271"><span class="linenos">5271</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-5272"><a href="#Parser-5272"><span class="linenos">5272</span></a> -</span><span id="Parser-5273"><a href="#Parser-5273"><span class="linenos">5273</span></a> <span class="k">def</span> <span class="nf">_parse_gap_fill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">:</span> -</span><span id="Parser-5274"><a href="#Parser-5274"><span class="linenos">5274</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-5275"><a href="#Parser-5275"><span class="linenos">5275</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-5276"><a href="#Parser-5276"><span class="linenos">5276</span></a> -</span><span id="Parser-5277"><a href="#Parser-5277"><span class="linenos">5277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-5278"><a href="#Parser-5278"><span class="linenos">5278</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">())]</span> +</span><span id="Parser-5271"><a href="#Parser-5271"><span class="linenos">5271</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_IF_COMMANDS</span> <span class="ow">and</span> <span class="n">index</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-5272"><a href="#Parser-5272"><span class="linenos">5272</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5273"><a href="#Parser-5273"><span class="linenos">5273</span></a> +</span><span id="Parser-5274"><a href="#Parser-5274"><span class="linenos">5274</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5275"><a href="#Parser-5275"><span class="linenos">5275</span></a> +</span><span id="Parser-5276"><a href="#Parser-5276"><span class="linenos">5276</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">condition</span><span class="p">:</span> +</span><span id="Parser-5277"><a href="#Parser-5277"><span class="linenos">5277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-5278"><a href="#Parser-5278"><span class="linenos">5278</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-5279"><a href="#Parser-5279"><span class="linenos">5279</span></a> -</span><span id="Parser-5280"><a href="#Parser-5280"><span class="linenos">5280</span></a> <span class="n">gap_fill</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-5281"><a href="#Parser-5281"><span class="linenos">5281</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">gap_fill</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-5282"><a href="#Parser-5282"><span class="linenos">5282</span></a> -</span><span id="Parser-5283"><a href="#Parser-5283"><span class="linenos">5283</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-5284"><a href="#Parser-5284"><span class="linenos">5284</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5280"><a href="#Parser-5280"><span class="linenos">5280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="Parser-5281"><a href="#Parser-5281"><span class="linenos">5281</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5282"><a href="#Parser-5282"><span class="linenos">5282</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-5283"><a href="#Parser-5283"><span class="linenos">5283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> +</span><span id="Parser-5284"><a href="#Parser-5284"><span class="linenos">5284</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> </span><span id="Parser-5285"><a href="#Parser-5285"><span class="linenos">5285</span></a> -</span><span id="Parser-5286"><a href="#Parser-5286"><span class="linenos">5286</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> -</span><span id="Parser-5287"><a href="#Parser-5287"><span class="linenos">5287</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-5288"><a href="#Parser-5288"><span class="linenos">5288</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="Parser-5289"><a href="#Parser-5289"><span class="linenos">5289</span></a> -</span><span id="Parser-5290"><a href="#Parser-5290"><span class="linenos">5290</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> -</span><span id="Parser-5291"><a href="#Parser-5291"><span class="linenos">5291</span></a> -</span><span id="Parser-5292"><a href="#Parser-5292"><span class="linenos">5292</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5293"><a href="#Parser-5293"><span class="linenos">5293</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-5294"><a href="#Parser-5294"><span class="linenos">5294</span></a> -</span><span id="Parser-5295"><a href="#Parser-5295"><span class="linenos">5295</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="Parser-5296"><a href="#Parser-5296"><span class="linenos">5296</span></a> <span class="n">fmt_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-5297"><a href="#Parser-5297"><span class="linenos">5297</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="n">fmt_string</span><span class="p">)</span> +</span><span id="Parser-5286"><a href="#Parser-5286"><span class="linenos">5286</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5287"><a href="#Parser-5287"><span class="linenos">5287</span></a> +</span><span id="Parser-5288"><a href="#Parser-5288"><span class="linenos">5288</span></a> <span class="k">def</span> <span class="nf">_parse_next_value_for</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5289"><a href="#Parser-5289"><span class="linenos">5289</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">,</span> <span class="s2">"FOR"</span><span class="p">):</span> +</span><span id="Parser-5290"><a href="#Parser-5290"><span class="linenos">5290</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-5291"><a href="#Parser-5291"><span class="linenos">5291</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5292"><a href="#Parser-5292"><span class="linenos">5292</span></a> +</span><span id="Parser-5293"><a href="#Parser-5293"><span class="linenos">5293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5294"><a href="#Parser-5294"><span class="linenos">5294</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NextValueFor</span><span class="p">,</span> +</span><span id="Parser-5295"><a href="#Parser-5295"><span class="linenos">5295</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> +</span><span id="Parser-5296"><a href="#Parser-5296"><span class="linenos">5296</span></a> <span class="n">order</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">),</span> +</span><span id="Parser-5297"><a href="#Parser-5297"><span class="linenos">5297</span></a> <span class="p">)</span> </span><span id="Parser-5298"><a href="#Parser-5298"><span class="linenos">5298</span></a> -</span><span id="Parser-5299"><a href="#Parser-5299"><span class="linenos">5299</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> -</span><span id="Parser-5300"><a href="#Parser-5300"><span class="linenos">5300</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">)</span> -</span><span id="Parser-5301"><a href="#Parser-5301"><span class="linenos">5301</span></a> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEMPORAL_TYPES</span><span class="p">:</span> -</span><span id="Parser-5302"><a href="#Parser-5302"><span class="linenos">5302</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5303"><a href="#Parser-5303"><span class="linenos">5303</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">DATE</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> -</span><span id="Parser-5304"><a href="#Parser-5304"><span class="linenos">5304</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5305"><a href="#Parser-5305"><span class="linenos">5305</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="Parser-5306"><a href="#Parser-5306"><span class="linenos">5306</span></a> <span class="n">format_time</span><span class="p">(</span> -</span><span id="Parser-5307"><a href="#Parser-5307"><span class="linenos">5307</span></a> <span class="n">fmt_string</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">fmt_string</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Parser-5308"><a href="#Parser-5308"><span class="linenos">5308</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> -</span><span id="Parser-5309"><a href="#Parser-5309"><span class="linenos">5309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_TRIE</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">,</span> -</span><span id="Parser-5310"><a href="#Parser-5310"><span class="linenos">5310</span></a> <span class="p">)</span> -</span><span id="Parser-5311"><a href="#Parser-5311"><span class="linenos">5311</span></a> <span class="p">),</span> -</span><span id="Parser-5312"><a href="#Parser-5312"><span class="linenos">5312</span></a> <span class="p">)</span> +</span><span id="Parser-5299"><a href="#Parser-5299"><span class="linenos">5299</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">:</span> +</span><span id="Parser-5300"><a href="#Parser-5300"><span class="linenos">5300</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="Parser-5301"><a href="#Parser-5301"><span class="linenos">5301</span></a> +</span><span id="Parser-5302"><a href="#Parser-5302"><span class="linenos">5302</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-5303"><a href="#Parser-5303"><span class="linenos">5303</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5304"><a href="#Parser-5304"><span class="linenos">5304</span></a> +</span><span id="Parser-5305"><a href="#Parser-5305"><span class="linenos">5305</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-5306"><a href="#Parser-5306"><span class="linenos">5306</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5307"><a href="#Parser-5307"><span class="linenos">5307</span></a> +</span><span id="Parser-5308"><a href="#Parser-5308"><span class="linenos">5308</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5309"><a href="#Parser-5309"><span class="linenos">5309</span></a> +</span><span id="Parser-5310"><a href="#Parser-5310"><span class="linenos">5310</span></a> <span class="k">def</span> <span class="nf">_parse_gap_fill</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">:</span> +</span><span id="Parser-5311"><a href="#Parser-5311"><span class="linenos">5311</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-5312"><a href="#Parser-5312"><span class="linenos">5312</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> </span><span id="Parser-5313"><a href="#Parser-5313"><span class="linenos">5313</span></a> -</span><span id="Parser-5314"><a href="#Parser-5314"><span class="linenos">5314</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">):</span> -</span><span id="Parser-5315"><a href="#Parser-5315"><span class="linenos">5315</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">,</span> <span class="n">fmt</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"zone"</span><span class="p">])</span> -</span><span id="Parser-5316"><a href="#Parser-5316"><span class="linenos">5316</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5317"><a href="#Parser-5317"><span class="linenos">5317</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> -</span><span id="Parser-5318"><a href="#Parser-5318"><span class="linenos">5318</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> -</span><span id="Parser-5319"><a href="#Parser-5319"><span class="linenos">5319</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="Parser-5320"><a href="#Parser-5320"><span class="linenos">5320</span></a> <span class="n">to</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">to</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5321"><a href="#Parser-5321"><span class="linenos">5321</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> -</span><span id="Parser-5322"><a href="#Parser-5322"><span class="linenos">5322</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> -</span><span id="Parser-5323"><a href="#Parser-5323"><span class="linenos">5323</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> -</span><span id="Parser-5324"><a href="#Parser-5324"><span class="linenos">5324</span></a> -</span><span id="Parser-5325"><a href="#Parser-5325"><span class="linenos">5325</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5326"><a href="#Parser-5326"><span class="linenos">5326</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> -</span><span id="Parser-5327"><a href="#Parser-5327"><span class="linenos">5327</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5328"><a href="#Parser-5328"><span class="linenos">5328</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> -</span><span id="Parser-5329"><a href="#Parser-5329"><span class="linenos">5329</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">fmt</span><span class="p">,</span> -</span><span id="Parser-5330"><a href="#Parser-5330"><span class="linenos">5330</span></a> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">,</span> -</span><span id="Parser-5331"><a href="#Parser-5331"><span class="linenos">5331</span></a> <span class="n">action</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CAST_ACTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-5332"><a href="#Parser-5332"><span class="linenos">5332</span></a> <span class="p">)</span> -</span><span id="Parser-5333"><a href="#Parser-5333"><span class="linenos">5333</span></a> -</span><span id="Parser-5334"><a href="#Parser-5334"><span class="linenos">5334</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-5335"><a href="#Parser-5335"><span class="linenos">5335</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="Parser-5336"><a href="#Parser-5336"><span class="linenos">5336</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="Parser-5337"><a href="#Parser-5337"><span class="linenos">5337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> -</span><span id="Parser-5338"><a href="#Parser-5338"><span class="linenos">5338</span></a> <span class="p">]</span> -</span><span id="Parser-5339"><a href="#Parser-5339"><span class="linenos">5339</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-5340"><a href="#Parser-5340"><span class="linenos">5340</span></a> <span class="n">args</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> -</span><span id="Parser-5341"><a href="#Parser-5341"><span class="linenos">5341</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5342"><a href="#Parser-5342"><span class="linenos">5342</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-5343"><a href="#Parser-5343"><span class="linenos">5343</span></a> -</span><span id="Parser-5344"><a href="#Parser-5344"><span class="linenos">5344</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-5345"><a href="#Parser-5345"><span class="linenos">5345</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> <span class="ow">and</span> <span class="n">args</span><span class="p">:</span> -</span><span id="Parser-5346"><a href="#Parser-5346"><span class="linenos">5346</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> -</span><span id="Parser-5347"><a href="#Parser-5347"><span class="linenos">5347</span></a> <span class="c1"># bigquery: STRING_AGG([DISTINCT] expression [, separator] [ORDER BY key [{ASC | DESC}] [, ... ]] [LIMIT n])</span> -</span><span id="Parser-5348"><a href="#Parser-5348"><span class="linenos">5348</span></a> <span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> -</span><span id="Parser-5349"><a href="#Parser-5349"><span class="linenos">5349</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5314"><a href="#Parser-5314"><span class="linenos">5314</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-5315"><a href="#Parser-5315"><span class="linenos">5315</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">this</span><span class="p">,</span> <span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)]</span> +</span><span id="Parser-5316"><a href="#Parser-5316"><span class="linenos">5316</span></a> +</span><span id="Parser-5317"><a href="#Parser-5317"><span class="linenos">5317</span></a> <span class="n">gap_fill</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5318"><a href="#Parser-5318"><span class="linenos">5318</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">gap_fill</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5319"><a href="#Parser-5319"><span class="linenos">5319</span></a> +</span><span id="Parser-5320"><a href="#Parser-5320"><span class="linenos">5320</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-5321"><a href="#Parser-5321"><span class="linenos">5321</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-5322"><a href="#Parser-5322"><span class="linenos">5322</span></a> +</span><span id="Parser-5323"><a href="#Parser-5323"><span class="linenos">5323</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> +</span><span id="Parser-5324"><a href="#Parser-5324"><span class="linenos">5324</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-5325"><a href="#Parser-5325"><span class="linenos">5325</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CastToStrType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="Parser-5326"><a href="#Parser-5326"><span class="linenos">5326</span></a> +</span><span id="Parser-5327"><a href="#Parser-5327"><span class="linenos">5327</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> +</span><span id="Parser-5328"><a href="#Parser-5328"><span class="linenos">5328</span></a> +</span><span id="Parser-5329"><a href="#Parser-5329"><span class="linenos">5329</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5330"><a href="#Parser-5330"><span class="linenos">5330</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-5331"><a href="#Parser-5331"><span class="linenos">5331</span></a> +</span><span id="Parser-5332"><a href="#Parser-5332"><span class="linenos">5332</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="Parser-5333"><a href="#Parser-5333"><span class="linenos">5333</span></a> <span class="n">fmt_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5334"><a href="#Parser-5334"><span class="linenos">5334</span></a> <span class="n">fmt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="n">fmt_string</span><span class="p">)</span> +</span><span id="Parser-5335"><a href="#Parser-5335"><span class="linenos">5335</span></a> +</span><span id="Parser-5336"><a href="#Parser-5336"><span class="linenos">5336</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> +</span><span id="Parser-5337"><a href="#Parser-5337"><span class="linenos">5337</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">)</span> +</span><span id="Parser-5338"><a href="#Parser-5338"><span class="linenos">5338</span></a> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEMPORAL_TYPES</span><span class="p">:</span> +</span><span id="Parser-5339"><a href="#Parser-5339"><span class="linenos">5339</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5340"><a href="#Parser-5340"><span class="linenos">5340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span> <span class="k">if</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">DATE</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> +</span><span id="Parser-5341"><a href="#Parser-5341"><span class="linenos">5341</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5342"><a href="#Parser-5342"><span class="linenos">5342</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="Parser-5343"><a href="#Parser-5343"><span class="linenos">5343</span></a> <span class="n">format_time</span><span class="p">(</span> +</span><span id="Parser-5344"><a href="#Parser-5344"><span class="linenos">5344</span></a> <span class="n">fmt_string</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">fmt_string</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Parser-5345"><a href="#Parser-5345"><span class="linenos">5345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_MAPPING</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> +</span><span id="Parser-5346"><a href="#Parser-5346"><span class="linenos">5346</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">FORMAT_TRIE</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">TIME_TRIE</span><span class="p">,</span> +</span><span id="Parser-5347"><a href="#Parser-5347"><span class="linenos">5347</span></a> <span class="p">)</span> +</span><span id="Parser-5348"><a href="#Parser-5348"><span class="linenos">5348</span></a> <span class="p">),</span> +</span><span id="Parser-5349"><a href="#Parser-5349"><span class="linenos">5349</span></a> <span class="p">)</span> </span><span id="Parser-5350"><a href="#Parser-5350"><span class="linenos">5350</span></a> -</span><span id="Parser-5351"><a href="#Parser-5351"><span class="linenos">5351</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> -</span><span id="Parser-5352"><a href="#Parser-5352"><span class="linenos">5352</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> -</span><span id="Parser-5353"><a href="#Parser-5353"><span class="linenos">5353</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> -</span><span id="Parser-5354"><a href="#Parser-5354"><span class="linenos">5354</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> -</span><span id="Parser-5355"><a href="#Parser-5355"><span class="linenos">5355</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-5356"><a href="#Parser-5356"><span class="linenos">5356</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-5357"><a href="#Parser-5357"><span class="linenos">5357</span></a> -</span><span id="Parser-5358"><a href="#Parser-5358"><span class="linenos">5358</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> -</span><span id="Parser-5359"><a href="#Parser-5359"><span class="linenos">5359</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> -</span><span id="Parser-5360"><a href="#Parser-5360"><span class="linenos">5360</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5351"><a href="#Parser-5351"><span class="linenos">5351</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">):</span> +</span><span id="Parser-5352"><a href="#Parser-5352"><span class="linenos">5352</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">,</span> <span class="n">fmt</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"zone"</span><span class="p">])</span> +</span><span id="Parser-5353"><a href="#Parser-5353"><span class="linenos">5353</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5354"><a href="#Parser-5354"><span class="linenos">5354</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> +</span><span id="Parser-5355"><a href="#Parser-5355"><span class="linenos">5355</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> +</span><span id="Parser-5356"><a href="#Parser-5356"><span class="linenos">5356</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="Parser-5357"><a href="#Parser-5357"><span class="linenos">5357</span></a> <span class="n">to</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">to</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5358"><a href="#Parser-5358"><span class="linenos">5358</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> +</span><span id="Parser-5359"><a href="#Parser-5359"><span class="linenos">5359</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> +</span><span id="Parser-5360"><a href="#Parser-5360"><span class="linenos">5360</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> </span><span id="Parser-5361"><a href="#Parser-5361"><span class="linenos">5361</span></a> -</span><span id="Parser-5362"><a href="#Parser-5362"><span class="linenos">5362</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span> -</span><span id="Parser-5363"><a href="#Parser-5363"><span class="linenos">5363</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span> -</span><span id="Parser-5364"><a href="#Parser-5364"><span class="linenos">5364</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5365"><a href="#Parser-5365"><span class="linenos">5365</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-5366"><a href="#Parser-5366"><span class="linenos">5366</span></a> -</span><span id="Parser-5367"><a href="#Parser-5367"><span class="linenos">5367</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="Parser-5368"><a href="#Parser-5368"><span class="linenos">5368</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5369"><a href="#Parser-5369"><span class="linenos">5369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="Parser-5370"><a href="#Parser-5370"><span class="linenos">5370</span></a> <span class="p">)</span> -</span><span id="Parser-5371"><a href="#Parser-5371"><span class="linenos">5371</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-5372"><a href="#Parser-5372"><span class="linenos">5372</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-5373"><a href="#Parser-5373"><span class="linenos">5373</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5374"><a href="#Parser-5374"><span class="linenos">5374</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5375"><a href="#Parser-5375"><span class="linenos">5375</span></a> -</span><span id="Parser-5376"><a href="#Parser-5376"><span class="linenos">5376</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">)</span> -</span><span id="Parser-5377"><a href="#Parser-5377"><span class="linenos">5377</span></a> -</span><span id="Parser-5378"><a href="#Parser-5378"><span class="linenos">5378</span></a> <span class="k">def</span> <span class="nf">_parse_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Decode</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">]:</span> -</span><span id="Parser-5379"><a href="#Parser-5379"><span class="linenos">5379</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-5380"><a href="#Parser-5380"><span class="linenos">5380</span></a><span class="sd"> There are generally two variants of the DECODE function:</span> -</span><span id="Parser-5381"><a href="#Parser-5381"><span class="linenos">5381</span></a> -</span><span id="Parser-5382"><a href="#Parser-5382"><span class="linenos">5382</span></a><span class="sd"> - DECODE(bin, charset)</span> -</span><span id="Parser-5383"><a href="#Parser-5383"><span class="linenos">5383</span></a><span class="sd"> - DECODE(expression, search, result [, search, result] ... [, default])</span> -</span><span id="Parser-5384"><a href="#Parser-5384"><span class="linenos">5384</span></a> -</span><span id="Parser-5385"><a href="#Parser-5385"><span class="linenos">5385</span></a><span class="sd"> The second variant will always be parsed into a CASE expression. Note that NULL</span> -</span><span id="Parser-5386"><a href="#Parser-5386"><span class="linenos">5386</span></a><span class="sd"> needs special treatment, since we need to explicitly check for it with `IS NULL`,</span> -</span><span id="Parser-5387"><a href="#Parser-5387"><span class="linenos">5387</span></a><span class="sd"> instead of relying on pattern matching.</span> -</span><span id="Parser-5388"><a href="#Parser-5388"><span class="linenos">5388</span></a><span class="sd"> """</span> -</span><span id="Parser-5389"><a href="#Parser-5389"><span class="linenos">5389</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> -</span><span id="Parser-5390"><a href="#Parser-5390"><span class="linenos">5390</span></a> -</span><span id="Parser-5391"><a href="#Parser-5391"><span class="linenos">5391</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">3</span><span class="p">:</span> -</span><span id="Parser-5392"><a href="#Parser-5392"><span class="linenos">5392</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">charset</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> -</span><span id="Parser-5393"><a href="#Parser-5393"><span class="linenos">5393</span></a> -</span><span id="Parser-5394"><a href="#Parser-5394"><span class="linenos">5394</span></a> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span> <span class="o">=</span> <span class="n">args</span> -</span><span id="Parser-5395"><a href="#Parser-5395"><span class="linenos">5395</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-5396"><a href="#Parser-5396"><span class="linenos">5396</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5397"><a href="#Parser-5397"><span class="linenos">5397</span></a> -</span><span id="Parser-5398"><a href="#Parser-5398"><span class="linenos">5398</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-5399"><a href="#Parser-5399"><span class="linenos">5399</span></a> <span class="k">for</span> <span class="n">search</span><span class="p">,</span> <span class="n">result</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">expressions</span><span class="p">[::</span><span class="mi">2</span><span class="p">],</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">::</span><span class="mi">2</span><span class="p">]):</span> -</span><span id="Parser-5400"><a href="#Parser-5400"><span class="linenos">5400</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">search</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> -</span><span id="Parser-5401"><a href="#Parser-5401"><span class="linenos">5401</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5402"><a href="#Parser-5402"><span class="linenos">5402</span></a> -</span><span id="Parser-5403"><a href="#Parser-5403"><span class="linenos">5403</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> -</span><span id="Parser-5404"><a href="#Parser-5404"><span class="linenos">5404</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-5405"><a href="#Parser-5405"><span class="linenos">5405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> -</span><span id="Parser-5406"><a href="#Parser-5406"><span class="linenos">5406</span></a> <span class="p">)</span> -</span><span id="Parser-5407"><a href="#Parser-5407"><span class="linenos">5407</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> -</span><span id="Parser-5408"><a href="#Parser-5408"><span class="linenos">5408</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-5409"><a href="#Parser-5409"><span class="linenos">5409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> -</span><span id="Parser-5410"><a href="#Parser-5410"><span class="linenos">5410</span></a> <span class="p">)</span> -</span><span id="Parser-5411"><a href="#Parser-5411"><span class="linenos">5411</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5412"><a href="#Parser-5412"><span class="linenos">5412</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span><span class="p">(</span> -</span><span id="Parser-5413"><a href="#Parser-5413"><span class="linenos">5413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> -</span><span id="Parser-5414"><a href="#Parser-5414"><span class="linenos">5414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span><span class="p">(</span> -</span><span id="Parser-5415"><a href="#Parser-5415"><span class="linenos">5415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> -</span><span id="Parser-5416"><a href="#Parser-5416"><span class="linenos">5416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">search</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> -</span><span id="Parser-5417"><a href="#Parser-5417"><span class="linenos">5417</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Parser-5418"><a href="#Parser-5418"><span class="linenos">5418</span></a> <span class="p">),</span> -</span><span id="Parser-5419"><a href="#Parser-5419"><span class="linenos">5419</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Parser-5420"><a href="#Parser-5420"><span class="linenos">5420</span></a> <span class="p">)</span> -</span><span id="Parser-5421"><a href="#Parser-5421"><span class="linenos">5421</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cond</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">))</span> -</span><span id="Parser-5422"><a href="#Parser-5422"><span class="linenos">5422</span></a> -</span><span id="Parser-5423"><a href="#Parser-5423"><span class="linenos">5423</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-5424"><a href="#Parser-5424"><span class="linenos">5424</span></a> -</span><span id="Parser-5425"><a href="#Parser-5425"><span class="linenos">5425</span></a> <span class="k">def</span> <span class="nf">_parse_json_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">]:</span> -</span><span id="Parser-5426"><a href="#Parser-5426"><span class="linenos">5426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> -</span><span id="Parser-5427"><a href="#Parser-5427"><span class="linenos">5427</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-5428"><a href="#Parser-5428"><span class="linenos">5428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span><span class="p">)</span> -</span><span id="Parser-5429"><a href="#Parser-5429"><span class="linenos">5429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">)</span> -</span><span id="Parser-5430"><a href="#Parser-5430"><span class="linenos">5430</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-5431"><a href="#Parser-5431"><span class="linenos">5431</span></a> -</span><span id="Parser-5432"><a href="#Parser-5432"><span class="linenos">5432</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span> +</span><span id="Parser-5362"><a href="#Parser-5362"><span class="linenos">5362</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5363"><a href="#Parser-5363"><span class="linenos">5363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> +</span><span id="Parser-5364"><a href="#Parser-5364"><span class="linenos">5364</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5365"><a href="#Parser-5365"><span class="linenos">5365</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> +</span><span id="Parser-5366"><a href="#Parser-5366"><span class="linenos">5366</span></a> <span class="nb">format</span><span class="o">=</span><span class="n">fmt</span><span class="p">,</span> +</span><span id="Parser-5367"><a href="#Parser-5367"><span class="linenos">5367</span></a> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">,</span> +</span><span id="Parser-5368"><a href="#Parser-5368"><span class="linenos">5368</span></a> <span class="n">action</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CAST_ACTIONS</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-5369"><a href="#Parser-5369"><span class="linenos">5369</span></a> <span class="p">)</span> +</span><span id="Parser-5370"><a href="#Parser-5370"><span class="linenos">5370</span></a> +</span><span id="Parser-5371"><a href="#Parser-5371"><span class="linenos">5371</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-5372"><a href="#Parser-5372"><span class="linenos">5372</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="Parser-5373"><a href="#Parser-5373"><span class="linenos">5373</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="Parser-5374"><a href="#Parser-5374"><span class="linenos">5374</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> +</span><span id="Parser-5375"><a href="#Parser-5375"><span class="linenos">5375</span></a> <span class="p">]</span> +</span><span id="Parser-5376"><a href="#Parser-5376"><span class="linenos">5376</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-5377"><a href="#Parser-5377"><span class="linenos">5377</span></a> <span class="n">args</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> +</span><span id="Parser-5378"><a href="#Parser-5378"><span class="linenos">5378</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5379"><a href="#Parser-5379"><span class="linenos">5379</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-5380"><a href="#Parser-5380"><span class="linenos">5380</span></a> +</span><span id="Parser-5381"><a href="#Parser-5381"><span class="linenos">5381</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-5382"><a href="#Parser-5382"><span class="linenos">5382</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> <span class="ow">and</span> <span class="n">args</span><span class="p">:</span> +</span><span id="Parser-5383"><a href="#Parser-5383"><span class="linenos">5383</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> +</span><span id="Parser-5384"><a href="#Parser-5384"><span class="linenos">5384</span></a> <span class="c1"># bigquery: STRING_AGG([DISTINCT] expression [, separator] [ORDER BY key [{ASC | DESC}] [, ... ]] [LIMIT n])</span> +</span><span id="Parser-5385"><a href="#Parser-5385"><span class="linenos">5385</span></a> <span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> +</span><span id="Parser-5386"><a href="#Parser-5386"><span class="linenos">5386</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5387"><a href="#Parser-5387"><span class="linenos">5387</span></a> +</span><span id="Parser-5388"><a href="#Parser-5388"><span class="linenos">5388</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> +</span><span id="Parser-5389"><a href="#Parser-5389"><span class="linenos">5389</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> +</span><span id="Parser-5390"><a href="#Parser-5390"><span class="linenos">5390</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> +</span><span id="Parser-5391"><a href="#Parser-5391"><span class="linenos">5391</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> +</span><span id="Parser-5392"><a href="#Parser-5392"><span class="linenos">5392</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-5393"><a href="#Parser-5393"><span class="linenos">5393</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5394"><a href="#Parser-5394"><span class="linenos">5394</span></a> +</span><span id="Parser-5395"><a href="#Parser-5395"><span class="linenos">5395</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> +</span><span id="Parser-5396"><a href="#Parser-5396"><span class="linenos">5396</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> +</span><span id="Parser-5397"><a href="#Parser-5397"><span class="linenos">5397</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5398"><a href="#Parser-5398"><span class="linenos">5398</span></a> +</span><span id="Parser-5399"><a href="#Parser-5399"><span class="linenos">5399</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span> +</span><span id="Parser-5400"><a href="#Parser-5400"><span class="linenos">5400</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">safe</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">None</span> +</span><span id="Parser-5401"><a href="#Parser-5401"><span class="linenos">5401</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5402"><a href="#Parser-5402"><span class="linenos">5402</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5403"><a href="#Parser-5403"><span class="linenos">5403</span></a> +</span><span id="Parser-5404"><a href="#Parser-5404"><span class="linenos">5404</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="Parser-5405"><a href="#Parser-5405"><span class="linenos">5405</span></a> <span class="n">to</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5406"><a href="#Parser-5406"><span class="linenos">5406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="Parser-5407"><a href="#Parser-5407"><span class="linenos">5407</span></a> <span class="p">)</span> +</span><span id="Parser-5408"><a href="#Parser-5408"><span class="linenos">5408</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-5409"><a href="#Parser-5409"><span class="linenos">5409</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-5410"><a href="#Parser-5410"><span class="linenos">5410</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5411"><a href="#Parser-5411"><span class="linenos">5411</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5412"><a href="#Parser-5412"><span class="linenos">5412</span></a> +</span><span id="Parser-5413"><a href="#Parser-5413"><span class="linenos">5413</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="n">safe</span><span class="p">)</span> +</span><span id="Parser-5414"><a href="#Parser-5414"><span class="linenos">5414</span></a> +</span><span id="Parser-5415"><a href="#Parser-5415"><span class="linenos">5415</span></a> <span class="k">def</span> <span class="nf">_parse_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Decode</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">]:</span> +</span><span id="Parser-5416"><a href="#Parser-5416"><span class="linenos">5416</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-5417"><a href="#Parser-5417"><span class="linenos">5417</span></a><span class="sd"> There are generally two variants of the DECODE function:</span> +</span><span id="Parser-5418"><a href="#Parser-5418"><span class="linenos">5418</span></a> +</span><span id="Parser-5419"><a href="#Parser-5419"><span class="linenos">5419</span></a><span class="sd"> - DECODE(bin, charset)</span> +</span><span id="Parser-5420"><a href="#Parser-5420"><span class="linenos">5420</span></a><span class="sd"> - DECODE(expression, search, result [, search, result] ... [, default])</span> +</span><span id="Parser-5421"><a href="#Parser-5421"><span class="linenos">5421</span></a> +</span><span id="Parser-5422"><a href="#Parser-5422"><span class="linenos">5422</span></a><span class="sd"> The second variant will always be parsed into a CASE expression. Note that NULL</span> +</span><span id="Parser-5423"><a href="#Parser-5423"><span class="linenos">5423</span></a><span class="sd"> needs special treatment, since we need to explicitly check for it with `IS NULL`,</span> +</span><span id="Parser-5424"><a href="#Parser-5424"><span class="linenos">5424</span></a><span class="sd"> instead of relying on pattern matching.</span> +</span><span id="Parser-5425"><a href="#Parser-5425"><span class="linenos">5425</span></a><span class="sd"> """</span> +</span><span id="Parser-5426"><a href="#Parser-5426"><span class="linenos">5426</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">)</span> +</span><span id="Parser-5427"><a href="#Parser-5427"><span class="linenos">5427</span></a> +</span><span id="Parser-5428"><a href="#Parser-5428"><span class="linenos">5428</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o"><</span> <span class="mi">3</span><span class="p">:</span> +</span><span id="Parser-5429"><a href="#Parser-5429"><span class="linenos">5429</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">charset</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5430"><a href="#Parser-5430"><span class="linenos">5430</span></a> +</span><span id="Parser-5431"><a href="#Parser-5431"><span class="linenos">5431</span></a> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span> <span class="o">=</span> <span class="n">args</span> +</span><span id="Parser-5432"><a href="#Parser-5432"><span class="linenos">5432</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> </span><span id="Parser-5433"><a href="#Parser-5433"><span class="linenos">5433</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5434"><a href="#Parser-5434"><span class="linenos">5434</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="Parser-5435"><a href="#Parser-5435"><span class="linenos">5435</span></a> -</span><span id="Parser-5436"><a href="#Parser-5436"><span class="linenos">5436</span></a> <span class="k">def</span> <span class="nf">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5437"><a href="#Parser-5437"><span class="linenos">5437</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT"</span><span class="p">,</span> <span class="s2">"JSON"</span><span class="p">):</span> -</span><span id="Parser-5438"><a href="#Parser-5438"><span class="linenos">5438</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5434"><a href="#Parser-5434"><span class="linenos">5434</span></a> +</span><span id="Parser-5435"><a href="#Parser-5435"><span class="linenos">5435</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-5436"><a href="#Parser-5436"><span class="linenos">5436</span></a> <span class="k">for</span> <span class="n">search</span><span class="p">,</span> <span class="n">result</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">expressions</span><span class="p">[::</span><span class="mi">2</span><span class="p">],</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">::</span><span class="mi">2</span><span class="p">]):</span> +</span><span id="Parser-5437"><a href="#Parser-5437"><span class="linenos">5437</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">search</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> +</span><span id="Parser-5438"><a href="#Parser-5438"><span class="linenos">5438</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-5439"><a href="#Parser-5439"><span class="linenos">5439</span></a> -</span><span id="Parser-5440"><a href="#Parser-5440"><span class="linenos">5440</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FormatJson</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5441"><a href="#Parser-5441"><span class="linenos">5441</span></a> -</span><span id="Parser-5442"><a href="#Parser-5442"><span class="linenos">5442</span></a> <span class="k">def</span> <span class="nf">_parse_on_handling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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="nb">str</span><span class="p">]:</span> -</span><span id="Parser-5443"><a href="#Parser-5443"><span class="linenos">5443</span></a> <span class="c1"># Parses the "X ON Y" syntax, i.e. NULL ON NULL (Oracle, T-SQL)</span> -</span><span id="Parser-5444"><a href="#Parser-5444"><span class="linenos">5444</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span> -</span><span id="Parser-5445"><a href="#Parser-5445"><span class="linenos">5445</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="n">on</span><span class="p">):</span> -</span><span id="Parser-5446"><a href="#Parser-5446"><span class="linenos">5446</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Parser-5447"><a href="#Parser-5447"><span class="linenos">5447</span></a> -</span><span id="Parser-5448"><a href="#Parser-5448"><span class="linenos">5448</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5449"><a href="#Parser-5449"><span class="linenos">5449</span></a> -</span><span id="Parser-5450"><a href="#Parser-5450"><span class="linenos">5450</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="Parser-5451"><a href="#Parser-5451"><span class="linenos">5451</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">:</span> <span class="o">...</span> -</span><span id="Parser-5452"><a href="#Parser-5452"><span class="linenos">5452</span></a> -</span><span id="Parser-5453"><a href="#Parser-5453"><span class="linenos">5453</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="Parser-5454"><a href="#Parser-5454"><span class="linenos">5454</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span><span class="p">:</span> <span class="o">...</span> -</span><span id="Parser-5455"><a href="#Parser-5455"><span class="linenos">5455</span></a> -</span><span id="Parser-5456"><a href="#Parser-5456"><span class="linenos">5456</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-5457"><a href="#Parser-5457"><span class="linenos">5457</span></a> <span class="n">star</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="Parser-5458"><a href="#Parser-5458"><span class="linenos">5458</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-5459"><a href="#Parser-5459"><span class="linenos">5459</span></a> <span class="p">[</span><span class="n">star</span><span class="p">]</span> -</span><span id="Parser-5460"><a href="#Parser-5460"><span class="linenos">5460</span></a> <span class="k">if</span> <span class="n">star</span> -</span><span id="Parser-5461"><a href="#Parser-5461"><span class="linenos">5461</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_key_value</span><span class="p">()))</span> -</span><span id="Parser-5462"><a href="#Parser-5462"><span class="linenos">5462</span></a> <span class="p">)</span> -</span><span id="Parser-5463"><a href="#Parser-5463"><span class="linenos">5463</span></a> <span class="n">null_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ABSENT"</span><span class="p">)</span> -</span><span id="Parser-5464"><a href="#Parser-5464"><span class="linenos">5464</span></a> -</span><span id="Parser-5465"><a href="#Parser-5465"><span class="linenos">5465</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5466"><a href="#Parser-5466"><span class="linenos">5466</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> -</span><span id="Parser-5467"><a href="#Parser-5467"><span class="linenos">5467</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-5468"><a href="#Parser-5468"><span class="linenos">5468</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> -</span><span id="Parser-5469"><a href="#Parser-5469"><span class="linenos">5469</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-5470"><a href="#Parser-5470"><span class="linenos">5470</span></a> -</span><span id="Parser-5471"><a href="#Parser-5471"><span class="linenos">5471</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEYS"</span><span class="p">)</span> +</span><span id="Parser-5440"><a href="#Parser-5440"><span class="linenos">5440</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span> +</span><span id="Parser-5441"><a href="#Parser-5441"><span class="linenos">5441</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-5442"><a href="#Parser-5442"><span class="linenos">5442</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> +</span><span id="Parser-5443"><a href="#Parser-5443"><span class="linenos">5443</span></a> <span class="p">)</span> +</span><span id="Parser-5444"><a href="#Parser-5444"><span class="linenos">5444</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">search</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> +</span><span id="Parser-5445"><a href="#Parser-5445"><span class="linenos">5445</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-5446"><a href="#Parser-5446"><span class="linenos">5446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">)</span> +</span><span id="Parser-5447"><a href="#Parser-5447"><span class="linenos">5447</span></a> <span class="p">)</span> +</span><span id="Parser-5448"><a href="#Parser-5448"><span class="linenos">5448</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5449"><a href="#Parser-5449"><span class="linenos">5449</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span><span class="p">(</span> +</span><span id="Parser-5450"><a href="#Parser-5450"><span class="linenos">5450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">search</span><span class="p">),</span> +</span><span id="Parser-5451"><a href="#Parser-5451"><span class="linenos">5451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span><span class="p">(</span> +</span><span id="Parser-5452"><a href="#Parser-5452"><span class="linenos">5452</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> +</span><span id="Parser-5453"><a href="#Parser-5453"><span class="linenos">5453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">search</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">()),</span> +</span><span id="Parser-5454"><a href="#Parser-5454"><span class="linenos">5454</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Parser-5455"><a href="#Parser-5455"><span class="linenos">5455</span></a> <span class="p">),</span> +</span><span id="Parser-5456"><a href="#Parser-5456"><span class="linenos">5456</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Parser-5457"><a href="#Parser-5457"><span class="linenos">5457</span></a> <span class="p">)</span> +</span><span id="Parser-5458"><a href="#Parser-5458"><span class="linenos">5458</span></a> <span class="n">ifs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cond</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">result</span><span class="p">))</span> +</span><span id="Parser-5459"><a href="#Parser-5459"><span class="linenos">5459</span></a> +</span><span id="Parser-5460"><a href="#Parser-5460"><span class="linenos">5460</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-5461"><a href="#Parser-5461"><span class="linenos">5461</span></a> +</span><span id="Parser-5462"><a href="#Parser-5462"><span class="linenos">5462</span></a> <span class="k">def</span> <span class="nf">_parse_json_key_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">]:</span> +</span><span id="Parser-5463"><a href="#Parser-5463"><span class="linenos">5463</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">)</span> +</span><span id="Parser-5464"><a href="#Parser-5464"><span class="linenos">5464</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-5465"><a href="#Parser-5465"><span class="linenos">5465</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JSON_KEY_VALUE_SEPARATOR_TOKENS</span><span class="p">)</span> +</span><span id="Parser-5466"><a href="#Parser-5466"><span class="linenos">5466</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUE"</span><span class="p">)</span> +</span><span id="Parser-5467"><a href="#Parser-5467"><span class="linenos">5467</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5468"><a href="#Parser-5468"><span class="linenos">5468</span></a> +</span><span id="Parser-5469"><a href="#Parser-5469"><span class="linenos">5469</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span> +</span><span id="Parser-5470"><a href="#Parser-5470"><span class="linenos">5470</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5471"><a href="#Parser-5471"><span class="linenos">5471</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONKeyValue</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> </span><span id="Parser-5472"><a href="#Parser-5472"><span class="linenos">5472</span></a> -</span><span id="Parser-5473"><a href="#Parser-5473"><span class="linenos">5473</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURNING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span> -</span><span id="Parser-5474"><a href="#Parser-5474"><span class="linenos">5474</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Parser-5475"><a href="#Parser-5475"><span class="linenos">5475</span></a> <span class="p">)</span> -</span><span id="Parser-5476"><a href="#Parser-5476"><span class="linenos">5476</span></a> <span class="n">encoding</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCODING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="Parser-5477"><a href="#Parser-5477"><span class="linenos">5477</span></a> -</span><span id="Parser-5478"><a href="#Parser-5478"><span class="linenos">5478</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5479"><a href="#Parser-5479"><span class="linenos">5479</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span> <span class="k">if</span> <span class="n">agg</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">,</span> -</span><span id="Parser-5480"><a href="#Parser-5480"><span class="linenos">5480</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-5481"><a href="#Parser-5481"><span class="linenos">5481</span></a> <span class="n">null_handling</span><span class="o">=</span><span class="n">null_handling</span><span class="p">,</span> -</span><span id="Parser-5482"><a href="#Parser-5482"><span class="linenos">5482</span></a> <span class="n">unique_keys</span><span class="o">=</span><span class="n">unique_keys</span><span class="p">,</span> -</span><span id="Parser-5483"><a href="#Parser-5483"><span class="linenos">5483</span></a> <span class="n">return_type</span><span class="o">=</span><span class="n">return_type</span><span class="p">,</span> -</span><span id="Parser-5484"><a href="#Parser-5484"><span class="linenos">5484</span></a> <span class="n">encoding</span><span class="o">=</span><span class="n">encoding</span><span class="p">,</span> -</span><span id="Parser-5485"><a href="#Parser-5485"><span class="linenos">5485</span></a> <span class="p">)</span> +</span><span id="Parser-5473"><a href="#Parser-5473"><span class="linenos">5473</span></a> <span class="k">def</span> <span class="nf">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5474"><a href="#Parser-5474"><span class="linenos">5474</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT"</span><span class="p">,</span> <span class="s2">"JSON"</span><span class="p">):</span> +</span><span id="Parser-5475"><a href="#Parser-5475"><span class="linenos">5475</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5476"><a href="#Parser-5476"><span class="linenos">5476</span></a> +</span><span id="Parser-5477"><a href="#Parser-5477"><span class="linenos">5477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FormatJson</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5478"><a href="#Parser-5478"><span class="linenos">5478</span></a> +</span><span id="Parser-5479"><a href="#Parser-5479"><span class="linenos">5479</span></a> <span class="k">def</span> <span class="nf">_parse_on_handling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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="nb">str</span><span class="p">]:</span> +</span><span id="Parser-5480"><a href="#Parser-5480"><span class="linenos">5480</span></a> <span class="c1"># Parses the "X ON Y" syntax, i.e. NULL ON NULL (Oracle, T-SQL)</span> +</span><span id="Parser-5481"><a href="#Parser-5481"><span class="linenos">5481</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span> +</span><span id="Parser-5482"><a href="#Parser-5482"><span class="linenos">5482</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s2">"ON"</span><span class="p">,</span> <span class="n">on</span><span class="p">):</span> +</span><span id="Parser-5483"><a href="#Parser-5483"><span class="linenos">5483</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Parser-5484"><a href="#Parser-5484"><span class="linenos">5484</span></a> +</span><span id="Parser-5485"><a href="#Parser-5485"><span class="linenos">5485</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-5486"><a href="#Parser-5486"><span class="linenos">5486</span></a> -</span><span id="Parser-5487"><a href="#Parser-5487"><span class="linenos">5487</span></a> <span class="c1"># Note: this is currently incomplete; it only implements the "JSON_value_column" part</span> -</span><span id="Parser-5488"><a href="#Parser-5488"><span class="linenos">5488</span></a> <span class="k">def</span> <span class="nf">_parse_json_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">:</span> -</span><span id="Parser-5489"><a href="#Parser-5489"><span class="linenos">5489</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NESTED"</span><span class="p">):</span> -</span><span id="Parser-5490"><a href="#Parser-5490"><span class="linenos">5490</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-5491"><a href="#Parser-5491"><span class="linenos">5491</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-5492"><a href="#Parser-5492"><span class="linenos">5492</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5493"><a href="#Parser-5493"><span class="linenos">5493</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5494"><a href="#Parser-5494"><span class="linenos">5494</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5495"><a href="#Parser-5495"><span class="linenos">5495</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5496"><a href="#Parser-5496"><span class="linenos">5496</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-5497"><a href="#Parser-5497"><span class="linenos">5497</span></a> -</span><span id="Parser-5498"><a href="#Parser-5498"><span class="linenos">5498</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATH"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-5499"><a href="#Parser-5499"><span class="linenos">5499</span></a> <span class="n">nested_schema</span> <span class="o">=</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> -</span><span id="Parser-5500"><a href="#Parser-5500"><span class="linenos">5500</span></a> -</span><span id="Parser-5501"><a href="#Parser-5501"><span class="linenos">5501</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5502"><a href="#Parser-5502"><span class="linenos">5502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">,</span> -</span><span id="Parser-5503"><a href="#Parser-5503"><span class="linenos">5503</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5504"><a href="#Parser-5504"><span class="linenos">5504</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-5505"><a href="#Parser-5505"><span class="linenos">5505</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-5506"><a href="#Parser-5506"><span class="linenos">5506</span></a> <span class="n">nested_schema</span><span class="o">=</span><span class="n">nested_schema</span><span class="p">,</span> -</span><span id="Parser-5507"><a href="#Parser-5507"><span class="linenos">5507</span></a> <span class="p">)</span> -</span><span id="Parser-5508"><a href="#Parser-5508"><span class="linenos">5508</span></a> -</span><span id="Parser-5509"><a href="#Parser-5509"><span class="linenos">5509</span></a> <span class="k">def</span> <span class="nf">_parse_json_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">:</span> -</span><span id="Parser-5510"><a href="#Parser-5510"><span class="linenos">5510</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLUMNS"</span><span class="p">)</span> -</span><span id="Parser-5511"><a href="#Parser-5511"><span class="linenos">5511</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5512"><a href="#Parser-5512"><span class="linenos">5512</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">,</span> -</span><span id="Parser-5513"><a href="#Parser-5513"><span class="linenos">5513</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_column_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-5514"><a href="#Parser-5514"><span class="linenos">5514</span></a> <span class="p">)</span> -</span><span id="Parser-5515"><a href="#Parser-5515"><span class="linenos">5515</span></a> -</span><span id="Parser-5516"><a href="#Parser-5516"><span class="linenos">5516</span></a> <span class="k">def</span> <span class="nf">_parse_json_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">:</span> -</span><span id="Parser-5517"><a href="#Parser-5517"><span class="linenos">5517</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-5518"><a href="#Parser-5518"><span class="linenos">5518</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-5519"><a href="#Parser-5519"><span class="linenos">5519</span></a> <span class="n">error_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> -</span><span id="Parser-5520"><a href="#Parser-5520"><span class="linenos">5520</span></a> <span class="n">empty_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> -</span><span id="Parser-5521"><a href="#Parser-5521"><span class="linenos">5521</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> -</span><span id="Parser-5522"><a href="#Parser-5522"><span class="linenos">5522</span></a> -</span><span id="Parser-5523"><a href="#Parser-5523"><span class="linenos">5523</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">(</span> -</span><span id="Parser-5524"><a href="#Parser-5524"><span class="linenos">5524</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5525"><a href="#Parser-5525"><span class="linenos">5525</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> -</span><span id="Parser-5526"><a href="#Parser-5526"><span class="linenos">5526</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-5527"><a href="#Parser-5527"><span class="linenos">5527</span></a> <span class="n">error_handling</span><span class="o">=</span><span class="n">error_handling</span><span class="p">,</span> -</span><span id="Parser-5528"><a href="#Parser-5528"><span class="linenos">5528</span></a> <span class="n">empty_handling</span><span class="o">=</span><span class="n">empty_handling</span><span class="p">,</span> -</span><span id="Parser-5529"><a href="#Parser-5529"><span class="linenos">5529</span></a> <span class="p">)</span> -</span><span id="Parser-5530"><a href="#Parser-5530"><span class="linenos">5530</span></a> -</span><span id="Parser-5531"><a href="#Parser-5531"><span class="linenos">5531</span></a> <span class="k">def</span> <span class="nf">_parse_match_against</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">:</span> -</span><span id="Parser-5532"><a href="#Parser-5532"><span class="linenos">5532</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-5533"><a href="#Parser-5533"><span class="linenos">5533</span></a> -</span><span id="Parser-5534"><a href="#Parser-5534"><span class="linenos">5534</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">")"</span><span class="p">,</span> <span class="s2">"AGAINST"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">)</span> -</span><span id="Parser-5535"><a href="#Parser-5535"><span class="linenos">5535</span></a> -</span><span id="Parser-5536"><a href="#Parser-5536"><span class="linenos">5536</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5487"><a href="#Parser-5487"><span class="linenos">5487</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="Parser-5488"><a href="#Parser-5488"><span class="linenos">5488</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">:</span> <span class="o">...</span> +</span><span id="Parser-5489"><a href="#Parser-5489"><span class="linenos">5489</span></a> +</span><span id="Parser-5490"><a href="#Parser-5490"><span class="linenos">5490</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="Parser-5491"><a href="#Parser-5491"><span class="linenos">5491</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span><span class="p">:</span> <span class="o">...</span> +</span><span id="Parser-5492"><a href="#Parser-5492"><span class="linenos">5492</span></a> +</span><span id="Parser-5493"><a href="#Parser-5493"><span class="linenos">5493</span></a> <span class="k">def</span> <span class="nf">_parse_json_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agg</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-5494"><a href="#Parser-5494"><span class="linenos">5494</span></a> <span class="n">star</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="Parser-5495"><a href="#Parser-5495"><span class="linenos">5495</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-5496"><a href="#Parser-5496"><span class="linenos">5496</span></a> <span class="p">[</span><span class="n">star</span><span class="p">]</span> +</span><span id="Parser-5497"><a href="#Parser-5497"><span class="linenos">5497</span></a> <span class="k">if</span> <span class="n">star</span> +</span><span id="Parser-5498"><a href="#Parser-5498"><span class="linenos">5498</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_key_value</span><span class="p">()))</span> +</span><span id="Parser-5499"><a href="#Parser-5499"><span class="linenos">5499</span></a> <span class="p">)</span> +</span><span id="Parser-5500"><a href="#Parser-5500"><span class="linenos">5500</span></a> <span class="n">null_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"ABSENT"</span><span class="p">)</span> +</span><span id="Parser-5501"><a href="#Parser-5501"><span class="linenos">5501</span></a> +</span><span id="Parser-5502"><a href="#Parser-5502"><span class="linenos">5502</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5503"><a href="#Parser-5503"><span class="linenos">5503</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> +</span><span id="Parser-5504"><a href="#Parser-5504"><span class="linenos">5504</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-5505"><a href="#Parser-5505"><span class="linenos">5505</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">):</span> +</span><span id="Parser-5506"><a href="#Parser-5506"><span class="linenos">5506</span></a> <span class="n">unique_keys</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-5507"><a href="#Parser-5507"><span class="linenos">5507</span></a> +</span><span id="Parser-5508"><a href="#Parser-5508"><span class="linenos">5508</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEYS"</span><span class="p">)</span> +</span><span id="Parser-5509"><a href="#Parser-5509"><span class="linenos">5509</span></a> +</span><span id="Parser-5510"><a href="#Parser-5510"><span class="linenos">5510</span></a> <span class="n">return_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURNING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span> +</span><span id="Parser-5511"><a href="#Parser-5511"><span class="linenos">5511</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="Parser-5512"><a href="#Parser-5512"><span class="linenos">5512</span></a> <span class="p">)</span> +</span><span id="Parser-5513"><a href="#Parser-5513"><span class="linenos">5513</span></a> <span class="n">encoding</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCODING"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="Parser-5514"><a href="#Parser-5514"><span class="linenos">5514</span></a> +</span><span id="Parser-5515"><a href="#Parser-5515"><span class="linenos">5515</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5516"><a href="#Parser-5516"><span class="linenos">5516</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObjectAgg</span> <span class="k">if</span> <span class="n">agg</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONObject</span><span class="p">,</span> +</span><span id="Parser-5517"><a href="#Parser-5517"><span class="linenos">5517</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-5518"><a href="#Parser-5518"><span class="linenos">5518</span></a> <span class="n">null_handling</span><span class="o">=</span><span class="n">null_handling</span><span class="p">,</span> +</span><span id="Parser-5519"><a href="#Parser-5519"><span class="linenos">5519</span></a> <span class="n">unique_keys</span><span class="o">=</span><span class="n">unique_keys</span><span class="p">,</span> +</span><span id="Parser-5520"><a href="#Parser-5520"><span class="linenos">5520</span></a> <span class="n">return_type</span><span class="o">=</span><span class="n">return_type</span><span class="p">,</span> +</span><span id="Parser-5521"><a href="#Parser-5521"><span class="linenos">5521</span></a> <span class="n">encoding</span><span class="o">=</span><span class="n">encoding</span><span class="p">,</span> +</span><span id="Parser-5522"><a href="#Parser-5522"><span class="linenos">5522</span></a> <span class="p">)</span> +</span><span id="Parser-5523"><a href="#Parser-5523"><span class="linenos">5523</span></a> +</span><span id="Parser-5524"><a href="#Parser-5524"><span class="linenos">5524</span></a> <span class="c1"># Note: this is currently incomplete; it only implements the "JSON_value_column" part</span> +</span><span id="Parser-5525"><a href="#Parser-5525"><span class="linenos">5525</span></a> <span class="k">def</span> <span class="nf">_parse_json_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">:</span> +</span><span id="Parser-5526"><a href="#Parser-5526"><span class="linenos">5526</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NESTED"</span><span class="p">):</span> +</span><span id="Parser-5527"><a href="#Parser-5527"><span class="linenos">5527</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-5528"><a href="#Parser-5528"><span class="linenos">5528</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">allow_identifiers</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-5529"><a href="#Parser-5529"><span class="linenos">5529</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5530"><a href="#Parser-5530"><span class="linenos">5530</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5531"><a href="#Parser-5531"><span class="linenos">5531</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5532"><a href="#Parser-5532"><span class="linenos">5532</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5533"><a href="#Parser-5533"><span class="linenos">5533</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-5534"><a href="#Parser-5534"><span class="linenos">5534</span></a> +</span><span id="Parser-5535"><a href="#Parser-5535"><span class="linenos">5535</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATH"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5536"><a href="#Parser-5536"><span class="linenos">5536</span></a> <span class="n">nested_schema</span> <span class="o">=</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> </span><span id="Parser-5537"><a href="#Parser-5537"><span class="linenos">5537</span></a> -</span><span id="Parser-5538"><a href="#Parser-5538"><span class="linenos">5538</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"NATURAL"</span><span class="p">,</span> <span class="s2">"LANGUAGE"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> -</span><span id="Parser-5539"><a href="#Parser-5539"><span class="linenos">5539</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN NATURAL LANGUAGE MODE"</span> -</span><span id="Parser-5540"><a href="#Parser-5540"><span class="linenos">5540</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> -</span><span id="Parser-5541"><a href="#Parser-5541"><span class="linenos">5541</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">modifier</span><span class="si">}</span><span class="s2"> WITH QUERY EXPANSION"</span> -</span><span id="Parser-5542"><a href="#Parser-5542"><span class="linenos">5542</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"BOOLEAN"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> -</span><span id="Parser-5543"><a href="#Parser-5543"><span class="linenos">5543</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN BOOLEAN MODE"</span> -</span><span id="Parser-5544"><a href="#Parser-5544"><span class="linenos">5544</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> -</span><span id="Parser-5545"><a href="#Parser-5545"><span class="linenos">5545</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"WITH QUERY EXPANSION"</span> -</span><span id="Parser-5546"><a href="#Parser-5546"><span class="linenos">5546</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5547"><a href="#Parser-5547"><span class="linenos">5547</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5548"><a href="#Parser-5548"><span class="linenos">5548</span></a> -</span><span id="Parser-5549"><a href="#Parser-5549"><span class="linenos">5549</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5550"><a href="#Parser-5550"><span class="linenos">5550</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">modifier</span><span class="o">=</span><span class="n">modifier</span> +</span><span id="Parser-5538"><a href="#Parser-5538"><span class="linenos">5538</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5539"><a href="#Parser-5539"><span class="linenos">5539</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONColumnDef</span><span class="p">,</span> +</span><span id="Parser-5540"><a href="#Parser-5540"><span class="linenos">5540</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5541"><a href="#Parser-5541"><span class="linenos">5541</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-5542"><a href="#Parser-5542"><span class="linenos">5542</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-5543"><a href="#Parser-5543"><span class="linenos">5543</span></a> <span class="n">nested_schema</span><span class="o">=</span><span class="n">nested_schema</span><span class="p">,</span> +</span><span id="Parser-5544"><a href="#Parser-5544"><span class="linenos">5544</span></a> <span class="p">)</span> +</span><span id="Parser-5545"><a href="#Parser-5545"><span class="linenos">5545</span></a> +</span><span id="Parser-5546"><a href="#Parser-5546"><span class="linenos">5546</span></a> <span class="k">def</span> <span class="nf">_parse_json_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">:</span> +</span><span id="Parser-5547"><a href="#Parser-5547"><span class="linenos">5547</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLUMNS"</span><span class="p">)</span> +</span><span id="Parser-5548"><a href="#Parser-5548"><span class="linenos">5548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5549"><a href="#Parser-5549"><span class="linenos">5549</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONSchema</span><span class="p">,</span> +</span><span id="Parser-5550"><a href="#Parser-5550"><span class="linenos">5550</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_column_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> </span><span id="Parser-5551"><a href="#Parser-5551"><span class="linenos">5551</span></a> <span class="p">)</span> </span><span id="Parser-5552"><a href="#Parser-5552"><span class="linenos">5552</span></a> -</span><span id="Parser-5553"><a href="#Parser-5553"><span class="linenos">5553</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-ver16</span> -</span><span id="Parser-5554"><a href="#Parser-5554"><span class="linenos">5554</span></a> <span class="k">def</span> <span class="nf">_parse_open_json</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">:</span> -</span><span id="Parser-5555"><a href="#Parser-5555"><span class="linenos">5555</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-5556"><a href="#Parser-5556"><span class="linenos">5556</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-5557"><a href="#Parser-5557"><span class="linenos">5557</span></a> -</span><span id="Parser-5558"><a href="#Parser-5558"><span class="linenos">5558</span></a> <span class="k">def</span> <span class="nf">_parse_open_json_column_def</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">:</span> -</span><span id="Parser-5559"><a href="#Parser-5559"><span class="linenos">5559</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5560"><a href="#Parser-5560"><span class="linenos">5560</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-5561"><a href="#Parser-5561"><span class="linenos">5561</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-5562"><a href="#Parser-5562"><span class="linenos">5562</span></a> <span class="n">as_json</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">)</span> -</span><span id="Parser-5563"><a href="#Parser-5563"><span class="linenos">5563</span></a> -</span><span id="Parser-5564"><a href="#Parser-5564"><span class="linenos">5564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5565"><a href="#Parser-5565"><span class="linenos">5565</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="n">as_json</span> -</span><span id="Parser-5566"><a href="#Parser-5566"><span class="linenos">5566</span></a> <span class="p">)</span> +</span><span id="Parser-5553"><a href="#Parser-5553"><span class="linenos">5553</span></a> <span class="k">def</span> <span class="nf">_parse_json_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">:</span> +</span><span id="Parser-5554"><a href="#Parser-5554"><span class="linenos">5554</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_format_json</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5555"><a href="#Parser-5555"><span class="linenos">5555</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5556"><a href="#Parser-5556"><span class="linenos">5556</span></a> <span class="n">error_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> +</span><span id="Parser-5557"><a href="#Parser-5557"><span class="linenos">5557</span></a> <span class="n">empty_handling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_handling</span><span class="p">(</span><span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">)</span> +</span><span id="Parser-5558"><a href="#Parser-5558"><span class="linenos">5558</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_json_schema</span><span class="p">()</span> +</span><span id="Parser-5559"><a href="#Parser-5559"><span class="linenos">5559</span></a> +</span><span id="Parser-5560"><a href="#Parser-5560"><span class="linenos">5560</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONTable</span><span class="p">(</span> +</span><span id="Parser-5561"><a href="#Parser-5561"><span class="linenos">5561</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5562"><a href="#Parser-5562"><span class="linenos">5562</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span> +</span><span id="Parser-5563"><a href="#Parser-5563"><span class="linenos">5563</span></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-5564"><a href="#Parser-5564"><span class="linenos">5564</span></a> <span class="n">error_handling</span><span class="o">=</span><span class="n">error_handling</span><span class="p">,</span> +</span><span id="Parser-5565"><a href="#Parser-5565"><span class="linenos">5565</span></a> <span class="n">empty_handling</span><span class="o">=</span><span class="n">empty_handling</span><span class="p">,</span> +</span><span id="Parser-5566"><a href="#Parser-5566"><span class="linenos">5566</span></a> <span class="p">)</span> </span><span id="Parser-5567"><a href="#Parser-5567"><span class="linenos">5567</span></a> -</span><span id="Parser-5568"><a href="#Parser-5568"><span class="linenos">5568</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5569"><a href="#Parser-5569"><span class="linenos">5569</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-5570"><a href="#Parser-5570"><span class="linenos">5570</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-5571"><a href="#Parser-5571"><span class="linenos">5571</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_open_json_column_def</span><span class="p">)</span> +</span><span id="Parser-5568"><a href="#Parser-5568"><span class="linenos">5568</span></a> <span class="k">def</span> <span class="nf">_parse_match_against</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">:</span> +</span><span id="Parser-5569"><a href="#Parser-5569"><span class="linenos">5569</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-5570"><a href="#Parser-5570"><span class="linenos">5570</span></a> +</span><span id="Parser-5571"><a href="#Parser-5571"><span class="linenos">5571</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">")"</span><span class="p">,</span> <span class="s2">"AGAINST"</span><span class="p">,</span> <span class="s2">"("</span><span class="p">)</span> </span><span id="Parser-5572"><a href="#Parser-5572"><span class="linenos">5572</span></a> -</span><span id="Parser-5573"><a href="#Parser-5573"><span class="linenos">5573</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-5573"><a href="#Parser-5573"><span class="linenos">5573</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> </span><span id="Parser-5574"><a href="#Parser-5574"><span class="linenos">5574</span></a> -</span><span id="Parser-5575"><a href="#Parser-5575"><span class="linenos">5575</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> -</span><span id="Parser-5576"><a href="#Parser-5576"><span class="linenos">5576</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-5577"><a href="#Parser-5577"><span class="linenos">5577</span></a> -</span><span id="Parser-5578"><a href="#Parser-5578"><span class="linenos">5578</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-5579"><a href="#Parser-5579"><span class="linenos">5579</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5580"><a href="#Parser-5580"><span class="linenos">5580</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Parser-5581"><a href="#Parser-5581"><span class="linenos">5581</span></a> <span class="p">)</span> -</span><span id="Parser-5582"><a href="#Parser-5582"><span class="linenos">5582</span></a> -</span><span id="Parser-5583"><a href="#Parser-5583"><span class="linenos">5583</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> -</span><span id="Parser-5584"><a href="#Parser-5584"><span class="linenos">5584</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Parser-5585"><a href="#Parser-5585"><span class="linenos">5585</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-5586"><a href="#Parser-5586"><span class="linenos">5586</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5587"><a href="#Parser-5587"><span class="linenos">5587</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Parser-5588"><a href="#Parser-5588"><span class="linenos">5588</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-5575"><a href="#Parser-5575"><span class="linenos">5575</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"NATURAL"</span><span class="p">,</span> <span class="s2">"LANGUAGE"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> +</span><span id="Parser-5576"><a href="#Parser-5576"><span class="linenos">5576</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN NATURAL LANGUAGE MODE"</span> +</span><span id="Parser-5577"><a href="#Parser-5577"><span class="linenos">5577</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> +</span><span id="Parser-5578"><a href="#Parser-5578"><span class="linenos">5578</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">modifier</span><span class="si">}</span><span class="s2"> WITH QUERY EXPANSION"</span> +</span><span id="Parser-5579"><a href="#Parser-5579"><span class="linenos">5579</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="s2">"BOOLEAN"</span><span class="p">,</span> <span class="s2">"MODE"</span><span class="p">):</span> +</span><span id="Parser-5580"><a href="#Parser-5580"><span class="linenos">5580</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"IN BOOLEAN MODE"</span> +</span><span id="Parser-5581"><a href="#Parser-5581"><span class="linenos">5581</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"QUERY"</span><span class="p">,</span> <span class="s2">"EXPANSION"</span><span class="p">):</span> +</span><span id="Parser-5582"><a href="#Parser-5582"><span class="linenos">5582</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="s2">"WITH QUERY EXPANSION"</span> +</span><span id="Parser-5583"><a href="#Parser-5583"><span class="linenos">5583</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5584"><a href="#Parser-5584"><span class="linenos">5584</span></a> <span class="n">modifier</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5585"><a href="#Parser-5585"><span class="linenos">5585</span></a> +</span><span id="Parser-5586"><a href="#Parser-5586"><span class="linenos">5586</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5587"><a href="#Parser-5587"><span class="linenos">5587</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchAgainst</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">modifier</span><span class="o">=</span><span class="n">modifier</span> +</span><span id="Parser-5588"><a href="#Parser-5588"><span class="linenos">5588</span></a> <span class="p">)</span> </span><span id="Parser-5589"><a href="#Parser-5589"><span class="linenos">5589</span></a> -</span><span id="Parser-5590"><a href="#Parser-5590"><span class="linenos">5590</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5591"><a href="#Parser-5591"><span class="linenos">5591</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="Parser-5592"><a href="#Parser-5592"><span class="linenos">5592</span></a> <span class="p">)</span> -</span><span id="Parser-5593"><a href="#Parser-5593"><span class="linenos">5593</span></a> -</span><span id="Parser-5594"><a href="#Parser-5594"><span class="linenos">5594</span></a> <span class="k">def</span> <span class="nf">_parse_predict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">:</span> -</span><span id="Parser-5595"><a href="#Parser-5595"><span class="linenos">5595</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MODEL"</span><span class="p">)</span> -</span><span id="Parser-5596"><a href="#Parser-5596"><span class="linenos">5596</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-5597"><a href="#Parser-5597"><span class="linenos">5597</span></a> -</span><span id="Parser-5598"><a href="#Parser-5598"><span class="linenos">5598</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-5599"><a href="#Parser-5599"><span class="linenos">5599</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">)</span> +</span><span id="Parser-5590"><a href="#Parser-5590"><span class="linenos">5590</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-ver16</span> +</span><span id="Parser-5591"><a href="#Parser-5591"><span class="linenos">5591</span></a> <span class="k">def</span> <span class="nf">_parse_open_json</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">:</span> +</span><span id="Parser-5592"><a href="#Parser-5592"><span class="linenos">5592</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5593"><a href="#Parser-5593"><span class="linenos">5593</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5594"><a href="#Parser-5594"><span class="linenos">5594</span></a> +</span><span id="Parser-5595"><a href="#Parser-5595"><span class="linenos">5595</span></a> <span class="k">def</span> <span class="nf">_parse_open_json_column_def</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">:</span> +</span><span id="Parser-5596"><a href="#Parser-5596"><span class="linenos">5596</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5597"><a href="#Parser-5597"><span class="linenos">5597</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-5598"><a href="#Parser-5598"><span class="linenos">5598</span></a> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5599"><a href="#Parser-5599"><span class="linenos">5599</span></a> <span class="n">as_json</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">)</span> </span><span id="Parser-5600"><a href="#Parser-5600"><span class="linenos">5600</span></a> -</span><span id="Parser-5601"><a href="#Parser-5601"><span class="linenos">5601</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5602"><a href="#Parser-5602"><span class="linenos">5602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">,</span> -</span><span id="Parser-5603"><a href="#Parser-5603"><span class="linenos">5603</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5604"><a href="#Parser-5604"><span class="linenos">5604</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(),</span> -</span><span id="Parser-5605"><a href="#Parser-5605"><span class="linenos">5605</span></a> <span class="n">params_struct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Parser-5606"><a href="#Parser-5606"><span class="linenos">5606</span></a> <span class="p">)</span> -</span><span id="Parser-5607"><a href="#Parser-5607"><span class="linenos">5607</span></a> -</span><span id="Parser-5608"><a href="#Parser-5608"><span class="linenos">5608</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">:</span> -</span><span id="Parser-5609"><a href="#Parser-5609"><span class="linenos">5609</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="Parser-5610"><a href="#Parser-5610"><span class="linenos">5610</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5601"><a href="#Parser-5601"><span class="linenos">5601</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5602"><a href="#Parser-5602"><span class="linenos">5602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OpenJSONColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="n">as_json</span> +</span><span id="Parser-5603"><a href="#Parser-5603"><span class="linenos">5603</span></a> <span class="p">)</span> +</span><span id="Parser-5604"><a href="#Parser-5604"><span class="linenos">5604</span></a> +</span><span id="Parser-5605"><a href="#Parser-5605"><span class="linenos">5605</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5606"><a href="#Parser-5606"><span class="linenos">5606</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-5607"><a href="#Parser-5607"><span class="linenos">5607</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-5608"><a href="#Parser-5608"><span class="linenos">5608</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">_parse_open_json_column_def</span><span class="p">)</span> +</span><span id="Parser-5609"><a href="#Parser-5609"><span class="linenos">5609</span></a> +</span><span id="Parser-5610"><a href="#Parser-5610"><span class="linenos">5610</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">OpenJSON</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="Parser-5611"><a href="#Parser-5611"><span class="linenos">5611</span></a> -</span><span id="Parser-5612"><a href="#Parser-5612"><span class="linenos">5612</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> -</span><span id="Parser-5613"><a href="#Parser-5613"><span class="linenos">5613</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> -</span><span id="Parser-5614"><a href="#Parser-5614"><span class="linenos">5614</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> -</span><span id="Parser-5615"><a href="#Parser-5615"><span class="linenos">5615</span></a> -</span><span id="Parser-5616"><a href="#Parser-5616"><span class="linenos">5616</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">))</span> -</span><span id="Parser-5617"><a href="#Parser-5617"><span class="linenos">5617</span></a> -</span><span id="Parser-5618"><a href="#Parser-5618"><span class="linenos">5618</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-5619"><a href="#Parser-5619"><span class="linenos">5619</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-5620"><a href="#Parser-5620"><span class="linenos">5620</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-5621"><a href="#Parser-5621"><span class="linenos">5621</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-5622"><a href="#Parser-5622"><span class="linenos">5622</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> -</span><span id="Parser-5623"><a href="#Parser-5623"><span class="linenos">5623</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-5624"><a href="#Parser-5624"><span class="linenos">5624</span></a> -</span><span id="Parser-5625"><a href="#Parser-5625"><span class="linenos">5625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5612"><a href="#Parser-5612"><span class="linenos">5612</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> +</span><span id="Parser-5613"><a href="#Parser-5613"><span class="linenos">5613</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-5614"><a href="#Parser-5614"><span class="linenos">5614</span></a> +</span><span id="Parser-5615"><a href="#Parser-5615"><span class="linenos">5615</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-5616"><a href="#Parser-5616"><span class="linenos">5616</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5617"><a href="#Parser-5617"><span class="linenos">5617</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Parser-5618"><a href="#Parser-5618"><span class="linenos">5618</span></a> <span class="p">)</span> +</span><span id="Parser-5619"><a href="#Parser-5619"><span class="linenos">5619</span></a> +</span><span id="Parser-5620"><a href="#Parser-5620"><span class="linenos">5620</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> +</span><span id="Parser-5621"><a href="#Parser-5621"><span class="linenos">5621</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Parser-5622"><a href="#Parser-5622"><span class="linenos">5622</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-5623"><a href="#Parser-5623"><span class="linenos">5623</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5624"><a href="#Parser-5624"><span class="linenos">5624</span></a> <span class="n">needle</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Parser-5625"><a href="#Parser-5625"><span class="linenos">5625</span></a> <span class="n">haystack</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span><span id="Parser-5626"><a href="#Parser-5626"><span class="linenos">5626</span></a> -</span><span id="Parser-5627"><a href="#Parser-5627"><span class="linenos">5627</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> -</span><span id="Parser-5628"><a href="#Parser-5628"><span class="linenos">5628</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> -</span><span id="Parser-5629"><a href="#Parser-5629"><span class="linenos">5629</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> +</span><span id="Parser-5627"><a href="#Parser-5627"><span class="linenos">5627</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5628"><a href="#Parser-5628"><span class="linenos">5628</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="Parser-5629"><a href="#Parser-5629"><span class="linenos">5629</span></a> <span class="p">)</span> </span><span id="Parser-5630"><a href="#Parser-5630"><span class="linenos">5630</span></a> -</span><span id="Parser-5631"><a href="#Parser-5631"><span class="linenos">5631</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5632"><a href="#Parser-5632"><span class="linenos">5632</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5633"><a href="#Parser-5633"><span class="linenos">5633</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5631"><a href="#Parser-5631"><span class="linenos">5631</span></a> <span class="k">def</span> <span class="nf">_parse_predict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">:</span> +</span><span id="Parser-5632"><a href="#Parser-5632"><span class="linenos">5632</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MODEL"</span><span class="p">)</span> +</span><span id="Parser-5633"><a href="#Parser-5633"><span class="linenos">5633</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> </span><span id="Parser-5634"><a href="#Parser-5634"><span class="linenos">5634</span></a> -</span><span id="Parser-5635"><a href="#Parser-5635"><span class="linenos">5635</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> -</span><span id="Parser-5636"><a href="#Parser-5636"><span class="linenos">5636</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-5635"><a href="#Parser-5635"><span class="linenos">5635</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-5636"><a href="#Parser-5636"><span class="linenos">5636</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">)</span> </span><span id="Parser-5637"><a href="#Parser-5637"><span class="linenos">5637</span></a> -</span><span id="Parser-5638"><a href="#Parser-5638"><span class="linenos">5638</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-5639"><a href="#Parser-5639"><span class="linenos">5639</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> -</span><span id="Parser-5640"><a href="#Parser-5640"><span class="linenos">5640</span></a> <span class="n">invert_order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRIM_PATTERN_FIRST</span> -</span><span id="Parser-5641"><a href="#Parser-5641"><span class="linenos">5641</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-5642"><a href="#Parser-5642"><span class="linenos">5642</span></a> -</span><span id="Parser-5643"><a href="#Parser-5643"><span class="linenos">5643</span></a> <span class="k">if</span> <span class="n">invert_order</span><span class="p">:</span> -</span><span id="Parser-5644"><a href="#Parser-5644"><span class="linenos">5644</span></a> <span class="n">this</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="p">,</span> <span class="n">this</span> -</span><span id="Parser-5645"><a href="#Parser-5645"><span class="linenos">5645</span></a> -</span><span id="Parser-5646"><a href="#Parser-5646"><span class="linenos">5646</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> -</span><span id="Parser-5647"><a href="#Parser-5647"><span class="linenos">5647</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5638"><a href="#Parser-5638"><span class="linenos">5638</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5639"><a href="#Parser-5639"><span class="linenos">5639</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Predict</span><span class="p">,</span> +</span><span id="Parser-5640"><a href="#Parser-5640"><span class="linenos">5640</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5641"><a href="#Parser-5641"><span class="linenos">5641</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(),</span> +</span><span id="Parser-5642"><a href="#Parser-5642"><span class="linenos">5642</span></a> <span class="n">params_struct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Parser-5643"><a href="#Parser-5643"><span class="linenos">5643</span></a> <span class="p">)</span> +</span><span id="Parser-5644"><a href="#Parser-5644"><span class="linenos">5644</span></a> +</span><span id="Parser-5645"><a href="#Parser-5645"><span class="linenos">5645</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">:</span> +</span><span id="Parser-5646"><a href="#Parser-5646"><span class="linenos">5646</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="Parser-5647"><a href="#Parser-5647"><span class="linenos">5647</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> </span><span id="Parser-5648"><a href="#Parser-5648"><span class="linenos">5648</span></a> -</span><span id="Parser-5649"><a href="#Parser-5649"><span class="linenos">5649</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5650"><a href="#Parser-5650"><span class="linenos">5650</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span> -</span><span id="Parser-5651"><a href="#Parser-5651"><span class="linenos">5651</span></a> <span class="p">)</span> +</span><span id="Parser-5649"><a href="#Parser-5649"><span class="linenos">5649</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> +</span><span id="Parser-5650"><a href="#Parser-5650"><span class="linenos">5650</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> +</span><span id="Parser-5651"><a href="#Parser-5651"><span class="linenos">5651</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> </span><span id="Parser-5652"><a href="#Parser-5652"><span class="linenos">5652</span></a> -</span><span id="Parser-5653"><a href="#Parser-5653"><span class="linenos">5653</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-5654"><a href="#Parser-5654"><span class="linenos">5654</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> -</span><span id="Parser-5655"><a href="#Parser-5655"><span class="linenos">5655</span></a> -</span><span id="Parser-5656"><a href="#Parser-5656"><span class="linenos">5656</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5657"><a href="#Parser-5657"><span class="linenos">5657</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5658"><a href="#Parser-5658"><span class="linenos">5658</span></a> -</span><span id="Parser-5659"><a href="#Parser-5659"><span class="linenos">5659</span></a> <span class="k">def</span> <span class="nf">_parse_respect_or_ignore_nulls</span><span class="p">(</span> -</span><span id="Parser-5660"><a href="#Parser-5660"><span class="linenos">5660</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-5661"><a href="#Parser-5661"><span class="linenos">5661</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5662"><a href="#Parser-5662"><span class="linenos">5662</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="Parser-5663"><a href="#Parser-5663"><span class="linenos">5663</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5664"><a href="#Parser-5664"><span class="linenos">5664</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESPECT"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> -</span><span id="Parser-5665"><a href="#Parser-5665"><span class="linenos">5665</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5666"><a href="#Parser-5666"><span class="linenos">5666</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5653"><a href="#Parser-5653"><span class="linenos">5653</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">))</span> +</span><span id="Parser-5654"><a href="#Parser-5654"><span class="linenos">5654</span></a> +</span><span id="Parser-5655"><a href="#Parser-5655"><span class="linenos">5655</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-5656"><a href="#Parser-5656"><span class="linenos">5656</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5657"><a href="#Parser-5657"><span class="linenos">5657</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-5658"><a href="#Parser-5658"><span class="linenos">5658</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-5659"><a href="#Parser-5659"><span class="linenos">5659</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> +</span><span id="Parser-5660"><a href="#Parser-5660"><span class="linenos">5660</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-5661"><a href="#Parser-5661"><span class="linenos">5661</span></a> +</span><span id="Parser-5662"><a href="#Parser-5662"><span class="linenos">5662</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-5663"><a href="#Parser-5663"><span class="linenos">5663</span></a> +</span><span id="Parser-5664"><a href="#Parser-5664"><span class="linenos">5664</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> +</span><span id="Parser-5665"><a href="#Parser-5665"><span class="linenos">5665</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> +</span><span id="Parser-5666"><a href="#Parser-5666"><span class="linenos">5666</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> </span><span id="Parser-5667"><a href="#Parser-5667"><span class="linenos">5667</span></a> -</span><span id="Parser-5668"><a href="#Parser-5668"><span class="linenos">5668</span></a> <span class="k">def</span> <span class="nf">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5669"><a href="#Parser-5669"><span class="linenos">5669</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> -</span><span id="Parser-5670"><a href="#Parser-5670"><span class="linenos">5670</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MIN"</span><span class="p">))</span> -</span><span id="Parser-5671"><a href="#Parser-5671"><span class="linenos">5671</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"MIN"</span> -</span><span id="Parser-5672"><a href="#Parser-5672"><span class="linenos">5672</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5673"><a href="#Parser-5673"><span class="linenos">5673</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">HavingMax</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span> -</span><span id="Parser-5674"><a href="#Parser-5674"><span class="linenos">5674</span></a> <span class="p">)</span> -</span><span id="Parser-5675"><a href="#Parser-5675"><span class="linenos">5675</span></a> -</span><span id="Parser-5676"><a href="#Parser-5676"><span class="linenos">5676</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5677"><a href="#Parser-5677"><span class="linenos">5677</span></a> -</span><span id="Parser-5678"><a href="#Parser-5678"><span class="linenos">5678</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> -</span><span id="Parser-5679"><a href="#Parser-5679"><span class="linenos">5679</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-5680"><a href="#Parser-5680"><span class="linenos">5680</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5681"><a href="#Parser-5681"><span class="linenos">5681</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">this</span> -</span><span id="Parser-5682"><a href="#Parser-5682"><span class="linenos">5682</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-5683"><a href="#Parser-5683"><span class="linenos">5683</span></a> -</span><span id="Parser-5684"><a href="#Parser-5684"><span class="linenos">5684</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-5685"><a href="#Parser-5685"><span class="linenos">5685</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> -</span><span id="Parser-5686"><a href="#Parser-5686"><span class="linenos">5686</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5687"><a href="#Parser-5687"><span class="linenos">5687</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(</span><span class="n">skip_where_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5688"><a href="#Parser-5688"><span class="linenos">5688</span></a> <span class="p">)</span> -</span><span id="Parser-5689"><a href="#Parser-5689"><span class="linenos">5689</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-5690"><a href="#Parser-5690"><span class="linenos">5690</span></a> -</span><span id="Parser-5691"><a href="#Parser-5691"><span class="linenos">5691</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> -</span><span id="Parser-5692"><a href="#Parser-5692"><span class="linenos">5692</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> -</span><span id="Parser-5693"><a href="#Parser-5693"><span class="linenos">5693</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> -</span><span id="Parser-5694"><a href="#Parser-5694"><span class="linenos">5694</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> -</span><span id="Parser-5695"><a href="#Parser-5695"><span class="linenos">5695</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> -</span><span id="Parser-5696"><a href="#Parser-5696"><span class="linenos">5696</span></a> -</span><span id="Parser-5697"><a href="#Parser-5697"><span class="linenos">5697</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> -</span><span id="Parser-5698"><a href="#Parser-5698"><span class="linenos">5698</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> -</span><span id="Parser-5699"><a href="#Parser-5699"><span class="linenos">5699</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> -</span><span id="Parser-5700"><a href="#Parser-5700"><span class="linenos">5700</span></a> -</span><span id="Parser-5701"><a href="#Parser-5701"><span class="linenos">5701</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> -</span><span id="Parser-5702"><a href="#Parser-5702"><span class="linenos">5702</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> -</span><span id="Parser-5703"><a href="#Parser-5703"><span class="linenos">5703</span></a> -</span><span id="Parser-5704"><a href="#Parser-5704"><span class="linenos">5704</span></a> <span class="c1"># The below changes handle</span> -</span><span id="Parser-5705"><a href="#Parser-5705"><span class="linenos">5705</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> -</span><span id="Parser-5706"><a href="#Parser-5706"><span class="linenos">5706</span></a> -</span><span id="Parser-5707"><a href="#Parser-5707"><span class="linenos">5707</span></a> <span class="c1"># Oracle allows both formats</span> -</span><span id="Parser-5708"><a href="#Parser-5708"><span class="linenos">5708</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> -</span><span id="Parser-5709"><a href="#Parser-5709"><span class="linenos">5709</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> -</span><span id="Parser-5710"><a href="#Parser-5710"><span class="linenos">5710</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> -</span><span id="Parser-5711"><a href="#Parser-5711"><span class="linenos">5711</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Parser-5712"><a href="#Parser-5712"><span class="linenos">5712</span></a> <span class="n">ignore_respect</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">)</span> -</span><span id="Parser-5713"><a href="#Parser-5713"><span class="linenos">5713</span></a> -</span><span id="Parser-5714"><a href="#Parser-5714"><span class="linenos">5714</span></a> <span class="k">if</span> <span class="n">ignore_respect</span> <span class="ow">and</span> <span class="n">ignore_respect</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-5715"><a href="#Parser-5715"><span class="linenos">5715</span></a> <span class="n">ignore_respect</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5716"><a href="#Parser-5716"><span class="linenos">5716</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5717"><a href="#Parser-5717"><span class="linenos">5717</span></a> -</span><span id="Parser-5718"><a href="#Parser-5718"><span class="linenos">5718</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5719"><a href="#Parser-5719"><span class="linenos">5719</span></a> -</span><span id="Parser-5720"><a href="#Parser-5720"><span class="linenos">5720</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> -</span><span id="Parser-5721"><a href="#Parser-5721"><span class="linenos">5721</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-5722"><a href="#Parser-5722"><span class="linenos">5722</span></a> <span class="n">over</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5723"><a href="#Parser-5723"><span class="linenos">5723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-5724"><a href="#Parser-5724"><span class="linenos">5724</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">):</span> -</span><span id="Parser-5725"><a href="#Parser-5725"><span class="linenos">5725</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5726"><a href="#Parser-5726"><span class="linenos">5726</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5727"><a href="#Parser-5727"><span class="linenos">5727</span></a> <span class="n">over</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-5728"><a href="#Parser-5728"><span class="linenos">5728</span></a> -</span><span id="Parser-5729"><a href="#Parser-5729"><span class="linenos">5729</span></a> <span class="k">if</span> <span class="n">comments</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Parser-5730"><a href="#Parser-5730"><span class="linenos">5730</span></a> <span class="n">func</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> -</span><span id="Parser-5731"><a href="#Parser-5731"><span class="linenos">5731</span></a> -</span><span id="Parser-5732"><a href="#Parser-5732"><span class="linenos">5732</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-5733"><a href="#Parser-5733"><span class="linenos">5733</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5734"><a href="#Parser-5734"><span class="linenos">5734</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> -</span><span id="Parser-5735"><a href="#Parser-5735"><span class="linenos">5735</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-5736"><a href="#Parser-5736"><span class="linenos">5736</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5737"><a href="#Parser-5737"><span class="linenos">5737</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-5738"><a href="#Parser-5738"><span class="linenos">5738</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> -</span><span id="Parser-5739"><a href="#Parser-5739"><span class="linenos">5739</span></a> <span class="p">)</span> +</span><span id="Parser-5668"><a href="#Parser-5668"><span class="linenos">5668</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5669"><a href="#Parser-5669"><span class="linenos">5669</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5670"><a href="#Parser-5670"><span class="linenos">5670</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5671"><a href="#Parser-5671"><span class="linenos">5671</span></a> +</span><span id="Parser-5672"><a href="#Parser-5672"><span class="linenos">5672</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> +</span><span id="Parser-5673"><a href="#Parser-5673"><span class="linenos">5673</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-5674"><a href="#Parser-5674"><span class="linenos">5674</span></a> +</span><span id="Parser-5675"><a href="#Parser-5675"><span class="linenos">5675</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5676"><a href="#Parser-5676"><span class="linenos">5676</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> +</span><span id="Parser-5677"><a href="#Parser-5677"><span class="linenos">5677</span></a> <span class="n">invert_order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRIM_PATTERN_FIRST</span> +</span><span id="Parser-5678"><a href="#Parser-5678"><span class="linenos">5678</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5679"><a href="#Parser-5679"><span class="linenos">5679</span></a> +</span><span id="Parser-5680"><a href="#Parser-5680"><span class="linenos">5680</span></a> <span class="k">if</span> <span class="n">invert_order</span><span class="p">:</span> +</span><span id="Parser-5681"><a href="#Parser-5681"><span class="linenos">5681</span></a> <span class="n">this</span><span class="p">,</span> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="p">,</span> <span class="n">this</span> +</span><span id="Parser-5682"><a href="#Parser-5682"><span class="linenos">5682</span></a> +</span><span id="Parser-5683"><a href="#Parser-5683"><span class="linenos">5683</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> +</span><span id="Parser-5684"><a href="#Parser-5684"><span class="linenos">5684</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5685"><a href="#Parser-5685"><span class="linenos">5685</span></a> +</span><span id="Parser-5686"><a href="#Parser-5686"><span class="linenos">5686</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5687"><a href="#Parser-5687"><span class="linenos">5687</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span> +</span><span id="Parser-5688"><a href="#Parser-5688"><span class="linenos">5688</span></a> <span class="p">)</span> +</span><span id="Parser-5689"><a href="#Parser-5689"><span class="linenos">5689</span></a> +</span><span id="Parser-5690"><a href="#Parser-5690"><span class="linenos">5690</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-5691"><a href="#Parser-5691"><span class="linenos">5691</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> +</span><span id="Parser-5692"><a href="#Parser-5692"><span class="linenos">5692</span></a> +</span><span id="Parser-5693"><a href="#Parser-5693"><span class="linenos">5693</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5694"><a href="#Parser-5694"><span class="linenos">5694</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5695"><a href="#Parser-5695"><span class="linenos">5695</span></a> +</span><span id="Parser-5696"><a href="#Parser-5696"><span class="linenos">5696</span></a> <span class="k">def</span> <span class="nf">_parse_respect_or_ignore_nulls</span><span class="p">(</span> +</span><span id="Parser-5697"><a href="#Parser-5697"><span class="linenos">5697</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-5698"><a href="#Parser-5698"><span class="linenos">5698</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5699"><a href="#Parser-5699"><span class="linenos">5699</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="Parser-5700"><a href="#Parser-5700"><span class="linenos">5700</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5701"><a href="#Parser-5701"><span class="linenos">5701</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESPECT"</span><span class="p">,</span> <span class="s2">"NULLS"</span><span class="p">):</span> +</span><span id="Parser-5702"><a href="#Parser-5702"><span class="linenos">5702</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5703"><a href="#Parser-5703"><span class="linenos">5703</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5704"><a href="#Parser-5704"><span class="linenos">5704</span></a> +</span><span id="Parser-5705"><a href="#Parser-5705"><span class="linenos">5705</span></a> <span class="k">def</span> <span class="nf">_parse_having_max</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5706"><a href="#Parser-5706"><span class="linenos">5706</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> +</span><span id="Parser-5707"><a href="#Parser-5707"><span class="linenos">5707</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MIN"</span><span class="p">))</span> +</span><span id="Parser-5708"><a href="#Parser-5708"><span class="linenos">5708</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"MIN"</span> +</span><span id="Parser-5709"><a href="#Parser-5709"><span class="linenos">5709</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5710"><a href="#Parser-5710"><span class="linenos">5710</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">HavingMax</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span> +</span><span id="Parser-5711"><a href="#Parser-5711"><span class="linenos">5711</span></a> <span class="p">)</span> +</span><span id="Parser-5712"><a href="#Parser-5712"><span class="linenos">5712</span></a> +</span><span id="Parser-5713"><a href="#Parser-5713"><span class="linenos">5713</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5714"><a href="#Parser-5714"><span class="linenos">5714</span></a> +</span><span id="Parser-5715"><a href="#Parser-5715"><span class="linenos">5715</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> +</span><span id="Parser-5716"><a href="#Parser-5716"><span class="linenos">5716</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-5717"><a href="#Parser-5717"><span class="linenos">5717</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5718"><a href="#Parser-5718"><span class="linenos">5718</span></a> <span class="n">func</span> <span class="o">=</span> <span class="n">this</span> +</span><span id="Parser-5719"><a href="#Parser-5719"><span class="linenos">5719</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-5720"><a href="#Parser-5720"><span class="linenos">5720</span></a> +</span><span id="Parser-5721"><a href="#Parser-5721"><span class="linenos">5721</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-5722"><a href="#Parser-5722"><span class="linenos">5722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> +</span><span id="Parser-5723"><a href="#Parser-5723"><span class="linenos">5723</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5724"><a href="#Parser-5724"><span class="linenos">5724</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(</span><span class="n">skip_where_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5725"><a href="#Parser-5725"><span class="linenos">5725</span></a> <span class="p">)</span> +</span><span id="Parser-5726"><a href="#Parser-5726"><span class="linenos">5726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-5727"><a href="#Parser-5727"><span class="linenos">5727</span></a> +</span><span id="Parser-5728"><a href="#Parser-5728"><span class="linenos">5728</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> +</span><span id="Parser-5729"><a href="#Parser-5729"><span class="linenos">5729</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> +</span><span id="Parser-5730"><a href="#Parser-5730"><span class="linenos">5730</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHIN"</span><span class="p">,</span> <span class="s2">"GROUP"</span><span class="p">):</span> +</span><span id="Parser-5731"><a href="#Parser-5731"><span class="linenos">5731</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> +</span><span id="Parser-5732"><a href="#Parser-5732"><span class="linenos">5732</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> +</span><span id="Parser-5733"><a href="#Parser-5733"><span class="linenos">5733</span></a> +</span><span id="Parser-5734"><a href="#Parser-5734"><span class="linenos">5734</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> +</span><span id="Parser-5735"><a href="#Parser-5735"><span class="linenos">5735</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> +</span><span id="Parser-5736"><a href="#Parser-5736"><span class="linenos">5736</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> +</span><span id="Parser-5737"><a href="#Parser-5737"><span class="linenos">5737</span></a> +</span><span id="Parser-5738"><a href="#Parser-5738"><span class="linenos">5738</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> +</span><span id="Parser-5739"><a href="#Parser-5739"><span class="linenos">5739</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> </span><span id="Parser-5740"><a href="#Parser-5740"><span class="linenos">5740</span></a> -</span><span id="Parser-5741"><a href="#Parser-5741"><span class="linenos">5741</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-5742"><a href="#Parser-5742"><span class="linenos">5742</span></a> -</span><span id="Parser-5743"><a href="#Parser-5743"><span class="linenos">5743</span></a> <span class="n">first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">)</span> -</span><span id="Parser-5744"><a href="#Parser-5744"><span class="linenos">5744</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAST"</span><span class="p">):</span> -</span><span id="Parser-5745"><a href="#Parser-5745"><span class="linenos">5745</span></a> <span class="n">first</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-5746"><a href="#Parser-5746"><span class="linenos">5746</span></a> -</span><span id="Parser-5747"><a href="#Parser-5747"><span class="linenos">5747</span></a> <span class="n">partition</span><span class="p">,</span> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_and_order</span><span class="p">()</span> -</span><span id="Parser-5748"><a href="#Parser-5748"><span class="linenos">5748</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-5749"><a href="#Parser-5749"><span class="linenos">5749</span></a> -</span><span id="Parser-5750"><a href="#Parser-5750"><span class="linenos">5750</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-5751"><a href="#Parser-5751"><span class="linenos">5751</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> -</span><span id="Parser-5752"><a href="#Parser-5752"><span class="linenos">5752</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="Parser-5753"><a href="#Parser-5753"><span class="linenos">5753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="Parser-5754"><a href="#Parser-5754"><span class="linenos">5754</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="Parser-5755"><a href="#Parser-5755"><span class="linenos">5755</span></a> -</span><span id="Parser-5756"><a href="#Parser-5756"><span class="linenos">5756</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5757"><a href="#Parser-5757"><span class="linenos">5757</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> -</span><span id="Parser-5758"><a href="#Parser-5758"><span class="linenos">5758</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-5759"><a href="#Parser-5759"><span class="linenos">5759</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="Parser-5760"><a href="#Parser-5760"><span class="linenos">5760</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="Parser-5761"><a href="#Parser-5761"><span class="linenos">5761</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="Parser-5762"><a href="#Parser-5762"><span class="linenos">5762</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="Parser-5763"><a href="#Parser-5763"><span class="linenos">5763</span></a> <span class="p">)</span> -</span><span id="Parser-5764"><a href="#Parser-5764"><span class="linenos">5764</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-5765"><a href="#Parser-5765"><span class="linenos">5765</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5766"><a href="#Parser-5766"><span class="linenos">5766</span></a> -</span><span id="Parser-5767"><a href="#Parser-5767"><span class="linenos">5767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-5741"><a href="#Parser-5741"><span class="linenos">5741</span></a> <span class="c1"># The below changes handle</span> +</span><span id="Parser-5742"><a href="#Parser-5742"><span class="linenos">5742</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> +</span><span id="Parser-5743"><a href="#Parser-5743"><span class="linenos">5743</span></a> +</span><span id="Parser-5744"><a href="#Parser-5744"><span class="linenos">5744</span></a> <span class="c1"># Oracle allows both formats</span> +</span><span id="Parser-5745"><a href="#Parser-5745"><span class="linenos">5745</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> +</span><span id="Parser-5746"><a href="#Parser-5746"><span class="linenos">5746</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> +</span><span id="Parser-5747"><a href="#Parser-5747"><span class="linenos">5747</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> +</span><span id="Parser-5748"><a href="#Parser-5748"><span class="linenos">5748</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Parser-5749"><a href="#Parser-5749"><span class="linenos">5749</span></a> <span class="n">ignore_respect</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">)</span> +</span><span id="Parser-5750"><a href="#Parser-5750"><span class="linenos">5750</span></a> +</span><span id="Parser-5751"><a href="#Parser-5751"><span class="linenos">5751</span></a> <span class="k">if</span> <span class="n">ignore_respect</span> <span class="ow">and</span> <span class="n">ignore_respect</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-5752"><a href="#Parser-5752"><span class="linenos">5752</span></a> <span class="n">ignore_respect</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5753"><a href="#Parser-5753"><span class="linenos">5753</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">ignore_respect</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5754"><a href="#Parser-5754"><span class="linenos">5754</span></a> +</span><span id="Parser-5755"><a href="#Parser-5755"><span class="linenos">5755</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_respect_or_ignore_nulls</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5756"><a href="#Parser-5756"><span class="linenos">5756</span></a> +</span><span id="Parser-5757"><a href="#Parser-5757"><span class="linenos">5757</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> +</span><span id="Parser-5758"><a href="#Parser-5758"><span class="linenos">5758</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-5759"><a href="#Parser-5759"><span class="linenos">5759</span></a> <span class="n">over</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-5760"><a href="#Parser-5760"><span class="linenos">5760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-5761"><a href="#Parser-5761"><span class="linenos">5761</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">):</span> +</span><span id="Parser-5762"><a href="#Parser-5762"><span class="linenos">5762</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5763"><a href="#Parser-5763"><span class="linenos">5763</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5764"><a href="#Parser-5764"><span class="linenos">5764</span></a> <span class="n">over</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-5765"><a href="#Parser-5765"><span class="linenos">5765</span></a> +</span><span id="Parser-5766"><a href="#Parser-5766"><span class="linenos">5766</span></a> <span class="k">if</span> <span class="n">comments</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Parser-5767"><a href="#Parser-5767"><span class="linenos">5767</span></a> <span class="n">func</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> </span><span id="Parser-5768"><a href="#Parser-5768"><span class="linenos">5768</span></a> -</span><span id="Parser-5769"><a href="#Parser-5769"><span class="linenos">5769</span></a> <span class="n">window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5770"><a href="#Parser-5770"><span class="linenos">5770</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> -</span><span id="Parser-5771"><a href="#Parser-5771"><span class="linenos">5771</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-5772"><a href="#Parser-5772"><span class="linenos">5772</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5773"><a href="#Parser-5773"><span class="linenos">5773</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="Parser-5774"><a href="#Parser-5774"><span class="linenos">5774</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="Parser-5775"><a href="#Parser-5775"><span class="linenos">5775</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> -</span><span id="Parser-5776"><a href="#Parser-5776"><span class="linenos">5776</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> -</span><span id="Parser-5777"><a href="#Parser-5777"><span class="linenos">5777</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> -</span><span id="Parser-5778"><a href="#Parser-5778"><span class="linenos">5778</span></a> <span class="n">first</span><span class="o">=</span><span class="n">first</span><span class="p">,</span> -</span><span id="Parser-5779"><a href="#Parser-5779"><span class="linenos">5779</span></a> <span class="p">)</span> -</span><span id="Parser-5780"><a href="#Parser-5780"><span class="linenos">5780</span></a> -</span><span id="Parser-5781"><a href="#Parser-5781"><span class="linenos">5781</span></a> <span class="c1"># This covers Oracle's FIRST/LAST syntax: aggregate KEEP (...) OVER (...)</span> -</span><span id="Parser-5782"><a href="#Parser-5782"><span class="linenos">5782</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-5783"><a href="#Parser-5783"><span class="linenos">5783</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">window</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="Parser-5784"><a href="#Parser-5784"><span class="linenos">5784</span></a> -</span><span id="Parser-5785"><a href="#Parser-5785"><span class="linenos">5785</span></a> <span class="k">return</span> <span class="n">window</span> +</span><span id="Parser-5769"><a href="#Parser-5769"><span class="linenos">5769</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-5770"><a href="#Parser-5770"><span class="linenos">5770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5771"><a href="#Parser-5771"><span class="linenos">5771</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> +</span><span id="Parser-5772"><a href="#Parser-5772"><span class="linenos">5772</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-5773"><a href="#Parser-5773"><span class="linenos">5773</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5774"><a href="#Parser-5774"><span class="linenos">5774</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-5775"><a href="#Parser-5775"><span class="linenos">5775</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> +</span><span id="Parser-5776"><a href="#Parser-5776"><span class="linenos">5776</span></a> <span class="p">)</span> +</span><span id="Parser-5777"><a href="#Parser-5777"><span class="linenos">5777</span></a> +</span><span id="Parser-5778"><a href="#Parser-5778"><span class="linenos">5778</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-5779"><a href="#Parser-5779"><span class="linenos">5779</span></a> +</span><span id="Parser-5780"><a href="#Parser-5780"><span class="linenos">5780</span></a> <span class="n">first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">)</span> +</span><span id="Parser-5781"><a href="#Parser-5781"><span class="linenos">5781</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LAST"</span><span class="p">):</span> +</span><span id="Parser-5782"><a href="#Parser-5782"><span class="linenos">5782</span></a> <span class="n">first</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-5783"><a href="#Parser-5783"><span class="linenos">5783</span></a> +</span><span id="Parser-5784"><a href="#Parser-5784"><span class="linenos">5784</span></a> <span class="n">partition</span><span class="p">,</span> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_and_order</span><span class="p">()</span> +</span><span id="Parser-5785"><a href="#Parser-5785"><span class="linenos">5785</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> </span><span id="Parser-5786"><a href="#Parser-5786"><span class="linenos">5786</span></a> -</span><span id="Parser-5787"><a href="#Parser-5787"><span class="linenos">5787</span></a> <span class="k">def</span> <span class="nf">_parse_partition_and_order</span><span class="p">(</span> -</span><span id="Parser-5788"><a href="#Parser-5788"><span class="linenos">5788</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-5789"><a href="#Parser-5789"><span class="linenos">5789</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-5790"><a href="#Parser-5790"><span class="linenos">5790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="Parser-5791"><a href="#Parser-5791"><span class="linenos">5791</span></a> -</span><span id="Parser-5792"><a href="#Parser-5792"><span class="linenos">5792</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</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">Expression</span><span class="p">]]:</span> -</span><span id="Parser-5793"><a href="#Parser-5793"><span class="linenos">5793</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> -</span><span id="Parser-5794"><a href="#Parser-5794"><span class="linenos">5794</span></a> -</span><span id="Parser-5795"><a href="#Parser-5795"><span class="linenos">5795</span></a> <span class="k">return</span> <span class="p">{</span> -</span><span id="Parser-5796"><a href="#Parser-5796"><span class="linenos">5796</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-5797"><a href="#Parser-5797"><span class="linenos">5797</span></a> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNBOUNDED"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"UNBOUNDED"</span><span class="p">)</span> -</span><span id="Parser-5798"><a href="#Parser-5798"><span class="linenos">5798</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CURRENT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"CURRENT ROW"</span><span class="p">)</span> -</span><span id="Parser-5799"><a href="#Parser-5799"><span class="linenos">5799</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-5800"><a href="#Parser-5800"><span class="linenos">5800</span></a> <span class="p">),</span> -</span><span id="Parser-5801"><a href="#Parser-5801"><span class="linenos">5801</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="Parser-5802"><a href="#Parser-5802"><span class="linenos">5802</span></a> <span class="p">}</span> +</span><span id="Parser-5787"><a href="#Parser-5787"><span class="linenos">5787</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-5788"><a href="#Parser-5788"><span class="linenos">5788</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="Parser-5789"><a href="#Parser-5789"><span class="linenos">5789</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="Parser-5790"><a href="#Parser-5790"><span class="linenos">5790</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="Parser-5791"><a href="#Parser-5791"><span class="linenos">5791</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="Parser-5792"><a href="#Parser-5792"><span class="linenos">5792</span></a> +</span><span id="Parser-5793"><a href="#Parser-5793"><span class="linenos">5793</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5794"><a href="#Parser-5794"><span class="linenos">5794</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> +</span><span id="Parser-5795"><a href="#Parser-5795"><span class="linenos">5795</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-5796"><a href="#Parser-5796"><span class="linenos">5796</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="Parser-5797"><a href="#Parser-5797"><span class="linenos">5797</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="Parser-5798"><a href="#Parser-5798"><span class="linenos">5798</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="Parser-5799"><a href="#Parser-5799"><span class="linenos">5799</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="Parser-5800"><a href="#Parser-5800"><span class="linenos">5800</span></a> <span class="p">)</span> +</span><span id="Parser-5801"><a href="#Parser-5801"><span class="linenos">5801</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-5802"><a href="#Parser-5802"><span class="linenos">5802</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-5803"><a href="#Parser-5803"><span class="linenos">5803</span></a> -</span><span id="Parser-5804"><a href="#Parser-5804"><span class="linenos">5804</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> -</span><span id="Parser-5805"><a href="#Parser-5805"><span class="linenos">5805</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-5806"><a href="#Parser-5806"><span class="linenos">5806</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5807"><a href="#Parser-5807"><span class="linenos">5807</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-5808"><a href="#Parser-5808"><span class="linenos">5808</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="Parser-5809"><a href="#Parser-5809"><span class="linenos">5809</span></a> -</span><span id="Parser-5810"><a href="#Parser-5810"><span class="linenos">5810</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> -</span><span id="Parser-5811"><a href="#Parser-5811"><span class="linenos">5811</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5812"><a href="#Parser-5812"><span class="linenos">5812</span></a> -</span><span id="Parser-5813"><a href="#Parser-5813"><span class="linenos">5813</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-5814"><a href="#Parser-5814"><span class="linenos">5814</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5815"><a href="#Parser-5815"><span class="linenos">5815</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> -</span><span id="Parser-5816"><a href="#Parser-5816"><span class="linenos">5816</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> -</span><span id="Parser-5817"><a href="#Parser-5817"><span class="linenos">5817</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5818"><a href="#Parser-5818"><span class="linenos">5818</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> -</span><span id="Parser-5819"><a href="#Parser-5819"><span class="linenos">5819</span></a> <span class="p">)</span> -</span><span id="Parser-5820"><a href="#Parser-5820"><span class="linenos">5820</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> -</span><span id="Parser-5821"><a href="#Parser-5821"><span class="linenos">5821</span></a> <span class="k">return</span> <span class="n">aliases</span> -</span><span id="Parser-5822"><a href="#Parser-5822"><span class="linenos">5822</span></a> -</span><span id="Parser-5823"><a href="#Parser-5823"><span class="linenos">5823</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="Parser-5824"><a href="#Parser-5824"><span class="linenos">5824</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ALIASES</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> -</span><span id="Parser-5825"><a href="#Parser-5825"><span class="linenos">5825</span></a> <span class="p">)</span> -</span><span id="Parser-5826"><a href="#Parser-5826"><span class="linenos">5826</span></a> -</span><span id="Parser-5827"><a href="#Parser-5827"><span class="linenos">5827</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-5828"><a href="#Parser-5828"><span class="linenos">5828</span></a> <span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> -</span><span id="Parser-5829"><a href="#Parser-5829"><span class="linenos">5829</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="Parser-5830"><a href="#Parser-5830"><span class="linenos">5830</span></a> <span class="n">column</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-5804"><a href="#Parser-5804"><span class="linenos">5804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-5805"><a href="#Parser-5805"><span class="linenos">5805</span></a> +</span><span id="Parser-5806"><a href="#Parser-5806"><span class="linenos">5806</span></a> <span class="n">window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5807"><a href="#Parser-5807"><span class="linenos">5807</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> +</span><span id="Parser-5808"><a href="#Parser-5808"><span class="linenos">5808</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-5809"><a href="#Parser-5809"><span class="linenos">5809</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5810"><a href="#Parser-5810"><span class="linenos">5810</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="Parser-5811"><a href="#Parser-5811"><span class="linenos">5811</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="Parser-5812"><a href="#Parser-5812"><span class="linenos">5812</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> +</span><span id="Parser-5813"><a href="#Parser-5813"><span class="linenos">5813</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> +</span><span id="Parser-5814"><a href="#Parser-5814"><span class="linenos">5814</span></a> <span class="n">over</span><span class="o">=</span><span class="n">over</span><span class="p">,</span> +</span><span id="Parser-5815"><a href="#Parser-5815"><span class="linenos">5815</span></a> <span class="n">first</span><span class="o">=</span><span class="n">first</span><span class="p">,</span> +</span><span id="Parser-5816"><a href="#Parser-5816"><span class="linenos">5816</span></a> <span class="p">)</span> +</span><span id="Parser-5817"><a href="#Parser-5817"><span class="linenos">5817</span></a> +</span><span id="Parser-5818"><a href="#Parser-5818"><span class="linenos">5818</span></a> <span class="c1"># This covers Oracle's FIRST/LAST syntax: aggregate KEEP (...) OVER (...)</span> +</span><span id="Parser-5819"><a href="#Parser-5819"><span class="linenos">5819</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_BEFORE_PAREN_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-5820"><a href="#Parser-5820"><span class="linenos">5820</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">window</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="Parser-5821"><a href="#Parser-5821"><span class="linenos">5821</span></a> +</span><span id="Parser-5822"><a href="#Parser-5822"><span class="linenos">5822</span></a> <span class="k">return</span> <span class="n">window</span> +</span><span id="Parser-5823"><a href="#Parser-5823"><span class="linenos">5823</span></a> +</span><span id="Parser-5824"><a href="#Parser-5824"><span class="linenos">5824</span></a> <span class="k">def</span> <span class="nf">_parse_partition_and_order</span><span class="p">(</span> +</span><span id="Parser-5825"><a href="#Parser-5825"><span class="linenos">5825</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-5826"><a href="#Parser-5826"><span class="linenos">5826</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-5827"><a href="#Parser-5827"><span class="linenos">5827</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> +</span><span id="Parser-5828"><a href="#Parser-5828"><span class="linenos">5828</span></a> +</span><span id="Parser-5829"><a href="#Parser-5829"><span class="linenos">5829</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</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">Expression</span><span class="p">]]:</span> +</span><span id="Parser-5830"><a href="#Parser-5830"><span class="linenos">5830</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> </span><span id="Parser-5831"><a href="#Parser-5831"><span class="linenos">5831</span></a> -</span><span id="Parser-5832"><a href="#Parser-5832"><span class="linenos">5832</span></a> <span class="c1"># Moves the comment next to the alias in `expr /* comment */ AS alias`</span> -</span><span id="Parser-5833"><a href="#Parser-5833"><span class="linenos">5833</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">column</span> <span class="ow">and</span> <span class="n">column</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> -</span><span id="Parser-5834"><a href="#Parser-5834"><span class="linenos">5834</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> -</span><span id="Parser-5835"><a href="#Parser-5835"><span class="linenos">5835</span></a> -</span><span id="Parser-5836"><a href="#Parser-5836"><span class="linenos">5836</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5837"><a href="#Parser-5837"><span class="linenos">5837</span></a> -</span><span id="Parser-5838"><a href="#Parser-5838"><span class="linenos">5838</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> -</span><span id="Parser-5839"><a href="#Parser-5839"><span class="linenos">5839</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-5840"><a href="#Parser-5840"><span class="linenos">5840</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-5841"><a href="#Parser-5841"><span class="linenos">5841</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-5842"><a href="#Parser-5842"><span class="linenos">5842</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5843"><a href="#Parser-5843"><span class="linenos">5843</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> -</span><span id="Parser-5844"><a href="#Parser-5844"><span class="linenos">5844</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Parser-5845"><a href="#Parser-5845"><span class="linenos">5845</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> -</span><span id="Parser-5846"><a href="#Parser-5846"><span class="linenos">5846</span></a> <span class="p">):</span> -</span><span id="Parser-5847"><a href="#Parser-5847"><span class="linenos">5847</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> -</span><span id="Parser-5848"><a href="#Parser-5848"><span class="linenos">5848</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="Parser-5832"><a href="#Parser-5832"><span class="linenos">5832</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="Parser-5833"><a href="#Parser-5833"><span class="linenos">5833</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-5834"><a href="#Parser-5834"><span class="linenos">5834</span></a> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"UNBOUNDED"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"UNBOUNDED"</span><span class="p">)</span> +</span><span id="Parser-5835"><a href="#Parser-5835"><span class="linenos">5835</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CURRENT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">"CURRENT ROW"</span><span class="p">)</span> +</span><span id="Parser-5836"><a href="#Parser-5836"><span class="linenos">5836</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-5837"><a href="#Parser-5837"><span class="linenos">5837</span></a> <span class="p">),</span> +</span><span id="Parser-5838"><a href="#Parser-5838"><span class="linenos">5838</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="Parser-5839"><a href="#Parser-5839"><span class="linenos">5839</span></a> <span class="p">}</span> +</span><span id="Parser-5840"><a href="#Parser-5840"><span class="linenos">5840</span></a> +</span><span id="Parser-5841"><a href="#Parser-5841"><span class="linenos">5841</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> +</span><span id="Parser-5842"><a href="#Parser-5842"><span class="linenos">5842</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-5843"><a href="#Parser-5843"><span class="linenos">5843</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5844"><a href="#Parser-5844"><span class="linenos">5844</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-5845"><a href="#Parser-5845"><span class="linenos">5845</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="Parser-5846"><a href="#Parser-5846"><span class="linenos">5846</span></a> +</span><span id="Parser-5847"><a href="#Parser-5847"><span class="linenos">5847</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> +</span><span id="Parser-5848"><a href="#Parser-5848"><span class="linenos">5848</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-5849"><a href="#Parser-5849"><span class="linenos">5849</span></a> -</span><span id="Parser-5850"><a href="#Parser-5850"><span class="linenos">5850</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Parser-5851"><a href="#Parser-5851"><span class="linenos">5851</span></a> -</span><span id="Parser-5852"><a href="#Parser-5852"><span class="linenos">5852</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5853"><a href="#Parser-5853"><span class="linenos">5853</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">):</span> -</span><span id="Parser-5854"><a href="#Parser-5854"><span class="linenos">5854</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5855"><a href="#Parser-5855"><span class="linenos">5855</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5856"><a href="#Parser-5856"><span class="linenos">5856</span></a> -</span><span id="Parser-5857"><a href="#Parser-5857"><span class="linenos">5857</span></a> <span class="k">def</span> <span class="nf">_parse_string_as_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span> -</span><span id="Parser-5858"><a href="#Parser-5858"><span class="linenos">5858</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5850"><a href="#Parser-5850"><span class="linenos">5850</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-5851"><a href="#Parser-5851"><span class="linenos">5851</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5852"><a href="#Parser-5852"><span class="linenos">5852</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> +</span><span id="Parser-5853"><a href="#Parser-5853"><span class="linenos">5853</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> +</span><span id="Parser-5854"><a href="#Parser-5854"><span class="linenos">5854</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5855"><a href="#Parser-5855"><span class="linenos">5855</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> +</span><span id="Parser-5856"><a href="#Parser-5856"><span class="linenos">5856</span></a> <span class="p">)</span> +</span><span id="Parser-5857"><a href="#Parser-5857"><span class="linenos">5857</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> +</span><span id="Parser-5858"><a href="#Parser-5858"><span class="linenos">5858</span></a> <span class="k">return</span> <span class="n">aliases</span> </span><span id="Parser-5859"><a href="#Parser-5859"><span class="linenos">5859</span></a> -</span><span id="Parser-5860"><a href="#Parser-5860"><span class="linenos">5860</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5861"><a href="#Parser-5861"><span class="linenos">5861</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">):</span> -</span><span id="Parser-5862"><a href="#Parser-5862"><span class="linenos">5862</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5863"><a href="#Parser-5863"><span class="linenos">5863</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5864"><a href="#Parser-5864"><span class="linenos">5864</span></a> -</span><span id="Parser-5865"><a href="#Parser-5865"><span class="linenos">5865</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5866"><a href="#Parser-5866"><span class="linenos">5866</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> -</span><span id="Parser-5867"><a href="#Parser-5867"><span class="linenos">5867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5868"><a href="#Parser-5868"><span class="linenos">5868</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5869"><a href="#Parser-5869"><span class="linenos">5869</span></a> -</span><span id="Parser-5870"><a href="#Parser-5870"><span class="linenos">5870</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span> -</span><span id="Parser-5871"><a href="#Parser-5871"><span class="linenos">5871</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-5872"><a href="#Parser-5872"><span class="linenos">5872</span></a> <span class="n">any_token</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="Parser-5873"><a href="#Parser-5873"><span class="linenos">5873</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-5874"><a href="#Parser-5874"><span class="linenos">5874</span></a> <span class="n">upper</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="Parser-5875"><a href="#Parser-5875"><span class="linenos">5875</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5876"><a href="#Parser-5876"><span class="linenos">5876</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-5877"><a href="#Parser-5877"><span class="linenos">5877</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> -</span><span id="Parser-5878"><a href="#Parser-5878"><span class="linenos">5878</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="Parser-5879"><a href="#Parser-5879"><span class="linenos">5879</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="k">if</span> <span class="n">tokens</span> <span class="k">else</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-5880"><a href="#Parser-5880"><span class="linenos">5880</span></a> <span class="p">):</span> -</span><span id="Parser-5881"><a href="#Parser-5881"><span class="linenos">5881</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5882"><a href="#Parser-5882"><span class="linenos">5882</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">upper</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-5883"><a href="#Parser-5883"><span class="linenos">5883</span></a> <span class="p">)</span> -</span><span id="Parser-5884"><a href="#Parser-5884"><span class="linenos">5884</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5885"><a href="#Parser-5885"><span class="linenos">5885</span></a> -</span><span id="Parser-5886"><a href="#Parser-5886"><span class="linenos">5886</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignore_reserved</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">Token</span><span class="p">]:</span> -</span><span id="Parser-5887"><a href="#Parser-5887"><span class="linenos">5887</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="p">(</span><span class="n">ignore_reserved</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">):</span> -</span><span id="Parser-5888"><a href="#Parser-5888"><span class="linenos">5888</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-5889"><a href="#Parser-5889"><span class="linenos">5889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-5890"><a href="#Parser-5890"><span class="linenos">5890</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5891"><a href="#Parser-5891"><span class="linenos">5891</span></a> -</span><span id="Parser-5892"><a href="#Parser-5892"><span class="linenos">5892</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5893"><a href="#Parser-5893"><span class="linenos">5893</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-5894"><a href="#Parser-5894"><span class="linenos">5894</span></a> -</span><span id="Parser-5895"><a href="#Parser-5895"><span class="linenos">5895</span></a> <span class="k">def</span> <span class="nf">_parse_primary_or_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5896"><a href="#Parser-5896"><span class="linenos">5896</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-5897"><a href="#Parser-5897"><span class="linenos">5897</span></a> -</span><span id="Parser-5898"><a href="#Parser-5898"><span class="linenos">5898</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5899"><a href="#Parser-5899"><span class="linenos">5899</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NULL_TOKENS</span><span class="p">):</span> -</span><span id="Parser-5900"><a href="#Parser-5900"><span class="linenos">5900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5901"><a href="#Parser-5901"><span class="linenos">5901</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5902"><a href="#Parser-5902"><span class="linenos">5902</span></a> -</span><span id="Parser-5903"><a href="#Parser-5903"><span class="linenos">5903</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5904"><a href="#Parser-5904"><span class="linenos">5904</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> -</span><span id="Parser-5905"><a href="#Parser-5905"><span class="linenos">5905</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5906"><a href="#Parser-5906"><span class="linenos">5906</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> -</span><span id="Parser-5907"><a href="#Parser-5907"><span class="linenos">5907</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5908"><a href="#Parser-5908"><span class="linenos">5908</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5909"><a href="#Parser-5909"><span class="linenos">5909</span></a> -</span><span id="Parser-5910"><a href="#Parser-5910"><span class="linenos">5910</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5911"><a href="#Parser-5911"><span class="linenos">5911</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> -</span><span id="Parser-5912"><a href="#Parser-5912"><span class="linenos">5912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-5913"><a href="#Parser-5913"><span class="linenos">5913</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-5914"><a href="#Parser-5914"><span class="linenos">5914</span></a> -</span><span id="Parser-5915"><a href="#Parser-5915"><span class="linenos">5915</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">:</span> -</span><span id="Parser-5916"><a href="#Parser-5916"><span class="linenos">5916</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_or_var</span><span class="p">()</span> -</span><span id="Parser-5917"><a href="#Parser-5917"><span class="linenos">5917</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-5918"><a href="#Parser-5918"><span class="linenos">5918</span></a> -</span><span id="Parser-5919"><a href="#Parser-5919"><span class="linenos">5919</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5920"><a href="#Parser-5920"><span class="linenos">5920</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> -</span><span id="Parser-5921"><a href="#Parser-5921"><span class="linenos">5921</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-5922"><a href="#Parser-5922"><span class="linenos">5922</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> -</span><span id="Parser-5923"><a href="#Parser-5923"><span class="linenos">5923</span></a> <span class="k">return</span> <span class="n">placeholder</span> -</span><span id="Parser-5924"><a href="#Parser-5924"><span class="linenos">5924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-5925"><a href="#Parser-5925"><span class="linenos">5925</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5926"><a href="#Parser-5926"><span class="linenos">5926</span></a> -</span><span id="Parser-5927"><a href="#Parser-5927"><span class="linenos">5927</span></a> <span class="k">def</span> <span class="nf">_parse_star_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">keywords</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-5928"><a href="#Parser-5928"><span class="linenos">5928</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">keywords</span><span class="p">):</span> -</span><span id="Parser-5929"><a href="#Parser-5929"><span class="linenos">5929</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-5930"><a href="#Parser-5930"><span class="linenos">5930</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-5931"><a href="#Parser-5931"><span class="linenos">5931</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="Parser-5932"><a href="#Parser-5932"><span class="linenos">5932</span></a> -</span><span id="Parser-5933"><a href="#Parser-5933"><span class="linenos">5933</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="Parser-5934"><a href="#Parser-5934"><span class="linenos">5934</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-5935"><a href="#Parser-5935"><span class="linenos">5935</span></a> -</span><span id="Parser-5936"><a href="#Parser-5936"><span class="linenos">5936</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-5937"><a href="#Parser-5937"><span class="linenos">5937</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> -</span><span id="Parser-5938"><a href="#Parser-5938"><span class="linenos">5938</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5939"><a href="#Parser-5939"><span class="linenos">5939</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-5940"><a href="#Parser-5940"><span class="linenos">5940</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="Parser-5941"><a href="#Parser-5941"><span class="linenos">5941</span></a> -</span><span id="Parser-5942"><a href="#Parser-5942"><span class="linenos">5942</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> -</span><span id="Parser-5943"><a href="#Parser-5943"><span class="linenos">5943</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> -</span><span id="Parser-5944"><a href="#Parser-5944"><span class="linenos">5944</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-5945"><a href="#Parser-5945"><span class="linenos">5945</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-5946"><a href="#Parser-5946"><span class="linenos">5946</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> -</span><span id="Parser-5947"><a href="#Parser-5947"><span class="linenos">5947</span></a> -</span><span id="Parser-5948"><a href="#Parser-5948"><span class="linenos">5948</span></a> <span class="k">return</span> <span class="n">items</span> -</span><span id="Parser-5949"><a href="#Parser-5949"><span class="linenos">5949</span></a> -</span><span id="Parser-5950"><a href="#Parser-5950"><span class="linenos">5950</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> -</span><span id="Parser-5951"><a href="#Parser-5951"><span class="linenos">5951</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="Parser-5952"><a href="#Parser-5952"><span class="linenos">5952</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5953"><a href="#Parser-5953"><span class="linenos">5953</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-5954"><a href="#Parser-5954"><span class="linenos">5954</span></a> -</span><span id="Parser-5955"><a href="#Parser-5955"><span class="linenos">5955</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="Parser-5956"><a href="#Parser-5956"><span class="linenos">5956</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-5957"><a href="#Parser-5957"><span class="linenos">5957</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="Parser-5958"><a href="#Parser-5958"><span class="linenos">5958</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-5959"><a href="#Parser-5959"><span class="linenos">5959</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="Parser-5960"><a href="#Parser-5960"><span class="linenos">5960</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> -</span><span id="Parser-5961"><a href="#Parser-5961"><span class="linenos">5961</span></a> <span class="p">)</span> -</span><span id="Parser-5962"><a href="#Parser-5962"><span class="linenos">5962</span></a> -</span><span id="Parser-5963"><a href="#Parser-5963"><span class="linenos">5963</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-5964"><a href="#Parser-5964"><span class="linenos">5964</span></a> -</span><span id="Parser-5965"><a href="#Parser-5965"><span class="linenos">5965</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5966"><a href="#Parser-5966"><span class="linenos">5966</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span><span class="p">)</span> -</span><span id="Parser-5967"><a href="#Parser-5967"><span class="linenos">5967</span></a> -</span><span id="Parser-5968"><a href="#Parser-5968"><span class="linenos">5968</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> -</span><span id="Parser-5969"><a href="#Parser-5969"><span class="linenos">5969</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-5970"><a href="#Parser-5970"><span class="linenos">5970</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5971"><a href="#Parser-5971"><span class="linenos">5971</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span> -</span><span id="Parser-5972"><a href="#Parser-5972"><span class="linenos">5972</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">),</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span> -</span><span id="Parser-5973"><a href="#Parser-5973"><span class="linenos">5973</span></a> <span class="p">)</span> -</span><span id="Parser-5974"><a href="#Parser-5974"><span class="linenos">5974</span></a> -</span><span id="Parser-5975"><a href="#Parser-5975"><span class="linenos">5975</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> -</span><span id="Parser-5976"><a href="#Parser-5976"><span class="linenos">5976</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="Parser-5977"><a href="#Parser-5977"><span class="linenos">5977</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">wrapped</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">optional</span><span class="p">:</span> -</span><span id="Parser-5978"><a href="#Parser-5978"><span class="linenos">5978</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> -</span><span id="Parser-5979"><a href="#Parser-5979"><span class="linenos">5979</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-5980"><a href="#Parser-5980"><span class="linenos">5980</span></a> <span class="k">if</span> <span class="n">wrapped</span><span class="p">:</span> -</span><span id="Parser-5981"><a href="#Parser-5981"><span class="linenos">5981</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-5982"><a href="#Parser-5982"><span class="linenos">5982</span></a> <span class="k">return</span> <span class="n">parse_result</span> -</span><span id="Parser-5983"><a href="#Parser-5983"><span class="linenos">5983</span></a> -</span><span id="Parser-5984"><a href="#Parser-5984"><span class="linenos">5984</span></a> <span class="k">def</span> <span class="nf">_parse_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5985"><a href="#Parser-5985"><span class="linenos">5985</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-5860"><a href="#Parser-5860"><span class="linenos">5860</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ALIAS_TOKENS</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="Parser-5861"><a href="#Parser-5861"><span class="linenos">5861</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ALIASES</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_as_identifier</span><span class="p">()</span> +</span><span id="Parser-5862"><a href="#Parser-5862"><span class="linenos">5862</span></a> <span class="p">)</span> +</span><span id="Parser-5863"><a href="#Parser-5863"><span class="linenos">5863</span></a> +</span><span id="Parser-5864"><a href="#Parser-5864"><span class="linenos">5864</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-5865"><a href="#Parser-5865"><span class="linenos">5865</span></a> <span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">())</span> +</span><span id="Parser-5866"><a href="#Parser-5866"><span class="linenos">5866</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="n">comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="Parser-5867"><a href="#Parser-5867"><span class="linenos">5867</span></a> <span class="n">column</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-5868"><a href="#Parser-5868"><span class="linenos">5868</span></a> +</span><span id="Parser-5869"><a href="#Parser-5869"><span class="linenos">5869</span></a> <span class="c1"># Moves the comment next to the alias in `expr /* comment */ AS alias`</span> +</span><span id="Parser-5870"><a href="#Parser-5870"><span class="linenos">5870</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">column</span> <span class="ow">and</span> <span class="n">column</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> +</span><span id="Parser-5871"><a href="#Parser-5871"><span class="linenos">5871</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">pop_comments</span><span class="p">()</span> +</span><span id="Parser-5872"><a href="#Parser-5872"><span class="linenos">5872</span></a> +</span><span id="Parser-5873"><a href="#Parser-5873"><span class="linenos">5873</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-5874"><a href="#Parser-5874"><span class="linenos">5874</span></a> +</span><span id="Parser-5875"><a href="#Parser-5875"><span class="linenos">5875</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> +</span><span id="Parser-5876"><a href="#Parser-5876"><span class="linenos">5876</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-5877"><a href="#Parser-5877"><span class="linenos">5877</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-5878"><a href="#Parser-5878"><span class="linenos">5878</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-5879"><a href="#Parser-5879"><span class="linenos">5879</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5880"><a href="#Parser-5880"><span class="linenos">5880</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> +</span><span id="Parser-5881"><a href="#Parser-5881"><span class="linenos">5881</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Parser-5882"><a href="#Parser-5882"><span class="linenos">5882</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">)</span> +</span><span id="Parser-5883"><a href="#Parser-5883"><span class="linenos">5883</span></a> <span class="p">):</span> +</span><span id="Parser-5884"><a href="#Parser-5884"><span class="linenos">5884</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> +</span><span id="Parser-5885"><a href="#Parser-5885"><span class="linenos">5885</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="Parser-5886"><a href="#Parser-5886"><span class="linenos">5886</span></a> +</span><span id="Parser-5887"><a href="#Parser-5887"><span class="linenos">5887</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Parser-5888"><a href="#Parser-5888"><span class="linenos">5888</span></a> +</span><span id="Parser-5889"><a href="#Parser-5889"><span class="linenos">5889</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5890"><a href="#Parser-5890"><span class="linenos">5890</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">):</span> +</span><span id="Parser-5891"><a href="#Parser-5891"><span class="linenos">5891</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5892"><a href="#Parser-5892"><span class="linenos">5892</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5893"><a href="#Parser-5893"><span class="linenos">5893</span></a> +</span><span id="Parser-5894"><a href="#Parser-5894"><span class="linenos">5894</span></a> <span class="k">def</span> <span class="nf">_parse_string_as_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]:</span> +</span><span id="Parser-5895"><a href="#Parser-5895"><span class="linenos">5895</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5896"><a href="#Parser-5896"><span class="linenos">5896</span></a> +</span><span id="Parser-5897"><a href="#Parser-5897"><span class="linenos">5897</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5898"><a href="#Parser-5898"><span class="linenos">5898</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">):</span> +</span><span id="Parser-5899"><a href="#Parser-5899"><span class="linenos">5899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5900"><a href="#Parser-5900"><span class="linenos">5900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5901"><a href="#Parser-5901"><span class="linenos">5901</span></a> +</span><span id="Parser-5902"><a href="#Parser-5902"><span class="linenos">5902</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5903"><a href="#Parser-5903"><span class="linenos">5903</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> +</span><span id="Parser-5904"><a href="#Parser-5904"><span class="linenos">5904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5905"><a href="#Parser-5905"><span class="linenos">5905</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5906"><a href="#Parser-5906"><span class="linenos">5906</span></a> +</span><span id="Parser-5907"><a href="#Parser-5907"><span class="linenos">5907</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span> +</span><span id="Parser-5908"><a href="#Parser-5908"><span class="linenos">5908</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-5909"><a href="#Parser-5909"><span class="linenos">5909</span></a> <span class="n">any_token</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="Parser-5910"><a href="#Parser-5910"><span class="linenos">5910</span></a> <span class="n">tokens</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">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-5911"><a href="#Parser-5911"><span class="linenos">5911</span></a> <span class="n">upper</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="Parser-5912"><a href="#Parser-5912"><span class="linenos">5912</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5913"><a href="#Parser-5913"><span class="linenos">5913</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-5914"><a href="#Parser-5914"><span class="linenos">5914</span></a> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> +</span><span id="Parser-5915"><a href="#Parser-5915"><span class="linenos">5915</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="Parser-5916"><a href="#Parser-5916"><span class="linenos">5916</span></a> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span> <span class="k">if</span> <span class="n">tokens</span> <span class="k">else</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-5917"><a href="#Parser-5917"><span class="linenos">5917</span></a> <span class="p">):</span> +</span><span id="Parser-5918"><a href="#Parser-5918"><span class="linenos">5918</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5919"><a href="#Parser-5919"><span class="linenos">5919</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">upper</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-5920"><a href="#Parser-5920"><span class="linenos">5920</span></a> <span class="p">)</span> +</span><span id="Parser-5921"><a href="#Parser-5921"><span class="linenos">5921</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5922"><a href="#Parser-5922"><span class="linenos">5922</span></a> +</span><span id="Parser-5923"><a href="#Parser-5923"><span class="linenos">5923</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignore_reserved</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">Token</span><span class="p">]:</span> +</span><span id="Parser-5924"><a href="#Parser-5924"><span class="linenos">5924</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="p">(</span><span class="n">ignore_reserved</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_TOKENS</span><span class="p">):</span> +</span><span id="Parser-5925"><a href="#Parser-5925"><span class="linenos">5925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-5926"><a href="#Parser-5926"><span class="linenos">5926</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-5927"><a href="#Parser-5927"><span class="linenos">5927</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5928"><a href="#Parser-5928"><span class="linenos">5928</span></a> +</span><span id="Parser-5929"><a href="#Parser-5929"><span class="linenos">5929</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5930"><a href="#Parser-5930"><span class="linenos">5930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-5931"><a href="#Parser-5931"><span class="linenos">5931</span></a> +</span><span id="Parser-5932"><a href="#Parser-5932"><span class="linenos">5932</span></a> <span class="k">def</span> <span class="nf">_parse_primary_or_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5933"><a href="#Parser-5933"><span class="linenos">5933</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-5934"><a href="#Parser-5934"><span class="linenos">5934</span></a> +</span><span id="Parser-5935"><a href="#Parser-5935"><span class="linenos">5935</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5936"><a href="#Parser-5936"><span class="linenos">5936</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NULL_TOKENS</span><span class="p">):</span> +</span><span id="Parser-5937"><a href="#Parser-5937"><span class="linenos">5937</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5938"><a href="#Parser-5938"><span class="linenos">5938</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5939"><a href="#Parser-5939"><span class="linenos">5939</span></a> +</span><span id="Parser-5940"><a href="#Parser-5940"><span class="linenos">5940</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5941"><a href="#Parser-5941"><span class="linenos">5941</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> +</span><span id="Parser-5942"><a href="#Parser-5942"><span class="linenos">5942</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5943"><a href="#Parser-5943"><span class="linenos">5943</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> +</span><span id="Parser-5944"><a href="#Parser-5944"><span class="linenos">5944</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5945"><a href="#Parser-5945"><span class="linenos">5945</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5946"><a href="#Parser-5946"><span class="linenos">5946</span></a> +</span><span id="Parser-5947"><a href="#Parser-5947"><span class="linenos">5947</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5948"><a href="#Parser-5948"><span class="linenos">5948</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> +</span><span id="Parser-5949"><a href="#Parser-5949"><span class="linenos">5949</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-5950"><a href="#Parser-5950"><span class="linenos">5950</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-5951"><a href="#Parser-5951"><span class="linenos">5951</span></a> +</span><span id="Parser-5952"><a href="#Parser-5952"><span class="linenos">5952</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">:</span> +</span><span id="Parser-5953"><a href="#Parser-5953"><span class="linenos">5953</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_or_var</span><span class="p">()</span> +</span><span id="Parser-5954"><a href="#Parser-5954"><span class="linenos">5954</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-5955"><a href="#Parser-5955"><span class="linenos">5955</span></a> +</span><span id="Parser-5956"><a href="#Parser-5956"><span class="linenos">5956</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5957"><a href="#Parser-5957"><span class="linenos">5957</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> +</span><span id="Parser-5958"><a href="#Parser-5958"><span class="linenos">5958</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-5959"><a href="#Parser-5959"><span class="linenos">5959</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> +</span><span id="Parser-5960"><a href="#Parser-5960"><span class="linenos">5960</span></a> <span class="k">return</span> <span class="n">placeholder</span> +</span><span id="Parser-5961"><a href="#Parser-5961"><span class="linenos">5961</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-5962"><a href="#Parser-5962"><span class="linenos">5962</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5963"><a href="#Parser-5963"><span class="linenos">5963</span></a> +</span><span id="Parser-5964"><a href="#Parser-5964"><span class="linenos">5964</span></a> <span class="k">def</span> <span class="nf">_parse_star_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">keywords</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</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">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-5965"><a href="#Parser-5965"><span class="linenos">5965</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">keywords</span><span class="p">):</span> +</span><span id="Parser-5966"><a href="#Parser-5966"><span class="linenos">5966</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-5967"><a href="#Parser-5967"><span class="linenos">5967</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-5968"><a href="#Parser-5968"><span class="linenos">5968</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-5969"><a href="#Parser-5969"><span class="linenos">5969</span></a> +</span><span id="Parser-5970"><a href="#Parser-5970"><span class="linenos">5970</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="Parser-5971"><a href="#Parser-5971"><span class="linenos">5971</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-5972"><a href="#Parser-5972"><span class="linenos">5972</span></a> +</span><span id="Parser-5973"><a href="#Parser-5973"><span class="linenos">5973</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-5974"><a href="#Parser-5974"><span class="linenos">5974</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> +</span><span id="Parser-5975"><a href="#Parser-5975"><span class="linenos">5975</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5976"><a href="#Parser-5976"><span class="linenos">5976</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-5977"><a href="#Parser-5977"><span class="linenos">5977</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="Parser-5978"><a href="#Parser-5978"><span class="linenos">5978</span></a> +</span><span id="Parser-5979"><a href="#Parser-5979"><span class="linenos">5979</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> +</span><span id="Parser-5980"><a href="#Parser-5980"><span class="linenos">5980</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="Parser-5981"><a href="#Parser-5981"><span class="linenos">5981</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-5982"><a href="#Parser-5982"><span class="linenos">5982</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-5983"><a href="#Parser-5983"><span class="linenos">5983</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="Parser-5984"><a href="#Parser-5984"><span class="linenos">5984</span></a> +</span><span id="Parser-5985"><a href="#Parser-5985"><span class="linenos">5985</span></a> <span class="k">return</span> <span class="n">items</span> </span><span id="Parser-5986"><a href="#Parser-5986"><span class="linenos">5986</span></a> -</span><span id="Parser-5987"><a href="#Parser-5987"><span class="linenos">5987</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5988"><a href="#Parser-5988"><span class="linenos">5988</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> -</span><span id="Parser-5989"><a href="#Parser-5989"><span class="linenos">5989</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-5990"><a href="#Parser-5990"><span class="linenos">5990</span></a> <span class="p">)</span> +</span><span id="Parser-5987"><a href="#Parser-5987"><span class="linenos">5987</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> +</span><span id="Parser-5988"><a href="#Parser-5988"><span class="linenos">5988</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="Parser-5989"><a href="#Parser-5989"><span class="linenos">5989</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-5990"><a href="#Parser-5990"><span class="linenos">5990</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> </span><span id="Parser-5991"><a href="#Parser-5991"><span class="linenos">5991</span></a> -</span><span id="Parser-5992"><a href="#Parser-5992"><span class="linenos">5992</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-5993"><a href="#Parser-5993"><span class="linenos">5993</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span> -</span><span id="Parser-5994"><a href="#Parser-5994"><span class="linenos">5994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Parser-5995"><a href="#Parser-5995"><span class="linenos">5995</span></a> <span class="p">)</span> -</span><span id="Parser-5996"><a href="#Parser-5996"><span class="linenos">5996</span></a> -</span><span id="Parser-5997"><a href="#Parser-5997"><span class="linenos">5997</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-5998"><a href="#Parser-5998"><span class="linenos">5998</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-5999"><a href="#Parser-5999"><span class="linenos">5999</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> -</span><span id="Parser-6000"><a href="#Parser-6000"><span class="linenos">6000</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-5992"><a href="#Parser-5992"><span class="linenos">5992</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="Parser-5993"><a href="#Parser-5993"><span class="linenos">5993</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-5994"><a href="#Parser-5994"><span class="linenos">5994</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="Parser-5995"><a href="#Parser-5995"><span class="linenos">5995</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-5996"><a href="#Parser-5996"><span class="linenos">5996</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="Parser-5997"><a href="#Parser-5997"><span class="linenos">5997</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> +</span><span id="Parser-5998"><a href="#Parser-5998"><span class="linenos">5998</span></a> <span class="p">)</span> +</span><span id="Parser-5999"><a href="#Parser-5999"><span class="linenos">5999</span></a> +</span><span id="Parser-6000"><a href="#Parser-6000"><span class="linenos">6000</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-6001"><a href="#Parser-6001"><span class="linenos">6001</span></a> -</span><span id="Parser-6002"><a href="#Parser-6002"><span class="linenos">6002</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> -</span><span id="Parser-6003"><a href="#Parser-6003"><span class="linenos">6003</span></a> -</span><span id="Parser-6004"><a href="#Parser-6004"><span class="linenos">6004</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-6005"><a href="#Parser-6005"><span class="linenos">6005</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-6006"><a href="#Parser-6006"><span class="linenos">6006</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-6007"><a href="#Parser-6007"><span class="linenos">6007</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> -</span><span id="Parser-6008"><a href="#Parser-6008"><span class="linenos">6008</span></a> <span class="n">mode</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-6009"><a href="#Parser-6009"><span class="linenos">6009</span></a> -</span><span id="Parser-6010"><a href="#Parser-6010"><span class="linenos">6010</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> -</span><span id="Parser-6011"><a href="#Parser-6011"><span class="linenos">6011</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> -</span><span id="Parser-6012"><a href="#Parser-6012"><span class="linenos">6012</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-6013"><a href="#Parser-6013"><span class="linenos">6013</span></a> <span class="k">break</span> -</span><span id="Parser-6014"><a href="#Parser-6014"><span class="linenos">6014</span></a> -</span><span id="Parser-6015"><a href="#Parser-6015"><span class="linenos">6015</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> -</span><span id="Parser-6016"><a href="#Parser-6016"><span class="linenos">6016</span></a> -</span><span id="Parser-6017"><a href="#Parser-6017"><span class="linenos">6017</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Commit</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">:</span> -</span><span id="Parser-6018"><a href="#Parser-6018"><span class="linenos">6018</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-6019"><a href="#Parser-6019"><span class="linenos">6019</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-6020"><a href="#Parser-6020"><span class="linenos">6020</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> -</span><span id="Parser-6021"><a href="#Parser-6021"><span class="linenos">6021</span></a> -</span><span id="Parser-6022"><a href="#Parser-6022"><span class="linenos">6022</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> +</span><span id="Parser-6002"><a href="#Parser-6002"><span class="linenos">6002</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6003"><a href="#Parser-6003"><span class="linenos">6003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span><span class="p">)</span> +</span><span id="Parser-6004"><a href="#Parser-6004"><span class="linenos">6004</span></a> +</span><span id="Parser-6005"><a href="#Parser-6005"><span class="linenos">6005</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> +</span><span id="Parser-6006"><a href="#Parser-6006"><span class="linenos">6006</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-6007"><a href="#Parser-6007"><span class="linenos">6007</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6008"><a href="#Parser-6008"><span class="linenos">6008</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span> +</span><span id="Parser-6009"><a href="#Parser-6009"><span class="linenos">6009</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">),</span> <span class="n">optional</span><span class="o">=</span><span class="n">optional</span> +</span><span id="Parser-6010"><a href="#Parser-6010"><span class="linenos">6010</span></a> <span class="p">)</span> +</span><span id="Parser-6011"><a href="#Parser-6011"><span class="linenos">6011</span></a> +</span><span id="Parser-6012"><a href="#Parser-6012"><span class="linenos">6012</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">optional</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> +</span><span id="Parser-6013"><a href="#Parser-6013"><span class="linenos">6013</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="Parser-6014"><a href="#Parser-6014"><span class="linenos">6014</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">wrapped</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">optional</span><span class="p">:</span> +</span><span id="Parser-6015"><a href="#Parser-6015"><span class="linenos">6015</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> +</span><span id="Parser-6016"><a href="#Parser-6016"><span class="linenos">6016</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-6017"><a href="#Parser-6017"><span class="linenos">6017</span></a> <span class="k">if</span> <span class="n">wrapped</span><span class="p">:</span> +</span><span id="Parser-6018"><a href="#Parser-6018"><span class="linenos">6018</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-6019"><a href="#Parser-6019"><span class="linenos">6019</span></a> <span class="k">return</span> <span class="n">parse_result</span> +</span><span id="Parser-6020"><a href="#Parser-6020"><span class="linenos">6020</span></a> +</span><span id="Parser-6021"><a href="#Parser-6021"><span class="linenos">6021</span></a> <span class="k">def</span> <span class="nf">_parse_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6022"><a href="#Parser-6022"><span class="linenos">6022</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> </span><span id="Parser-6023"><a href="#Parser-6023"><span class="linenos">6023</span></a> -</span><span id="Parser-6024"><a href="#Parser-6024"><span class="linenos">6024</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="Parser-6025"><a href="#Parser-6025"><span class="linenos">6025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> -</span><span id="Parser-6026"><a href="#Parser-6026"><span class="linenos">6026</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-6027"><a href="#Parser-6027"><span class="linenos">6027</span></a> -</span><span id="Parser-6028"><a href="#Parser-6028"><span class="linenos">6028</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> -</span><span id="Parser-6029"><a href="#Parser-6029"><span class="linenos">6029</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="Parser-6030"><a href="#Parser-6030"><span class="linenos">6030</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> -</span><span id="Parser-6031"><a href="#Parser-6031"><span class="linenos">6031</span></a> -</span><span id="Parser-6032"><a href="#Parser-6032"><span class="linenos">6032</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> -</span><span id="Parser-6033"><a href="#Parser-6033"><span class="linenos">6033</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> -</span><span id="Parser-6034"><a href="#Parser-6034"><span class="linenos">6034</span></a> -</span><span id="Parser-6035"><a href="#Parser-6035"><span class="linenos">6035</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> -</span><span id="Parser-6036"><a href="#Parser-6036"><span class="linenos">6036</span></a> -</span><span id="Parser-6037"><a href="#Parser-6037"><span class="linenos">6037</span></a> <span class="k">def</span> <span class="nf">_parse_refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">:</span> -</span><span id="Parser-6038"><a href="#Parser-6038"><span class="linenos">6038</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-6039"><a href="#Parser-6039"><span class="linenos">6039</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="Parser-6024"><a href="#Parser-6024"><span class="linenos">6024</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6025"><a href="#Parser-6025"><span class="linenos">6025</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> +</span><span id="Parser-6026"><a href="#Parser-6026"><span class="linenos">6026</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-6027"><a href="#Parser-6027"><span class="linenos">6027</span></a> <span class="p">)</span> +</span><span id="Parser-6028"><a href="#Parser-6028"><span class="linenos">6028</span></a> +</span><span id="Parser-6029"><a href="#Parser-6029"><span class="linenos">6029</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6030"><a href="#Parser-6030"><span class="linenos">6030</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span> +</span><span id="Parser-6031"><a href="#Parser-6031"><span class="linenos">6031</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Parser-6032"><a href="#Parser-6032"><span class="linenos">6032</span></a> <span class="p">)</span> +</span><span id="Parser-6033"><a href="#Parser-6033"><span class="linenos">6033</span></a> +</span><span id="Parser-6034"><a href="#Parser-6034"><span class="linenos">6034</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-6035"><a href="#Parser-6035"><span class="linenos">6035</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6036"><a href="#Parser-6036"><span class="linenos">6036</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> +</span><span id="Parser-6037"><a href="#Parser-6037"><span class="linenos">6037</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-6038"><a href="#Parser-6038"><span class="linenos">6038</span></a> +</span><span id="Parser-6039"><a href="#Parser-6039"><span class="linenos">6039</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> </span><span id="Parser-6040"><a href="#Parser-6040"><span class="linenos">6040</span></a> -</span><span id="Parser-6041"><a href="#Parser-6041"><span class="linenos">6041</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6042"><a href="#Parser-6042"><span class="linenos">6042</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="Parser-6043"><a href="#Parser-6043"><span class="linenos">6043</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6044"><a href="#Parser-6044"><span class="linenos">6044</span></a> -</span><span id="Parser-6045"><a href="#Parser-6045"><span class="linenos">6045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="Parser-6046"><a href="#Parser-6046"><span class="linenos">6046</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6047"><a href="#Parser-6047"><span class="linenos">6047</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">()</span> -</span><span id="Parser-6048"><a href="#Parser-6048"><span class="linenos">6048</span></a> -</span><span id="Parser-6049"><a href="#Parser-6049"><span class="linenos">6049</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-6050"><a href="#Parser-6050"><span class="linenos">6050</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> +</span><span id="Parser-6041"><a href="#Parser-6041"><span class="linenos">6041</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6042"><a href="#Parser-6042"><span class="linenos">6042</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-6043"><a href="#Parser-6043"><span class="linenos">6043</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6044"><a href="#Parser-6044"><span class="linenos">6044</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> +</span><span id="Parser-6045"><a href="#Parser-6045"><span class="linenos">6045</span></a> <span class="n">mode</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-6046"><a href="#Parser-6046"><span class="linenos">6046</span></a> +</span><span id="Parser-6047"><a href="#Parser-6047"><span class="linenos">6047</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> +</span><span id="Parser-6048"><a href="#Parser-6048"><span class="linenos">6048</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> +</span><span id="Parser-6049"><a href="#Parser-6049"><span class="linenos">6049</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-6050"><a href="#Parser-6050"><span class="linenos">6050</span></a> <span class="k">break</span> </span><span id="Parser-6051"><a href="#Parser-6051"><span class="linenos">6051</span></a> -</span><span id="Parser-6052"><a href="#Parser-6052"><span class="linenos">6052</span></a> <span class="c1"># https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns</span> -</span><span id="Parser-6053"><a href="#Parser-6053"><span class="linenos">6053</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FIRST"</span><span class="p">,</span> <span class="s2">"AFTER"</span><span class="p">)):</span> -</span><span id="Parser-6054"><a href="#Parser-6054"><span class="linenos">6054</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-6055"><a href="#Parser-6055"><span class="linenos">6055</span></a> <span class="n">column_position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6056"><a href="#Parser-6056"><span class="linenos">6056</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span> -</span><span id="Parser-6057"><a href="#Parser-6057"><span class="linenos">6057</span></a> <span class="p">)</span> -</span><span id="Parser-6058"><a href="#Parser-6058"><span class="linenos">6058</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="n">column_position</span><span class="p">)</span> -</span><span id="Parser-6059"><a href="#Parser-6059"><span class="linenos">6059</span></a> -</span><span id="Parser-6060"><a href="#Parser-6060"><span class="linenos">6060</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Parser-6061"><a href="#Parser-6061"><span class="linenos">6061</span></a> -</span><span id="Parser-6062"><a href="#Parser-6062"><span class="linenos">6062</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">]:</span> -</span><span id="Parser-6063"><a href="#Parser-6063"><span class="linenos">6063</span></a> <span class="n">drop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">()</span> -</span><span id="Parser-6064"><a href="#Parser-6064"><span class="linenos">6064</span></a> <span class="k">if</span> <span class="n">drop</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">drop</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">):</span> -</span><span id="Parser-6065"><a href="#Parser-6065"><span class="linenos">6065</span></a> <span class="n">drop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">drop</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="s2">"COLUMN"</span><span class="p">))</span> -</span><span id="Parser-6066"><a href="#Parser-6066"><span class="linenos">6066</span></a> <span class="k">return</span> <span class="n">drop</span> -</span><span id="Parser-6067"><a href="#Parser-6067"><span class="linenos">6067</span></a> -</span><span id="Parser-6068"><a href="#Parser-6068"><span class="linenos">6068</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> -</span><span id="Parser-6069"><a href="#Parser-6069"><span class="linenos">6069</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">:</span> -</span><span id="Parser-6070"><a href="#Parser-6070"><span class="linenos">6070</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6071"><a href="#Parser-6071"><span class="linenos">6071</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> -</span><span id="Parser-6072"><a href="#Parser-6072"><span class="linenos">6072</span></a> <span class="p">)</span> +</span><span id="Parser-6052"><a href="#Parser-6052"><span class="linenos">6052</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> +</span><span id="Parser-6053"><a href="#Parser-6053"><span class="linenos">6053</span></a> +</span><span id="Parser-6054"><a href="#Parser-6054"><span class="linenos">6054</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Commit</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">:</span> +</span><span id="Parser-6055"><a href="#Parser-6055"><span class="linenos">6055</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6056"><a href="#Parser-6056"><span class="linenos">6056</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6057"><a href="#Parser-6057"><span class="linenos">6057</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> +</span><span id="Parser-6058"><a href="#Parser-6058"><span class="linenos">6058</span></a> +</span><span id="Parser-6059"><a href="#Parser-6059"><span class="linenos">6059</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">))</span> +</span><span id="Parser-6060"><a href="#Parser-6060"><span class="linenos">6060</span></a> +</span><span id="Parser-6061"><a href="#Parser-6061"><span class="linenos">6061</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="Parser-6062"><a href="#Parser-6062"><span class="linenos">6062</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> +</span><span id="Parser-6063"><a href="#Parser-6063"><span class="linenos">6063</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-6064"><a href="#Parser-6064"><span class="linenos">6064</span></a> +</span><span id="Parser-6065"><a href="#Parser-6065"><span class="linenos">6065</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> +</span><span id="Parser-6066"><a href="#Parser-6066"><span class="linenos">6066</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="Parser-6067"><a href="#Parser-6067"><span class="linenos">6067</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> +</span><span id="Parser-6068"><a href="#Parser-6068"><span class="linenos">6068</span></a> +</span><span id="Parser-6069"><a href="#Parser-6069"><span class="linenos">6069</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> +</span><span id="Parser-6070"><a href="#Parser-6070"><span class="linenos">6070</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> +</span><span id="Parser-6071"><a href="#Parser-6071"><span class="linenos">6071</span></a> +</span><span id="Parser-6072"><a href="#Parser-6072"><span class="linenos">6072</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> </span><span id="Parser-6073"><a href="#Parser-6073"><span class="linenos">6073</span></a> -</span><span id="Parser-6074"><a href="#Parser-6074"><span class="linenos">6074</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6075"><a href="#Parser-6075"><span class="linenos">6075</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="Parser-6076"><a href="#Parser-6076"><span class="linenos">6076</span></a> -</span><span id="Parser-6077"><a href="#Parser-6077"><span class="linenos">6077</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6078"><a href="#Parser-6078"><span class="linenos">6078</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-6079"><a href="#Parser-6079"><span class="linenos">6079</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6080"><a href="#Parser-6080"><span class="linenos">6080</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">)</span> -</span><span id="Parser-6081"><a href="#Parser-6081"><span class="linenos">6081</span></a> <span class="p">)</span> -</span><span id="Parser-6082"><a href="#Parser-6082"><span class="linenos">6082</span></a> <span class="p">)</span> -</span><span id="Parser-6083"><a href="#Parser-6083"><span class="linenos">6083</span></a> -</span><span id="Parser-6084"><a href="#Parser-6084"><span class="linenos">6084</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6085"><a href="#Parser-6085"><span class="linenos">6085</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="Parser-6086"><a href="#Parser-6086"><span class="linenos">6086</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6087"><a href="#Parser-6087"><span class="linenos">6087</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6074"><a href="#Parser-6074"><span class="linenos">6074</span></a> <span class="k">def</span> <span class="nf">_parse_refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">:</span> +</span><span id="Parser-6075"><a href="#Parser-6075"><span class="linenos">6075</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-6076"><a href="#Parser-6076"><span class="linenos">6076</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Refresh</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="Parser-6077"><a href="#Parser-6077"><span class="linenos">6077</span></a> +</span><span id="Parser-6078"><a href="#Parser-6078"><span class="linenos">6078</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6079"><a href="#Parser-6079"><span class="linenos">6079</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="Parser-6080"><a href="#Parser-6080"><span class="linenos">6080</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6081"><a href="#Parser-6081"><span class="linenos">6081</span></a> +</span><span id="Parser-6082"><a href="#Parser-6082"><span class="linenos">6082</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="Parser-6083"><a href="#Parser-6083"><span class="linenos">6083</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6084"><a href="#Parser-6084"><span class="linenos">6084</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">()</span> +</span><span id="Parser-6085"><a href="#Parser-6085"><span class="linenos">6085</span></a> +</span><span id="Parser-6086"><a href="#Parser-6086"><span class="linenos">6086</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-6087"><a href="#Parser-6087"><span class="linenos">6087</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> </span><span id="Parser-6088"><a href="#Parser-6088"><span class="linenos">6088</span></a> -</span><span id="Parser-6089"><a href="#Parser-6089"><span class="linenos">6089</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6090"><a href="#Parser-6090"><span class="linenos">6090</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">):</span> -</span><span id="Parser-6091"><a href="#Parser-6091"><span class="linenos">6091</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-6092"><a href="#Parser-6092"><span class="linenos">6092</span></a> -</span><span id="Parser-6093"><a href="#Parser-6093"><span class="linenos">6093</span></a> <span class="c1"># Many dialects support the ALTER [COLUMN] syntax, so if there is no</span> -</span><span id="Parser-6094"><a href="#Parser-6094"><span class="linenos">6094</span></a> <span class="c1"># keyword after ALTER we default to parsing this statement</span> -</span><span id="Parser-6095"><a href="#Parser-6095"><span class="linenos">6095</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="Parser-6096"><a href="#Parser-6096"><span class="linenos">6096</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6097"><a href="#Parser-6097"><span class="linenos">6097</span></a> -</span><span id="Parser-6098"><a href="#Parser-6098"><span class="linenos">6098</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-6099"><a href="#Parser-6099"><span class="linenos">6099</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6100"><a href="#Parser-6100"><span class="linenos">6100</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-6101"><a href="#Parser-6101"><span class="linenos">6101</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> -</span><span id="Parser-6102"><a href="#Parser-6102"><span class="linenos">6102</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">):</span> -</span><span id="Parser-6103"><a href="#Parser-6103"><span class="linenos">6103</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="Parser-6104"><a href="#Parser-6104"><span class="linenos">6104</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="Parser-6105"><a href="#Parser-6105"><span class="linenos">6105</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6106"><a href="#Parser-6106"><span class="linenos">6106</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="Parser-6107"><a href="#Parser-6107"><span class="linenos">6107</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="Parser-6108"><a href="#Parser-6108"><span class="linenos">6108</span></a> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-6109"><a href="#Parser-6109"><span class="linenos">6109</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-6110"><a href="#Parser-6110"><span class="linenos">6110</span></a> <span class="p">)</span> -</span><span id="Parser-6111"><a href="#Parser-6111"><span class="linenos">6111</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="Parser-6112"><a href="#Parser-6112"><span class="linenos">6112</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6113"><a href="#Parser-6113"><span class="linenos">6113</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="Parser-6114"><a href="#Parser-6114"><span class="linenos">6114</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="Parser-6115"><a href="#Parser-6115"><span class="linenos">6115</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Parser-6116"><a href="#Parser-6116"><span class="linenos">6116</span></a> <span class="p">)</span> -</span><span id="Parser-6117"><a href="#Parser-6117"><span class="linenos">6117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> -</span><span id="Parser-6118"><a href="#Parser-6118"><span class="linenos">6118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> -</span><span id="Parser-6119"><a href="#Parser-6119"><span class="linenos">6119</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6120"><a href="#Parser-6120"><span class="linenos">6120</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="Parser-6121"><a href="#Parser-6121"><span class="linenos">6121</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="Parser-6122"><a href="#Parser-6122"><span class="linenos">6122</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> -</span><span id="Parser-6123"><a href="#Parser-6123"><span class="linenos">6123</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="Parser-6124"><a href="#Parser-6124"><span class="linenos">6124</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> -</span><span id="Parser-6125"><a href="#Parser-6125"><span class="linenos">6125</span></a> <span class="p">)</span> -</span><span id="Parser-6126"><a href="#Parser-6126"><span class="linenos">6126</span></a> -</span><span id="Parser-6127"><a href="#Parser-6127"><span class="linenos">6127</span></a> <span class="k">def</span> <span class="nf">_parse_alter_diststyle</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">:</span> -</span><span id="Parser-6128"><a href="#Parser-6128"><span class="linenos">6128</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"EVEN"</span><span class="p">,</span> <span class="s2">"AUTO"</span><span class="p">)):</span> -</span><span id="Parser-6129"><a href="#Parser-6129"><span class="linenos">6129</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="Parser-6130"><a href="#Parser-6130"><span class="linenos">6130</span></a> -</span><span id="Parser-6131"><a href="#Parser-6131"><span class="linenos">6131</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">,</span> <span class="s2">"DISTKEY"</span><span class="p">)</span> -</span><span id="Parser-6132"><a href="#Parser-6132"><span class="linenos">6132</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="Parser-6133"><a href="#Parser-6133"><span class="linenos">6133</span></a> -</span><span id="Parser-6134"><a href="#Parser-6134"><span class="linenos">6134</span></a> <span class="k">def</span> <span class="nf">_parse_alter_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">:</span> -</span><span id="Parser-6135"><a href="#Parser-6135"><span class="linenos">6135</span></a> <span class="k">if</span> <span class="n">compound</span><span class="p">:</span> -</span><span id="Parser-6136"><a href="#Parser-6136"><span class="linenos">6136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTKEY"</span><span class="p">)</span> -</span><span id="Parser-6137"><a href="#Parser-6137"><span class="linenos">6137</span></a> -</span><span id="Parser-6138"><a href="#Parser-6138"><span class="linenos">6138</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6139"><a href="#Parser-6139"><span class="linenos">6139</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6140"><a href="#Parser-6140"><span class="linenos">6140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="Parser-6141"><a href="#Parser-6141"><span class="linenos">6141</span></a> <span class="p">)</span> -</span><span id="Parser-6142"><a href="#Parser-6142"><span class="linenos">6142</span></a> -</span><span id="Parser-6143"><a href="#Parser-6143"><span class="linenos">6143</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"AUTO"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">))</span> -</span><span id="Parser-6144"><a href="#Parser-6144"><span class="linenos">6144</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6145"><a href="#Parser-6145"><span class="linenos">6145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="Parser-6146"><a href="#Parser-6146"><span class="linenos">6146</span></a> <span class="p">)</span> -</span><span id="Parser-6147"><a href="#Parser-6147"><span class="linenos">6147</span></a> -</span><span id="Parser-6148"><a href="#Parser-6148"><span class="linenos">6148</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6149"><a href="#Parser-6149"><span class="linenos">6149</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="Parser-6150"><a href="#Parser-6150"><span class="linenos">6150</span></a> -</span><span id="Parser-6151"><a href="#Parser-6151"><span class="linenos">6151</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="Parser-6152"><a href="#Parser-6152"><span class="linenos">6152</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6153"><a href="#Parser-6153"><span class="linenos">6153</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">))</span> -</span><span id="Parser-6154"><a href="#Parser-6154"><span class="linenos">6154</span></a> -</span><span id="Parser-6155"><a href="#Parser-6155"><span class="linenos">6155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6156"><a href="#Parser-6156"><span class="linenos">6156</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> -</span><span id="Parser-6157"><a href="#Parser-6157"><span class="linenos">6157</span></a> -</span><span id="Parser-6158"><a href="#Parser-6158"><span class="linenos">6158</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_rename</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RenameTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">]:</span> -</span><span id="Parser-6159"><a href="#Parser-6159"><span class="linenos">6159</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">):</span> -</span><span id="Parser-6160"><a href="#Parser-6160"><span class="linenos">6160</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="Parser-6161"><a href="#Parser-6161"><span class="linenos">6161</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-6162"><a href="#Parser-6162"><span class="linenos">6162</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="Parser-6163"><a href="#Parser-6163"><span class="linenos">6163</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-6164"><a href="#Parser-6164"><span class="linenos">6164</span></a> -</span><span id="Parser-6165"><a href="#Parser-6165"><span class="linenos">6165</span></a> <span class="k">if</span> <span class="n">old_column</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">to</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">new_column</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-6166"><a href="#Parser-6166"><span class="linenos">6166</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6089"><a href="#Parser-6089"><span class="linenos">6089</span></a> <span class="c1"># https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns</span> +</span><span id="Parser-6090"><a href="#Parser-6090"><span class="linenos">6090</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"FIRST"</span><span class="p">,</span> <span class="s2">"AFTER"</span><span class="p">)):</span> +</span><span id="Parser-6091"><a href="#Parser-6091"><span class="linenos">6091</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-6092"><a href="#Parser-6092"><span class="linenos">6092</span></a> <span class="n">column_position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6093"><a href="#Parser-6093"><span class="linenos">6093</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> <span class="n">position</span><span class="o">=</span><span class="n">position</span> +</span><span id="Parser-6094"><a href="#Parser-6094"><span class="linenos">6094</span></a> <span class="p">)</span> +</span><span id="Parser-6095"><a href="#Parser-6095"><span class="linenos">6095</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="n">column_position</span><span class="p">)</span> +</span><span id="Parser-6096"><a href="#Parser-6096"><span class="linenos">6096</span></a> +</span><span id="Parser-6097"><a href="#Parser-6097"><span class="linenos">6097</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Parser-6098"><a href="#Parser-6098"><span class="linenos">6098</span></a> +</span><span id="Parser-6099"><a href="#Parser-6099"><span class="linenos">6099</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Drop</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">]:</span> +</span><span id="Parser-6100"><a href="#Parser-6100"><span class="linenos">6100</span></a> <span class="n">drop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">()</span> +</span><span id="Parser-6101"><a href="#Parser-6101"><span class="linenos">6101</span></a> <span class="k">if</span> <span class="n">drop</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">drop</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">):</span> +</span><span id="Parser-6102"><a href="#Parser-6102"><span class="linenos">6102</span></a> <span class="n">drop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">drop</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="s2">"COLUMN"</span><span class="p">))</span> +</span><span id="Parser-6103"><a href="#Parser-6103"><span class="linenos">6103</span></a> <span class="k">return</span> <span class="n">drop</span> +</span><span id="Parser-6104"><a href="#Parser-6104"><span class="linenos">6104</span></a> +</span><span id="Parser-6105"><a href="#Parser-6105"><span class="linenos">6105</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> +</span><span id="Parser-6106"><a href="#Parser-6106"><span class="linenos">6106</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">:</span> +</span><span id="Parser-6107"><a href="#Parser-6107"><span class="linenos">6107</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6108"><a href="#Parser-6108"><span class="linenos">6108</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> +</span><span id="Parser-6109"><a href="#Parser-6109"><span class="linenos">6109</span></a> <span class="p">)</span> +</span><span id="Parser-6110"><a href="#Parser-6110"><span class="linenos">6110</span></a> +</span><span id="Parser-6111"><a href="#Parser-6111"><span class="linenos">6111</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6112"><a href="#Parser-6112"><span class="linenos">6112</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="Parser-6113"><a href="#Parser-6113"><span class="linenos">6113</span></a> +</span><span id="Parser-6114"><a href="#Parser-6114"><span class="linenos">6114</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6115"><a href="#Parser-6115"><span class="linenos">6115</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-6116"><a href="#Parser-6116"><span class="linenos">6116</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6117"><a href="#Parser-6117"><span class="linenos">6117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">)</span> +</span><span id="Parser-6118"><a href="#Parser-6118"><span class="linenos">6118</span></a> <span class="p">)</span> +</span><span id="Parser-6119"><a href="#Parser-6119"><span class="linenos">6119</span></a> <span class="p">)</span> +</span><span id="Parser-6120"><a href="#Parser-6120"><span class="linenos">6120</span></a> +</span><span id="Parser-6121"><a href="#Parser-6121"><span class="linenos">6121</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6122"><a href="#Parser-6122"><span class="linenos">6122</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="Parser-6123"><a href="#Parser-6123"><span class="linenos">6123</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field_def</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6124"><a href="#Parser-6124"><span class="linenos">6124</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6125"><a href="#Parser-6125"><span class="linenos">6125</span></a> +</span><span id="Parser-6126"><a href="#Parser-6126"><span class="linenos">6126</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6127"><a href="#Parser-6127"><span class="linenos">6127</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">):</span> +</span><span id="Parser-6128"><a href="#Parser-6128"><span class="linenos">6128</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_ALTER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-6129"><a href="#Parser-6129"><span class="linenos">6129</span></a> +</span><span id="Parser-6130"><a href="#Parser-6130"><span class="linenos">6130</span></a> <span class="c1"># Many dialects support the ALTER [COLUMN] syntax, so if there is no</span> +</span><span id="Parser-6131"><a href="#Parser-6131"><span class="linenos">6131</span></a> <span class="c1"># keyword after ALTER we default to parsing this statement</span> +</span><span id="Parser-6132"><a href="#Parser-6132"><span class="linenos">6132</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="Parser-6133"><a href="#Parser-6133"><span class="linenos">6133</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6134"><a href="#Parser-6134"><span class="linenos">6134</span></a> +</span><span id="Parser-6135"><a href="#Parser-6135"><span class="linenos">6135</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-6136"><a href="#Parser-6136"><span class="linenos">6136</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6137"><a href="#Parser-6137"><span class="linenos">6137</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-6138"><a href="#Parser-6138"><span class="linenos">6138</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">())</span> +</span><span id="Parser-6139"><a href="#Parser-6139"><span class="linenos">6139</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">):</span> +</span><span id="Parser-6140"><a href="#Parser-6140"><span class="linenos">6140</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="Parser-6141"><a href="#Parser-6141"><span class="linenos">6141</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="Parser-6142"><a href="#Parser-6142"><span class="linenos">6142</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6143"><a href="#Parser-6143"><span class="linenos">6143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="Parser-6144"><a href="#Parser-6144"><span class="linenos">6144</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="Parser-6145"><a href="#Parser-6145"><span class="linenos">6145</span></a> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-6146"><a href="#Parser-6146"><span class="linenos">6146</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-6147"><a href="#Parser-6147"><span class="linenos">6147</span></a> <span class="p">)</span> +</span><span id="Parser-6148"><a href="#Parser-6148"><span class="linenos">6148</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="Parser-6149"><a href="#Parser-6149"><span class="linenos">6149</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6150"><a href="#Parser-6150"><span class="linenos">6150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="Parser-6151"><a href="#Parser-6151"><span class="linenos">6151</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="Parser-6152"><a href="#Parser-6152"><span class="linenos">6152</span></a> <span class="n">allow_null</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Parser-6153"><a href="#Parser-6153"><span class="linenos">6153</span></a> <span class="p">)</span> +</span><span id="Parser-6154"><a href="#Parser-6154"><span class="linenos">6154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> +</span><span id="Parser-6155"><a href="#Parser-6155"><span class="linenos">6155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> +</span><span id="Parser-6156"><a href="#Parser-6156"><span class="linenos">6156</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6157"><a href="#Parser-6157"><span class="linenos">6157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="Parser-6158"><a href="#Parser-6158"><span class="linenos">6158</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="Parser-6159"><a href="#Parser-6159"><span class="linenos">6159</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> +</span><span id="Parser-6160"><a href="#Parser-6160"><span class="linenos">6160</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="Parser-6161"><a href="#Parser-6161"><span class="linenos">6161</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">(),</span> +</span><span id="Parser-6162"><a href="#Parser-6162"><span class="linenos">6162</span></a> <span class="p">)</span> +</span><span id="Parser-6163"><a href="#Parser-6163"><span class="linenos">6163</span></a> +</span><span id="Parser-6164"><a href="#Parser-6164"><span class="linenos">6164</span></a> <span class="k">def</span> <span class="nf">_parse_alter_diststyle</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">:</span> +</span><span id="Parser-6165"><a href="#Parser-6165"><span class="linenos">6165</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"EVEN"</span><span class="p">,</span> <span class="s2">"AUTO"</span><span class="p">)):</span> +</span><span id="Parser-6166"><a href="#Parser-6166"><span class="linenos">6166</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> </span><span id="Parser-6167"><a href="#Parser-6167"><span class="linenos">6167</span></a> -</span><span id="Parser-6168"><a href="#Parser-6168"><span class="linenos">6168</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">)</span> -</span><span id="Parser-6169"><a href="#Parser-6169"><span class="linenos">6169</span></a> -</span><span id="Parser-6170"><a href="#Parser-6170"><span class="linenos">6170</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="Parser-6171"><a href="#Parser-6171"><span class="linenos">6171</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-6172"><a href="#Parser-6172"><span class="linenos">6172</span></a> -</span><span id="Parser-6173"><a href="#Parser-6173"><span class="linenos">6173</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">:</span> -</span><span id="Parser-6174"><a href="#Parser-6174"><span class="linenos">6174</span></a> <span class="n">alter_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> -</span><span id="Parser-6175"><a href="#Parser-6175"><span class="linenos">6175</span></a> -</span><span id="Parser-6176"><a href="#Parser-6176"><span class="linenos">6176</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> -</span><span id="Parser-6177"><a href="#Parser-6177"><span class="linenos">6177</span></a> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"PROPERTIES"</span> -</span><span id="Parser-6178"><a href="#Parser-6178"><span class="linenos">6178</span></a> <span class="p">):</span> -</span><span id="Parser-6179"><a href="#Parser-6179"><span class="linenos">6179</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> -</span><span id="Parser-6180"><a href="#Parser-6180"><span class="linenos">6180</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILESTREAM_ON"</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6181"><a href="#Parser-6181"><span class="linenos">6181</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> -</span><span id="Parser-6182"><a href="#Parser-6182"><span class="linenos">6182</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"LOGGED"</span><span class="p">,</span> <span class="s2">"UNLOGGED"</span><span class="p">)):</span> -</span><span id="Parser-6183"><a href="#Parser-6183"><span class="linenos">6183</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> -</span><span id="Parser-6184"><a href="#Parser-6184"><span class="linenos">6184</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CLUSTER"</span><span class="p">,</span> <span class="s2">"OIDS"</span><span class="p">)):</span> -</span><span id="Parser-6185"><a href="#Parser-6185"><span class="linenos">6185</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WITHOUT </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">))</span> -</span><span id="Parser-6186"><a href="#Parser-6186"><span class="linenos">6186</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCATION"</span><span class="p">):</span> -</span><span id="Parser-6187"><a href="#Parser-6187"><span class="linenos">6187</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"location"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6188"><a href="#Parser-6188"><span class="linenos">6188</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">,</span> <span class="s2">"METHOD"</span><span class="p">):</span> -</span><span id="Parser-6189"><a href="#Parser-6189"><span class="linenos">6189</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"access_method"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6190"><a href="#Parser-6190"><span class="linenos">6190</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLESPACE"</span><span class="p">):</span> -</span><span id="Parser-6191"><a href="#Parser-6191"><span class="linenos">6191</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tablespace"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6192"><a href="#Parser-6192"><span class="linenos">6192</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILE"</span><span class="p">,</span> <span class="s2">"FORMAT"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILEFORMAT"</span><span class="p">):</span> -</span><span id="Parser-6193"><a href="#Parser-6193"><span class="linenos">6193</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()])</span> -</span><span id="Parser-6194"><a href="#Parser-6194"><span class="linenos">6194</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_FILE_FORMAT"</span><span class="p">):</span> -</span><span id="Parser-6195"><a href="#Parser-6195"><span class="linenos">6195</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="Parser-6196"><a href="#Parser-6196"><span class="linenos">6196</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_COPY_OPTIONS"</span><span class="p">):</span> -</span><span id="Parser-6197"><a href="#Parser-6197"><span class="linenos">6197</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"copy_options"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="Parser-6198"><a href="#Parser-6198"><span class="linenos">6198</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAG"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAGS"</span><span class="p">):</span> -</span><span id="Parser-6199"><a href="#Parser-6199"><span class="linenos">6199</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tag"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> -</span><span id="Parser-6200"><a href="#Parser-6200"><span class="linenos">6200</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6201"><a href="#Parser-6201"><span class="linenos">6201</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> -</span><span id="Parser-6202"><a href="#Parser-6202"><span class="linenos">6202</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"serde"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6203"><a href="#Parser-6203"><span class="linenos">6203</span></a> -</span><span id="Parser-6204"><a href="#Parser-6204"><span class="linenos">6204</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()])</span> -</span><span id="Parser-6205"><a href="#Parser-6205"><span class="linenos">6205</span></a> -</span><span id="Parser-6206"><a href="#Parser-6206"><span class="linenos">6206</span></a> <span class="k">return</span> <span class="n">alter_set</span> -</span><span id="Parser-6207"><a href="#Parser-6207"><span class="linenos">6207</span></a> -</span><span id="Parser-6208"><a href="#Parser-6208"><span class="linenos">6208</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-6209"><a href="#Parser-6209"><span class="linenos">6209</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-6210"><a href="#Parser-6210"><span class="linenos">6210</span></a> -</span><span id="Parser-6211"><a href="#Parser-6211"><span class="linenos">6211</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="Parser-6212"><a href="#Parser-6212"><span class="linenos">6212</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-6213"><a href="#Parser-6213"><span class="linenos">6213</span></a> -</span><span id="Parser-6214"><a href="#Parser-6214"><span class="linenos">6214</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="Parser-6215"><a href="#Parser-6215"><span class="linenos">6215</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> -</span><span id="Parser-6216"><a href="#Parser-6216"><span class="linenos">6216</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6217"><a href="#Parser-6217"><span class="linenos">6217</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-6218"><a href="#Parser-6218"><span class="linenos">6218</span></a> -</span><span id="Parser-6219"><a href="#Parser-6219"><span class="linenos">6219</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="Parser-6220"><a href="#Parser-6220"><span class="linenos">6220</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6221"><a href="#Parser-6221"><span class="linenos">6221</span></a> -</span><span id="Parser-6222"><a href="#Parser-6222"><span class="linenos">6222</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-6223"><a href="#Parser-6223"><span class="linenos">6223</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-6224"><a href="#Parser-6224"><span class="linenos">6224</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="Parser-6225"><a href="#Parser-6225"><span class="linenos">6225</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> -</span><span id="Parser-6226"><a href="#Parser-6226"><span class="linenos">6226</span></a> -</span><span id="Parser-6227"><a href="#Parser-6227"><span class="linenos">6227</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">actions</span><span class="p">:</span> -</span><span id="Parser-6228"><a href="#Parser-6228"><span class="linenos">6228</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6229"><a href="#Parser-6229"><span class="linenos">6229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span><span class="p">,</span> -</span><span id="Parser-6230"><a href="#Parser-6230"><span class="linenos">6230</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-6231"><a href="#Parser-6231"><span class="linenos">6231</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="Parser-6232"><a href="#Parser-6232"><span class="linenos">6232</span></a> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">,</span> -</span><span id="Parser-6233"><a href="#Parser-6233"><span class="linenos">6233</span></a> <span class="n">only</span><span class="o">=</span><span class="n">only</span><span class="p">,</span> -</span><span id="Parser-6234"><a href="#Parser-6234"><span class="linenos">6234</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> -</span><span id="Parser-6235"><a href="#Parser-6235"><span class="linenos">6235</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> -</span><span id="Parser-6236"><a href="#Parser-6236"><span class="linenos">6236</span></a> <span class="p">)</span> -</span><span id="Parser-6237"><a href="#Parser-6237"><span class="linenos">6237</span></a> -</span><span id="Parser-6238"><a href="#Parser-6238"><span class="linenos">6238</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-6239"><a href="#Parser-6239"><span class="linenos">6239</span></a> -</span><span id="Parser-6240"><a href="#Parser-6240"><span class="linenos">6240</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> -</span><span id="Parser-6241"><a href="#Parser-6241"><span class="linenos">6241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="Parser-6242"><a href="#Parser-6242"><span class="linenos">6242</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-6243"><a href="#Parser-6243"><span class="linenos">6243</span></a> -</span><span id="Parser-6244"><a href="#Parser-6244"><span class="linenos">6244</span></a> <span class="k">if</span> <span class="n">target</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6245"><a href="#Parser-6245"><span class="linenos">6245</span></a> <span class="n">target</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="Parser-6246"><a href="#Parser-6246"><span class="linenos">6246</span></a> -</span><span id="Parser-6247"><a href="#Parser-6247"><span class="linenos">6247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> -</span><span id="Parser-6248"><a href="#Parser-6248"><span class="linenos">6248</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-6249"><a href="#Parser-6249"><span class="linenos">6249</span></a> -</span><span id="Parser-6250"><a href="#Parser-6250"><span class="linenos">6250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-6251"><a href="#Parser-6251"><span class="linenos">6251</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> -</span><span id="Parser-6252"><a href="#Parser-6252"><span class="linenos">6252</span></a> -</span><span id="Parser-6253"><a href="#Parser-6253"><span class="linenos">6253</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6254"><a href="#Parser-6254"><span class="linenos">6254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> -</span><span id="Parser-6255"><a href="#Parser-6255"><span class="linenos">6255</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> -</span><span id="Parser-6256"><a href="#Parser-6256"><span class="linenos">6256</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> -</span><span id="Parser-6257"><a href="#Parser-6257"><span class="linenos">6257</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> -</span><span id="Parser-6258"><a href="#Parser-6258"><span class="linenos">6258</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> -</span><span id="Parser-6259"><a href="#Parser-6259"><span class="linenos">6259</span></a> <span class="p">)</span> -</span><span id="Parser-6260"><a href="#Parser-6260"><span class="linenos">6260</span></a> -</span><span id="Parser-6261"><a href="#Parser-6261"><span class="linenos">6261</span></a> <span class="k">def</span> <span class="nf">_parse_when_matched</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">]:</span> -</span><span id="Parser-6262"><a href="#Parser-6262"><span class="linenos">6262</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6168"><a href="#Parser-6168"><span class="linenos">6168</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"KEY"</span><span class="p">,</span> <span class="s2">"DISTKEY"</span><span class="p">)</span> +</span><span id="Parser-6169"><a href="#Parser-6169"><span class="linenos">6169</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterDistStyle</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="Parser-6170"><a href="#Parser-6170"><span class="linenos">6170</span></a> +</span><span id="Parser-6171"><a href="#Parser-6171"><span class="linenos">6171</span></a> <span class="k">def</span> <span class="nf">_parse_alter_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</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">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">:</span> +</span><span id="Parser-6172"><a href="#Parser-6172"><span class="linenos">6172</span></a> <span class="k">if</span> <span class="n">compound</span><span class="p">:</span> +</span><span id="Parser-6173"><a href="#Parser-6173"><span class="linenos">6173</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SORTKEY"</span><span class="p">)</span> +</span><span id="Parser-6174"><a href="#Parser-6174"><span class="linenos">6174</span></a> +</span><span id="Parser-6175"><a href="#Parser-6175"><span class="linenos">6175</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6176"><a href="#Parser-6176"><span class="linenos">6176</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6177"><a href="#Parser-6177"><span class="linenos">6177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">(),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> +</span><span id="Parser-6178"><a href="#Parser-6178"><span class="linenos">6178</span></a> <span class="p">)</span> +</span><span id="Parser-6179"><a href="#Parser-6179"><span class="linenos">6179</span></a> +</span><span id="Parser-6180"><a href="#Parser-6180"><span class="linenos">6180</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"AUTO"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">))</span> +</span><span id="Parser-6181"><a href="#Parser-6181"><span class="linenos">6181</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6182"><a href="#Parser-6182"><span class="linenos">6182</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSortKey</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> +</span><span id="Parser-6183"><a href="#Parser-6183"><span class="linenos">6183</span></a> <span class="p">)</span> +</span><span id="Parser-6184"><a href="#Parser-6184"><span class="linenos">6184</span></a> +</span><span id="Parser-6185"><a href="#Parser-6185"><span class="linenos">6185</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6186"><a href="#Parser-6186"><span class="linenos">6186</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="Parser-6187"><a href="#Parser-6187"><span class="linenos">6187</span></a> +</span><span id="Parser-6188"><a href="#Parser-6188"><span class="linenos">6188</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-6189"><a href="#Parser-6189"><span class="linenos">6189</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6190"><a href="#Parser-6190"><span class="linenos">6190</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">))</span> +</span><span id="Parser-6191"><a href="#Parser-6191"><span class="linenos">6191</span></a> +</span><span id="Parser-6192"><a href="#Parser-6192"><span class="linenos">6192</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6193"><a href="#Parser-6193"><span class="linenos">6193</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> +</span><span id="Parser-6194"><a href="#Parser-6194"><span class="linenos">6194</span></a> +</span><span id="Parser-6195"><a href="#Parser-6195"><span class="linenos">6195</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_rename</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">RenameTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">]:</span> +</span><span id="Parser-6196"><a href="#Parser-6196"><span class="linenos">6196</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">):</span> +</span><span id="Parser-6197"><a href="#Parser-6197"><span class="linenos">6197</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-6198"><a href="#Parser-6198"><span class="linenos">6198</span></a> <span class="n">old_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-6199"><a href="#Parser-6199"><span class="linenos">6199</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="Parser-6200"><a href="#Parser-6200"><span class="linenos">6200</span></a> <span class="n">new_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-6201"><a href="#Parser-6201"><span class="linenos">6201</span></a> +</span><span id="Parser-6202"><a href="#Parser-6202"><span class="linenos">6202</span></a> <span class="k">if</span> <span class="n">old_column</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">to</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">new_column</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-6203"><a href="#Parser-6203"><span class="linenos">6203</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6204"><a href="#Parser-6204"><span class="linenos">6204</span></a> +</span><span id="Parser-6205"><a href="#Parser-6205"><span class="linenos">6205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">old_column</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">new_column</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">)</span> +</span><span id="Parser-6206"><a href="#Parser-6206"><span class="linenos">6206</span></a> +</span><span id="Parser-6207"><a href="#Parser-6207"><span class="linenos">6207</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="Parser-6208"><a href="#Parser-6208"><span class="linenos">6208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-6209"><a href="#Parser-6209"><span class="linenos">6209</span></a> +</span><span id="Parser-6210"><a href="#Parser-6210"><span class="linenos">6210</span></a> <span class="k">def</span> <span class="nf">_parse_alter_table_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">:</span> +</span><span id="Parser-6211"><a href="#Parser-6211"><span class="linenos">6211</span></a> <span class="n">alter_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterSet</span><span class="p">)</span> +</span><span id="Parser-6212"><a href="#Parser-6212"><span class="linenos">6212</span></a> +</span><span id="Parser-6213"><a href="#Parser-6213"><span class="linenos">6213</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span> +</span><span id="Parser-6214"><a href="#Parser-6214"><span class="linenos">6214</span></a> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"PROPERTIES"</span> +</span><span id="Parser-6215"><a href="#Parser-6215"><span class="linenos">6215</span></a> <span class="p">):</span> +</span><span id="Parser-6216"><a href="#Parser-6216"><span class="linenos">6216</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> +</span><span id="Parser-6217"><a href="#Parser-6217"><span class="linenos">6217</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILESTREAM_ON"</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6218"><a href="#Parser-6218"><span class="linenos">6218</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()])</span> +</span><span id="Parser-6219"><a href="#Parser-6219"><span class="linenos">6219</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"LOGGED"</span><span class="p">,</span> <span class="s2">"UNLOGGED"</span><span class="p">)):</span> +</span><span id="Parser-6220"><a href="#Parser-6220"><span class="linenos">6220</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()))</span> +</span><span id="Parser-6221"><a href="#Parser-6221"><span class="linenos">6221</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITHOUT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"CLUSTER"</span><span class="p">,</span> <span class="s2">"OIDS"</span><span class="p">)):</span> +</span><span id="Parser-6222"><a href="#Parser-6222"><span class="linenos">6222</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"option"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WITHOUT </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">))</span> +</span><span id="Parser-6223"><a href="#Parser-6223"><span class="linenos">6223</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCATION"</span><span class="p">):</span> +</span><span id="Parser-6224"><a href="#Parser-6224"><span class="linenos">6224</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"location"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6225"><a href="#Parser-6225"><span class="linenos">6225</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">,</span> <span class="s2">"METHOD"</span><span class="p">):</span> +</span><span id="Parser-6226"><a href="#Parser-6226"><span class="linenos">6226</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"access_method"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6227"><a href="#Parser-6227"><span class="linenos">6227</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TABLESPACE"</span><span class="p">):</span> +</span><span id="Parser-6228"><a href="#Parser-6228"><span class="linenos">6228</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tablespace"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6229"><a href="#Parser-6229"><span class="linenos">6229</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILE"</span><span class="p">,</span> <span class="s2">"FORMAT"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FILEFORMAT"</span><span class="p">):</span> +</span><span id="Parser-6230"><a href="#Parser-6230"><span class="linenos">6230</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()])</span> +</span><span id="Parser-6231"><a href="#Parser-6231"><span class="linenos">6231</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_FILE_FORMAT"</span><span class="p">):</span> +</span><span id="Parser-6232"><a href="#Parser-6232"><span class="linenos">6232</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"file_format"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="Parser-6233"><a href="#Parser-6233"><span class="linenos">6233</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STAGE_COPY_OPTIONS"</span><span class="p">):</span> +</span><span id="Parser-6234"><a href="#Parser-6234"><span class="linenos">6234</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"copy_options"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="Parser-6235"><a href="#Parser-6235"><span class="linenos">6235</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAG"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TAGS"</span><span class="p">):</span> +</span><span id="Parser-6236"><a href="#Parser-6236"><span class="linenos">6236</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"tag"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">))</span> +</span><span id="Parser-6237"><a href="#Parser-6237"><span class="linenos">6237</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6238"><a href="#Parser-6238"><span class="linenos">6238</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> +</span><span id="Parser-6239"><a href="#Parser-6239"><span class="linenos">6239</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"serde"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6240"><a href="#Parser-6240"><span class="linenos">6240</span></a> +</span><span id="Parser-6241"><a href="#Parser-6241"><span class="linenos">6241</span></a> <span class="n">alter_set</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()])</span> +</span><span id="Parser-6242"><a href="#Parser-6242"><span class="linenos">6242</span></a> +</span><span id="Parser-6243"><a href="#Parser-6243"><span class="linenos">6243</span></a> <span class="k">return</span> <span class="n">alter_set</span> +</span><span id="Parser-6244"><a href="#Parser-6244"><span class="linenos">6244</span></a> +</span><span id="Parser-6245"><a href="#Parser-6245"><span class="linenos">6245</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-6246"><a href="#Parser-6246"><span class="linenos">6246</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-6247"><a href="#Parser-6247"><span class="linenos">6247</span></a> +</span><span id="Parser-6248"><a href="#Parser-6248"><span class="linenos">6248</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="Parser-6249"><a href="#Parser-6249"><span class="linenos">6249</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-6250"><a href="#Parser-6250"><span class="linenos">6250</span></a> +</span><span id="Parser-6251"><a href="#Parser-6251"><span class="linenos">6251</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-6252"><a href="#Parser-6252"><span class="linenos">6252</span></a> <span class="n">only</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONLY"</span><span class="p">)</span> +</span><span id="Parser-6253"><a href="#Parser-6253"><span class="linenos">6253</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6254"><a href="#Parser-6254"><span class="linenos">6254</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-6255"><a href="#Parser-6255"><span class="linenos">6255</span></a> +</span><span id="Parser-6256"><a href="#Parser-6256"><span class="linenos">6256</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="Parser-6257"><a href="#Parser-6257"><span class="linenos">6257</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6258"><a href="#Parser-6258"><span class="linenos">6258</span></a> +</span><span id="Parser-6259"><a href="#Parser-6259"><span class="linenos">6259</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ALTER_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-6260"><a href="#Parser-6260"><span class="linenos">6260</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-6261"><a href="#Parser-6261"><span class="linenos">6261</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="Parser-6262"><a href="#Parser-6262"><span class="linenos">6262</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> </span><span id="Parser-6263"><a href="#Parser-6263"><span class="linenos">6263</span></a> -</span><span id="Parser-6264"><a href="#Parser-6264"><span class="linenos">6264</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="Parser-6265"><a href="#Parser-6265"><span class="linenos">6265</span></a> <span class="n">matched</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="Parser-6266"><a href="#Parser-6266"><span class="linenos">6266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCHED"</span><span class="p">)</span> -</span><span id="Parser-6267"><a href="#Parser-6267"><span class="linenos">6267</span></a> <span class="n">source</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-6268"><a href="#Parser-6268"><span class="linenos">6268</span></a> <span class="kc">False</span> -</span><span id="Parser-6269"><a href="#Parser-6269"><span class="linenos">6269</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"TARGET"</span><span class="p">)</span> -</span><span id="Parser-6270"><a href="#Parser-6270"><span class="linenos">6270</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"SOURCE"</span><span class="p">)</span> -</span><span id="Parser-6271"><a href="#Parser-6271"><span class="linenos">6271</span></a> <span class="p">)</span> -</span><span id="Parser-6272"><a href="#Parser-6272"><span class="linenos">6272</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-6273"><a href="#Parser-6273"><span class="linenos">6273</span></a> -</span><span id="Parser-6274"><a href="#Parser-6274"><span class="linenos">6274</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="Parser-6275"><a href="#Parser-6275"><span class="linenos">6275</span></a> -</span><span id="Parser-6276"><a href="#Parser-6276"><span class="linenos">6276</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> -</span><span id="Parser-6277"><a href="#Parser-6277"><span class="linenos">6277</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="Parser-6278"><a href="#Parser-6278"><span class="linenos">6278</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> -</span><span id="Parser-6279"><a href="#Parser-6279"><span class="linenos">6279</span></a> <span class="n">then</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> -</span><span id="Parser-6280"><a href="#Parser-6280"><span class="linenos">6280</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6281"><a href="#Parser-6281"><span class="linenos">6281</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6282"><a href="#Parser-6282"><span class="linenos">6282</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="Parser-6283"><a href="#Parser-6283"><span class="linenos">6283</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="Parser-6284"><a href="#Parser-6284"><span class="linenos">6284</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="Parser-6285"><a href="#Parser-6285"><span class="linenos">6285</span></a> <span class="p">)</span> -</span><span id="Parser-6286"><a href="#Parser-6286"><span class="linenos">6286</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> -</span><span id="Parser-6287"><a href="#Parser-6287"><span class="linenos">6287</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="Parser-6288"><a href="#Parser-6288"><span class="linenos">6288</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-6289"><a href="#Parser-6289"><span class="linenos">6289</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-6290"><a href="#Parser-6290"><span class="linenos">6290</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6291"><a href="#Parser-6291"><span class="linenos">6291</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6292"><a href="#Parser-6292"><span class="linenos">6292</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="Parser-6293"><a href="#Parser-6293"><span class="linenos">6293</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> -</span><span id="Parser-6294"><a href="#Parser-6294"><span class="linenos">6294</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> -</span><span id="Parser-6295"><a href="#Parser-6295"><span class="linenos">6295</span></a> <span class="p">)</span> -</span><span id="Parser-6296"><a href="#Parser-6296"><span class="linenos">6296</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> -</span><span id="Parser-6297"><a href="#Parser-6297"><span class="linenos">6297</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-6298"><a href="#Parser-6298"><span class="linenos">6298</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6299"><a href="#Parser-6299"><span class="linenos">6299</span></a> <span class="n">then</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6264"><a href="#Parser-6264"><span class="linenos">6264</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">actions</span><span class="p">:</span> +</span><span id="Parser-6265"><a href="#Parser-6265"><span class="linenos">6265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6266"><a href="#Parser-6266"><span class="linenos">6266</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</span><span class="p">,</span> +</span><span id="Parser-6267"><a href="#Parser-6267"><span class="linenos">6267</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-6268"><a href="#Parser-6268"><span class="linenos">6268</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="Parser-6269"><a href="#Parser-6269"><span class="linenos">6269</span></a> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">,</span> +</span><span id="Parser-6270"><a href="#Parser-6270"><span class="linenos">6270</span></a> <span class="n">only</span><span class="o">=</span><span class="n">only</span><span class="p">,</span> +</span><span id="Parser-6271"><a href="#Parser-6271"><span class="linenos">6271</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> +</span><span id="Parser-6272"><a href="#Parser-6272"><span class="linenos">6272</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> +</span><span id="Parser-6273"><a href="#Parser-6273"><span class="linenos">6273</span></a> <span class="p">)</span> +</span><span id="Parser-6274"><a href="#Parser-6274"><span class="linenos">6274</span></a> +</span><span id="Parser-6275"><a href="#Parser-6275"><span class="linenos">6275</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-6276"><a href="#Parser-6276"><span class="linenos">6276</span></a> +</span><span id="Parser-6277"><a href="#Parser-6277"><span class="linenos">6277</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">:</span> +</span><span id="Parser-6278"><a href="#Parser-6278"><span class="linenos">6278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="Parser-6279"><a href="#Parser-6279"><span class="linenos">6279</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="Parser-6280"><a href="#Parser-6280"><span class="linenos">6280</span></a> +</span><span id="Parser-6281"><a href="#Parser-6281"><span class="linenos">6281</span></a> <span class="k">if</span> <span class="n">target</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6282"><a href="#Parser-6282"><span class="linenos">6282</span></a> <span class="n">target</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="Parser-6283"><a href="#Parser-6283"><span class="linenos">6283</span></a> +</span><span id="Parser-6284"><a href="#Parser-6284"><span class="linenos">6284</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> +</span><span id="Parser-6285"><a href="#Parser-6285"><span class="linenos">6285</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="Parser-6286"><a href="#Parser-6286"><span class="linenos">6286</span></a> +</span><span id="Parser-6287"><a href="#Parser-6287"><span class="linenos">6287</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-6288"><a href="#Parser-6288"><span class="linenos">6288</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> +</span><span id="Parser-6289"><a href="#Parser-6289"><span class="linenos">6289</span></a> +</span><span id="Parser-6290"><a href="#Parser-6290"><span class="linenos">6290</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6291"><a href="#Parser-6291"><span class="linenos">6291</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> +</span><span id="Parser-6292"><a href="#Parser-6292"><span class="linenos">6292</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> +</span><span id="Parser-6293"><a href="#Parser-6293"><span class="linenos">6293</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> +</span><span id="Parser-6294"><a href="#Parser-6294"><span class="linenos">6294</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> +</span><span id="Parser-6295"><a href="#Parser-6295"><span class="linenos">6295</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_when_matched</span><span class="p">(),</span> +</span><span id="Parser-6296"><a href="#Parser-6296"><span class="linenos">6296</span></a> <span class="p">)</span> +</span><span id="Parser-6297"><a href="#Parser-6297"><span class="linenos">6297</span></a> +</span><span id="Parser-6298"><a href="#Parser-6298"><span class="linenos">6298</span></a> <span class="k">def</span> <span class="nf">_parse_when_matched</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">]:</span> +</span><span id="Parser-6299"><a href="#Parser-6299"><span class="linenos">6299</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Parser-6300"><a href="#Parser-6300"><span class="linenos">6300</span></a> -</span><span id="Parser-6301"><a href="#Parser-6301"><span class="linenos">6301</span></a> <span class="n">whens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-6302"><a href="#Parser-6302"><span class="linenos">6302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6303"><a href="#Parser-6303"><span class="linenos">6303</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">,</span> -</span><span id="Parser-6304"><a href="#Parser-6304"><span class="linenos">6304</span></a> <span class="n">matched</span><span class="o">=</span><span class="n">matched</span><span class="p">,</span> -</span><span id="Parser-6305"><a href="#Parser-6305"><span class="linenos">6305</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> -</span><span id="Parser-6306"><a href="#Parser-6306"><span class="linenos">6306</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> -</span><span id="Parser-6307"><a href="#Parser-6307"><span class="linenos">6307</span></a> <span class="n">then</span><span class="o">=</span><span class="n">then</span><span class="p">,</span> -</span><span id="Parser-6308"><a href="#Parser-6308"><span class="linenos">6308</span></a> <span class="p">)</span> -</span><span id="Parser-6309"><a href="#Parser-6309"><span class="linenos">6309</span></a> <span class="p">)</span> -</span><span id="Parser-6310"><a href="#Parser-6310"><span class="linenos">6310</span></a> <span class="k">return</span> <span class="n">whens</span> -</span><span id="Parser-6311"><a href="#Parser-6311"><span class="linenos">6311</span></a> -</span><span id="Parser-6312"><a href="#Parser-6312"><span class="linenos">6312</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6313"><a href="#Parser-6313"><span class="linenos">6313</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SHOW_TRIE</span><span class="p">)</span> -</span><span id="Parser-6314"><a href="#Parser-6314"><span class="linenos">6314</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-6315"><a href="#Parser-6315"><span class="linenos">6315</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-6316"><a href="#Parser-6316"><span class="linenos">6316</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-6317"><a href="#Parser-6317"><span class="linenos">6317</span></a> -</span><span id="Parser-6318"><a href="#Parser-6318"><span class="linenos">6318</span></a> <span class="k">def</span> <span class="nf">_parse_set_item_assignment</span><span class="p">(</span> -</span><span id="Parser-6319"><a href="#Parser-6319"><span class="linenos">6319</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-6320"><a href="#Parser-6320"><span class="linenos">6320</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6321"><a href="#Parser-6321"><span class="linenos">6321</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-6322"><a href="#Parser-6322"><span class="linenos">6322</span></a> -</span><span id="Parser-6323"><a href="#Parser-6323"><span class="linenos">6323</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">,</span> <span class="s2">"SESSION"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">):</span> -</span><span id="Parser-6324"><a href="#Parser-6324"><span class="linenos">6324</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"GLOBAL"</span><span class="p">)</span> -</span><span id="Parser-6325"><a href="#Parser-6325"><span class="linenos">6325</span></a> -</span><span id="Parser-6326"><a href="#Parser-6326"><span class="linenos">6326</span></a> <span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-6327"><a href="#Parser-6327"><span class="linenos">6327</span></a> <span class="n">assignment_delimiter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"="</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">))</span> -</span><span id="Parser-6328"><a href="#Parser-6328"><span class="linenos">6328</span></a> -</span><span id="Parser-6329"><a href="#Parser-6329"><span class="linenos">6329</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">left</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">assignment_delimiter</span><span class="p">):</span> -</span><span id="Parser-6330"><a href="#Parser-6330"><span class="linenos">6330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6331"><a href="#Parser-6331"><span class="linenos">6331</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6332"><a href="#Parser-6332"><span class="linenos">6332</span></a> -</span><span id="Parser-6333"><a href="#Parser-6333"><span class="linenos">6333</span></a> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-6334"><a href="#Parser-6334"><span class="linenos">6334</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)):</span> -</span><span id="Parser-6335"><a href="#Parser-6335"><span class="linenos">6335</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-6336"><a href="#Parser-6336"><span class="linenos">6336</span></a> -</span><span id="Parser-6337"><a href="#Parser-6337"><span class="linenos">6337</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">)</span> -</span><span id="Parser-6338"><a href="#Parser-6338"><span class="linenos">6338</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="Parser-6339"><a href="#Parser-6339"><span class="linenos">6339</span></a> -</span><span id="Parser-6340"><a href="#Parser-6340"><span class="linenos">6340</span></a> <span class="k">def</span> <span class="nf">_parse_set_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-6341"><a href="#Parser-6341"><span class="linenos">6341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">)</span> -</span><span id="Parser-6342"><a href="#Parser-6342"><span class="linenos">6342</span></a> <span class="n">characteristics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-6343"><a href="#Parser-6343"><span class="linenos">6343</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">)</span> -</span><span id="Parser-6344"><a href="#Parser-6344"><span class="linenos">6344</span></a> <span class="p">)</span> -</span><span id="Parser-6345"><a href="#Parser-6345"><span class="linenos">6345</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6346"><a href="#Parser-6346"><span class="linenos">6346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> -</span><span id="Parser-6347"><a href="#Parser-6347"><span class="linenos">6347</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">characteristics</span><span class="p">,</span> -</span><span id="Parser-6348"><a href="#Parser-6348"><span class="linenos">6348</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> -</span><span id="Parser-6349"><a href="#Parser-6349"><span class="linenos">6349</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"global"</span><span class="p">:</span> <span class="n">global_</span><span class="p">},</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-6350"><a href="#Parser-6350"><span class="linenos">6350</span></a> <span class="p">)</span> -</span><span id="Parser-6351"><a href="#Parser-6351"><span class="linenos">6351</span></a> -</span><span id="Parser-6352"><a href="#Parser-6352"><span class="linenos">6352</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6353"><a href="#Parser-6353"><span class="linenos">6353</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SET_TRIE</span><span class="p">)</span> -</span><span id="Parser-6354"><a href="#Parser-6354"><span class="linenos">6354</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-6355"><a href="#Parser-6355"><span class="linenos">6355</span></a> -</span><span id="Parser-6356"><a href="#Parser-6356"><span class="linenos">6356</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unset</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">tag</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-6357"><a href="#Parser-6357"><span class="linenos">6357</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-6358"><a href="#Parser-6358"><span class="linenos">6358</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6359"><a href="#Parser-6359"><span class="linenos">6359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">),</span> <span class="n">unset</span><span class="o">=</span><span class="n">unset</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag</span> -</span><span id="Parser-6360"><a href="#Parser-6360"><span class="linenos">6360</span></a> <span class="p">)</span> -</span><span id="Parser-6361"><a href="#Parser-6361"><span class="linenos">6361</span></a> -</span><span id="Parser-6362"><a href="#Parser-6362"><span class="linenos">6362</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6363"><a href="#Parser-6363"><span class="linenos">6363</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6364"><a href="#Parser-6364"><span class="linenos">6364</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-6301"><a href="#Parser-6301"><span class="linenos">6301</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="Parser-6302"><a href="#Parser-6302"><span class="linenos">6302</span></a> <span class="n">matched</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="Parser-6303"><a href="#Parser-6303"><span class="linenos">6303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCHED"</span><span class="p">)</span> +</span><span id="Parser-6304"><a href="#Parser-6304"><span class="linenos">6304</span></a> <span class="n">source</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-6305"><a href="#Parser-6305"><span class="linenos">6305</span></a> <span class="kc">False</span> +</span><span id="Parser-6306"><a href="#Parser-6306"><span class="linenos">6306</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"TARGET"</span><span class="p">)</span> +</span><span id="Parser-6307"><a href="#Parser-6307"><span class="linenos">6307</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BY"</span><span class="p">,</span> <span class="s2">"SOURCE"</span><span class="p">)</span> +</span><span id="Parser-6308"><a href="#Parser-6308"><span class="linenos">6308</span></a> <span class="p">)</span> +</span><span id="Parser-6309"><a href="#Parser-6309"><span class="linenos">6309</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-6310"><a href="#Parser-6310"><span class="linenos">6310</span></a> +</span><span id="Parser-6311"><a href="#Parser-6311"><span class="linenos">6311</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="Parser-6312"><a href="#Parser-6312"><span class="linenos">6312</span></a> +</span><span id="Parser-6313"><a href="#Parser-6313"><span class="linenos">6313</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> +</span><span id="Parser-6314"><a href="#Parser-6314"><span class="linenos">6314</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="Parser-6315"><a href="#Parser-6315"><span class="linenos">6315</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> +</span><span id="Parser-6316"><a href="#Parser-6316"><span class="linenos">6316</span></a> <span class="n">then</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> +</span><span id="Parser-6317"><a href="#Parser-6317"><span class="linenos">6317</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6318"><a href="#Parser-6318"><span class="linenos">6318</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6319"><a href="#Parser-6319"><span class="linenos">6319</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="Parser-6320"><a href="#Parser-6320"><span class="linenos">6320</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="Parser-6321"><a href="#Parser-6321"><span class="linenos">6321</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"VALUES"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="Parser-6322"><a href="#Parser-6322"><span class="linenos">6322</span></a> <span class="p">)</span> +</span><span id="Parser-6323"><a href="#Parser-6323"><span class="linenos">6323</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> +</span><span id="Parser-6324"><a href="#Parser-6324"><span class="linenos">6324</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="Parser-6325"><a href="#Parser-6325"><span class="linenos">6325</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-6326"><a href="#Parser-6326"><span class="linenos">6326</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-6327"><a href="#Parser-6327"><span class="linenos">6327</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6328"><a href="#Parser-6328"><span class="linenos">6328</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6329"><a href="#Parser-6329"><span class="linenos">6329</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="Parser-6330"><a href="#Parser-6330"><span class="linenos">6330</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> +</span><span id="Parser-6331"><a href="#Parser-6331"><span class="linenos">6331</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> +</span><span id="Parser-6332"><a href="#Parser-6332"><span class="linenos">6332</span></a> <span class="p">)</span> +</span><span id="Parser-6333"><a href="#Parser-6333"><span class="linenos">6333</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> +</span><span id="Parser-6334"><a href="#Parser-6334"><span class="linenos">6334</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-6335"><a href="#Parser-6335"><span class="linenos">6335</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6336"><a href="#Parser-6336"><span class="linenos">6336</span></a> <span class="n">then</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6337"><a href="#Parser-6337"><span class="linenos">6337</span></a> +</span><span id="Parser-6338"><a href="#Parser-6338"><span class="linenos">6338</span></a> <span class="n">whens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-6339"><a href="#Parser-6339"><span class="linenos">6339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6340"><a href="#Parser-6340"><span class="linenos">6340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">When</span><span class="p">,</span> +</span><span id="Parser-6341"><a href="#Parser-6341"><span class="linenos">6341</span></a> <span class="n">matched</span><span class="o">=</span><span class="n">matched</span><span class="p">,</span> +</span><span id="Parser-6342"><a href="#Parser-6342"><span class="linenos">6342</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> +</span><span id="Parser-6343"><a href="#Parser-6343"><span class="linenos">6343</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> +</span><span id="Parser-6344"><a href="#Parser-6344"><span class="linenos">6344</span></a> <span class="n">then</span><span class="o">=</span><span class="n">then</span><span class="p">,</span> +</span><span id="Parser-6345"><a href="#Parser-6345"><span class="linenos">6345</span></a> <span class="p">)</span> +</span><span id="Parser-6346"><a href="#Parser-6346"><span class="linenos">6346</span></a> <span class="p">)</span> +</span><span id="Parser-6347"><a href="#Parser-6347"><span class="linenos">6347</span></a> <span class="k">return</span> <span class="n">whens</span> +</span><span id="Parser-6348"><a href="#Parser-6348"><span class="linenos">6348</span></a> +</span><span id="Parser-6349"><a href="#Parser-6349"><span class="linenos">6349</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6350"><a href="#Parser-6350"><span class="linenos">6350</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SHOW_TRIE</span><span class="p">)</span> +</span><span id="Parser-6351"><a href="#Parser-6351"><span class="linenos">6351</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-6352"><a href="#Parser-6352"><span class="linenos">6352</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-6353"><a href="#Parser-6353"><span class="linenos">6353</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-6354"><a href="#Parser-6354"><span class="linenos">6354</span></a> +</span><span id="Parser-6355"><a href="#Parser-6355"><span class="linenos">6355</span></a> <span class="k">def</span> <span class="nf">_parse_set_item_assignment</span><span class="p">(</span> +</span><span id="Parser-6356"><a href="#Parser-6356"><span class="linenos">6356</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6357"><a href="#Parser-6357"><span class="linenos">6357</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6358"><a href="#Parser-6358"><span class="linenos">6358</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-6359"><a href="#Parser-6359"><span class="linenos">6359</span></a> +</span><span id="Parser-6360"><a href="#Parser-6360"><span class="linenos">6360</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">,</span> <span class="s2">"SESSION"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">):</span> +</span><span id="Parser-6361"><a href="#Parser-6361"><span class="linenos">6361</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_transaction</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"GLOBAL"</span><span class="p">)</span> +</span><span id="Parser-6362"><a href="#Parser-6362"><span class="linenos">6362</span></a> +</span><span id="Parser-6363"><a href="#Parser-6363"><span class="linenos">6363</span></a> <span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-6364"><a href="#Parser-6364"><span class="linenos">6364</span></a> <span class="n">assignment_delimiter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"="</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">))</span> </span><span id="Parser-6365"><a href="#Parser-6365"><span class="linenos">6365</span></a> -</span><span id="Parser-6366"><a href="#Parser-6366"><span class="linenos">6366</span></a> <span class="k">return</span> <span class="n">set_</span> -</span><span id="Parser-6367"><a href="#Parser-6367"><span class="linenos">6367</span></a> -</span><span id="Parser-6368"><a href="#Parser-6368"><span class="linenos">6368</span></a> <span class="k">def</span> <span class="nf">_parse_var_from_options</span><span class="p">(</span> -</span><span id="Parser-6369"><a href="#Parser-6369"><span class="linenos">6369</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-6370"><a href="#Parser-6370"><span class="linenos">6370</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">]:</span> -</span><span id="Parser-6371"><a href="#Parser-6371"><span class="linenos">6371</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> -</span><span id="Parser-6372"><a href="#Parser-6372"><span class="linenos">6372</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> -</span><span id="Parser-6373"><a href="#Parser-6373"><span class="linenos">6373</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6374"><a href="#Parser-6374"><span class="linenos">6374</span></a> -</span><span id="Parser-6375"><a href="#Parser-6375"><span class="linenos">6375</span></a> <span class="n">option</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-6376"><a href="#Parser-6376"><span class="linenos">6376</span></a> <span class="n">continuations</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> -</span><span id="Parser-6377"><a href="#Parser-6377"><span class="linenos">6377</span></a> -</span><span id="Parser-6378"><a href="#Parser-6378"><span class="linenos">6378</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-6379"><a href="#Parser-6379"><span class="linenos">6379</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6380"><a href="#Parser-6380"><span class="linenos">6380</span></a> <span class="k">for</span> <span class="n">keywords</span> <span class="ow">in</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="p">[]:</span> -</span><span id="Parser-6381"><a href="#Parser-6381"><span class="linenos">6381</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Parser-6382"><a href="#Parser-6382"><span class="linenos">6382</span></a> <span class="n">keywords</span> <span class="o">=</span> <span class="p">(</span><span class="n">keywords</span><span class="p">,)</span> -</span><span id="Parser-6383"><a href="#Parser-6383"><span class="linenos">6383</span></a> -</span><span id="Parser-6384"><a href="#Parser-6384"><span class="linenos">6384</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">keywords</span><span class="p">):</span> -</span><span id="Parser-6385"><a href="#Parser-6385"><span class="linenos">6385</span></a> <span class="n">option</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keywords</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Parser-6386"><a href="#Parser-6386"><span class="linenos">6386</span></a> <span class="k">break</span> -</span><span id="Parser-6387"><a href="#Parser-6387"><span class="linenos">6387</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6388"><a href="#Parser-6388"><span class="linenos">6388</span></a> <span class="k">if</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="n">continuations</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-6389"><a href="#Parser-6389"><span class="linenos">6389</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span> -</span><span id="Parser-6390"><a href="#Parser-6390"><span class="linenos">6390</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown option </span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-6391"><a href="#Parser-6391"><span class="linenos">6391</span></a> -</span><span id="Parser-6392"><a href="#Parser-6392"><span class="linenos">6392</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6393"><a href="#Parser-6393"><span class="linenos">6393</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6394"><a href="#Parser-6394"><span class="linenos">6394</span></a> -</span><span id="Parser-6395"><a href="#Parser-6395"><span class="linenos">6395</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> -</span><span id="Parser-6396"><a href="#Parser-6396"><span class="linenos">6396</span></a> -</span><span id="Parser-6397"><a href="#Parser-6397"><span class="linenos">6397</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-6398"><a href="#Parser-6398"><span class="linenos">6398</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6399"><a href="#Parser-6399"><span class="linenos">6399</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6400"><a href="#Parser-6400"><span class="linenos">6400</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-6401"><a href="#Parser-6401"><span class="linenos">6401</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-6402"><a href="#Parser-6402"><span class="linenos">6402</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> -</span><span id="Parser-6403"><a href="#Parser-6403"><span class="linenos">6403</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">[:</span><span class="n">size</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">text</span><span class="p">[</span><span class="n">size</span><span class="p">:])</span> +</span><span id="Parser-6366"><a href="#Parser-6366"><span class="linenos">6366</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">left</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_REQUIRES_ASSIGNMENT_DELIMITER</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">assignment_delimiter</span><span class="p">):</span> +</span><span id="Parser-6367"><a href="#Parser-6367"><span class="linenos">6367</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6368"><a href="#Parser-6368"><span class="linenos">6368</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6369"><a href="#Parser-6369"><span class="linenos">6369</span></a> +</span><span id="Parser-6370"><a href="#Parser-6370"><span class="linenos">6370</span></a> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-6371"><a href="#Parser-6371"><span class="linenos">6371</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)):</span> +</span><span id="Parser-6372"><a href="#Parser-6372"><span class="linenos">6372</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-6373"><a href="#Parser-6373"><span class="linenos">6373</span></a> +</span><span id="Parser-6374"><a href="#Parser-6374"><span class="linenos">6374</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">)</span> +</span><span id="Parser-6375"><a href="#Parser-6375"><span class="linenos">6375</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="Parser-6376"><a href="#Parser-6376"><span class="linenos">6376</span></a> +</span><span id="Parser-6377"><a href="#Parser-6377"><span class="linenos">6377</span></a> <span class="k">def</span> <span class="nf">_parse_set_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-6378"><a href="#Parser-6378"><span class="linenos">6378</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSACTION"</span><span class="p">)</span> +</span><span id="Parser-6379"><a href="#Parser-6379"><span class="linenos">6379</span></a> <span class="n">characteristics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-6380"><a href="#Parser-6380"><span class="linenos">6380</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_from_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_CHARACTERISTICS</span><span class="p">)</span> +</span><span id="Parser-6381"><a href="#Parser-6381"><span class="linenos">6381</span></a> <span class="p">)</span> +</span><span id="Parser-6382"><a href="#Parser-6382"><span class="linenos">6382</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6383"><a href="#Parser-6383"><span class="linenos">6383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> +</span><span id="Parser-6384"><a href="#Parser-6384"><span class="linenos">6384</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">characteristics</span><span class="p">,</span> +</span><span id="Parser-6385"><a href="#Parser-6385"><span class="linenos">6385</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> +</span><span id="Parser-6386"><a href="#Parser-6386"><span class="linenos">6386</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"global"</span><span class="p">:</span> <span class="n">global_</span><span class="p">},</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-6387"><a href="#Parser-6387"><span class="linenos">6387</span></a> <span class="p">)</span> +</span><span id="Parser-6388"><a href="#Parser-6388"><span class="linenos">6388</span></a> +</span><span id="Parser-6389"><a href="#Parser-6389"><span class="linenos">6389</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6390"><a href="#Parser-6390"><span class="linenos">6390</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SET_TRIE</span><span class="p">)</span> +</span><span id="Parser-6391"><a href="#Parser-6391"><span class="linenos">6391</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item_assignment</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-6392"><a href="#Parser-6392"><span class="linenos">6392</span></a> +</span><span id="Parser-6393"><a href="#Parser-6393"><span class="linenos">6393</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unset</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">tag</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-6394"><a href="#Parser-6394"><span class="linenos">6394</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-6395"><a href="#Parser-6395"><span class="linenos">6395</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6396"><a href="#Parser-6396"><span class="linenos">6396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">),</span> <span class="n">unset</span><span class="o">=</span><span class="n">unset</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag</span> +</span><span id="Parser-6397"><a href="#Parser-6397"><span class="linenos">6397</span></a> <span class="p">)</span> +</span><span id="Parser-6398"><a href="#Parser-6398"><span class="linenos">6398</span></a> +</span><span id="Parser-6399"><a href="#Parser-6399"><span class="linenos">6399</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6400"><a href="#Parser-6400"><span class="linenos">6400</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6401"><a href="#Parser-6401"><span class="linenos">6401</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-6402"><a href="#Parser-6402"><span class="linenos">6402</span></a> +</span><span id="Parser-6403"><a href="#Parser-6403"><span class="linenos">6403</span></a> <span class="k">return</span> <span class="n">set_</span> </span><span id="Parser-6404"><a href="#Parser-6404"><span class="linenos">6404</span></a> -</span><span id="Parser-6405"><a href="#Parser-6405"><span class="linenos">6405</span></a> <span class="k">def</span> <span class="nf">_parse_dict_property</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">:</span> -</span><span id="Parser-6406"><a href="#Parser-6406"><span class="linenos">6406</span></a> <span class="n">settings</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-6407"><a href="#Parser-6407"><span class="linenos">6407</span></a> -</span><span id="Parser-6408"><a href="#Parser-6408"><span class="linenos">6408</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-6409"><a href="#Parser-6409"><span class="linenos">6409</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-6410"><a href="#Parser-6410"><span class="linenos">6410</span></a> -</span><span id="Parser-6411"><a href="#Parser-6411"><span class="linenos">6411</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-6412"><a href="#Parser-6412"><span class="linenos">6412</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-6413"><a href="#Parser-6413"><span class="linenos">6413</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-6414"><a href="#Parser-6414"><span class="linenos">6414</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-6415"><a href="#Parser-6415"><span class="linenos">6415</span></a> -</span><span id="Parser-6416"><a href="#Parser-6416"><span class="linenos">6416</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-6417"><a href="#Parser-6417"><span class="linenos">6417</span></a> <span class="k">break</span> -</span><span id="Parser-6418"><a href="#Parser-6418"><span class="linenos">6418</span></a> <span class="n">settings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictSubProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">))</span> -</span><span id="Parser-6419"><a href="#Parser-6419"><span class="linenos">6419</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> +</span><span id="Parser-6405"><a href="#Parser-6405"><span class="linenos">6405</span></a> <span class="k">def</span> <span class="nf">_parse_var_from_options</span><span class="p">(</span> +</span><span id="Parser-6406"><a href="#Parser-6406"><span class="linenos">6406</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">OPTIONS_TYPE</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-6407"><a href="#Parser-6407"><span class="linenos">6407</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">]:</span> +</span><span id="Parser-6408"><a href="#Parser-6408"><span class="linenos">6408</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> +</span><span id="Parser-6409"><a href="#Parser-6409"><span class="linenos">6409</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span><span class="p">:</span> +</span><span id="Parser-6410"><a href="#Parser-6410"><span class="linenos">6410</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6411"><a href="#Parser-6411"><span class="linenos">6411</span></a> +</span><span id="Parser-6412"><a href="#Parser-6412"><span class="linenos">6412</span></a> <span class="n">option</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-6413"><a href="#Parser-6413"><span class="linenos">6413</span></a> <span class="n">continuations</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> +</span><span id="Parser-6414"><a href="#Parser-6414"><span class="linenos">6414</span></a> +</span><span id="Parser-6415"><a href="#Parser-6415"><span class="linenos">6415</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-6416"><a href="#Parser-6416"><span class="linenos">6416</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6417"><a href="#Parser-6417"><span class="linenos">6417</span></a> <span class="k">for</span> <span class="n">keywords</span> <span class="ow">in</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="p">[]:</span> +</span><span id="Parser-6418"><a href="#Parser-6418"><span class="linenos">6418</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Parser-6419"><a href="#Parser-6419"><span class="linenos">6419</span></a> <span class="n">keywords</span> <span class="o">=</span> <span class="p">(</span><span class="n">keywords</span><span class="p">,)</span> </span><span id="Parser-6420"><a href="#Parser-6420"><span class="linenos">6420</span></a> -</span><span id="Parser-6421"><a href="#Parser-6421"><span class="linenos">6421</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-6422"><a href="#Parser-6422"><span class="linenos">6422</span></a> -</span><span id="Parser-6423"><a href="#Parser-6423"><span class="linenos">6423</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6424"><a href="#Parser-6424"><span class="linenos">6424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">,</span> -</span><span id="Parser-6425"><a href="#Parser-6425"><span class="linenos">6425</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-6426"><a href="#Parser-6426"><span class="linenos">6426</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-6427"><a href="#Parser-6427"><span class="linenos">6427</span></a> <span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">,</span> -</span><span id="Parser-6428"><a href="#Parser-6428"><span class="linenos">6428</span></a> <span class="p">)</span> -</span><span id="Parser-6429"><a href="#Parser-6429"><span class="linenos">6429</span></a> -</span><span id="Parser-6430"><a href="#Parser-6430"><span class="linenos">6430</span></a> <span class="k">def</span> <span class="nf">_parse_dict_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">:</span> -</span><span id="Parser-6431"><a href="#Parser-6431"><span class="linenos">6431</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-6432"><a href="#Parser-6432"><span class="linenos">6432</span></a> <span class="n">has_min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MIN"</span><span class="p">)</span> -</span><span id="Parser-6433"><a href="#Parser-6433"><span class="linenos">6433</span></a> <span class="k">if</span> <span class="n">has_min</span><span class="p">:</span> -</span><span id="Parser-6434"><a href="#Parser-6434"><span class="linenos">6434</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-6435"><a href="#Parser-6435"><span class="linenos">6435</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">)</span> -</span><span id="Parser-6436"><a href="#Parser-6436"><span class="linenos">6436</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-6437"><a href="#Parser-6437"><span class="linenos">6437</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6438"><a href="#Parser-6438"><span class="linenos">6438</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-6439"><a href="#Parser-6439"><span class="linenos">6439</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> -</span><span id="Parser-6440"><a href="#Parser-6440"><span class="linenos">6440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-6441"><a href="#Parser-6441"><span class="linenos">6441</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span><span class="p">)</span> -</span><span id="Parser-6442"><a href="#Parser-6442"><span class="linenos">6442</span></a> -</span><span id="Parser-6443"><a href="#Parser-6443"><span class="linenos">6443</span></a> <span class="k">def</span> <span class="nf">_parse_comprehension</span><span class="p">(</span> -</span><span id="Parser-6444"><a href="#Parser-6444"><span class="linenos">6444</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-6445"><a href="#Parser-6445"><span class="linenos">6445</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">]:</span> -</span><span id="Parser-6446"><a href="#Parser-6446"><span class="linenos">6446</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-6447"><a href="#Parser-6447"><span class="linenos">6447</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-6448"><a href="#Parser-6448"><span class="linenos">6448</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-6449"><a href="#Parser-6449"><span class="linenos">6449</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-6450"><a href="#Parser-6450"><span class="linenos">6450</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6451"><a href="#Parser-6451"><span class="linenos">6451</span></a> <span class="n">iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-6452"><a href="#Parser-6452"><span class="linenos">6452</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-6453"><a href="#Parser-6453"><span class="linenos">6453</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6454"><a href="#Parser-6454"><span class="linenos">6454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">,</span> -</span><span id="Parser-6455"><a href="#Parser-6455"><span class="linenos">6455</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-6456"><a href="#Parser-6456"><span class="linenos">6456</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-6457"><a href="#Parser-6457"><span class="linenos">6457</span></a> <span class="n">iterator</span><span class="o">=</span><span class="n">iterator</span><span class="p">,</span> -</span><span id="Parser-6458"><a href="#Parser-6458"><span class="linenos">6458</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> -</span><span id="Parser-6459"><a href="#Parser-6459"><span class="linenos">6459</span></a> <span class="p">)</span> -</span><span id="Parser-6460"><a href="#Parser-6460"><span class="linenos">6460</span></a> -</span><span id="Parser-6461"><a href="#Parser-6461"><span class="linenos">6461</span></a> <span class="k">def</span> <span class="nf">_parse_heredoc</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">]:</span> -</span><span id="Parser-6462"><a href="#Parser-6462"><span class="linenos">6462</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">):</span> -</span><span id="Parser-6463"><a href="#Parser-6463"><span class="linenos">6463</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-6464"><a href="#Parser-6464"><span class="linenos">6464</span></a> -</span><span id="Parser-6465"><a href="#Parser-6465"><span class="linenos">6465</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> -</span><span id="Parser-6466"><a href="#Parser-6466"><span class="linenos">6466</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6467"><a href="#Parser-6467"><span class="linenos">6467</span></a> -</span><span id="Parser-6468"><a href="#Parser-6468"><span class="linenos">6468</span></a> <span class="n">tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> -</span><span id="Parser-6469"><a href="#Parser-6469"><span class="linenos">6469</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-6470"><a href="#Parser-6470"><span class="linenos">6470</span></a> -</span><span id="Parser-6471"><a href="#Parser-6471"><span class="linenos">6471</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">():</span> -</span><span id="Parser-6472"><a href="#Parser-6472"><span class="linenos">6472</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6473"><a href="#Parser-6473"><span class="linenos">6473</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-6421"><a href="#Parser-6421"><span class="linenos">6421</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">keywords</span><span class="p">):</span> +</span><span id="Parser-6422"><a href="#Parser-6422"><span class="linenos">6422</span></a> <span class="n">option</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keywords</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Parser-6423"><a href="#Parser-6423"><span class="linenos">6423</span></a> <span class="k">break</span> +</span><span id="Parser-6424"><a href="#Parser-6424"><span class="linenos">6424</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6425"><a href="#Parser-6425"><span class="linenos">6425</span></a> <span class="k">if</span> <span class="n">continuations</span> <span class="ow">or</span> <span class="n">continuations</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-6426"><a href="#Parser-6426"><span class="linenos">6426</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span> +</span><span id="Parser-6427"><a href="#Parser-6427"><span class="linenos">6427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown option </span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-6428"><a href="#Parser-6428"><span class="linenos">6428</span></a> +</span><span id="Parser-6429"><a href="#Parser-6429"><span class="linenos">6429</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6430"><a href="#Parser-6430"><span class="linenos">6430</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6431"><a href="#Parser-6431"><span class="linenos">6431</span></a> +</span><span id="Parser-6432"><a href="#Parser-6432"><span class="linenos">6432</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">option</span><span class="p">)</span> +</span><span id="Parser-6433"><a href="#Parser-6433"><span class="linenos">6433</span></a> +</span><span id="Parser-6434"><a href="#Parser-6434"><span class="linenos">6434</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-6435"><a href="#Parser-6435"><span class="linenos">6435</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6436"><a href="#Parser-6436"><span class="linenos">6436</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6437"><a href="#Parser-6437"><span class="linenos">6437</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-6438"><a href="#Parser-6438"><span class="linenos">6438</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-6439"><a href="#Parser-6439"><span class="linenos">6439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_warn_unsupported</span><span class="p">()</span> +</span><span id="Parser-6440"><a href="#Parser-6440"><span class="linenos">6440</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">[:</span><span class="n">size</span><span class="p">],</span> <span class="n">expression</span><span class="o">=</span><span class="n">text</span><span class="p">[</span><span class="n">size</span><span class="p">:])</span> +</span><span id="Parser-6441"><a href="#Parser-6441"><span class="linenos">6441</span></a> +</span><span id="Parser-6442"><a href="#Parser-6442"><span class="linenos">6442</span></a> <span class="k">def</span> <span class="nf">_parse_dict_property</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">:</span> +</span><span id="Parser-6443"><a href="#Parser-6443"><span class="linenos">6443</span></a> <span class="n">settings</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6444"><a href="#Parser-6444"><span class="linenos">6444</span></a> +</span><span id="Parser-6445"><a href="#Parser-6445"><span class="linenos">6445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-6446"><a href="#Parser-6446"><span class="linenos">6446</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-6447"><a href="#Parser-6447"><span class="linenos">6447</span></a> +</span><span id="Parser-6448"><a href="#Parser-6448"><span class="linenos">6448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-6449"><a href="#Parser-6449"><span class="linenos">6449</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-6450"><a href="#Parser-6450"><span class="linenos">6450</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-6451"><a href="#Parser-6451"><span class="linenos">6451</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-6452"><a href="#Parser-6452"><span class="linenos">6452</span></a> +</span><span id="Parser-6453"><a href="#Parser-6453"><span class="linenos">6453</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-6454"><a href="#Parser-6454"><span class="linenos">6454</span></a> <span class="k">break</span> +</span><span id="Parser-6455"><a href="#Parser-6455"><span class="linenos">6455</span></a> <span class="n">settings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictSubProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">))</span> +</span><span id="Parser-6456"><a href="#Parser-6456"><span class="linenos">6456</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">)</span> +</span><span id="Parser-6457"><a href="#Parser-6457"><span class="linenos">6457</span></a> +</span><span id="Parser-6458"><a href="#Parser-6458"><span class="linenos">6458</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-6459"><a href="#Parser-6459"><span class="linenos">6459</span></a> +</span><span id="Parser-6460"><a href="#Parser-6460"><span class="linenos">6460</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6461"><a href="#Parser-6461"><span class="linenos">6461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DictProperty</span><span class="p">,</span> +</span><span id="Parser-6462"><a href="#Parser-6462"><span class="linenos">6462</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-6463"><a href="#Parser-6463"><span class="linenos">6463</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-6464"><a href="#Parser-6464"><span class="linenos">6464</span></a> <span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">,</span> +</span><span id="Parser-6465"><a href="#Parser-6465"><span class="linenos">6465</span></a> <span class="p">)</span> +</span><span id="Parser-6466"><a href="#Parser-6466"><span class="linenos">6466</span></a> +</span><span id="Parser-6467"><a href="#Parser-6467"><span class="linenos">6467</span></a> <span class="k">def</span> <span class="nf">_parse_dict_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">:</span> +</span><span id="Parser-6468"><a href="#Parser-6468"><span class="linenos">6468</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-6469"><a href="#Parser-6469"><span class="linenos">6469</span></a> <span class="n">has_min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MIN"</span><span class="p">)</span> +</span><span id="Parser-6470"><a href="#Parser-6470"><span class="linenos">6470</span></a> <span class="k">if</span> <span class="n">has_min</span><span class="p">:</span> +</span><span id="Parser-6471"><a href="#Parser-6471"><span class="linenos">6471</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-6472"><a href="#Parser-6472"><span class="linenos">6472</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">)</span> +</span><span id="Parser-6473"><a href="#Parser-6473"><span class="linenos">6473</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> </span><span id="Parser-6474"><a href="#Parser-6474"><span class="linenos">6474</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6475"><a href="#Parser-6475"><span class="linenos">6475</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> -</span><span id="Parser-6476"><a href="#Parser-6476"><span class="linenos">6476</span></a> -</span><span id="Parser-6477"><a href="#Parser-6477"><span class="linenos">6477</span></a> <span class="k">if</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"$"</span><span class="p">:</span> -</span><span id="Parser-6478"><a href="#Parser-6478"><span class="linenos">6478</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> -</span><span id="Parser-6479"><a href="#Parser-6479"><span class="linenos">6479</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-6480"><a href="#Parser-6480"><span class="linenos">6480</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"$"</span><span class="p">)</span> -</span><span id="Parser-6481"><a href="#Parser-6481"><span class="linenos">6481</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6482"><a href="#Parser-6482"><span class="linenos">6482</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> -</span><span id="Parser-6483"><a href="#Parser-6483"><span class="linenos">6483</span></a> -</span><span id="Parser-6484"><a href="#Parser-6484"><span class="linenos">6484</span></a> <span class="n">heredoc_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> -</span><span id="Parser-6485"><a href="#Parser-6485"><span class="linenos">6485</span></a> -</span><span id="Parser-6486"><a href="#Parser-6486"><span class="linenos">6486</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6487"><a href="#Parser-6487"><span class="linenos">6487</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">tags</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6488"><a href="#Parser-6488"><span class="linenos">6488</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">heredoc_start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-6489"><a href="#Parser-6489"><span class="linenos">6489</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tags</span><span class="p">))</span> -</span><span id="Parser-6490"><a href="#Parser-6490"><span class="linenos">6490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag_text</span><span class="p">)</span> -</span><span id="Parser-6491"><a href="#Parser-6491"><span class="linenos">6491</span></a> -</span><span id="Parser-6492"><a href="#Parser-6492"><span class="linenos">6492</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6493"><a href="#Parser-6493"><span class="linenos">6493</span></a> -</span><span id="Parser-6494"><a href="#Parser-6494"><span class="linenos">6494</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No closing </span><span class="si">{</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tags</span><span class="p">)</span><span class="si">}</span><span class="s2"> found"</span><span class="p">)</span> -</span><span id="Parser-6495"><a href="#Parser-6495"><span class="linenos">6495</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6496"><a href="#Parser-6496"><span class="linenos">6496</span></a> -</span><span id="Parser-6497"><a href="#Parser-6497"><span class="linenos">6497</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> -</span><span id="Parser-6498"><a href="#Parser-6498"><span class="linenos">6498</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="Parser-6499"><a href="#Parser-6499"><span class="linenos">6499</span></a> <span class="p">)</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">Callable</span><span class="p">]:</span> -</span><span id="Parser-6500"><a href="#Parser-6500"><span class="linenos">6500</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6501"><a href="#Parser-6501"><span class="linenos">6501</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6502"><a href="#Parser-6502"><span class="linenos">6502</span></a> -</span><span id="Parser-6503"><a href="#Parser-6503"><span class="linenos">6503</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-6504"><a href="#Parser-6504"><span class="linenos">6504</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-6505"><a href="#Parser-6505"><span class="linenos">6505</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-6506"><a href="#Parser-6506"><span class="linenos">6506</span></a> <span class="c1"># The current token might be multiple words</span> -</span><span id="Parser-6507"><a href="#Parser-6507"><span class="linenos">6507</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-6508"><a href="#Parser-6508"><span class="linenos">6508</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Parser-6509"><a href="#Parser-6509"><span class="linenos">6509</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> -</span><span id="Parser-6510"><a href="#Parser-6510"><span class="linenos">6510</span></a> -</span><span id="Parser-6511"><a href="#Parser-6511"><span class="linenos">6511</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6512"><a href="#Parser-6512"><span class="linenos">6512</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> -</span><span id="Parser-6513"><a href="#Parser-6513"><span class="linenos">6513</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> -</span><span id="Parser-6514"><a href="#Parser-6514"><span class="linenos">6514</span></a> <span class="k">break</span> -</span><span id="Parser-6515"><a href="#Parser-6515"><span class="linenos">6515</span></a> -</span><span id="Parser-6516"><a href="#Parser-6516"><span class="linenos">6516</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> -</span><span id="Parser-6517"><a href="#Parser-6517"><span class="linenos">6517</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> -</span><span id="Parser-6518"><a href="#Parser-6518"><span class="linenos">6518</span></a> <span class="k">return</span> <span class="n">subparser</span> -</span><span id="Parser-6519"><a href="#Parser-6519"><span class="linenos">6519</span></a> -</span><span id="Parser-6520"><a href="#Parser-6520"><span class="linenos">6520</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6521"><a href="#Parser-6521"><span class="linenos">6521</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6475"><a href="#Parser-6475"><span class="linenos">6475</span></a> <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-6476"><a href="#Parser-6476"><span class="linenos">6476</span></a> <span class="nb">min</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> +</span><span id="Parser-6477"><a href="#Parser-6477"><span class="linenos">6477</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-6478"><a href="#Parser-6478"><span class="linenos">6478</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DictRange</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="nb">max</span><span class="p">)</span> +</span><span id="Parser-6479"><a href="#Parser-6479"><span class="linenos">6479</span></a> +</span><span id="Parser-6480"><a href="#Parser-6480"><span class="linenos">6480</span></a> <span class="k">def</span> <span class="nf">_parse_comprehension</span><span class="p">(</span> +</span><span id="Parser-6481"><a href="#Parser-6481"><span class="linenos">6481</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-6482"><a href="#Parser-6482"><span class="linenos">6482</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">]:</span> +</span><span id="Parser-6483"><a href="#Parser-6483"><span class="linenos">6483</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-6484"><a href="#Parser-6484"><span class="linenos">6484</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-6485"><a href="#Parser-6485"><span class="linenos">6485</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-6486"><a href="#Parser-6486"><span class="linenos">6486</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-6487"><a href="#Parser-6487"><span class="linenos">6487</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6488"><a href="#Parser-6488"><span class="linenos">6488</span></a> <span class="n">iterator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-6489"><a href="#Parser-6489"><span class="linenos">6489</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_assignment</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IF"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-6490"><a href="#Parser-6490"><span class="linenos">6490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6491"><a href="#Parser-6491"><span class="linenos">6491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Comprehension</span><span class="p">,</span> +</span><span id="Parser-6492"><a href="#Parser-6492"><span class="linenos">6492</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-6493"><a href="#Parser-6493"><span class="linenos">6493</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-6494"><a href="#Parser-6494"><span class="linenos">6494</span></a> <span class="n">iterator</span><span class="o">=</span><span class="n">iterator</span><span class="p">,</span> +</span><span id="Parser-6495"><a href="#Parser-6495"><span class="linenos">6495</span></a> <span class="n">condition</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> +</span><span id="Parser-6496"><a href="#Parser-6496"><span class="linenos">6496</span></a> <span class="p">)</span> +</span><span id="Parser-6497"><a href="#Parser-6497"><span class="linenos">6497</span></a> +</span><span id="Parser-6498"><a href="#Parser-6498"><span class="linenos">6498</span></a> <span class="k">def</span> <span class="nf">_parse_heredoc</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">]:</span> +</span><span id="Parser-6499"><a href="#Parser-6499"><span class="linenos">6499</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">):</span> +</span><span id="Parser-6500"><a href="#Parser-6500"><span class="linenos">6500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-6501"><a href="#Parser-6501"><span class="linenos">6501</span></a> +</span><span id="Parser-6502"><a href="#Parser-6502"><span class="linenos">6502</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> +</span><span id="Parser-6503"><a href="#Parser-6503"><span class="linenos">6503</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6504"><a href="#Parser-6504"><span class="linenos">6504</span></a> +</span><span id="Parser-6505"><a href="#Parser-6505"><span class="linenos">6505</span></a> <span class="n">tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"$"</span><span class="p">]</span> +</span><span id="Parser-6506"><a href="#Parser-6506"><span class="linenos">6506</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6507"><a href="#Parser-6507"><span class="linenos">6507</span></a> +</span><span id="Parser-6508"><a href="#Parser-6508"><span class="linenos">6508</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">():</span> +</span><span id="Parser-6509"><a href="#Parser-6509"><span class="linenos">6509</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6510"><a href="#Parser-6510"><span class="linenos">6510</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-6511"><a href="#Parser-6511"><span class="linenos">6511</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6512"><a href="#Parser-6512"><span class="linenos">6512</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> +</span><span id="Parser-6513"><a href="#Parser-6513"><span class="linenos">6513</span></a> +</span><span id="Parser-6514"><a href="#Parser-6514"><span class="linenos">6514</span></a> <span class="k">if</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"$"</span><span class="p">:</span> +</span><span id="Parser-6515"><a href="#Parser-6515"><span class="linenos">6515</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"$"</span><span class="p">):</span> +</span><span id="Parser-6516"><a href="#Parser-6516"><span class="linenos">6516</span></a> <span class="n">tag_text</span> <span class="o">=</span> <span class="n">tags</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-6517"><a href="#Parser-6517"><span class="linenos">6517</span></a> <span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"$"</span><span class="p">)</span> +</span><span id="Parser-6518"><a href="#Parser-6518"><span class="linenos">6518</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6519"><a href="#Parser-6519"><span class="linenos">6519</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"No closing $ found"</span><span class="p">)</span> +</span><span id="Parser-6520"><a href="#Parser-6520"><span class="linenos">6520</span></a> +</span><span id="Parser-6521"><a href="#Parser-6521"><span class="linenos">6521</span></a> <span class="n">heredoc_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> </span><span id="Parser-6522"><a href="#Parser-6522"><span class="linenos">6522</span></a> -</span><span id="Parser-6523"><a href="#Parser-6523"><span class="linenos">6523</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Parser-6524"><a href="#Parser-6524"><span class="linenos">6524</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6525"><a href="#Parser-6525"><span class="linenos">6525</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6526"><a href="#Parser-6526"><span class="linenos">6526</span></a> -</span><span id="Parser-6527"><a href="#Parser-6527"><span class="linenos">6527</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="Parser-6528"><a href="#Parser-6528"><span class="linenos">6528</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-6529"><a href="#Parser-6529"><span class="linenos">6529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6530"><a href="#Parser-6530"><span class="linenos">6530</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-6531"><a href="#Parser-6531"><span class="linenos">6531</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-6532"><a href="#Parser-6532"><span class="linenos">6532</span></a> -</span><span id="Parser-6533"><a href="#Parser-6533"><span class="linenos">6533</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6534"><a href="#Parser-6534"><span class="linenos">6534</span></a> -</span><span id="Parser-6535"><a href="#Parser-6535"><span class="linenos">6535</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-6536"><a href="#Parser-6536"><span class="linenos">6536</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6537"><a href="#Parser-6537"><span class="linenos">6537</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6538"><a href="#Parser-6538"><span class="linenos">6538</span></a> -</span><span id="Parser-6539"><a href="#Parser-6539"><span class="linenos">6539</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> -</span><span id="Parser-6540"><a href="#Parser-6540"><span class="linenos">6540</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-6541"><a href="#Parser-6541"><span class="linenos">6541</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6542"><a href="#Parser-6542"><span class="linenos">6542</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-6543"><a href="#Parser-6543"><span class="linenos">6543</span></a> -</span><span id="Parser-6544"><a href="#Parser-6544"><span class="linenos">6544</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6545"><a href="#Parser-6545"><span class="linenos">6545</span></a> -</span><span id="Parser-6546"><a href="#Parser-6546"><span class="linenos">6546</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-6547"><a href="#Parser-6547"><span class="linenos">6547</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="Parser-6548"><a href="#Parser-6548"><span class="linenos">6548</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-6549"><a href="#Parser-6549"><span class="linenos">6549</span></a> -</span><span id="Parser-6550"><a href="#Parser-6550"><span class="linenos">6550</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> -</span><span id="Parser-6551"><a href="#Parser-6551"><span class="linenos">6551</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-6552"><a href="#Parser-6552"><span class="linenos">6552</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="Parser-6553"><a href="#Parser-6553"><span class="linenos">6553</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-6554"><a href="#Parser-6554"><span class="linenos">6554</span></a> -</span><span id="Parser-6555"><a href="#Parser-6555"><span class="linenos">6555</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6523"><a href="#Parser-6523"><span class="linenos">6523</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6524"><a href="#Parser-6524"><span class="linenos">6524</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="o">*</span><span class="n">tags</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6525"><a href="#Parser-6525"><span class="linenos">6525</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">heredoc_start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-6526"><a href="#Parser-6526"><span class="linenos">6526</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tags</span><span class="p">))</span> +</span><span id="Parser-6527"><a href="#Parser-6527"><span class="linenos">6527</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Heredoc</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">tag_text</span><span class="p">)</span> +</span><span id="Parser-6528"><a href="#Parser-6528"><span class="linenos">6528</span></a> +</span><span id="Parser-6529"><a href="#Parser-6529"><span class="linenos">6529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6530"><a href="#Parser-6530"><span class="linenos">6530</span></a> +</span><span id="Parser-6531"><a href="#Parser-6531"><span class="linenos">6531</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No closing </span><span class="si">{</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tags</span><span class="p">)</span><span class="si">}</span><span class="s2"> found"</span><span class="p">)</span> +</span><span id="Parser-6532"><a href="#Parser-6532"><span class="linenos">6532</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6533"><a href="#Parser-6533"><span class="linenos">6533</span></a> +</span><span id="Parser-6534"><a href="#Parser-6534"><span class="linenos">6534</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> +</span><span id="Parser-6535"><a href="#Parser-6535"><span class="linenos">6535</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="Parser-6536"><a href="#Parser-6536"><span class="linenos">6536</span></a> <span class="p">)</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">Callable</span><span class="p">]:</span> +</span><span id="Parser-6537"><a href="#Parser-6537"><span class="linenos">6537</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6538"><a href="#Parser-6538"><span class="linenos">6538</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6539"><a href="#Parser-6539"><span class="linenos">6539</span></a> +</span><span id="Parser-6540"><a href="#Parser-6540"><span class="linenos">6540</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-6541"><a href="#Parser-6541"><span class="linenos">6541</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6542"><a href="#Parser-6542"><span class="linenos">6542</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-6543"><a href="#Parser-6543"><span class="linenos">6543</span></a> <span class="c1"># The current token might be multiple words</span> +</span><span id="Parser-6544"><a href="#Parser-6544"><span class="linenos">6544</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-6545"><a href="#Parser-6545"><span class="linenos">6545</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Parser-6546"><a href="#Parser-6546"><span class="linenos">6546</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> +</span><span id="Parser-6547"><a href="#Parser-6547"><span class="linenos">6547</span></a> +</span><span id="Parser-6548"><a href="#Parser-6548"><span class="linenos">6548</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6549"><a href="#Parser-6549"><span class="linenos">6549</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> +</span><span id="Parser-6550"><a href="#Parser-6550"><span class="linenos">6550</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> +</span><span id="Parser-6551"><a href="#Parser-6551"><span class="linenos">6551</span></a> <span class="k">break</span> +</span><span id="Parser-6552"><a href="#Parser-6552"><span class="linenos">6552</span></a> +</span><span id="Parser-6553"><a href="#Parser-6553"><span class="linenos">6553</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> +</span><span id="Parser-6554"><a href="#Parser-6554"><span class="linenos">6554</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> +</span><span id="Parser-6555"><a href="#Parser-6555"><span class="linenos">6555</span></a> <span class="k">return</span> <span class="n">subparser</span> </span><span id="Parser-6556"><a href="#Parser-6556"><span class="linenos">6556</span></a> -</span><span id="Parser-6557"><a href="#Parser-6557"><span class="linenos">6557</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-6558"><a href="#Parser-6558"><span class="linenos">6558</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> -</span><span id="Parser-6559"><a href="#Parser-6559"><span class="linenos">6559</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> -</span><span id="Parser-6560"><a href="#Parser-6560"><span class="linenos">6560</span></a> -</span><span id="Parser-6561"><a href="#Parser-6561"><span class="linenos">6561</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-6562"><a href="#Parser-6562"><span class="linenos">6562</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> -</span><span id="Parser-6563"><a href="#Parser-6563"><span class="linenos">6563</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> -</span><span id="Parser-6564"><a href="#Parser-6564"><span class="linenos">6564</span></a> -</span><span id="Parser-6565"><a href="#Parser-6565"><span class="linenos">6565</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-6566"><a href="#Parser-6566"><span class="linenos">6566</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="Parser-6567"><a href="#Parser-6567"><span class="linenos">6567</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-6568"><a href="#Parser-6568"><span class="linenos">6568</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6569"><a href="#Parser-6569"><span class="linenos">6569</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-6557"><a href="#Parser-6557"><span class="linenos">6557</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6558"><a href="#Parser-6558"><span class="linenos">6558</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6559"><a href="#Parser-6559"><span class="linenos">6559</span></a> +</span><span id="Parser-6560"><a href="#Parser-6560"><span class="linenos">6560</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Parser-6561"><a href="#Parser-6561"><span class="linenos">6561</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6562"><a href="#Parser-6562"><span class="linenos">6562</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6563"><a href="#Parser-6563"><span class="linenos">6563</span></a> +</span><span id="Parser-6564"><a href="#Parser-6564"><span class="linenos">6564</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="Parser-6565"><a href="#Parser-6565"><span class="linenos">6565</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-6566"><a href="#Parser-6566"><span class="linenos">6566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6567"><a href="#Parser-6567"><span class="linenos">6567</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-6568"><a href="#Parser-6568"><span class="linenos">6568</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-6569"><a href="#Parser-6569"><span class="linenos">6569</span></a> </span><span id="Parser-6570"><a href="#Parser-6570"><span class="linenos">6570</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-6571"><a href="#Parser-6571"><span class="linenos">6571</span></a> -</span><span id="Parser-6572"><a href="#Parser-6572"><span class="linenos">6572</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-6573"><a href="#Parser-6573"><span class="linenos">6573</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-6574"><a href="#Parser-6574"><span class="linenos">6574</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="Parser-6575"><a href="#Parser-6575"><span class="linenos">6575</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> -</span><span id="Parser-6576"><a href="#Parser-6576"><span class="linenos">6576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-6577"><a href="#Parser-6577"><span class="linenos">6577</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6578"><a href="#Parser-6578"><span class="linenos">6578</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6579"><a href="#Parser-6579"><span class="linenos">6579</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6572"><a href="#Parser-6572"><span class="linenos">6572</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-6573"><a href="#Parser-6573"><span class="linenos">6573</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6574"><a href="#Parser-6574"><span class="linenos">6574</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6575"><a href="#Parser-6575"><span class="linenos">6575</span></a> +</span><span id="Parser-6576"><a href="#Parser-6576"><span class="linenos">6576</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> +</span><span id="Parser-6577"><a href="#Parser-6577"><span class="linenos">6577</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-6578"><a href="#Parser-6578"><span class="linenos">6578</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6579"><a href="#Parser-6579"><span class="linenos">6579</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Parser-6580"><a href="#Parser-6580"><span class="linenos">6580</span></a> -</span><span id="Parser-6581"><a href="#Parser-6581"><span class="linenos">6581</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-6582"><a href="#Parser-6582"><span class="linenos">6582</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-6583"><a href="#Parser-6583"><span class="linenos">6583</span></a> -</span><span id="Parser-6584"><a href="#Parser-6584"><span class="linenos">6584</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-6585"><a href="#Parser-6585"><span class="linenos">6585</span></a> -</span><span id="Parser-6586"><a href="#Parser-6586"><span class="linenos">6586</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span> -</span><span id="Parser-6587"><a href="#Parser-6587"><span class="linenos">6587</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">node</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-6588"><a href="#Parser-6588"><span class="linenos">6588</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6589"><a href="#Parser-6589"><span class="linenos">6589</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="Parser-6590"><a href="#Parser-6590"><span class="linenos">6590</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="Parser-6581"><a href="#Parser-6581"><span class="linenos">6581</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6582"><a href="#Parser-6582"><span class="linenos">6582</span></a> +</span><span id="Parser-6583"><a href="#Parser-6583"><span class="linenos">6583</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-6584"><a href="#Parser-6584"><span class="linenos">6584</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="Parser-6585"><a href="#Parser-6585"><span class="linenos">6585</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6586"><a href="#Parser-6586"><span class="linenos">6586</span></a> +</span><span id="Parser-6587"><a href="#Parser-6587"><span class="linenos">6587</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> +</span><span id="Parser-6588"><a href="#Parser-6588"><span class="linenos">6588</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-6589"><a href="#Parser-6589"><span class="linenos">6589</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="Parser-6590"><a href="#Parser-6590"><span class="linenos">6590</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Parser-6591"><a href="#Parser-6591"><span class="linenos">6591</span></a> -</span><span id="Parser-6592"><a href="#Parser-6592"><span class="linenos">6592</span></a> <span class="n">lambda_types</span> <span class="o">=</span> <span class="p">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"to"</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">False</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> +</span><span id="Parser-6592"><a href="#Parser-6592"><span class="linenos">6592</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-6593"><a href="#Parser-6593"><span class="linenos">6593</span></a> -</span><span id="Parser-6594"><a href="#Parser-6594"><span class="linenos">6594</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-6595"><a href="#Parser-6595"><span class="linenos">6595</span></a> <span class="n">typ</span> <span class="o">=</span> <span class="n">lambda_types</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-6596"><a href="#Parser-6596"><span class="linenos">6596</span></a> <span class="k">if</span> <span class="n">typ</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-6597"><a href="#Parser-6597"><span class="linenos">6597</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">this</span> -</span><span id="Parser-6598"><a href="#Parser-6598"><span class="linenos">6598</span></a> -</span><span id="Parser-6599"><a href="#Parser-6599"><span class="linenos">6599</span></a> <span class="k">if</span> <span class="n">typ</span><span class="p">:</span> -</span><span id="Parser-6600"><a href="#Parser-6600"><span class="linenos">6600</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6601"><a href="#Parser-6601"><span class="linenos">6601</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> -</span><span id="Parser-6602"><a href="#Parser-6602"><span class="linenos">6602</span></a> <span class="n">this</span><span class="o">=</span><span class="n">dot_or_id</span><span class="p">,</span> -</span><span id="Parser-6603"><a href="#Parser-6603"><span class="linenos">6603</span></a> <span class="n">to</span><span class="o">=</span><span class="n">typ</span><span class="p">,</span> -</span><span id="Parser-6604"><a href="#Parser-6604"><span class="linenos">6604</span></a> <span class="p">)</span> -</span><span id="Parser-6605"><a href="#Parser-6605"><span class="linenos">6605</span></a> -</span><span id="Parser-6606"><a href="#Parser-6606"><span class="linenos">6606</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Parser-6607"><a href="#Parser-6607"><span class="linenos">6607</span></a> -</span><span id="Parser-6608"><a href="#Parser-6608"><span class="linenos">6608</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> -</span><span id="Parser-6609"><a href="#Parser-6609"><span class="linenos">6609</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> -</span><span id="Parser-6610"><a href="#Parser-6610"><span class="linenos">6610</span></a> <span class="n">parent</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> -</span><span id="Parser-6611"><a href="#Parser-6611"><span class="linenos">6611</span></a> <span class="k">break</span> -</span><span id="Parser-6612"><a href="#Parser-6612"><span class="linenos">6612</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Parser-6613"><a href="#Parser-6613"><span class="linenos">6613</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6614"><a href="#Parser-6614"><span class="linenos">6614</span></a> <span class="k">if</span> <span class="n">column</span> <span class="ow">is</span> <span class="n">node</span><span class="p">:</span> -</span><span id="Parser-6615"><a href="#Parser-6615"><span class="linenos">6615</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">dot_or_id</span> -</span><span id="Parser-6616"><a href="#Parser-6616"><span class="linenos">6616</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6617"><a href="#Parser-6617"><span class="linenos">6617</span></a> <span class="n">column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> -</span><span id="Parser-6618"><a href="#Parser-6618"><span class="linenos">6618</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="Parser-6619"><a href="#Parser-6619"><span class="linenos">6619</span></a> -</span><span id="Parser-6620"><a href="#Parser-6620"><span class="linenos">6620</span></a> <span class="k">def</span> <span class="nf">_parse_truncate_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">]</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-6621"><a href="#Parser-6621"><span class="linenos">6621</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-6594"><a href="#Parser-6594"><span class="linenos">6594</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-6595"><a href="#Parser-6595"><span class="linenos">6595</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> +</span><span id="Parser-6596"><a href="#Parser-6596"><span class="linenos">6596</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> +</span><span id="Parser-6597"><a href="#Parser-6597"><span class="linenos">6597</span></a> +</span><span id="Parser-6598"><a href="#Parser-6598"><span class="linenos">6598</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-6599"><a href="#Parser-6599"><span class="linenos">6599</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">):</span> +</span><span id="Parser-6600"><a href="#Parser-6600"><span class="linenos">6600</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> +</span><span id="Parser-6601"><a href="#Parser-6601"><span class="linenos">6601</span></a> +</span><span id="Parser-6602"><a href="#Parser-6602"><span class="linenos">6602</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-6603"><a href="#Parser-6603"><span class="linenos">6603</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="Parser-6604"><a href="#Parser-6604"><span class="linenos">6604</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-6605"><a href="#Parser-6605"><span class="linenos">6605</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6606"><a href="#Parser-6606"><span class="linenos">6606</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-6607"><a href="#Parser-6607"><span class="linenos">6607</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6608"><a href="#Parser-6608"><span class="linenos">6608</span></a> +</span><span id="Parser-6609"><a href="#Parser-6609"><span class="linenos">6609</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-6610"><a href="#Parser-6610"><span class="linenos">6610</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-6611"><a href="#Parser-6611"><span class="linenos">6611</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="Parser-6612"><a href="#Parser-6612"><span class="linenos">6612</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> +</span><span id="Parser-6613"><a href="#Parser-6613"><span class="linenos">6613</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-6614"><a href="#Parser-6614"><span class="linenos">6614</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6615"><a href="#Parser-6615"><span class="linenos">6615</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6616"><a href="#Parser-6616"><span class="linenos">6616</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-6617"><a href="#Parser-6617"><span class="linenos">6617</span></a> +</span><span id="Parser-6618"><a href="#Parser-6618"><span class="linenos">6618</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-6619"><a href="#Parser-6619"><span class="linenos">6619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-6620"><a href="#Parser-6620"><span class="linenos">6620</span></a> +</span><span id="Parser-6621"><a href="#Parser-6621"><span class="linenos">6621</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Parser-6622"><a href="#Parser-6622"><span class="linenos">6622</span></a> -</span><span id="Parser-6623"><a href="#Parser-6623"><span class="linenos">6623</span></a> <span class="c1"># Not to be confused with TRUNCATE(number, decimals) function call</span> -</span><span id="Parser-6624"><a href="#Parser-6624"><span class="linenos">6624</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-6625"><a href="#Parser-6625"><span class="linenos">6625</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="Parser-6626"><a href="#Parser-6626"><span class="linenos">6626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="Parser-6627"><a href="#Parser-6627"><span class="linenos">6627</span></a> -</span><span id="Parser-6628"><a href="#Parser-6628"><span class="linenos">6628</span></a> <span class="c1"># Clickhouse supports TRUNCATE DATABASE as well</span> -</span><span id="Parser-6629"><a href="#Parser-6629"><span class="linenos">6629</span></a> <span class="n">is_database</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">)</span> +</span><span id="Parser-6623"><a href="#Parser-6623"><span class="linenos">6623</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span> +</span><span id="Parser-6624"><a href="#Parser-6624"><span class="linenos">6624</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">node</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-6625"><a href="#Parser-6625"><span class="linenos">6625</span></a> <span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6626"><a href="#Parser-6626"><span class="linenos">6626</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="Parser-6627"><a href="#Parser-6627"><span class="linenos">6627</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="Parser-6628"><a href="#Parser-6628"><span class="linenos">6628</span></a> +</span><span id="Parser-6629"><a href="#Parser-6629"><span class="linenos">6629</span></a> <span class="n">lambda_types</span> <span class="o">=</span> <span class="p">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"to"</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">False</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> </span><span id="Parser-6630"><a href="#Parser-6630"><span class="linenos">6630</span></a> -</span><span id="Parser-6631"><a href="#Parser-6631"><span class="linenos">6631</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-6632"><a href="#Parser-6632"><span class="linenos">6632</span></a> -</span><span id="Parser-6633"><a href="#Parser-6633"><span class="linenos">6633</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-6634"><a href="#Parser-6634"><span class="linenos">6634</span></a> -</span><span id="Parser-6635"><a href="#Parser-6635"><span class="linenos">6635</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-6636"><a href="#Parser-6636"><span class="linenos">6636</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_database</span><span class="p">)</span> -</span><span id="Parser-6637"><a href="#Parser-6637"><span class="linenos">6637</span></a> <span class="p">)</span> -</span><span id="Parser-6638"><a href="#Parser-6638"><span class="linenos">6638</span></a> -</span><span id="Parser-6639"><a href="#Parser-6639"><span class="linenos">6639</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-6640"><a href="#Parser-6640"><span class="linenos">6640</span></a> -</span><span id="Parser-6641"><a href="#Parser-6641"><span class="linenos">6641</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTART"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> -</span><span id="Parser-6642"><a href="#Parser-6642"><span class="linenos">6642</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"RESTART"</span> -</span><span id="Parser-6643"><a href="#Parser-6643"><span class="linenos">6643</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTINUE"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> -</span><span id="Parser-6644"><a href="#Parser-6644"><span class="linenos">6644</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"CONTINUE"</span> -</span><span id="Parser-6645"><a href="#Parser-6645"><span class="linenos">6645</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6646"><a href="#Parser-6646"><span class="linenos">6646</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-6647"><a href="#Parser-6647"><span class="linenos">6647</span></a> -</span><span id="Parser-6648"><a href="#Parser-6648"><span class="linenos">6648</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> -</span><span id="Parser-6649"><a href="#Parser-6649"><span class="linenos">6649</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-6650"><a href="#Parser-6650"><span class="linenos">6650</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6651"><a href="#Parser-6651"><span class="linenos">6651</span></a> <span class="n">option</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-6652"><a href="#Parser-6652"><span class="linenos">6652</span></a> -</span><span id="Parser-6653"><a href="#Parser-6653"><span class="linenos">6653</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span> -</span><span id="Parser-6654"><a href="#Parser-6654"><span class="linenos">6654</span></a> -</span><span id="Parser-6655"><a href="#Parser-6655"><span class="linenos">6655</span></a> <span class="c1"># Fallback case</span> -</span><span id="Parser-6656"><a href="#Parser-6656"><span class="linenos">6656</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6657"><a href="#Parser-6657"><span class="linenos">6657</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-6658"><a href="#Parser-6658"><span class="linenos">6658</span></a> -</span><span id="Parser-6659"><a href="#Parser-6659"><span class="linenos">6659</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6660"><a href="#Parser-6660"><span class="linenos">6660</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">,</span> -</span><span id="Parser-6661"><a href="#Parser-6661"><span class="linenos">6661</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-6662"><a href="#Parser-6662"><span class="linenos">6662</span></a> <span class="n">is_database</span><span class="o">=</span><span class="n">is_database</span><span class="p">,</span> -</span><span id="Parser-6663"><a href="#Parser-6663"><span class="linenos">6663</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="Parser-6664"><a href="#Parser-6664"><span class="linenos">6664</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> -</span><span id="Parser-6665"><a href="#Parser-6665"><span class="linenos">6665</span></a> <span class="n">identity</span><span class="o">=</span><span class="n">identity</span><span class="p">,</span> -</span><span id="Parser-6666"><a href="#Parser-6666"><span class="linenos">6666</span></a> <span class="n">option</span><span class="o">=</span><span class="n">option</span><span class="p">,</span> -</span><span id="Parser-6667"><a href="#Parser-6667"><span class="linenos">6667</span></a> <span class="n">partition</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="Parser-6668"><a href="#Parser-6668"><span class="linenos">6668</span></a> <span class="p">)</span> +</span><span id="Parser-6631"><a href="#Parser-6631"><span class="linenos">6631</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-6632"><a href="#Parser-6632"><span class="linenos">6632</span></a> <span class="n">typ</span> <span class="o">=</span> <span class="n">lambda_types</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-6633"><a href="#Parser-6633"><span class="linenos">6633</span></a> <span class="k">if</span> <span class="n">typ</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-6634"><a href="#Parser-6634"><span class="linenos">6634</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">to_dot</span><span class="p">()</span> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-6635"><a href="#Parser-6635"><span class="linenos">6635</span></a> +</span><span id="Parser-6636"><a href="#Parser-6636"><span class="linenos">6636</span></a> <span class="k">if</span> <span class="n">typ</span><span class="p">:</span> +</span><span id="Parser-6637"><a href="#Parser-6637"><span class="linenos">6637</span></a> <span class="n">dot_or_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6638"><a href="#Parser-6638"><span class="linenos">6638</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> +</span><span id="Parser-6639"><a href="#Parser-6639"><span class="linenos">6639</span></a> <span class="n">this</span><span class="o">=</span><span class="n">dot_or_id</span><span class="p">,</span> +</span><span id="Parser-6640"><a href="#Parser-6640"><span class="linenos">6640</span></a> <span class="n">to</span><span class="o">=</span><span class="n">typ</span><span class="p">,</span> +</span><span id="Parser-6641"><a href="#Parser-6641"><span class="linenos">6641</span></a> <span class="p">)</span> +</span><span id="Parser-6642"><a href="#Parser-6642"><span class="linenos">6642</span></a> +</span><span id="Parser-6643"><a href="#Parser-6643"><span class="linenos">6643</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Parser-6644"><a href="#Parser-6644"><span class="linenos">6644</span></a> +</span><span id="Parser-6645"><a href="#Parser-6645"><span class="linenos">6645</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> +</span><span id="Parser-6646"><a href="#Parser-6646"><span class="linenos">6646</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> +</span><span id="Parser-6647"><a href="#Parser-6647"><span class="linenos">6647</span></a> <span class="n">parent</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> +</span><span id="Parser-6648"><a href="#Parser-6648"><span class="linenos">6648</span></a> <span class="k">break</span> +</span><span id="Parser-6649"><a href="#Parser-6649"><span class="linenos">6649</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Parser-6650"><a href="#Parser-6650"><span class="linenos">6650</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6651"><a href="#Parser-6651"><span class="linenos">6651</span></a> <span class="k">if</span> <span class="n">column</span> <span class="ow">is</span> <span class="n">node</span><span class="p">:</span> +</span><span id="Parser-6652"><a href="#Parser-6652"><span class="linenos">6652</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">dot_or_id</span> +</span><span id="Parser-6653"><a href="#Parser-6653"><span class="linenos">6653</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6654"><a href="#Parser-6654"><span class="linenos">6654</span></a> <span class="n">column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">dot_or_id</span><span class="p">)</span> +</span><span id="Parser-6655"><a href="#Parser-6655"><span class="linenos">6655</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="Parser-6656"><a href="#Parser-6656"><span class="linenos">6656</span></a> +</span><span id="Parser-6657"><a href="#Parser-6657"><span class="linenos">6657</span></a> <span class="k">def</span> <span class="nf">_parse_truncate_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">]</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-6658"><a href="#Parser-6658"><span class="linenos">6658</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-6659"><a href="#Parser-6659"><span class="linenos">6659</span></a> +</span><span id="Parser-6660"><a href="#Parser-6660"><span class="linenos">6660</span></a> <span class="c1"># Not to be confused with TRUNCATE(number, decimals) function call</span> +</span><span id="Parser-6661"><a href="#Parser-6661"><span class="linenos">6661</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-6662"><a href="#Parser-6662"><span class="linenos">6662</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="Parser-6663"><a href="#Parser-6663"><span class="linenos">6663</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="Parser-6664"><a href="#Parser-6664"><span class="linenos">6664</span></a> +</span><span id="Parser-6665"><a href="#Parser-6665"><span class="linenos">6665</span></a> <span class="c1"># Clickhouse supports TRUNCATE DATABASE as well</span> +</span><span id="Parser-6666"><a href="#Parser-6666"><span class="linenos">6666</span></a> <span class="n">is_database</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">)</span> +</span><span id="Parser-6667"><a href="#Parser-6667"><span class="linenos">6667</span></a> +</span><span id="Parser-6668"><a href="#Parser-6668"><span class="linenos">6668</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> </span><span id="Parser-6669"><a href="#Parser-6669"><span class="linenos">6669</span></a> -</span><span id="Parser-6670"><a href="#Parser-6670"><span class="linenos">6670</span></a> <span class="k">def</span> <span class="nf">_parse_with_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6671"><a href="#Parser-6671"><span class="linenos">6671</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_opclass</span><span class="p">)</span> -</span><span id="Parser-6672"><a href="#Parser-6672"><span class="linenos">6672</span></a> -</span><span id="Parser-6673"><a href="#Parser-6673"><span class="linenos">6673</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-6674"><a href="#Parser-6674"><span class="linenos">6674</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-6670"><a href="#Parser-6670"><span class="linenos">6670</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-6671"><a href="#Parser-6671"><span class="linenos">6671</span></a> +</span><span id="Parser-6672"><a href="#Parser-6672"><span class="linenos">6672</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-6673"><a href="#Parser-6673"><span class="linenos">6673</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">is_db_reference</span><span class="o">=</span><span class="n">is_database</span><span class="p">)</span> +</span><span id="Parser-6674"><a href="#Parser-6674"><span class="linenos">6674</span></a> <span class="p">)</span> </span><span id="Parser-6675"><a href="#Parser-6675"><span class="linenos">6675</span></a> -</span><span id="Parser-6676"><a href="#Parser-6676"><span class="linenos">6676</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6676"><a href="#Parser-6676"><span class="linenos">6676</span></a> <span class="n">cluster</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_on_property</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="Parser-6677"><a href="#Parser-6677"><span class="linenos">6677</span></a> -</span><span id="Parser-6678"><a href="#Parser-6678"><span class="linenos">6678</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithOperator</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">op</span><span class="o">=</span><span class="n">op</span><span class="p">)</span> -</span><span id="Parser-6679"><a href="#Parser-6679"><span class="linenos">6679</span></a> -</span><span id="Parser-6680"><a href="#Parser-6680"><span class="linenos">6680</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-6681"><a href="#Parser-6681"><span class="linenos">6681</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-6682"><a href="#Parser-6682"><span class="linenos">6682</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="Parser-6683"><a href="#Parser-6683"><span class="linenos">6683</span></a> -</span><span id="Parser-6684"><a href="#Parser-6684"><span class="linenos">6684</span></a> <span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-6685"><a href="#Parser-6685"><span class="linenos">6685</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-6686"><a href="#Parser-6686"><span class="linenos">6686</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-6687"><a href="#Parser-6687"><span class="linenos">6687</span></a> <span class="c1"># The FORMAT_NAME can be set to an identifier for Snowflake and T-SQL,</span> -</span><span id="Parser-6688"><a href="#Parser-6688"><span class="linenos">6688</span></a> <span class="c1"># so we parse it separately to use _parse_field()</span> -</span><span id="Parser-6689"><a href="#Parser-6689"><span class="linenos">6689</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6690"><a href="#Parser-6690"><span class="linenos">6690</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-6691"><a href="#Parser-6691"><span class="linenos">6691</span></a> <span class="p">)</span> -</span><span id="Parser-6692"><a href="#Parser-6692"><span class="linenos">6692</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> -</span><span id="Parser-6693"><a href="#Parser-6693"><span class="linenos">6693</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6694"><a href="#Parser-6694"><span class="linenos">6694</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">())</span> +</span><span id="Parser-6678"><a href="#Parser-6678"><span class="linenos">6678</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTART"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> +</span><span id="Parser-6679"><a href="#Parser-6679"><span class="linenos">6679</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"RESTART"</span> +</span><span id="Parser-6680"><a href="#Parser-6680"><span class="linenos">6680</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONTINUE"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">):</span> +</span><span id="Parser-6681"><a href="#Parser-6681"><span class="linenos">6681</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="s2">"CONTINUE"</span> +</span><span id="Parser-6682"><a href="#Parser-6682"><span class="linenos">6682</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6683"><a href="#Parser-6683"><span class="linenos">6683</span></a> <span class="n">identity</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6684"><a href="#Parser-6684"><span class="linenos">6684</span></a> +</span><span id="Parser-6685"><a href="#Parser-6685"><span class="linenos">6685</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASCADE"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RESTRICT"</span><span class="p">):</span> +</span><span id="Parser-6686"><a href="#Parser-6686"><span class="linenos">6686</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-6687"><a href="#Parser-6687"><span class="linenos">6687</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6688"><a href="#Parser-6688"><span class="linenos">6688</span></a> <span class="n">option</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-6689"><a href="#Parser-6689"><span class="linenos">6689</span></a> +</span><span id="Parser-6690"><a href="#Parser-6690"><span class="linenos">6690</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">()</span> +</span><span id="Parser-6691"><a href="#Parser-6691"><span class="linenos">6691</span></a> +</span><span id="Parser-6692"><a href="#Parser-6692"><span class="linenos">6692</span></a> <span class="c1"># Fallback case</span> +</span><span id="Parser-6693"><a href="#Parser-6693"><span class="linenos">6693</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6694"><a href="#Parser-6694"><span class="linenos">6694</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> </span><span id="Parser-6695"><a href="#Parser-6695"><span class="linenos">6695</span></a> -</span><span id="Parser-6696"><a href="#Parser-6696"><span class="linenos">6696</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-6697"><a href="#Parser-6697"><span class="linenos">6697</span></a> -</span><span id="Parser-6698"><a href="#Parser-6698"><span class="linenos">6698</span></a> <span class="k">return</span> <span class="n">opts</span> -</span><span id="Parser-6699"><a href="#Parser-6699"><span class="linenos">6699</span></a> -</span><span id="Parser-6700"><a href="#Parser-6700"><span class="linenos">6700</span></a> <span class="k">def</span> <span class="nf">_parse_copy_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">]:</span> -</span><span id="Parser-6701"><a href="#Parser-6701"><span class="linenos">6701</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-6702"><a href="#Parser-6702"><span class="linenos">6702</span></a> -</span><span id="Parser-6703"><a href="#Parser-6703"><span class="linenos">6703</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-6704"><a href="#Parser-6704"><span class="linenos">6704</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-6705"><a href="#Parser-6705"><span class="linenos">6705</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6706"><a href="#Parser-6706"><span class="linenos">6706</span></a> <span class="n">prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-6707"><a href="#Parser-6707"><span class="linenos">6707</span></a> -</span><span id="Parser-6708"><a href="#Parser-6708"><span class="linenos">6708</span></a> <span class="c1"># Different dialects might separate options and values by white space, "=" and "AS"</span> -</span><span id="Parser-6709"><a href="#Parser-6709"><span class="linenos">6709</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-6710"><a href="#Parser-6710"><span class="linenos">6710</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-6711"><a href="#Parser-6711"><span class="linenos">6711</span></a> -</span><span id="Parser-6712"><a href="#Parser-6712"><span class="linenos">6712</span></a> <span class="n">param</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">option</span><span class="p">)</span> -</span><span id="Parser-6713"><a href="#Parser-6713"><span class="linenos">6713</span></a> -</span><span id="Parser-6714"><a href="#Parser-6714"><span class="linenos">6714</span></a> <span class="k">if</span> <span class="n">prev</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span> -</span><span id="Parser-6715"><a href="#Parser-6715"><span class="linenos">6715</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> -</span><span id="Parser-6716"><a href="#Parser-6716"><span class="linenos">6716</span></a> <span class="p">):</span> -</span><span id="Parser-6717"><a href="#Parser-6717"><span class="linenos">6717</span></a> <span class="c1"># Snowflake FILE_FORMAT case, Databricks COPY & FORMAT options</span> -</span><span id="Parser-6718"><a href="#Parser-6718"><span class="linenos">6718</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="Parser-6719"><a href="#Parser-6719"><span class="linenos">6719</span></a> <span class="k">elif</span> <span class="n">prev</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span> -</span><span id="Parser-6720"><a href="#Parser-6720"><span class="linenos">6720</span></a> <span class="c1"># T-SQL's external file format case</span> -</span><span id="Parser-6721"><a href="#Parser-6721"><span class="linenos">6721</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6722"><a href="#Parser-6722"><span class="linenos">6722</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-6723"><a href="#Parser-6723"><span class="linenos">6723</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">())</span> -</span><span id="Parser-6724"><a href="#Parser-6724"><span class="linenos">6724</span></a> -</span><span id="Parser-6725"><a href="#Parser-6725"><span class="linenos">6725</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">param</span><span class="p">)</span> -</span><span id="Parser-6726"><a href="#Parser-6726"><span class="linenos">6726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span> -</span><span id="Parser-6727"><a href="#Parser-6727"><span class="linenos">6727</span></a> -</span><span id="Parser-6728"><a href="#Parser-6728"><span class="linenos">6728</span></a> <span class="k">return</span> <span class="n">options</span> -</span><span id="Parser-6729"><a href="#Parser-6729"><span class="linenos">6729</span></a> -</span><span id="Parser-6730"><a href="#Parser-6730"><span class="linenos">6730</span></a> <span class="k">def</span> <span class="nf">_parse_credentials</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">]:</span> -</span><span id="Parser-6731"><a href="#Parser-6731"><span class="linenos">6731</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> +</span><span id="Parser-6696"><a href="#Parser-6696"><span class="linenos">6696</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6697"><a href="#Parser-6697"><span class="linenos">6697</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TruncateTable</span><span class="p">,</span> +</span><span id="Parser-6698"><a href="#Parser-6698"><span class="linenos">6698</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-6699"><a href="#Parser-6699"><span class="linenos">6699</span></a> <span class="n">is_database</span><span class="o">=</span><span class="n">is_database</span><span class="p">,</span> +</span><span id="Parser-6700"><a href="#Parser-6700"><span class="linenos">6700</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="Parser-6701"><a href="#Parser-6701"><span class="linenos">6701</span></a> <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span> +</span><span id="Parser-6702"><a href="#Parser-6702"><span class="linenos">6702</span></a> <span class="n">identity</span><span class="o">=</span><span class="n">identity</span><span class="p">,</span> +</span><span id="Parser-6703"><a href="#Parser-6703"><span class="linenos">6703</span></a> <span class="n">option</span><span class="o">=</span><span class="n">option</span><span class="p">,</span> +</span><span id="Parser-6704"><a href="#Parser-6704"><span class="linenos">6704</span></a> <span class="n">partition</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="Parser-6705"><a href="#Parser-6705"><span class="linenos">6705</span></a> <span class="p">)</span> +</span><span id="Parser-6706"><a href="#Parser-6706"><span class="linenos">6706</span></a> +</span><span id="Parser-6707"><a href="#Parser-6707"><span class="linenos">6707</span></a> <span class="k">def</span> <span class="nf">_parse_with_operator</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6708"><a href="#Parser-6708"><span class="linenos">6708</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_opclass</span><span class="p">)</span> +</span><span id="Parser-6709"><a href="#Parser-6709"><span class="linenos">6709</span></a> +</span><span id="Parser-6710"><a href="#Parser-6710"><span class="linenos">6710</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-6711"><a href="#Parser-6711"><span class="linenos">6711</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-6712"><a href="#Parser-6712"><span class="linenos">6712</span></a> +</span><span id="Parser-6713"><a href="#Parser-6713"><span class="linenos">6713</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6714"><a href="#Parser-6714"><span class="linenos">6714</span></a> +</span><span id="Parser-6715"><a href="#Parser-6715"><span class="linenos">6715</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithOperator</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">op</span><span class="o">=</span><span class="n">op</span><span class="p">)</span> +</span><span id="Parser-6716"><a href="#Parser-6716"><span class="linenos">6716</span></a> +</span><span id="Parser-6717"><a href="#Parser-6717"><span class="linenos">6717</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-6718"><a href="#Parser-6718"><span class="linenos">6718</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-6719"><a href="#Parser-6719"><span class="linenos">6719</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="Parser-6720"><a href="#Parser-6720"><span class="linenos">6720</span></a> +</span><span id="Parser-6721"><a href="#Parser-6721"><span class="linenos">6721</span></a> <span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6722"><a href="#Parser-6722"><span class="linenos">6722</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-6723"><a href="#Parser-6723"><span class="linenos">6723</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-6724"><a href="#Parser-6724"><span class="linenos">6724</span></a> <span class="c1"># The FORMAT_NAME can be set to an identifier for Snowflake and T-SQL,</span> +</span><span id="Parser-6725"><a href="#Parser-6725"><span class="linenos">6725</span></a> <span class="c1"># so we parse it separately to use _parse_field()</span> +</span><span id="Parser-6726"><a href="#Parser-6726"><span class="linenos">6726</span></a> <span class="n">prop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6727"><a href="#Parser-6727"><span class="linenos">6727</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"FORMAT_NAME"</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-6728"><a href="#Parser-6728"><span class="linenos">6728</span></a> <span class="p">)</span> +</span><span id="Parser-6729"><a href="#Parser-6729"><span class="linenos">6729</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span> +</span><span id="Parser-6730"><a href="#Parser-6730"><span class="linenos">6730</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6731"><a href="#Parser-6731"><span class="linenos">6731</span></a> <span class="n">opts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">())</span> </span><span id="Parser-6732"><a href="#Parser-6732"><span class="linenos">6732</span></a> -</span><span id="Parser-6733"><a href="#Parser-6733"><span class="linenos">6733</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORAGE_INTEGRATION"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> -</span><span id="Parser-6734"><a href="#Parser-6734"><span class="linenos">6734</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"storage"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6735"><a href="#Parser-6735"><span class="linenos">6735</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CREDENTIALS"</span><span class="p">):</span> -</span><span id="Parser-6736"><a href="#Parser-6736"><span class="linenos">6736</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...), Redshift case: CREDENTIALS <string></span> -</span><span id="Parser-6737"><a href="#Parser-6737"><span class="linenos">6737</span></a> <span class="n">creds</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-6738"><a href="#Parser-6738"><span class="linenos">6738</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-6739"><a href="#Parser-6739"><span class="linenos">6739</span></a> <span class="p">)</span> -</span><span id="Parser-6740"><a href="#Parser-6740"><span class="linenos">6740</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">,</span> <span class="n">creds</span><span class="p">)</span> -</span><span id="Parser-6741"><a href="#Parser-6741"><span class="linenos">6741</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCRYPTION"</span><span class="p">):</span> -</span><span id="Parser-6742"><a href="#Parser-6742"><span class="linenos">6742</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"encryption"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> -</span><span id="Parser-6743"><a href="#Parser-6743"><span class="linenos">6743</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IAM_ROLE"</span><span class="p">):</span> -</span><span id="Parser-6744"><a href="#Parser-6744"><span class="linenos">6744</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"iam_role"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6745"><a href="#Parser-6745"><span class="linenos">6745</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REGION"</span><span class="p">):</span> -</span><span id="Parser-6746"><a href="#Parser-6746"><span class="linenos">6746</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"region"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-6747"><a href="#Parser-6747"><span class="linenos">6747</span></a> -</span><span id="Parser-6748"><a href="#Parser-6748"><span class="linenos">6748</span></a> <span class="k">return</span> <span class="n">expr</span> -</span><span id="Parser-6749"><a href="#Parser-6749"><span class="linenos">6749</span></a> -</span><span id="Parser-6750"><a href="#Parser-6750"><span class="linenos">6750</span></a> <span class="k">def</span> <span class="nf">_parse_file_location</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-6751"><a href="#Parser-6751"><span class="linenos">6751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-6752"><a href="#Parser-6752"><span class="linenos">6752</span></a> -</span><span id="Parser-6753"><a href="#Parser-6753"><span class="linenos">6753</span></a> <span class="k">def</span> <span class="nf">_parse_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-6754"><a href="#Parser-6754"><span class="linenos">6754</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-6755"><a href="#Parser-6755"><span class="linenos">6755</span></a> -</span><span id="Parser-6756"><a href="#Parser-6756"><span class="linenos">6756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="Parser-6757"><a href="#Parser-6757"><span class="linenos">6757</span></a> -</span><span id="Parser-6758"><a href="#Parser-6758"><span class="linenos">6758</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-6759"><a href="#Parser-6759"><span class="linenos">6759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-6760"><a href="#Parser-6760"><span class="linenos">6760</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-6761"><a href="#Parser-6761"><span class="linenos">6761</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6762"><a href="#Parser-6762"><span class="linenos">6762</span></a> <span class="p">)</span> -</span><span id="Parser-6763"><a href="#Parser-6763"><span class="linenos">6763</span></a> -</span><span id="Parser-6764"><a href="#Parser-6764"><span class="linenos">6764</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> -</span><span id="Parser-6765"><a href="#Parser-6765"><span class="linenos">6765</span></a> -</span><span id="Parser-6766"><a href="#Parser-6766"><span class="linenos">6766</span></a> <span class="n">files</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_file_location</span><span class="p">)</span> -</span><span id="Parser-6767"><a href="#Parser-6767"><span class="linenos">6767</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_credentials</span><span class="p">()</span> -</span><span id="Parser-6768"><a href="#Parser-6768"><span class="linenos">6768</span></a> -</span><span id="Parser-6769"><a href="#Parser-6769"><span class="linenos">6769</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> -</span><span id="Parser-6770"><a href="#Parser-6770"><span class="linenos">6770</span></a> -</span><span id="Parser-6771"><a href="#Parser-6771"><span class="linenos">6771</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_parameters</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-6772"><a href="#Parser-6772"><span class="linenos">6772</span></a> -</span><span id="Parser-6773"><a href="#Parser-6773"><span class="linenos">6773</span></a> <span class="c1"># Fallback case</span> -</span><span id="Parser-6774"><a href="#Parser-6774"><span class="linenos">6774</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-6775"><a href="#Parser-6775"><span class="linenos">6775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-6776"><a href="#Parser-6776"><span class="linenos">6776</span></a> -</span><span id="Parser-6777"><a href="#Parser-6777"><span class="linenos">6777</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-6778"><a href="#Parser-6778"><span class="linenos">6778</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">,</span> -</span><span id="Parser-6779"><a href="#Parser-6779"><span class="linenos">6779</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-6780"><a href="#Parser-6780"><span class="linenos">6780</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-6781"><a href="#Parser-6781"><span class="linenos">6781</span></a> <span class="n">credentials</span><span class="o">=</span><span class="n">credentials</span><span class="p">,</span> -</span><span id="Parser-6782"><a href="#Parser-6782"><span class="linenos">6782</span></a> <span class="n">files</span><span class="o">=</span><span class="n">files</span><span class="p">,</span> -</span><span id="Parser-6783"><a href="#Parser-6783"><span class="linenos">6783</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> -</span><span id="Parser-6784"><a href="#Parser-6784"><span class="linenos">6784</span></a> <span class="p">)</span> +</span><span id="Parser-6733"><a href="#Parser-6733"><span class="linenos">6733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-6734"><a href="#Parser-6734"><span class="linenos">6734</span></a> +</span><span id="Parser-6735"><a href="#Parser-6735"><span class="linenos">6735</span></a> <span class="k">return</span> <span class="n">opts</span> +</span><span id="Parser-6736"><a href="#Parser-6736"><span class="linenos">6736</span></a> +</span><span id="Parser-6737"><a href="#Parser-6737"><span class="linenos">6737</span></a> <span class="k">def</span> <span class="nf">_parse_copy_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">]:</span> +</span><span id="Parser-6738"><a href="#Parser-6738"><span class="linenos">6738</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-6739"><a href="#Parser-6739"><span class="linenos">6739</span></a> +</span><span id="Parser-6740"><a href="#Parser-6740"><span class="linenos">6740</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-6741"><a href="#Parser-6741"><span class="linenos">6741</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-6742"><a href="#Parser-6742"><span class="linenos">6742</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6743"><a href="#Parser-6743"><span class="linenos">6743</span></a> <span class="n">prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-6744"><a href="#Parser-6744"><span class="linenos">6744</span></a> +</span><span id="Parser-6745"><a href="#Parser-6745"><span class="linenos">6745</span></a> <span class="c1"># Different dialects might separate options and values by white space, "=" and "AS"</span> +</span><span id="Parser-6746"><a href="#Parser-6746"><span class="linenos">6746</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-6747"><a href="#Parser-6747"><span class="linenos">6747</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-6748"><a href="#Parser-6748"><span class="linenos">6748</span></a> +</span><span id="Parser-6749"><a href="#Parser-6749"><span class="linenos">6749</span></a> <span class="n">param</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">option</span><span class="p">)</span> +</span><span id="Parser-6750"><a href="#Parser-6750"><span class="linenos">6750</span></a> +</span><span id="Parser-6751"><a href="#Parser-6751"><span class="linenos">6751</span></a> <span class="k">if</span> <span class="n">prev</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_INTO_VARLEN_OPTIONS</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span> +</span><span id="Parser-6752"><a href="#Parser-6752"><span class="linenos">6752</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> +</span><span id="Parser-6753"><a href="#Parser-6753"><span class="linenos">6753</span></a> <span class="p">):</span> +</span><span id="Parser-6754"><a href="#Parser-6754"><span class="linenos">6754</span></a> <span class="c1"># Snowflake FILE_FORMAT case, Databricks COPY & FORMAT options</span> +</span><span id="Parser-6755"><a href="#Parser-6755"><span class="linenos">6755</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="Parser-6756"><a href="#Parser-6756"><span class="linenos">6756</span></a> <span class="k">elif</span> <span class="n">prev</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span> +</span><span id="Parser-6757"><a href="#Parser-6757"><span class="linenos">6757</span></a> <span class="c1"># T-SQL's external file format case</span> +</span><span id="Parser-6758"><a href="#Parser-6758"><span class="linenos">6758</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6759"><a href="#Parser-6759"><span class="linenos">6759</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-6760"><a href="#Parser-6760"><span class="linenos">6760</span></a> <span class="n">param</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unquoted_field</span><span class="p">())</span> +</span><span id="Parser-6761"><a href="#Parser-6761"><span class="linenos">6761</span></a> +</span><span id="Parser-6762"><a href="#Parser-6762"><span class="linenos">6762</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">param</span><span class="p">)</span> +</span><span id="Parser-6763"><a href="#Parser-6763"><span class="linenos">6763</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span> +</span><span id="Parser-6764"><a href="#Parser-6764"><span class="linenos">6764</span></a> +</span><span id="Parser-6765"><a href="#Parser-6765"><span class="linenos">6765</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="Parser-6766"><a href="#Parser-6766"><span class="linenos">6766</span></a> +</span><span id="Parser-6767"><a href="#Parser-6767"><span class="linenos">6767</span></a> <span class="k">def</span> <span class="nf">_parse_credentials</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">]:</span> +</span><span id="Parser-6768"><a href="#Parser-6768"><span class="linenos">6768</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> +</span><span id="Parser-6769"><a href="#Parser-6769"><span class="linenos">6769</span></a> +</span><span id="Parser-6770"><a href="#Parser-6770"><span class="linenos">6770</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"STORAGE_INTEGRATION"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">):</span> +</span><span id="Parser-6771"><a href="#Parser-6771"><span class="linenos">6771</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"storage"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6772"><a href="#Parser-6772"><span class="linenos">6772</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CREDENTIALS"</span><span class="p">):</span> +</span><span id="Parser-6773"><a href="#Parser-6773"><span class="linenos">6773</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...), Redshift case: CREDENTIALS <string></span> +</span><span id="Parser-6774"><a href="#Parser-6774"><span class="linenos">6774</span></a> <span class="n">creds</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-6775"><a href="#Parser-6775"><span class="linenos">6775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-6776"><a href="#Parser-6776"><span class="linenos">6776</span></a> <span class="p">)</span> +</span><span id="Parser-6777"><a href="#Parser-6777"><span class="linenos">6777</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">,</span> <span class="n">creds</span><span class="p">)</span> +</span><span id="Parser-6778"><a href="#Parser-6778"><span class="linenos">6778</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENCRYPTION"</span><span class="p">):</span> +</span><span id="Parser-6779"><a href="#Parser-6779"><span class="linenos">6779</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"encryption"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_options</span><span class="p">())</span> +</span><span id="Parser-6780"><a href="#Parser-6780"><span class="linenos">6780</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"IAM_ROLE"</span><span class="p">):</span> +</span><span id="Parser-6781"><a href="#Parser-6781"><span class="linenos">6781</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"iam_role"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6782"><a href="#Parser-6782"><span class="linenos">6782</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"REGION"</span><span class="p">):</span> +</span><span id="Parser-6783"><a href="#Parser-6783"><span class="linenos">6783</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"region"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-6784"><a href="#Parser-6784"><span class="linenos">6784</span></a> +</span><span id="Parser-6785"><a href="#Parser-6785"><span class="linenos">6785</span></a> <span class="k">return</span> <span class="n">expr</span> +</span><span id="Parser-6786"><a href="#Parser-6786"><span class="linenos">6786</span></a> +</span><span id="Parser-6787"><a href="#Parser-6787"><span class="linenos">6787</span></a> <span class="k">def</span> <span class="nf">_parse_file_location</span><span class="p">(</span><span class="bp">self</span><span class="p">)</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-6788"><a href="#Parser-6788"><span class="linenos">6788</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-6789"><a href="#Parser-6789"><span class="linenos">6789</span></a> +</span><span id="Parser-6790"><a href="#Parser-6790"><span class="linenos">6790</span></a> <span class="k">def</span> <span class="nf">_parse_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-6791"><a href="#Parser-6791"><span class="linenos">6791</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-6792"><a href="#Parser-6792"><span class="linenos">6792</span></a> +</span><span id="Parser-6793"><a href="#Parser-6793"><span class="linenos">6793</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="Parser-6794"><a href="#Parser-6794"><span class="linenos">6794</span></a> +</span><span id="Parser-6795"><a href="#Parser-6795"><span class="linenos">6795</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-6796"><a href="#Parser-6796"><span class="linenos">6796</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-6797"><a href="#Parser-6797"><span class="linenos">6797</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-6798"><a href="#Parser-6798"><span class="linenos">6798</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6799"><a href="#Parser-6799"><span class="linenos">6799</span></a> <span class="p">)</span> +</span><span id="Parser-6800"><a href="#Parser-6800"><span class="linenos">6800</span></a> +</span><span id="Parser-6801"><a href="#Parser-6801"><span class="linenos">6801</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">)</span> +</span><span id="Parser-6802"><a href="#Parser-6802"><span class="linenos">6802</span></a> +</span><span id="Parser-6803"><a href="#Parser-6803"><span class="linenos">6803</span></a> <span class="n">files</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_file_location</span><span class="p">)</span> +</span><span id="Parser-6804"><a href="#Parser-6804"><span class="linenos">6804</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_credentials</span><span class="p">()</span> +</span><span id="Parser-6805"><a href="#Parser-6805"><span class="linenos">6805</span></a> +</span><span id="Parser-6806"><a href="#Parser-6806"><span class="linenos">6806</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">)</span> +</span><span id="Parser-6807"><a href="#Parser-6807"><span class="linenos">6807</span></a> +</span><span id="Parser-6808"><a href="#Parser-6808"><span class="linenos">6808</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_copy_parameters</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-6809"><a href="#Parser-6809"><span class="linenos">6809</span></a> +</span><span id="Parser-6810"><a href="#Parser-6810"><span class="linenos">6810</span></a> <span class="c1"># Fallback case</span> +</span><span id="Parser-6811"><a href="#Parser-6811"><span class="linenos">6811</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-6812"><a href="#Parser-6812"><span class="linenos">6812</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-6813"><a href="#Parser-6813"><span class="linenos">6813</span></a> +</span><span id="Parser-6814"><a href="#Parser-6814"><span class="linenos">6814</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-6815"><a href="#Parser-6815"><span class="linenos">6815</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">,</span> +</span><span id="Parser-6816"><a href="#Parser-6816"><span class="linenos">6816</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-6817"><a href="#Parser-6817"><span class="linenos">6817</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-6818"><a href="#Parser-6818"><span class="linenos">6818</span></a> <span class="n">credentials</span><span class="o">=</span><span class="n">credentials</span><span class="p">,</span> +</span><span id="Parser-6819"><a href="#Parser-6819"><span class="linenos">6819</span></a> <span class="n">files</span><span class="o">=</span><span class="n">files</span><span class="p">,</span> +</span><span id="Parser-6820"><a href="#Parser-6820"><span class="linenos">6820</span></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> +</span><span id="Parser-6821"><a href="#Parser-6821"><span class="linenos">6821</span></a> <span class="p">)</span> </span></pre></div> @@ -14197,20 +14274,20 @@ Default: 3</li> </div> <a class="headerlink" href="#Parser.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.__init__-1218"><a href="#Parser.__init__-1218"><span class="linenos">1218</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Parser.__init__-1219"><a href="#Parser.__init__-1219"><span class="linenos">1219</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser.__init__-1220"><a href="#Parser.__init__-1220"><span class="linenos">1220</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser.__init__-1221"><a href="#Parser.__init__-1221"><span class="linenos">1221</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> -</span><span id="Parser.__init__-1222"><a href="#Parser.__init__-1222"><span class="linenos">1222</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> -</span><span id="Parser.__init__-1223"><a href="#Parser.__init__-1223"><span class="linenos">1223</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="Parser.__init__-1224"><a href="#Parser.__init__-1224"><span class="linenos">1224</span></a> <span class="p">):</span> -</span><span id="Parser.__init__-1225"><a href="#Parser.__init__-1225"><span class="linenos">1225</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="Parser.__init__-1226"><a href="#Parser.__init__-1226"><span class="linenos">1226</span></a> -</span><span id="Parser.__init__-1227"><a href="#Parser.__init__-1227"><span class="linenos">1227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="Parser.__init__-1228"><a href="#Parser.__init__-1228"><span class="linenos">1228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> -</span><span id="Parser.__init__-1229"><a href="#Parser.__init__-1229"><span class="linenos">1229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> -</span><span id="Parser.__init__-1230"><a href="#Parser.__init__-1230"><span class="linenos">1230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> -</span><span id="Parser.__init__-1231"><a href="#Parser.__init__-1231"><span class="linenos">1231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.__init__-1224"><a href="#Parser.__init__-1224"><span class="linenos">1224</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Parser.__init__-1225"><a href="#Parser.__init__-1225"><span class="linenos">1225</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser.__init__-1226"><a href="#Parser.__init__-1226"><span class="linenos">1226</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser.__init__-1227"><a href="#Parser.__init__-1227"><span class="linenos">1227</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> +</span><span id="Parser.__init__-1228"><a href="#Parser.__init__-1228"><span class="linenos">1228</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> +</span><span id="Parser.__init__-1229"><a href="#Parser.__init__-1229"><span class="linenos">1229</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="Parser.__init__-1230"><a href="#Parser.__init__-1230"><span class="linenos">1230</span></a> <span class="p">):</span> +</span><span id="Parser.__init__-1231"><a href="#Parser.__init__-1231"><span class="linenos">1231</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="Parser.__init__-1232"><a href="#Parser.__init__-1232"><span class="linenos">1232</span></a> +</span><span id="Parser.__init__-1233"><a href="#Parser.__init__-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="Parser.__init__-1234"><a href="#Parser.__init__-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> +</span><span id="Parser.__init__-1235"><a href="#Parser.__init__-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> +</span><span id="Parser.__init__-1236"><a href="#Parser.__init__-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Parser.__init__-1237"><a href="#Parser.__init__-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> </span></pre></div> @@ -14221,7 +14298,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span><span class="annotation">: Dict[str, Callable]</span> = <input id="Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>}</span> + <label class="view-value-button pdoc-button" for="Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Date">sqlglot.expressions.Date</a>'>>, 'DATE_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>'>>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateSub">sqlglot.expressions.DateSub</a>'>>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#DateTrunc">sqlglot.expressions.DateTrunc</a>'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LIST': <bound method Func.from_arg_list of <class '<a href="expressions.html#List">sqlglot.expressions.List</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="expressions.html#MD5">sqlglot.expressions.MD5</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Split">sqlglot.expressions.Split</a>'>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Timestamp">sqlglot.expressions.Timestamp</a>'>>, 'TIMESTAMP_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>'>>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>'>>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function build_hex>}</span> </div> @@ -14246,7 +14323,7 @@ Default: 3</li> <div id="Parser.STRUCT_TYPE_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">STRUCT_TYPE_TOKENS</span> = -<span class="default_value">{<TokenType.NESTED: 'NESTED'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>}</span> +<span class="default_value">{<TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.NESTED: 'NESTED'>}</span> </div> @@ -14259,7 +14336,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">NESTED_TYPE_TOKENS</span> = <input id="Parser.NESTED_TYPE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.NESTED_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.MAP: 'MAP'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.NESTED: 'NESTED'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.NULLABLE: 'NULLABLE'>}</span> + <label class="view-value-button pdoc-button" for="Parser.NESTED_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.LIST: 'LIST'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.NESTED: 'NESTED'>, <TokenType.MAP: 'MAP'>, <TokenType.NULLABLE: 'NULLABLE'>}</span> </div> @@ -14284,7 +14361,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">AGGREGATE_TYPE_TOKENS</span> = <input id="Parser.AGGREGATE_TYPE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.AGGREGATE_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>}</span> + <label class="view-value-button pdoc-button" for="Parser.AGGREGATE_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>}</span> </div> @@ -14297,7 +14374,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TYPE_TOKENS</span> = <input id="Parser.TYPE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.IPV6: 'IPV6'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.UINT256: 'UINT256'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.UUID: 'UUID'>, <TokenType.IPV4: 'IPV4'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.INT128: 'INT128'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.MAP: 'MAP'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>}</span> </div> @@ -14336,7 +14413,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">RESERVED_TOKENS</span> = <input id="Parser.RESERVED_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.RESERVED_TOKENS-view-value"></label><span class="default_value">{<TokenType.L_PAREN: 'L_PAREN'>, <TokenType.DASH: 'DASH'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.EQ: 'EQ'>, <TokenType.DOT: 'DOT'>, <TokenType.TILDA: 'TILDA'>, <TokenType.SLASH: 'SLASH'>, <TokenType.R_PAREN: 'R_PAREN'>, <TokenType.SEMICOLON: 'SEMICOLON'>, <TokenType.COLON: 'COLON'>, <TokenType.BACKSLASH: 'BACKSLASH'>, <TokenType.HASH: 'HASH'>, <TokenType.AMP: 'AMP'>, <TokenType.PLACEHOLDER: 'PLACEHOLDER'>, <TokenType.L_BRACKET: 'L_BRACKET'>, <TokenType.LT: 'LT'>, <TokenType.R_BRACKET: 'R_BRACKET'>, <TokenType.COMMA: 'COMMA'>, <TokenType.SELECT: 'SELECT'>, <TokenType.L_BRACE: 'L_BRACE'>, <TokenType.PLUS: 'PLUS'>, <TokenType.R_BRACE: 'R_BRACE'>, <TokenType.NOT: 'NOT'>, <TokenType.STAR: 'STAR'>, <TokenType.CARET: 'CARET'>, <TokenType.PIPE: 'PIPE'>, <TokenType.MOD: 'MOD'>, <TokenType.PARAMETER: 'PARAMETER'>, <TokenType.GT: 'GT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.RESERVED_TOKENS-view-value"></label><span class="default_value">{<TokenType.PLACEHOLDER: 'PLACEHOLDER'>, <TokenType.TILDA: 'TILDA'>, <TokenType.PARAMETER: 'PARAMETER'>, <TokenType.L_BRACE: 'L_BRACE'>, <TokenType.BACKSLASH: 'BACKSLASH'>, <TokenType.R_BRACKET: 'R_BRACKET'>, <TokenType.GT: 'GT'>, <TokenType.COLON: 'COLON'>, <TokenType.L_PAREN: 'L_PAREN'>, <TokenType.SLASH: 'SLASH'>, <TokenType.EQ: 'EQ'>, <TokenType.NOT: 'NOT'>, <TokenType.LT: 'LT'>, <TokenType.STAR: 'STAR'>, <TokenType.L_BRACKET: 'L_BRACKET'>, <TokenType.CARET: 'CARET'>, <TokenType.DOT: 'DOT'>, <TokenType.DASH: 'DASH'>, <TokenType.SELECT: 'SELECT'>, <TokenType.AMP: 'AMP'>, <TokenType.R_BRACE: 'R_BRACE'>, <TokenType.COMMA: 'COMMA'>, <TokenType.MOD: 'MOD'>, <TokenType.R_PAREN: 'R_PAREN'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.SEMICOLON: 'SEMICOLON'>, <TokenType.HASH: 'HASH'>, <TokenType.PIPE: 'PIPE'>, <TokenType.PLUS: 'PLUS'>}</span> </div> @@ -14349,7 +14426,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">DB_CREATABLES</span> = <input id="Parser.DB_CREATABLES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.DB_CREATABLES-view-value"></label><span class="default_value">{<TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.TABLE: 'TABLE'>, <TokenType.TAG: 'TAG'>, <TokenType.VIEW: 'VIEW'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>}</span> + <label class="view-value-button pdoc-button" for="Parser.DB_CREATABLES-view-value"></label><span class="default_value">{<TokenType.DATABASE: 'DATABASE'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.VIEW: 'VIEW'>, <TokenType.TABLE: 'TABLE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TAG: 'TAG'>, <TokenType.MODEL: 'MODEL'>}</span> </div> @@ -14362,7 +14439,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">CREATABLES</span> = <input id="Parser.CREATABLES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.CREATABLES-view-value"></label><span class="default_value">{<TokenType.INDEX: 'INDEX'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.MODEL: 'MODEL'>, <TokenType.TABLE: 'TABLE'>, <TokenType.TAG: 'TAG'>, <TokenType.VIEW: 'VIEW'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>}</span> + <label class="view-value-button pdoc-button" for="Parser.CREATABLES-view-value"></label><span class="default_value">{<TokenType.DATABASE: 'DATABASE'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.MODEL: 'MODEL'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INDEX: 'INDEX'>, <TokenType.TABLE: 'TABLE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TAG: 'TAG'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>}</span> </div> @@ -14375,7 +14452,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">ID_VAR_TOKENS</span> = <input id="Parser.ID_VAR_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.ID_VAR_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.ID_VAR_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14388,7 +14465,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">INTERVAL_VARS</span> = <input id="Parser.INTERVAL_VARS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.INTERVAL_VARS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.INTERVAL_VARS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14401,7 +14478,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14414,7 +14491,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">ALIAS_TOKENS</span> = <input id="Parser.ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14423,11 +14500,23 @@ Default: 3</li> </div> + <div id="Parser.ARRAY_CONSTRUCTORS" class="classattr"> + <div class="attr variable"> + <span class="name">ARRAY_CONSTRUCTORS</span> = +<span class="default_value">{'ARRAY': <class '<a href="expressions.html#Array">sqlglot.expressions.Array</a>'>, 'LIST': <class '<a href="expressions.html#List">sqlglot.expressions.List</a>'>}</span> + + + </div> + <a class="headerlink" href="#Parser.ARRAY_CONSTRUCTORS"></a> + + + + </div> <div id="Parser.COMMENT_TABLE_ALIAS_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">COMMENT_TABLE_ALIAS_TOKENS</span> = <input id="Parser.COMMENT_TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.COMMENT_TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.COMMENT_TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14440,7 +14529,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">UPDATE_ALIAS_TOKENS</span> = <input id="Parser.UPDATE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.UPDATE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.UPDATE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.SHOW: 'SHOW'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14452,7 +14541,7 @@ Default: 3</li> <div id="Parser.TRIM_TYPES" class="classattr"> <div class="attr variable"> <span class="name">TRIM_TYPES</span> = -<span class="default_value">{'LEADING', 'TRAILING', 'BOTH'}</span> +<span class="default_value">{'LEADING', 'BOTH', 'TRAILING'}</span> </div> @@ -14465,7 +14554,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNC_TOKENS</span> = <input id="Parser.FUNC_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.ALL: 'ALL'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.UINT256: 'UINT256'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.INDEX: 'INDEX'>, <TokenType.LIKE: 'LIKE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.GLOB: 'GLOB'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.XML: 'XML'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.XOR: 'XOR'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.FUNC_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.INSERT: 'INSERT'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.ILIKE: 'ILIKE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.RLIKE: 'RLIKE'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.MONEY: 'MONEY'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.XOR: 'XOR'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.GLOB: 'GLOB'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.LEFT: 'LEFT'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.SOME: 'SOME'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.ROW: 'ROW'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.JSON: 'JSON'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.LIKE: 'LIKE'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -14590,7 +14679,7 @@ Default: 3</li> <div id="Parser.TIMES" class="classattr"> <div class="attr variable"> <span class="name">TIMES</span> = -<span class="default_value">{<TokenType.TIME: 'TIME'>, <TokenType.TIMETZ: 'TIMETZ'>}</span> +<span class="default_value">{<TokenType.TIMETZ: 'TIMETZ'>, <TokenType.TIME: 'TIME'>}</span> </div> @@ -14603,7 +14692,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TIMESTAMPS</span> = <input id="Parser.TIMESTAMPS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.TIMESTAMPS-view-value"></label><span class="default_value">{<TokenType.TIME: 'TIME'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>}</span> + <label class="view-value-button pdoc-button" for="Parser.TIMESTAMPS-view-value"></label><span class="default_value">{<TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TIME: 'TIME'>}</span> </div> @@ -14615,7 +14704,7 @@ Default: 3</li> <div id="Parser.SET_OPERATIONS" class="classattr"> <div class="attr variable"> <span class="name">SET_OPERATIONS</span> = -<span class="default_value">{<TokenType.INTERSECT: 'INTERSECT'>, <TokenType.UNION: 'UNION'>, <TokenType.EXCEPT: 'EXCEPT'>}</span> +<span class="default_value">{<TokenType.INTERSECT: 'INTERSECT'>, <TokenType.EXCEPT: 'EXCEPT'>, <TokenType.UNION: 'UNION'>}</span> </div> @@ -14627,7 +14716,7 @@ Default: 3</li> <div id="Parser.JOIN_METHODS" class="classattr"> <div class="attr variable"> <span class="name">JOIN_METHODS</span> = -<span class="default_value">{<TokenType.ASOF: 'ASOF'>, <TokenType.POSITIONAL: 'POSITIONAL'>, <TokenType.NATURAL: 'NATURAL'>}</span> +<span class="default_value">{<TokenType.POSITIONAL: 'POSITIONAL'>, <TokenType.ASOF: 'ASOF'>, <TokenType.NATURAL: 'NATURAL'>}</span> </div> @@ -14639,7 +14728,7 @@ Default: 3</li> <div id="Parser.JOIN_SIDES" class="classattr"> <div class="attr variable"> <span class="name">JOIN_SIDES</span> = -<span class="default_value">{<TokenType.FULL: 'FULL'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RIGHT: 'RIGHT'>}</span> +<span class="default_value">{<TokenType.RIGHT: 'RIGHT'>, <TokenType.LEFT: 'LEFT'>, <TokenType.FULL: 'FULL'>}</span> </div> @@ -14652,7 +14741,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">JOIN_KINDS</span> = <input id="Parser.JOIN_KINDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.JOIN_KINDS-view-value"></label><span class="default_value">{<TokenType.CROSS: 'CROSS'>, <TokenType.OUTER: 'OUTER'>, <TokenType.SEMI: 'SEMI'>, <TokenType.INNER: 'INNER'>, <TokenType.ANTI: 'ANTI'>}</span> + <label class="view-value-button pdoc-button" for="Parser.JOIN_KINDS-view-value"></label><span class="default_value">{<TokenType.INNER: 'INNER'>, <TokenType.ANTI: 'ANTI'>, <TokenType.SEMI: 'SEMI'>, <TokenType.OUTER: 'OUTER'>, <TokenType.CROSS: 'CROSS'>}</span> </div> @@ -14858,7 +14947,7 @@ Default: 3</li> <div id="Parser.SCHEMA_UNNAMED_CONSTRAINTS" class="classattr"> <div class="attr variable"> <span class="name">SCHEMA_UNNAMED_CONSTRAINTS</span> = -<span class="default_value">{'LIKE', 'CHECK', 'UNIQUE', 'EXCLUDE', 'PRIMARY KEY', 'PERIOD', 'FOREIGN KEY'}</span> +<span class="default_value">{'PERIOD', 'PRIMARY KEY', 'FOREIGN KEY', 'UNIQUE', 'EXCLUDE', 'CHECK', 'LIKE'}</span> </div> @@ -14883,7 +14972,7 @@ Default: 3</li> <div id="Parser.INVALID_FUNC_NAME_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">INVALID_FUNC_NAME_TOKENS</span> = -<span class="default_value">{<TokenType.STRING: 'STRING'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>}</span> +<span class="default_value">{<TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.STRING: 'STRING'>}</span> </div> @@ -14995,7 +15084,7 @@ Default: 3</li> <div id="Parser.DDL_SELECT_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">DDL_SELECT_TOKENS</span> = -<span class="default_value">{<TokenType.SELECT: 'SELECT'>, <TokenType.WITH: 'WITH'>, <TokenType.L_PAREN: 'L_PAREN'>}</span> +<span class="default_value">{<TokenType.SELECT: 'SELECT'>, <TokenType.L_PAREN: 'L_PAREN'>, <TokenType.WITH: 'WITH'>}</span> </div> @@ -15019,7 +15108,7 @@ Default: 3</li> <div id="Parser.TRANSACTION_KIND" class="classattr"> <div class="attr variable"> <span class="name">TRANSACTION_KIND</span> = -<span class="default_value">{'DEFERRED', 'EXCLUSIVE', 'IMMEDIATE'}</span> +<span class="default_value">{'EXCLUSIVE', 'DEFERRED', 'IMMEDIATE'}</span> </div> @@ -15106,7 +15195,7 @@ Default: 3</li> <div id="Parser.INSERT_ALTERNATIVES" class="classattr"> <div class="attr variable"> <span class="name">INSERT_ALTERNATIVES</span> = -<span class="default_value">{'IGNORE', 'REPLACE', 'ROLLBACK', 'FAIL', 'ABORT'}</span> +<span class="default_value">{'REPLACE', 'ROLLBACK', 'FAIL', 'IGNORE', 'ABORT'}</span> </div> @@ -15130,7 +15219,7 @@ Default: 3</li> <div id="Parser.HISTORICAL_DATA_KIND" class="classattr"> <div class="attr variable"> <span class="name">HISTORICAL_DATA_KIND</span> = -<span class="default_value">{'OFFSET', 'STREAM', 'TIMESTAMP', 'STATEMENT'}</span> +<span class="default_value">{'OFFSET', 'TIMESTAMP', 'STATEMENT', 'STREAM'}</span> </div> @@ -15142,7 +15231,7 @@ Default: 3</li> <div id="Parser.OPCLASS_FOLLOW_KEYWORDS" class="classattr"> <div class="attr variable"> <span class="name">OPCLASS_FOLLOW_KEYWORDS</span> = -<span class="default_value">{'WITH', 'ASC', 'NULLS', 'DESC'}</span> +<span class="default_value">{'ASC', 'DESC', 'NULLS', 'WITH'}</span> </div> @@ -15154,7 +15243,7 @@ Default: 3</li> <div id="Parser.OPTYPE_FOLLOW_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">OPTYPE_FOLLOW_TOKENS</span> = -<span class="default_value">{<TokenType.COMMA: 'COMMA'>, <TokenType.R_PAREN: 'R_PAREN'>}</span> +<span class="default_value">{<TokenType.R_PAREN: 'R_PAREN'>, <TokenType.COMMA: 'COMMA'>}</span> </div> @@ -15178,7 +15267,7 @@ Default: 3</li> <div id="Parser.VIEW_ATTRIBUTES" class="classattr"> <div class="attr variable"> <span class="name">VIEW_ATTRIBUTES</span> = -<span class="default_value">{'SCHEMABINDING', 'VIEW_METADATA', 'ENCRYPTION'}</span> +<span class="default_value">{'VIEW_METADATA', 'ENCRYPTION', 'SCHEMABINDING'}</span> </div> @@ -15191,7 +15280,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">WINDOW_ALIAS_TOKENS</span> = <input id="Parser.WINDOW_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.WINDOW_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.WINDOW_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -15227,7 +15316,7 @@ Default: 3</li> <div id="Parser.JSON_KEY_VALUE_SEPARATOR_TOKENS" class="classattr"> <div class="attr variable"> <span class="name">JSON_KEY_VALUE_SEPARATOR_TOKENS</span> = -<span class="default_value">{<TokenType.COMMA: 'COMMA'>, <TokenType.IS: 'IS'>, <TokenType.COLON: 'COLON'>}</span> +<span class="default_value">{<TokenType.IS: 'IS'>, <TokenType.COMMA: 'COMMA'>, <TokenType.COLON: 'COLON'>}</span> </div> @@ -15240,7 +15329,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FETCH_TOKENS</span> = <input id="Parser.FETCH_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.FETCH_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.FETCH_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -15253,7 +15342,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">ADD_CONSTRAINT_TOKENS</span> = <input id="Parser.ADD_CONSTRAINT_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.ADD_CONSTRAINT_TOKENS-view-value"></label><span class="default_value">{<TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>}</span> + <label class="view-value-button pdoc-button" for="Parser.ADD_CONSTRAINT_TOKENS-view-value"></label><span class="default_value">{<TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>}</span> </div> @@ -15290,7 +15379,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">UNNEST_OFFSET_ALIAS_TOKENS</span> = <input id="Parser.UNNEST_OFFSET_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Parser.UNNEST_OFFSET_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.FULL: 'FULL'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.SOME: 'SOME'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.ASOF: 'ASOF'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.APPLY: 'APPLY'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.LEFT: 'LEFT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> + <label class="view-value-button pdoc-button" for="Parser.UNNEST_OFFSET_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UINT256: 'UINT256'>, <TokenType.UINT: 'UINT'>, <TokenType.USE: 'USE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TAG: 'TAG'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.YEAR: 'YEAR'>, <TokenType.NAME: 'NAME'>, <TokenType.FIRST: 'FIRST'>, <TokenType.ASC: 'ASC'>, <TokenType.APPLY: 'APPLY'>, <TokenType.NATURAL: 'NATURAL'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.FULL: 'FULL'>, <TokenType.KILL: 'KILL'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.VIEW: 'VIEW'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.CASE: 'CASE'>, <TokenType.XML: 'XML'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RIGHT: 'RIGHT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.NEXT: 'NEXT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.ALL: 'ALL'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.END: 'END'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.TIME: 'TIME'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.UINT128: 'UINT128'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.IPV6: 'IPV6'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.SET: 'SET'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.INT128: 'INT128'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.LOAD: 'LOAD'>, <TokenType.NESTED: 'NESTED'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.ENUM: 'ENUM'>, <TokenType.ANTI: 'ANTI'>, <TokenType.LEFT: 'LEFT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.INT: 'INT'>, <TokenType.OFFSET: 'OFFSET'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.BIT: 'BIT'>, <TokenType.RANGE: 'RANGE'>, <TokenType.MODEL: 'MODEL'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.SOME: 'SOME'>, <TokenType.CACHE: 'CACHE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.ROW: 'ROW'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.UUID: 'UUID'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.SUPER: 'SUPER'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.TEXT: 'TEXT'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TABLE: 'TABLE'>, <TokenType.BINARY: 'BINARY'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.TOP: 'TOP'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.FINAL: 'FINAL'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.VAR: 'VAR'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.COPY: 'COPY'>, <TokenType.JSON: 'JSON'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.INDEX: 'INDEX'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SEMI: 'SEMI'>, <TokenType.IS: 'IS'>, <TokenType.INT256: 'INT256'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.LIST: 'LIST'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.MAP: 'MAP'>, <TokenType.FILTER: 'FILTER'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.IPV4: 'IPV4'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.DIV: 'DIV'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.INET: 'INET'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.DATE: 'DATE'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.NULL: 'NULL'>, <TokenType.MERGE: 'MERGE'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.WINDOW: 'WINDOW'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.ASOF: 'ASOF'>, <TokenType.DESC: 'DESC'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.KEEP: 'KEEP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.JSONB: 'JSONB'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.CHAR: 'CHAR'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.ANY: 'ANY'>}</span> </div> @@ -15314,7 +15403,7 @@ Default: 3</li> <div id="Parser.COPY_INTO_VARLEN_OPTIONS" class="classattr"> <div class="attr variable"> <span class="name">COPY_INTO_VARLEN_OPTIONS</span> = -<span class="default_value">{'FORMAT_OPTIONS', 'COPY_OPTIONS', 'FILE_FORMAT', 'CREDENTIAL'}</span> +<span class="default_value">{'COPY_OPTIONS', 'CREDENTIAL', 'FORMAT_OPTIONS', 'FILE_FORMAT'}</span> </div> @@ -15458,7 +15547,7 @@ Default: 3</li> <div id="Parser.UNION_MODIFIERS" class="classattr"> <div class="attr variable"> <span class="name">UNION_MODIFIERS</span> = -<span class="default_value">{'order', 'offset', 'limit'}</span> +<span class="default_value">{'order', 'limit', 'offset'}</span> </div> @@ -15630,15 +15719,15 @@ Default: 3</li> </div> <a class="headerlink" href="#Parser.reset"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.reset-1233"><a href="#Parser.reset-1233"><span class="linenos">1233</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Parser.reset-1234"><a href="#Parser.reset-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Parser.reset-1235"><a href="#Parser.reset-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser.reset-1236"><a href="#Parser.reset-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser.reset-1237"><a href="#Parser.reset-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Parser.reset-1238"><a href="#Parser.reset-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.reset-1239"><a href="#Parser.reset-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.reset-1240"><a href="#Parser.reset-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.reset-1241"><a href="#Parser.reset-1241"><span class="linenos">1241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.reset-1239"><a href="#Parser.reset-1239"><span class="linenos">1239</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Parser.reset-1240"><a href="#Parser.reset-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Parser.reset-1241"><a href="#Parser.reset-1241"><span class="linenos">1241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser.reset-1242"><a href="#Parser.reset-1242"><span class="linenos">1242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser.reset-1243"><a href="#Parser.reset-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Parser.reset-1244"><a href="#Parser.reset-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.reset-1245"><a href="#Parser.reset-1245"><span class="linenos">1245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.reset-1246"><a href="#Parser.reset-1246"><span class="linenos">1246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.reset-1247"><a href="#Parser.reset-1247"><span class="linenos">1247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> </span></pre></div> @@ -15656,23 +15745,23 @@ Default: 3</li> </div> <a class="headerlink" href="#Parser.parse"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse-1243"><a href="#Parser.parse-1243"><span class="linenos">1243</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> -</span><span id="Parser.parse-1244"><a href="#Parser.parse-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.parse-1245"><a href="#Parser.parse-1245"><span class="linenos">1245</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser.parse-1246"><a href="#Parser.parse-1246"><span class="linenos">1246</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.parse-1247"><a href="#Parser.parse-1247"><span class="linenos">1247</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> -</span><span id="Parser.parse-1248"><a href="#Parser.parse-1248"><span class="linenos">1248</span></a><span class="sd"> per parsed SQL statement.</span> -</span><span id="Parser.parse-1249"><a href="#Parser.parse-1249"><span class="linenos">1249</span></a> -</span><span id="Parser.parse-1250"><a href="#Parser.parse-1250"><span class="linenos">1250</span></a><span class="sd"> Args:</span> -</span><span id="Parser.parse-1251"><a href="#Parser.parse-1251"><span class="linenos">1251</span></a><span class="sd"> raw_tokens: The list of tokens.</span> -</span><span id="Parser.parse-1252"><a href="#Parser.parse-1252"><span class="linenos">1252</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser.parse-1253"><a href="#Parser.parse-1253"><span class="linenos">1253</span></a> -</span><span id="Parser.parse-1254"><a href="#Parser.parse-1254"><span class="linenos">1254</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.parse-1255"><a href="#Parser.parse-1255"><span class="linenos">1255</span></a><span class="sd"> The list of the produced syntax trees.</span> -</span><span id="Parser.parse-1256"><a href="#Parser.parse-1256"><span class="linenos">1256</span></a><span class="sd"> """</span> -</span><span id="Parser.parse-1257"><a href="#Parser.parse-1257"><span class="linenos">1257</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> -</span><span id="Parser.parse-1258"><a href="#Parser.parse-1258"><span class="linenos">1258</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> -</span><span id="Parser.parse-1259"><a href="#Parser.parse-1259"><span class="linenos">1259</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse-1249"><a href="#Parser.parse-1249"><span class="linenos">1249</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> +</span><span id="Parser.parse-1250"><a href="#Parser.parse-1250"><span class="linenos">1250</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.parse-1251"><a href="#Parser.parse-1251"><span class="linenos">1251</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser.parse-1252"><a href="#Parser.parse-1252"><span class="linenos">1252</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.parse-1253"><a href="#Parser.parse-1253"><span class="linenos">1253</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> +</span><span id="Parser.parse-1254"><a href="#Parser.parse-1254"><span class="linenos">1254</span></a><span class="sd"> per parsed SQL statement.</span> +</span><span id="Parser.parse-1255"><a href="#Parser.parse-1255"><span class="linenos">1255</span></a> +</span><span id="Parser.parse-1256"><a href="#Parser.parse-1256"><span class="linenos">1256</span></a><span class="sd"> Args:</span> +</span><span id="Parser.parse-1257"><a href="#Parser.parse-1257"><span class="linenos">1257</span></a><span class="sd"> raw_tokens: The list of tokens.</span> +</span><span id="Parser.parse-1258"><a href="#Parser.parse-1258"><span class="linenos">1258</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser.parse-1259"><a href="#Parser.parse-1259"><span class="linenos">1259</span></a> +</span><span id="Parser.parse-1260"><a href="#Parser.parse-1260"><span class="linenos">1260</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.parse-1261"><a href="#Parser.parse-1261"><span class="linenos">1261</span></a><span class="sd"> The list of the produced syntax trees.</span> +</span><span id="Parser.parse-1262"><a href="#Parser.parse-1262"><span class="linenos">1262</span></a><span class="sd"> """</span> +</span><span id="Parser.parse-1263"><a href="#Parser.parse-1263"><span class="linenos">1263</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> +</span><span id="Parser.parse-1264"><a href="#Parser.parse-1264"><span class="linenos">1264</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> +</span><span id="Parser.parse-1265"><a href="#Parser.parse-1265"><span class="linenos">1265</span></a> <span class="p">)</span> </span></pre></div> @@ -15706,41 +15795,41 @@ per parsed SQL statement.</p> </div> <a class="headerlink" href="#Parser.parse_into"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse_into-1261"><a href="#Parser.parse_into-1261"><span class="linenos">1261</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="Parser.parse_into-1262"><a href="#Parser.parse_into-1262"><span class="linenos">1262</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser.parse_into-1263"><a href="#Parser.parse_into-1263"><span class="linenos">1263</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> -</span><span id="Parser.parse_into-1264"><a href="#Parser.parse_into-1264"><span class="linenos">1264</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="Parser.parse_into-1265"><a href="#Parser.parse_into-1265"><span class="linenos">1265</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser.parse_into-1266"><a href="#Parser.parse_into-1266"><span class="linenos">1266</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser.parse_into-1267"><a href="#Parser.parse_into-1267"><span class="linenos">1267</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.parse_into-1268"><a href="#Parser.parse_into-1268"><span class="linenos">1268</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> -</span><span id="Parser.parse_into-1269"><a href="#Parser.parse_into-1269"><span class="linenos">1269</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> -</span><span id="Parser.parse_into-1270"><a href="#Parser.parse_into-1270"><span class="linenos">1270</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> -</span><span id="Parser.parse_into-1271"><a href="#Parser.parse_into-1271"><span class="linenos">1271</span></a> -</span><span id="Parser.parse_into-1272"><a href="#Parser.parse_into-1272"><span class="linenos">1272</span></a><span class="sd"> Args:</span> -</span><span id="Parser.parse_into-1273"><a href="#Parser.parse_into-1273"><span class="linenos">1273</span></a><span class="sd"> expression_types: The expression type(s) to try and parse the token list into.</span> -</span><span id="Parser.parse_into-1274"><a href="#Parser.parse_into-1274"><span class="linenos">1274</span></a><span class="sd"> raw_tokens: The list of tokens.</span> -</span><span id="Parser.parse_into-1275"><a href="#Parser.parse_into-1275"><span class="linenos">1275</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser.parse_into-1276"><a href="#Parser.parse_into-1276"><span class="linenos">1276</span></a> -</span><span id="Parser.parse_into-1277"><a href="#Parser.parse_into-1277"><span class="linenos">1277</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.parse_into-1278"><a href="#Parser.parse_into-1278"><span class="linenos">1278</span></a><span class="sd"> The target Expression.</span> -</span><span id="Parser.parse_into-1279"><a href="#Parser.parse_into-1279"><span class="linenos">1279</span></a><span class="sd"> """</span> -</span><span id="Parser.parse_into-1280"><a href="#Parser.parse_into-1280"><span class="linenos">1280</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser.parse_into-1281"><a href="#Parser.parse_into-1281"><span class="linenos">1281</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="Parser.parse_into-1282"><a href="#Parser.parse_into-1282"><span class="linenos">1282</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> -</span><span id="Parser.parse_into-1283"><a href="#Parser.parse_into-1283"><span class="linenos">1283</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser.parse_into-1284"><a href="#Parser.parse_into-1284"><span class="linenos">1284</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser.parse_into-1285"><a href="#Parser.parse_into-1285"><span class="linenos">1285</span></a> -</span><span id="Parser.parse_into-1286"><a href="#Parser.parse_into-1286"><span class="linenos">1286</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Parser.parse_into-1287"><a href="#Parser.parse_into-1287"><span class="linenos">1287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Parser.parse_into-1288"><a href="#Parser.parse_into-1288"><span class="linenos">1288</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Parser.parse_into-1289"><a href="#Parser.parse_into-1289"><span class="linenos">1289</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> -</span><span id="Parser.parse_into-1290"><a href="#Parser.parse_into-1290"><span class="linenos">1290</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse_into-1267"><a href="#Parser.parse_into-1267"><span class="linenos">1267</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="Parser.parse_into-1268"><a href="#Parser.parse_into-1268"><span class="linenos">1268</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser.parse_into-1269"><a href="#Parser.parse_into-1269"><span class="linenos">1269</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> +</span><span id="Parser.parse_into-1270"><a href="#Parser.parse_into-1270"><span class="linenos">1270</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="Parser.parse_into-1271"><a href="#Parser.parse_into-1271"><span class="linenos">1271</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser.parse_into-1272"><a href="#Parser.parse_into-1272"><span class="linenos">1272</span></a> <span class="p">)</span> <span class="o">-></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">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser.parse_into-1273"><a href="#Parser.parse_into-1273"><span class="linenos">1273</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.parse_into-1274"><a href="#Parser.parse_into-1274"><span class="linenos">1274</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> +</span><span id="Parser.parse_into-1275"><a href="#Parser.parse_into-1275"><span class="linenos">1275</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> +</span><span id="Parser.parse_into-1276"><a href="#Parser.parse_into-1276"><span class="linenos">1276</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> +</span><span id="Parser.parse_into-1277"><a href="#Parser.parse_into-1277"><span class="linenos">1277</span></a> +</span><span id="Parser.parse_into-1278"><a href="#Parser.parse_into-1278"><span class="linenos">1278</span></a><span class="sd"> Args:</span> +</span><span id="Parser.parse_into-1279"><a href="#Parser.parse_into-1279"><span class="linenos">1279</span></a><span class="sd"> expression_types: The expression type(s) to try and parse the token list into.</span> +</span><span id="Parser.parse_into-1280"><a href="#Parser.parse_into-1280"><span class="linenos">1280</span></a><span class="sd"> raw_tokens: The list of tokens.</span> +</span><span id="Parser.parse_into-1281"><a href="#Parser.parse_into-1281"><span class="linenos">1281</span></a><span class="sd"> sql: The original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser.parse_into-1282"><a href="#Parser.parse_into-1282"><span class="linenos">1282</span></a> +</span><span id="Parser.parse_into-1283"><a href="#Parser.parse_into-1283"><span class="linenos">1283</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.parse_into-1284"><a href="#Parser.parse_into-1284"><span class="linenos">1284</span></a><span class="sd"> The target Expression.</span> +</span><span id="Parser.parse_into-1285"><a href="#Parser.parse_into-1285"><span class="linenos">1285</span></a><span class="sd"> """</span> +</span><span id="Parser.parse_into-1286"><a href="#Parser.parse_into-1286"><span class="linenos">1286</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser.parse_into-1287"><a href="#Parser.parse_into-1287"><span class="linenos">1287</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="Parser.parse_into-1288"><a href="#Parser.parse_into-1288"><span class="linenos">1288</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> +</span><span id="Parser.parse_into-1289"><a href="#Parser.parse_into-1289"><span class="linenos">1289</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser.parse_into-1290"><a href="#Parser.parse_into-1290"><span class="linenos">1290</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Parser.parse_into-1291"><a href="#Parser.parse_into-1291"><span class="linenos">1291</span></a> -</span><span id="Parser.parse_into-1292"><a href="#Parser.parse_into-1292"><span class="linenos">1292</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser.parse_into-1293"><a href="#Parser.parse_into-1293"><span class="linenos">1293</span></a> <span class="sa">f</span><span class="s2">"Failed to parse '</span><span class="si">{</span><span class="n">sql</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">raw_tokens</span><span class="si">}</span><span class="s2">' into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser.parse_into-1294"><a href="#Parser.parse_into-1294"><span class="linenos">1294</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser.parse_into-1295"><a href="#Parser.parse_into-1295"><span class="linenos">1295</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="Parser.parse_into-1292"><a href="#Parser.parse_into-1292"><span class="linenos">1292</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Parser.parse_into-1293"><a href="#Parser.parse_into-1293"><span class="linenos">1293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Parser.parse_into-1294"><a href="#Parser.parse_into-1294"><span class="linenos">1294</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Parser.parse_into-1295"><a href="#Parser.parse_into-1295"><span class="linenos">1295</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> +</span><span id="Parser.parse_into-1296"><a href="#Parser.parse_into-1296"><span class="linenos">1296</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="Parser.parse_into-1297"><a href="#Parser.parse_into-1297"><span class="linenos">1297</span></a> +</span><span id="Parser.parse_into-1298"><a href="#Parser.parse_into-1298"><span class="linenos">1298</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser.parse_into-1299"><a href="#Parser.parse_into-1299"><span class="linenos">1299</span></a> <span class="sa">f</span><span class="s2">"Failed to parse '</span><span class="si">{</span><span class="n">sql</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">raw_tokens</span><span class="si">}</span><span class="s2">' into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser.parse_into-1300"><a href="#Parser.parse_into-1300"><span class="linenos">1300</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser.parse_into-1301"><a href="#Parser.parse_into-1301"><span class="linenos">1301</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> </span></pre></div> @@ -15776,16 +15865,16 @@ of them, stopping at the first for which the parsing succeeds.</p> </div> <a class="headerlink" href="#Parser.check_errors"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.check_errors-1335"><a href="#Parser.check_errors-1335"><span class="linenos">1335</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser.check_errors-1336"><a href="#Parser.check_errors-1336"><span class="linenos">1336</span></a><span class="w"> </span><span class="sd">"""Logs or raises any found errors, depending on the chosen error level setting."""</span> -</span><span id="Parser.check_errors-1337"><a href="#Parser.check_errors-1337"><span class="linenos">1337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="Parser.check_errors-1338"><a href="#Parser.check_errors-1338"><span class="linenos">1338</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser.check_errors-1339"><a href="#Parser.check_errors-1339"><span class="linenos">1339</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> -</span><span id="Parser.check_errors-1340"><a href="#Parser.check_errors-1340"><span class="linenos">1340</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser.check_errors-1341"><a href="#Parser.check_errors-1341"><span class="linenos">1341</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser.check_errors-1342"><a href="#Parser.check_errors-1342"><span class="linenos">1342</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> -</span><span id="Parser.check_errors-1343"><a href="#Parser.check_errors-1343"><span class="linenos">1343</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser.check_errors-1344"><a href="#Parser.check_errors-1344"><span class="linenos">1344</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.check_errors-1341"><a href="#Parser.check_errors-1341"><span class="linenos">1341</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser.check_errors-1342"><a href="#Parser.check_errors-1342"><span class="linenos">1342</span></a><span class="w"> </span><span class="sd">"""Logs or raises any found errors, depending on the chosen error level setting."""</span> +</span><span id="Parser.check_errors-1343"><a href="#Parser.check_errors-1343"><span class="linenos">1343</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="Parser.check_errors-1344"><a href="#Parser.check_errors-1344"><span class="linenos">1344</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser.check_errors-1345"><a href="#Parser.check_errors-1345"><span class="linenos">1345</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> +</span><span id="Parser.check_errors-1346"><a href="#Parser.check_errors-1346"><span class="linenos">1346</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser.check_errors-1347"><a href="#Parser.check_errors-1347"><span class="linenos">1347</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser.check_errors-1348"><a href="#Parser.check_errors-1348"><span class="linenos">1348</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> +</span><span id="Parser.check_errors-1349"><a href="#Parser.check_errors-1349"><span class="linenos">1349</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser.check_errors-1350"><a href="#Parser.check_errors-1350"><span class="linenos">1350</span></a> <span class="p">)</span> </span></pre></div> @@ -15805,33 +15894,33 @@ of them, stopping at the first for which the parsing succeeds.</p> </div> <a class="headerlink" href="#Parser.raise_error"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.raise_error-1346"><a href="#Parser.raise_error-1346"><span class="linenos">1346</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</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">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser.raise_error-1347"><a href="#Parser.raise_error-1347"><span class="linenos">1347</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.raise_error-1348"><a href="#Parser.raise_error-1348"><span class="linenos">1348</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> -</span><span id="Parser.raise_error-1349"><a href="#Parser.raise_error-1349"><span class="linenos">1349</span></a><span class="sd"> error level setting.</span> -</span><span id="Parser.raise_error-1350"><a href="#Parser.raise_error-1350"><span class="linenos">1350</span></a><span class="sd"> """</span> -</span><span id="Parser.raise_error-1351"><a href="#Parser.raise_error-1351"><span class="linenos">1351</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Parser.raise_error-1352"><a href="#Parser.raise_error-1352"><span class="linenos">1352</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">start</span> -</span><span id="Parser.raise_error-1353"><a href="#Parser.raise_error-1353"><span class="linenos">1353</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="Parser.raise_error-1354"><a href="#Parser.raise_error-1354"><span class="linenos">1354</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> -</span><span id="Parser.raise_error-1355"><a href="#Parser.raise_error-1355"><span class="linenos">1355</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Parser.raise_error-1356"><a href="#Parser.raise_error-1356"><span class="linenos">1356</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> -</span><span id="Parser.raise_error-1357"><a href="#Parser.raise_error-1357"><span class="linenos">1357</span></a> -</span><span id="Parser.raise_error-1358"><a href="#Parser.raise_error-1358"><span class="linenos">1358</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> -</span><span id="Parser.raise_error-1359"><a href="#Parser.raise_error-1359"><span class="linenos">1359</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="Parser.raise_error-1360"><a href="#Parser.raise_error-1360"><span class="linenos">1360</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser.raise_error-1361"><a href="#Parser.raise_error-1361"><span class="linenos">1361</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> -</span><span id="Parser.raise_error-1362"><a href="#Parser.raise_error-1362"><span class="linenos">1362</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> -</span><span id="Parser.raise_error-1363"><a href="#Parser.raise_error-1363"><span class="linenos">1363</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> -</span><span id="Parser.raise_error-1364"><a href="#Parser.raise_error-1364"><span class="linenos">1364</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> -</span><span id="Parser.raise_error-1365"><a href="#Parser.raise_error-1365"><span class="linenos">1365</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> -</span><span id="Parser.raise_error-1366"><a href="#Parser.raise_error-1366"><span class="linenos">1366</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> -</span><span id="Parser.raise_error-1367"><a href="#Parser.raise_error-1367"><span class="linenos">1367</span></a> <span class="p">)</span> -</span><span id="Parser.raise_error-1368"><a href="#Parser.raise_error-1368"><span class="linenos">1368</span></a> -</span><span id="Parser.raise_error-1369"><a href="#Parser.raise_error-1369"><span class="linenos">1369</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="Parser.raise_error-1370"><a href="#Parser.raise_error-1370"><span class="linenos">1370</span></a> <span class="k">raise</span> <span class="n">error</span> -</span><span id="Parser.raise_error-1371"><a href="#Parser.raise_error-1371"><span class="linenos">1371</span></a> -</span><span id="Parser.raise_error-1372"><a href="#Parser.raise_error-1372"><span class="linenos">1372</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.raise_error-1352"><a href="#Parser.raise_error-1352"><span class="linenos">1352</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</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">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser.raise_error-1353"><a href="#Parser.raise_error-1353"><span class="linenos">1353</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.raise_error-1354"><a href="#Parser.raise_error-1354"><span class="linenos">1354</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> +</span><span id="Parser.raise_error-1355"><a href="#Parser.raise_error-1355"><span class="linenos">1355</span></a><span class="sd"> error level setting.</span> +</span><span id="Parser.raise_error-1356"><a href="#Parser.raise_error-1356"><span class="linenos">1356</span></a><span class="sd"> """</span> +</span><span id="Parser.raise_error-1357"><a href="#Parser.raise_error-1357"><span class="linenos">1357</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Parser.raise_error-1358"><a href="#Parser.raise_error-1358"><span class="linenos">1358</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">start</span> +</span><span id="Parser.raise_error-1359"><a href="#Parser.raise_error-1359"><span class="linenos">1359</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">token</span><span class="o">.</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="Parser.raise_error-1360"><a href="#Parser.raise_error-1360"><span class="linenos">1360</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> +</span><span id="Parser.raise_error-1361"><a href="#Parser.raise_error-1361"><span class="linenos">1361</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Parser.raise_error-1362"><a href="#Parser.raise_error-1362"><span class="linenos">1362</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="Parser.raise_error-1363"><a href="#Parser.raise_error-1363"><span class="linenos">1363</span></a> +</span><span id="Parser.raise_error-1364"><a href="#Parser.raise_error-1364"><span class="linenos">1364</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> +</span><span id="Parser.raise_error-1365"><a href="#Parser.raise_error-1365"><span class="linenos">1365</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="Parser.raise_error-1366"><a href="#Parser.raise_error-1366"><span class="linenos">1366</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser.raise_error-1367"><a href="#Parser.raise_error-1367"><span class="linenos">1367</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> +</span><span id="Parser.raise_error-1368"><a href="#Parser.raise_error-1368"><span class="linenos">1368</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> +</span><span id="Parser.raise_error-1369"><a href="#Parser.raise_error-1369"><span class="linenos">1369</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> +</span><span id="Parser.raise_error-1370"><a href="#Parser.raise_error-1370"><span class="linenos">1370</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> +</span><span id="Parser.raise_error-1371"><a href="#Parser.raise_error-1371"><span class="linenos">1371</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> +</span><span id="Parser.raise_error-1372"><a href="#Parser.raise_error-1372"><span class="linenos">1372</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> +</span><span id="Parser.raise_error-1373"><a href="#Parser.raise_error-1373"><span class="linenos">1373</span></a> <span class="p">)</span> +</span><span id="Parser.raise_error-1374"><a href="#Parser.raise_error-1374"><span class="linenos">1374</span></a> +</span><span id="Parser.raise_error-1375"><a href="#Parser.raise_error-1375"><span class="linenos">1375</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="Parser.raise_error-1376"><a href="#Parser.raise_error-1376"><span class="linenos">1376</span></a> <span class="k">raise</span> <span class="n">error</span> +</span><span id="Parser.raise_error-1377"><a href="#Parser.raise_error-1377"><span class="linenos">1377</span></a> +</span><span id="Parser.raise_error-1378"><a href="#Parser.raise_error-1378"><span class="linenos">1378</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> </span></pre></div> @@ -15852,23 +15941,23 @@ error level setting.</p> </div> <a class="headerlink" href="#Parser.expression"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.expression-1374"><a href="#Parser.expression-1374"><span class="linenos">1374</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> -</span><span id="Parser.expression-1375"><a href="#Parser.expression-1375"><span class="linenos">1375</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">comments</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 class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="Parser.expression-1376"><a href="#Parser.expression-1376"><span class="linenos">1376</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Parser.expression-1377"><a href="#Parser.expression-1377"><span class="linenos">1377</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.expression-1378"><a href="#Parser.expression-1378"><span class="linenos">1378</span></a><span class="sd"> Creates a new, validated Expression.</span> -</span><span id="Parser.expression-1379"><a href="#Parser.expression-1379"><span class="linenos">1379</span></a> -</span><span id="Parser.expression-1380"><a href="#Parser.expression-1380"><span class="linenos">1380</span></a><span class="sd"> Args:</span> -</span><span id="Parser.expression-1381"><a href="#Parser.expression-1381"><span class="linenos">1381</span></a><span class="sd"> exp_class: The expression class to instantiate.</span> -</span><span id="Parser.expression-1382"><a href="#Parser.expression-1382"><span class="linenos">1382</span></a><span class="sd"> comments: An optional list of comments to attach to the expression.</span> -</span><span id="Parser.expression-1383"><a href="#Parser.expression-1383"><span class="linenos">1383</span></a><span class="sd"> kwargs: The arguments to set for the expression along with their respective values.</span> -</span><span id="Parser.expression-1384"><a href="#Parser.expression-1384"><span class="linenos">1384</span></a> -</span><span id="Parser.expression-1385"><a href="#Parser.expression-1385"><span class="linenos">1385</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.expression-1386"><a href="#Parser.expression-1386"><span class="linenos">1386</span></a><span class="sd"> The target expression.</span> -</span><span id="Parser.expression-1387"><a href="#Parser.expression-1387"><span class="linenos">1387</span></a><span class="sd"> """</span> -</span><span id="Parser.expression-1388"><a href="#Parser.expression-1388"><span class="linenos">1388</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Parser.expression-1389"><a href="#Parser.expression-1389"><span class="linenos">1389</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> <span class="k">if</span> <span class="n">comments</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="Parser.expression-1390"><a href="#Parser.expression-1390"><span class="linenos">1390</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.expression-1380"><a href="#Parser.expression-1380"><span class="linenos">1380</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> +</span><span id="Parser.expression-1381"><a href="#Parser.expression-1381"><span class="linenos">1381</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">],</span> <span class="n">comments</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 class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="Parser.expression-1382"><a href="#Parser.expression-1382"><span class="linenos">1382</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Parser.expression-1383"><a href="#Parser.expression-1383"><span class="linenos">1383</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.expression-1384"><a href="#Parser.expression-1384"><span class="linenos">1384</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="Parser.expression-1385"><a href="#Parser.expression-1385"><span class="linenos">1385</span></a> +</span><span id="Parser.expression-1386"><a href="#Parser.expression-1386"><span class="linenos">1386</span></a><span class="sd"> Args:</span> +</span><span id="Parser.expression-1387"><a href="#Parser.expression-1387"><span class="linenos">1387</span></a><span class="sd"> exp_class: The expression class to instantiate.</span> +</span><span id="Parser.expression-1388"><a href="#Parser.expression-1388"><span class="linenos">1388</span></a><span class="sd"> comments: An optional list of comments to attach to the expression.</span> +</span><span id="Parser.expression-1389"><a href="#Parser.expression-1389"><span class="linenos">1389</span></a><span class="sd"> kwargs: The arguments to set for the expression along with their respective values.</span> +</span><span id="Parser.expression-1390"><a href="#Parser.expression-1390"><span class="linenos">1390</span></a> +</span><span id="Parser.expression-1391"><a href="#Parser.expression-1391"><span class="linenos">1391</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.expression-1392"><a href="#Parser.expression-1392"><span class="linenos">1392</span></a><span class="sd"> The target expression.</span> +</span><span id="Parser.expression-1393"><a href="#Parser.expression-1393"><span class="linenos">1393</span></a><span class="sd"> """</span> +</span><span id="Parser.expression-1394"><a href="#Parser.expression-1394"><span class="linenos">1394</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser.expression-1395"><a href="#Parser.expression-1395"><span class="linenos">1395</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">add_comments</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> <span class="k">if</span> <span class="n">comments</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_comments</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="Parser.expression-1396"><a href="#Parser.expression-1396"><span class="linenos">1396</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> </span></pre></div> @@ -15902,22 +15991,22 @@ error level setting.</p> </div> <a class="headerlink" href="#Parser.validate_expression"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.validate_expression-1397"><a href="#Parser.validate_expression-1397"><span class="linenos">1397</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">args</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> -</span><span id="Parser.validate_expression-1398"><a href="#Parser.validate_expression-1398"><span class="linenos">1398</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.validate_expression-1399"><a href="#Parser.validate_expression-1399"><span class="linenos">1399</span></a><span class="sd"> Validates an Expression, making sure that all its mandatory arguments are set.</span> -</span><span id="Parser.validate_expression-1400"><a href="#Parser.validate_expression-1400"><span class="linenos">1400</span></a> -</span><span id="Parser.validate_expression-1401"><a href="#Parser.validate_expression-1401"><span class="linenos">1401</span></a><span class="sd"> Args:</span> -</span><span id="Parser.validate_expression-1402"><a href="#Parser.validate_expression-1402"><span class="linenos">1402</span></a><span class="sd"> expression: The expression to validate.</span> -</span><span id="Parser.validate_expression-1403"><a href="#Parser.validate_expression-1403"><span class="linenos">1403</span></a><span class="sd"> args: An optional list of items that was used to instantiate the expression, if it's a Func.</span> -</span><span id="Parser.validate_expression-1404"><a href="#Parser.validate_expression-1404"><span class="linenos">1404</span></a> -</span><span id="Parser.validate_expression-1405"><a href="#Parser.validate_expression-1405"><span class="linenos">1405</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.validate_expression-1406"><a href="#Parser.validate_expression-1406"><span class="linenos">1406</span></a><span class="sd"> The validated expression.</span> -</span><span id="Parser.validate_expression-1407"><a href="#Parser.validate_expression-1407"><span class="linenos">1407</span></a><span class="sd"> """</span> -</span><span id="Parser.validate_expression-1408"><a href="#Parser.validate_expression-1408"><span class="linenos">1408</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">!=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="Parser.validate_expression-1409"><a href="#Parser.validate_expression-1409"><span class="linenos">1409</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="Parser.validate_expression-1410"><a href="#Parser.validate_expression-1410"><span class="linenos">1410</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="Parser.validate_expression-1411"><a href="#Parser.validate_expression-1411"><span class="linenos">1411</span></a> -</span><span id="Parser.validate_expression-1412"><a href="#Parser.validate_expression-1412"><span class="linenos">1412</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.validate_expression-1403"><a href="#Parser.validate_expression-1403"><span class="linenos">1403</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">,</span> <span class="n">args</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span> +</span><span id="Parser.validate_expression-1404"><a href="#Parser.validate_expression-1404"><span class="linenos">1404</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.validate_expression-1405"><a href="#Parser.validate_expression-1405"><span class="linenos">1405</span></a><span class="sd"> Validates an Expression, making sure that all its mandatory arguments are set.</span> +</span><span id="Parser.validate_expression-1406"><a href="#Parser.validate_expression-1406"><span class="linenos">1406</span></a> +</span><span id="Parser.validate_expression-1407"><a href="#Parser.validate_expression-1407"><span class="linenos">1407</span></a><span class="sd"> Args:</span> +</span><span id="Parser.validate_expression-1408"><a href="#Parser.validate_expression-1408"><span class="linenos">1408</span></a><span class="sd"> expression: The expression to validate.</span> +</span><span id="Parser.validate_expression-1409"><a href="#Parser.validate_expression-1409"><span class="linenos">1409</span></a><span class="sd"> args: An optional list of items that was used to instantiate the expression, if it's a Func.</span> +</span><span id="Parser.validate_expression-1410"><a href="#Parser.validate_expression-1410"><span class="linenos">1410</span></a> +</span><span id="Parser.validate_expression-1411"><a href="#Parser.validate_expression-1411"><span class="linenos">1411</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.validate_expression-1412"><a href="#Parser.validate_expression-1412"><span class="linenos">1412</span></a><span class="sd"> The validated expression.</span> +</span><span id="Parser.validate_expression-1413"><a href="#Parser.validate_expression-1413"><span class="linenos">1413</span></a><span class="sd"> """</span> +</span><span id="Parser.validate_expression-1414"><a href="#Parser.validate_expression-1414"><span class="linenos">1414</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">!=</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="Parser.validate_expression-1415"><a href="#Parser.validate_expression-1415"><span class="linenos">1415</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="Parser.validate_expression-1416"><a href="#Parser.validate_expression-1416"><span class="linenos">1416</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="Parser.validate_expression-1417"><a href="#Parser.validate_expression-1417"><span class="linenos">1417</span></a> +</span><span id="Parser.validate_expression-1418"><a href="#Parser.validate_expression-1418"><span class="linenos">1418</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> diff --git a/docs/sqlglot/time.html b/docs/sqlglot/time.html index 5800a58..6e341cd 100644 --- a/docs/sqlglot/time.html +++ b/docs/sqlglot/time.html @@ -819,7 +819,7 @@ <div class="attr variable"> <span class="name">TIMEZONES</span> = <input id="TIMEZONES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="TIMEZONES-view-value"></label><span class="default_value">{'asia/samarkand', 'turkey', 'europe/simferopol', 'europe/minsk', 'america/toronto', 'africa/malabo', 'africa/abidjan', 'america/winnipeg', 'pst8pdt', 'asia/baghdad', 'eet', 'america/moncton', 'america/inuvik', 'europe/moscow', 'australia/eucla', 'europe/kiev', 'etc/zulu', 'pacific/niue', 'europe/uzhgorod', 'us/east-indiana', 'asia/barnaul', 'australia/yancowinna', 'asia/hovd', 'uct', 'asia/magadan', 'america/coral_harbour', 'africa/ouagadougou', 'atlantic/bermuda', 'atlantic/canary', 'europe/andorra', 'us/hawaii', 'africa/monrovia', 'indian/mayotte', 'asia/kathmandu', 'pacific/ponape', 'america/menominee', 'africa/ceuta', 'europe/kirov', 'australia/sydney', 'asia/famagusta', 'canada/central', 'asia/baku', 'asia/irkutsk', 'africa/bangui', 'etc/gmt', 'america/maceio', 'pacific/galapagos', 'asia/phnom_penh', 'america/noronha', 'asia/rangoon', 'america/rosario', 'canada/pacific', 'europe/brussels', 'europe/paris', 'nz', 'america/recife', 'portugal', 'africa/banjul', 'america/kentucky/monticello', 'asia/yakutsk', 'europe/london', 'antarctica/south_pole', 'asia/damascus', 'america/sitka', 'america/argentina/mendoza', 'pacific/saipan', 'america/indiana/vincennes', 'etc/gmt+3', 'canada/atlantic', 'europe/isle_of_man', 'europe/podgorica', 'africa/mogadishu', 'america/puerto_rico', 'europe/sofia', 'asia/bangkok', 'singapore', 'america/jujuy', 'europe/oslo', 'asia/almaty', 'asia/hong_kong', 'etc/gmt-10', 'libya', 'africa/freetown', 'asia/chungking', 'america/thule', 'etc/gmt-4', 'america/argentina/cordoba', 'africa/bujumbura', 'asia/aqtau', 'pacific/auckland', 'africa/tripoli', 'america/porto_acre', 'asia/vientiane', 'pacific/kanton', 'america/merida', 'america/lima', 'asia/jayapura', 'america/argentina/salta', 'gmt+0', 'asia/brunei', 'asia/pyongyang', 'america/grand_turk', 'america/rankin_inlet', 'america/juneau', 'america/montreal', 'pacific/wake', 'asia/kuala_lumpur', 'asia/ujung_pandang', 'us/indiana-starke', 'america/ensenada', 'america/tortola', 'atlantic/stanley', 'america/rainy_river', 'asia/amman', 'europe/luxembourg', 'europe/guernsey', 'brazil/east', 'antarctica/mcmurdo', 'europe/riga', 'pacific/kwajalein', 'asia/khandyga', 'asia/tashkent', 'america/indiana/winamac', 'etc/gmt-8', 'europe/rome', 'america/port_of_spain', 'pacific/guadalcanal', 'atlantic/st_helena', 'australia/north', 'america/indiana/petersburg', 'asia/thimbu', 'africa/el_aaiun', 'us/eastern', 'atlantic/madeira', 'america/cayenne', 'africa/bamako', 'antarctica/casey', 'europe/sarajevo', 'jamaica', 'america/chicago', 'america/thunder_bay', 'asia/hebron', 'pacific/efate', 'america/argentina/san_juan', 'america/argentina/la_rioja', 'africa/johannesburg', 'america/virgin', 'asia/aqtobe', 'europe/bucharest', 'pacific/chatham', 'pacific/gambier', 'etc/gmt+7', 'antarctica/syowa', 'asia/manila', 'america/st_lucia', 'asia/sakhalin', 'australia/victoria', 'africa/niamey', 'asia/krasnoyarsk', 'pacific/funafuti', 'america/miquelon', 'europe/san_marino', 'etc/gmt+2', 'etc/gmt-5', 'europe/ljubljana', 'africa/lagos', 'africa/kigali', 'asia/yangon', 'america/st_kitts', 'america/dawson', 'america/tegucigalpa', 'america/guadeloupe', 'asia/beirut', 'chile/continental', 'america/bahia_banderas', 'europe/vilnius', 'america/metlakatla', 'etc/gmt+0', 'indian/antananarivo', 'etc/gmt+9', 'africa/khartoum', 'america/knox_in', 'etc/gmt+6', 'etc/gmt-13', 'pacific/easter', 'roc', 'pacific/honolulu', 'africa/luanda', 'america/boa_vista', 'america/guatemala', 'canada/yukon', 'australia/lord_howe', 'asia/jerusalem', 'america/anguilla', 'pacific/pago_pago', 'australia/queensland', 'africa/libreville', 'america/argentina/buenos_aires', 'europe/kaliningrad', 'etc/gmt-1', 'america/cayman', 'europe/vatican', 'america/argentina/ushuaia', 'america/st_barthelemy', 'america/catamarca', 'africa/dakar', 'america/kentucky/louisville', 'america/santiago', 'asia/chita', 'antarctica/davis', 'pacific/tarawa', 'america/marigot', 'etc/gmt+1', 'asia/seoul', 'asia/tel_aviv', 'europe/belfast', 'africa/addis_ababa', 'africa/porto-novo', 'asia/gaza', 'asia/ulaanbaatar', 'pacific/rarotonga', 'america/kralendijk', 'indian/mauritius', 'chile/easterisland', 'us/michigan', 'asia/bishkek', 'asia/qyzylorda', 'america/sao_paulo', 'america/guyana', 'asia/kolkata', 'europe/busingen', 'pacific/chuuk', 'america/indianapolis', 'pacific/johnston', 'europe/tirane', 'america/anchorage', 'africa/djibouti', 'america/yakutat', 'pacific/pohnpei', 'europe/copenhagen', 'america/nipigon', 'america/matamoros', 'asia/choibalsan', 'asia/yekaterinburg', 'australia/lhi', 'america/yellowknife', 'america/santo_domingo', 'america/edmonton', 'mexico/general', 'australia/west', 'arctic/longyearbyen', 'america/boise', 'america/havana', 'etc/uct', 'pacific/majuro', 'africa/gaborone', 'pacific/palau', 'america/indiana/tell_city', 'america/ojinaga', 'asia/muscat', 'gmt', 'america/argentina/jujuy', 'america/port-au-prince', 'mexico/bajanorte', 'etc/gmt+4', 'pacific/samoa', 'africa/nairobi', 'pacific/midway', 'europe/budapest', 'america/caracas', 'america/bogota', 'america/new_york', 'etc/utc', 'atlantic/reykjavik', 'africa/conakry', 'mst', 'africa/tunis', 'wet', 'pacific/guam', 'africa/cairo', 'canada/newfoundland', 'america/argentina/comodrivadavia', 'america/punta_arenas', 'pacific/yap', 'america/blanc-sablon', 'pacific/pitcairn', 'gmt-0', 'europe/zurich', 'europe/warsaw', 'pacific/noumea', 'asia/katmandu', 'etc/gmt-14', 'gb', 'australia/tasmania', 'america/araguaina', 'australia/act', 'antarctica/palmer', 'pacific/tongatapu', 'america/goose_bay', 'asia/urumqi', 'europe/prague', 'america/antigua', 'america/indiana/indianapolis', 'america/managua', 'america/shiprock', 'asia/pontianak', 'america/montevideo', 'pacific/wallis', 'australia/hobart', 'europe/helsinki', 'us/central', 'asia/dili', 'america/adak', 'eire', 'us/mountain', 'indian/cocos', 'asia/istanbul', 'asia/tokyo', 'etc/gmt-2', 'europe/jersey', 'australia/darwin', 'atlantic/jan_mayen', 'etc/universal', 'brazil/denoronha', 'asia/omsk', 'australia/nsw', 'etc/gmt+12', 'universal', 'etc/gmt+8', 'us/alaska', 'africa/kinshasa', 'america/pangnirtung', 'europe/zaporozhye', 'antarctica/mawson', 'america/nuuk', 'america/paramaribo', 'africa/lubumbashi', 'america/glace_bay', 'etc/gmt+11', 'europe/zagreb', 'europe/saratov', 'asia/kabul', 'america/dawson_creek', 'antarctica/dumontdurville', 'africa/asmera', 'africa/ndjamena', 'america/indiana/knox', 'atlantic/cape_verde', 'america/la_paz', 'pacific/port_moresby', 'hongkong', 'africa/juba', 'america/cambridge_bay', 'etc/gmt-3', 'america/iqaluit', 'america/panama', 'asia/ulan_bator', 'us/samoa', 'africa/timbuktu', 'america/grenada', 'africa/casablanca', 'kwajalein', 'america/jamaica', 'america/belem', 'america/indiana/marengo', 'america/st_vincent', 'pacific/bougainville', 'us/aleutian', 'indian/chagos', 'w-su', 'europe/samara', 'asia/dubai', 'africa/harare', 'america/dominica', 'europe/berlin', 'asia/jakarta', 'africa/sao_tome', 'america/st_johns', 'indian/mahe', 'antarctica/macquarie', 'gb-eire', 'asia/novosibirsk', 'greenwich', 'asia/kuching', 'asia/saigon', 'brazil/acre', 'europe/dublin', 'africa/windhoek', 'america/costa_rica', 'asia/macau', 'africa/lome', 'africa/blantyre', 'america/buenos_aires', 'europe/bratislava', 'america/santarem', 'asia/dhaka', 'europe/gibraltar', 'america/campo_grande', 'europe/vienna', 'america/argentina/catamarca', 'asia/ust-nera', 'america/belize', 'europe/amsterdam', 'asia/dacca', 'asia/atyrau', 'america/mazatlan', 'asia/srednekolymsk', 'america/halifax', 'america/hermosillo', 'asia/kashgar', 'mexico/bajasur', 'atlantic/faroe', 'africa/douala', 'america/eirunepe', 'atlantic/faeroe', 'atlantic/azores', 'america/creston', 'america/denver', 'america/tijuana', 'asia/ashgabat', 'etc/gmt-12', 'america/mexico_city', 'africa/lusaka', 'africa/bissau', 'america/atikokan', 'america/el_salvador', 'america/godthab', 'america/montserrat', 'europe/volgograd', 'america/scoresbysund', 'america/swift_current', 'europe/skopje', 'australia/south', 'asia/macao', 'america/argentina/tucuman', 'us/pacific', 'america/fortaleza', 'america/cordoba', 'europe/mariehamn', 'europe/kyiv', 'europe/belgrade', 'asia/colombo', 'america/mendoza', 'america/guayaquil', 'asia/bahrain', 'antarctica/rothera', 'antarctica/vostok', 'australia/brisbane', 'met', 'europe/madrid', 'est', 'africa/nouakchott', 'mst7mdt', 'america/aruba', 'australia/broken_hill', 'indian/reunion', 'navajo', 'prc', 'america/detroit', 'pacific/norfolk', 'pacific/marquesas', 'america/fort_wayne', 'america/asuncion', 'america/danmarkshavn', 'nz-chat', 'etc/gmt+5', 'africa/asmara', 'america/st_thomas', 'gmt0', 'pacific/nauru', 'america/santa_isabel', 'europe/lisbon', 'asia/singapore', 'indian/comoro', 'poland', 'etc/gmt-6', 'america/resolute', 'etc/gmt+10', 'cst6cdt', 'etc/gmt-11', 'asia/taipei', 'australia/perth', 'asia/qatar', 'asia/karachi', 'iceland', 'america/cuiaba', 'etc/greenwich', 'asia/tbilisi', 'asia/thimphu', 'asia/vladivostok', 'asia/aden', 'asia/shanghai', 'indian/christmas', 'utc', 'africa/accra', 'america/chihuahua', 'pacific/enderbury', 'europe/chisinau', 'america/cancun', 'america/fort_nelson', 'asia/harbin', 'america/north_dakota/new_salem', 'asia/novokuznetsk', 'asia/yerevan', 'asia/kamchatka', 'pacific/tahiti', 'america/vancouver', 'antarctica/troll', 'australia/canberra', 'america/north_dakota/center', 'rok', 'asia/riyadh', 'us/arizona', 'africa/kampala', 'pacific/kiritimati', 'indian/maldives', 'atlantic/south_georgia', 'america/curacao', 'pacific/fakaofo', 'australia/currie', 'africa/maseru', 'asia/calcutta', 'asia/tomsk', 'africa/algiers', 'america/phoenix', 'africa/maputo', 'australia/melbourne', 'america/martinique', 'australia/lindeman', 'egypt', 'asia/chongqing', 'indian/kerguelen', 'america/nome', 'israel', 'cuba', 'europe/istanbul', 'asia/ashkhabad', 'etc/gmt0', 'asia/dushanbe', 'america/argentina/san_luis', 'brazil/west', 'etc/gmt-9', 'europe/malta', 'america/nassau', 'america/north_dakota/beulah', 'europe/tiraspol', 'america/porto_velho', 'pacific/truk', 'asia/kuwait', 'europe/nicosia', 'zulu', 'america/indiana/vevay', 'asia/oral', 'asia/anadyr', 'pacific/apia', 'asia/qostanay', 'japan', 'etc/gmt-7', 'africa/dar_es_salaam', 'america/bahia', 'america/whitehorse', 'asia/makassar', 'america/louisville', 'america/los_angeles', 'america/lower_princes', 'america/regina', 'europe/vaduz', 'pacific/fiji', 'america/atka', 'canada/mountain', 'america/barbados', 'europe/tallinn', 'asia/tehran', 'hst', 'america/manaus', 'africa/mbabane', 'europe/stockholm', 'est5edt', 'asia/ho_chi_minh', 'asia/nicosia', 'europe/ulyanovsk', 'pacific/kosrae', 'europe/athens', 'america/rio_branco', 'cet', 'europe/astrakhan', 'iran', 'america/ciudad_juarez', 'australia/adelaide', 'america/argentina/rio_gallegos', 'etc/gmt-0', 'canada/eastern', 'canada/saskatchewan', 'africa/brazzaville', 'america/monterrey', 'europe/monaco'}</span> + <label class="view-value-button pdoc-button" for="TIMEZONES-view-value"></label><span class="default_value">{'pacific/easter', 'africa/harare', 'america/grenada', 'asia/almaty', 'america/adak', 'etc/gmt-9', 'pacific/pago_pago', 'etc/gmt-3', 'us/indiana-starke', 'indian/mayotte', 'asia/chungking', 'asia/rangoon', 'pacific/midway', 'cuba', 'brazil/west', 'canada/saskatchewan', 'us/eastern', 'pacific/wake', 'asia/tehran', 'america/argentina/mendoza', 'pacific/gambier', 'europe/nicosia', 'brazil/denoronha', 'america/metlakatla', 'atlantic/azores', 'america/el_salvador', 'america/grand_turk', 'america/indiana/winamac', 'asia/chongqing', 'africa/lusaka', 'asia/tel_aviv', 'australia/canberra', 'america/bahia', 'etc/gmt+2', 'europe/helsinki', 'atlantic/cape_verde', 'pacific/norfolk', 'africa/windhoek', 'etc/gmt-14', 'america/tegucigalpa', 'america/kralendijk', 'america/nuuk', 'america/chihuahua', 'europe/oslo', 'australia/darwin', 'asia/yakutsk', 'america/mendoza', 'america/north_dakota/center', 'etc/gmt+3', 'etc/gmt+1', 'etc/gmt0', 'america/boise', 'antarctica/davis', 'asia/kashgar', 'etc/greenwich', 'asia/qostanay', 'asia/colombo', 'asia/dhaka', 'america/managua', 'africa/kampala', 'europe/guernsey', 'asia/tomsk', 'america/bogota', 'america/hermosillo', 'america/st_thomas', 'europe/zagreb', 'canada/eastern', 'etc/gmt-7', 'america/jamaica', 'europe/belfast', 'pacific/tarawa', 'asia/urumqi', 'america/fort_nelson', 'asia/kamchatka', 'mst7mdt', 'africa/porto-novo', 'australia/hobart', 'etc/gmt-11', 'america/antigua', 'atlantic/faeroe', 'zulu', 'america/st_vincent', 'australia/south', 'pacific/port_moresby', 'america/glace_bay', 'america/toronto', 'israel', 'roc', 'us/pacific', 'atlantic/bermuda', 'europe/zaporozhye', 'africa/ndjamena', 'etc/gmt+11', 'canada/atlantic', 'pacific/bougainville', 'america/costa_rica', 'asia/qatar', 'asia/bahrain', 'us/alaska', 'america/thule', 'america/argentina/ushuaia', 'america/new_york', 'portugal', 'america/araguaina', 'america/indiana/petersburg', 'america/sao_paulo', 'asia/damascus', 'asia/seoul', 'africa/addis_ababa', 'america/asuncion', 'asia/aqtau', 'asia/famagusta', 'africa/lagos', 'us/east-indiana', 'america/argentina/cordoba', 'america/guatemala', 'europe/lisbon', 'america/inuvik', 'america/sitka', 'america/campo_grande', 'europe/budapest', 'etc/gmt+0', 'europe/kiev', 'asia/jayapura', 'america/kentucky/louisville', 'est', 'america/fortaleza', 'etc/gmt-10', 'pacific/samoa', 'america/yakutat', 'antarctica/casey', 'america/lower_princes', 'asia/muscat', 'africa/accra', 'pacific/yap', 'asia/oral', 'america/cordoba', 'asia/ho_chi_minh', 'australia/victoria', 'europe/isle_of_man', 'cst6cdt', 'uct', 'pacific/fakaofo', 'met', 'eet', 'etc/gmt-6', 'america/ciudad_juarez', 'america/rainy_river', 'asia/yerevan', 'greenwich', 'rok', 'america/winnipeg', 'asia/makassar', 'america/indiana/marengo', 'africa/libreville', 'america/yellowknife', 'antarctica/macquarie', 'america/puerto_rico', 'asia/kabul', 'asia/tbilisi', 'africa/algiers', 'etc/zulu', 'pacific/enderbury', 'atlantic/jan_mayen', 'america/lima', 'asia/ulan_bator', 'australia/queensland', 'asia/ulaanbaatar', 'asia/karachi', 'indian/reunion', 'europe/busingen', 'indian/comoro', 'atlantic/stanley', 'america/shiprock', 'pacific/ponape', 'asia/chita', 'australia/lindeman', 'asia/macao', 'europe/astrakhan', 'pacific/rarotonga', 'antarctica/syowa', 'pacific/noumea', 'europe/bratislava', 'america/merida', 'africa/mogadishu', 'chile/continental', 'indian/maldives', 'pacific/guadalcanal', 'america/thunder_bay', 'pacific/pitcairn', 'pacific/nauru', 'australia/tasmania', 'europe/brussels', 'pacific/palau', 'us/central', 'asia/thimbu', 'america/anchorage', 'europe/andorra', 'asia/riyadh', 'europe/london', 'europe/riga', 'asia/vientiane', 'america/phoenix', 'asia/jerusalem', 'asia/pontianak', 'etc/universal', 'europe/vilnius', 'asia/sakhalin', 'america/pangnirtung', 'america/eirunepe', 'antarctica/troll', 'asia/dacca', 'asia/vladivostok', 'canada/pacific', 'africa/tunis', 'america/caracas', 'pacific/tongatapu', 'africa/dakar', 'america/chicago', 'africa/brazzaville', 'europe/saratov', 'europe/belgrade', 'america/argentina/san_luis', 'america/havana', 'america/maceio', 'australia/yancowinna', 'asia/novosibirsk', 'america/north_dakota/new_salem', 'africa/bangui', 'africa/lome', 'asia/irkutsk', 'gb-eire', 'atlantic/madeira', 'america/argentina/catamarca', 'america/port-au-prince', 'asia/dili', 'america/porto_velho', 'africa/asmera', 'atlantic/reykjavik', 'america/atka', 'europe/dublin', 'africa/bissau', 'america/mexico_city', 'us/michigan', 'asia/ashkhabad', 'asia/choibalsan', 'gmt0', 'america/coral_harbour', 'america/miquelon', 'europe/kaliningrad', 'america/buenos_aires', 'africa/johannesburg', 'europe/vaduz', 'mexico/general', 'america/ensenada', 'america/dawson_creek', 'asia/singapore', 'america/rankin_inlet', 'america/nome', 'europe/paris', 'indian/cocos', 'america/montserrat', 'nz', 'america/fort_wayne', 'etc/gmt+10', 'atlantic/south_georgia', 'america/manaus', 'africa/gaborone', 'etc/gmt+9', 'asia/kolkata', 'asia/aqtobe', 'america/argentina/san_juan', 'america/punta_arenas', 'america/creston', 'pacific/johnston', 'africa/sao_tome', 'pacific/marquesas', 'indian/kerguelen', 'america/bahia_banderas', 'europe/rome', 'us/arizona', 'africa/nairobi', 'america/argentina/la_rioja', 'africa/cairo', 'etc/utc', 'poland', 'europe/sarajevo', 'america/recife', 'europe/berlin', 'europe/malta', 'eire', 'canada/newfoundland', 'asia/hovd', 'europe/madrid', 'america/moncton', 'mexico/bajanorte', 'europe/bucharest', 'pacific/guam', 'pacific/kiritimati', 'africa/casablanca', 'asia/beirut', 'america/atikokan', 'canada/central', 'america/nassau', 'asia/shanghai', 'america/tortola', 'america/santo_domingo', 'america/cayman', 'europe/kyiv', 'europe/minsk', 'brazil/east', 'antarctica/mcmurdo', 'atlantic/faroe', 'america/los_angeles', 'asia/nicosia', 'africa/freetown', 'antarctica/mawson', 'america/argentina/buenos_aires', 'chile/easterisland', 'wet', 'africa/blantyre', 'europe/gibraltar', 'us/hawaii', 'mst', 'pacific/fiji', 'america/guyana', 'america/denver', 'asia/jakarta', 'etc/gmt+8', 'europe/mariehamn', 'pacific/majuro', 'asia/harbin', 'etc/gmt-12', 'turkey', 'america/cuiaba', 'america/barbados', 'america/argentina/comodrivadavia', 'gmt+0', 'antarctica/palmer', 'europe/copenhagen', 'africa/dar_es_salaam', 'asia/hong_kong', 'asia/gaza', 'australia/west', 'australia/eucla', 'africa/luanda', 'hst', 'europe/prague', 'america/indianapolis', 'w-su', 'europe/luxembourg', 'america/cambridge_bay', 'america/indiana/vincennes', 'gmt', 'asia/hebron', 'asia/kuwait', 'africa/djibouti', 'europe/kirov', 'america/vancouver', 'africa/conakry', 'pacific/apia', 'america/matamoros', 'antarctica/vostok', 'asia/novokuznetsk', 'asia/macau', 'iran', 'utc', 'asia/tokyo', 'antarctica/rothera', 'america/st_barthelemy', 'africa/maseru', 'indian/christmas', 'pacific/kwajalein', 'asia/ashgabat', 'europe/chisinau', 'europe/zurich', 'america/goose_bay', 'etc/gmt-2', 'cet', 'america/juneau', 'america/argentina/salta', 'pacific/tahiti', 'pacific/kanton', 'us/aleutian', 'africa/lubumbashi', 'america/santiago', 'pacific/chuuk', 'etc/gmt+4', 'australia/brisbane', 'asia/dushanbe', 'asia/magadan', 'america/noronha', 'atlantic/canary', 'america/paramaribo', 'america/virgin', 'navajo', 'america/knox_in', 'america/dominica', 'africa/kigali', 'jamaica', 'australia/sydney', 'pacific/pohnpei', 'asia/atyrau', 'america/indiana/indianapolis', 'america/resolute', 'america/la_paz', 'mexico/bajasur', 'canada/yukon', 'africa/kinshasa', 'asia/bishkek', 'america/martinique', 'asia/anadyr', 'america/montreal', 'america/regina', 'etc/gmt+6', 'america/danmarkshavn', 'europe/amsterdam', 'america/blanc-sablon', 'prc', 'asia/katmandu', 'gb', 'europe/ulyanovsk', 'nz-chat', 'america/guadeloupe', 'africa/tripoli', 'etc/gmt-8', 'pacific/wallis', 'asia/manila', 'asia/kuching', 'australia/nsw', 'america/argentina/tucuman', 'pacific/kosrae', 'america/panama', 'etc/gmt-0', 'australia/broken_hill', 'africa/ceuta', 'australia/currie', 'america/mazatlan', 'america/ojinaga', 'europe/tirane', 'europe/skopje', 'europe/warsaw', 'america/curacao', 'asia/samarkand', 'america/godthab', 'america/santarem', 'pacific/chatham', 'australia/act', 'asia/yekaterinburg', 'arctic/longyearbyen', 'america/catamarca', 'america/monterrey', 'africa/mbabane', 'africa/maputo', 'etc/gmt-4', 'america/jujuy', 'asia/bangkok', 'asia/calcutta', 'europe/istanbul', 'america/belem', 'europe/volgograd', 'europe/sofia', 'asia/ust-nera', 'america/st_lucia', 'europe/tallinn', 'pacific/efate', 'us/mountain', 'etc/gmt+7', 'etc/gmt-5', 'america/detroit', 'etc/gmt+12', 'kwajalein', 'africa/malabo', 'hongkong', 'america/argentina/jujuy', 'america/iqaluit', 'africa/bamako', 'etc/gmt-13', 'pacific/niue', 'antarctica/south_pole', 'est5edt', 'europe/simferopol', 'europe/san_marino', 'indian/chagos', 'africa/niamey', 'america/boa_vista', 'australia/melbourne', 'asia/pyongyang', 'etc/gmt+5', 'africa/juba', 'america/menominee', 'pacific/honolulu', 'etc/uct', 'america/north_dakota/beulah', 'asia/thimphu', 'europe/stockholm', 'america/aruba', 'asia/barnaul', 'africa/asmara', 'africa/timbuktu', 'africa/banjul', 'america/indiana/tell_city', 'asia/taipei', 'etc/gmt-1', 'america/kentucky/monticello', 'america/cancun', 'asia/omsk', 'brazil/acre', 'asia/dubai', 'antarctica/dumontdurville', 'asia/khandyga', 'america/guayaquil', 'libya', 'asia/kuala_lumpur', 'america/st_kitts', 'europe/samara', 'america/scoresbysund', 'america/st_johns', 'egypt', 'america/louisville', 'africa/ouagadougou', 'america/tijuana', 'australia/north', 'america/indiana/vevay', 'japan', 'africa/nouakchott', 'indian/mauritius', 'europe/uzhgorod', 'indian/antananarivo', 'asia/yangon', 'europe/athens', 'pacific/saipan', 'asia/srednekolymsk', 'america/argentina/rio_gallegos', 'america/rio_branco', 'america/belize', 'america/montevideo', 'pacific/truk', 'asia/qyzylorda', 'america/whitehorse', 'america/indiana/knox', 'asia/krasnoyarsk', 'america/anguilla', 'africa/khartoum', 'us/samoa', 'australia/adelaide', 'asia/aden', 'america/halifax', 'america/santa_isabel', 'australia/lord_howe', 'europe/tiraspol', 'pacific/funafuti', 'asia/kathmandu', 'america/marigot', 'gmt-0', 'atlantic/st_helena', 'pacific/auckland', 'asia/istanbul', 'australia/perth', 'america/dawson', 'australia/lhi', 'europe/monaco', 'america/swift_current', 'europe/vatican', 'america/port_of_spain', 'europe/podgorica', 'asia/ujung_pandang', 'america/rosario', 'europe/jersey', 'indian/mahe', 'pst8pdt', 'etc/gmt', 'africa/monrovia', 'america/edmonton', 'canada/mountain', 'asia/tashkent', 'europe/vienna', 'europe/moscow', 'america/cayenne', 'asia/saigon', 'pacific/galapagos', 'asia/brunei', 'africa/abidjan', 'america/nipigon', 'africa/bujumbura', 'europe/ljubljana', 'asia/phnom_penh', 'asia/amman', 'america/porto_acre', 'universal', 'africa/douala', 'asia/baku', 'iceland', 'singapore', 'asia/baghdad', 'africa/el_aaiun'}</span> </div> diff --git a/docs/sqlglot/tokens.html b/docs/sqlglot/tokens.html index c6564e1..62a5dad 100644 --- a/docs/sqlglot/tokens.html +++ b/docs/sqlglot/tokens.html @@ -817,6 +817,9 @@ <a class="variable" href="#TokenType.LIMIT">LIMIT</a> </li> <li> + <a class="variable" href="#TokenType.LIST">LIST</a> + </li> + <li> <a class="variable" href="#TokenType.LOAD">LOAD</a> </li> <li> @@ -1543,1111 +1546,1113 @@ </span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">LIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">LIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">LIMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">LOAD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">LOCK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="n">MATCH_CONDITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">MEMBER_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">MODEL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="n">OBJECT_IDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="n">OPERATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">ORDER_SIBLINGS_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="n">OVERLAPS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="n">POSITIONAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">PRAGMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">PREWHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="n">REFRESH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="n">SEQUENCE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">SETTINGS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">START_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">STORAGE_INTEGRATION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">TAG</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">TRUNCATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="n">VERSION_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="n">TIMESTAMP_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">OPTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">LIST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">LOAD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">LOCK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="n">MATCH_CONDITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">MEMBER_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">MODEL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">OBJECT_IDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">OPERATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">ORDER_SIBLINGS_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="n">OVERLAPS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">POSITIONAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">PRAGMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">PREWHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="n">REFRESH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="n">SEQUENCE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="n">SETTINGS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">START_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="n">STORAGE_INTEGRATION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">TAG</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="n">TRUNCATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="n">VERSION_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">TIMESTAMP_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="n">OPTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a><span class="n">_ALL_TOKEN_TYPES</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">TokenType</span><span class="p">)</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a><span class="n">_TOKEN_TYPE_TO_INDEX</span> <span class="o">=</span> <span class="p">{</span><span class="n">token_type</span><span class="p">:</span> <span class="n">i</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">_ALL_TOKEN_TYPES</span><span class="p">)}</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a><span class="n">_ALL_TOKEN_TYPES</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">TokenType</span><span class="p">)</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a><span class="n">_TOKEN_TYPE_TO_INDEX</span> <span class="o">=</span> <span class="p">{</span><span class="n">token_type</span><span class="p">:</span> <span class="n">i</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">_ALL_TOKEN_TYPES</span><span class="p">)}</span> </span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> -</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="nd">@classmethod</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> -</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> -</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="nd">@classmethod</span> -</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> -</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="nd">@classmethod</span> -</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> -</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="nd">@classmethod</span> -</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> -</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="n">end</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">comments</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 class="p">,</span> -</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a><span class="w"> </span><span class="sd">"""Token initializer.</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a><span class="sd"> Args:</span> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a><span class="sd"> token_type: The TokenType Enum.</span> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a><span class="sd"> text: The text of the token.</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a><span class="sd"> line: The line that the token ends on.</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a><span class="sd"> col: The column that the token ends on.</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a><span class="sd"> start: The start index of the token.</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a><span class="sd"> end: The ending index of the token.</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a><span class="sd"> comments: The comments to attach to the token.</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a><span class="sd"> """</span> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">col</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span> -</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">comments</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">comments</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> -</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="nd">@classmethod</span> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</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="nd">@classmethod</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> +</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="nd">@classmethod</span> +</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> +</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</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="nd">@classmethod</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> +</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> +</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">end</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="n">comments</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 class="p">,</span> +</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a><span class="w"> </span><span class="sd">"""Token initializer.</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a><span class="sd"> Args:</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a><span class="sd"> token_type: The TokenType Enum.</span> +</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a><span class="sd"> text: The text of the token.</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a><span class="sd"> line: The line that the token ends on.</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a><span class="sd"> col: The column that the token ends on.</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a><span class="sd"> start: The start index of the token.</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a><span class="sd"> end: The ending index of the token.</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a><span class="sd"> comments: The comments to attach to the token.</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a><span class="sd"> """</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">col</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span> +</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">comments</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">comments</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> </span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> -</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a><span class="k">class</span> <span class="nc">_Tokenizer</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="k">def</span> <span class="nf">_convert_quotes</span><span class="p">(</span><span class="n">arr</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="o">|</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="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span> -</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">arr</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <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="k">def</span> <span class="nf">_quotes_to_format</span><span class="p">(</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">arr</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="o">|</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><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">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="n">TokenType</span><span class="p">]]:</span> -</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">token_type</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">_convert_quotes</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> -</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span> <span class="o">=</span> <span class="n">_convert_quotes</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIERS</span> <span class="o">=</span> <span class="n">_convert_quotes</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIERS</span><span class="p">)</span> -</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> -</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="n">p</span> <span class="o">+</span> <span class="n">s</span><span class="p">:</span> <span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL_STRING</span><span class="p">)</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"N"</span><span class="p">)</span> -</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="p">},</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BIT_STRINGS</span><span class="p">),</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BYTE_STRINGS</span><span class="p">),</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">HEX_STRINGS</span><span class="p">),</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">RAW_STRINGS</span><span class="p">),</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">HEREDOC_STRINGS</span><span class="p">),</span> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">UNICODE_STRINGS</span><span class="p">),</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="p">}</span> -</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">STRING_ESCAPES</span><span class="p">)</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_ESCAPES</span><span class="p">)</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="o">**</span><span class="nb">dict</span><span class="p">(</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">comment</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMENTS</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="p">),</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="s2">"{#"</span><span class="p">:</span> <span class="s2">"#}"</span><span class="p">,</span> <span class="c1"># Ensure Jinja comments are tokenized correctly in all dialects</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="p">}</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_KEYWORD_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">,</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">,</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">,</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="p">)</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="k">if</span> <span class="s2">" "</span> <span class="ow">in</span> <span class="n">key</span> <span class="ow">or</span> <span class="nb">any</span><span class="p">(</span><span class="n">single</span> <span class="ow">in</span> <span class="n">key</span> <span class="k">for</span> <span class="n">single</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">)</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="p">)</span> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">settings</span> <span class="o">=</span> <span class="n">RsTokenizerSettings</span><span class="p">(</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">white_space</span><span class="o">=</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">items</span><span class="p">()},</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">single_tokens</span><span class="o">=</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">items</span><span class="p">()},</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">keywords</span><span class="o">=</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">items</span><span class="p">()},</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">numeric_literals</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="p">,</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="n">identifiers</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">,</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="n">identifier_escapes</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span><span class="p">,</span> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">string_escapes</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span><span class="p">,</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="n">quotes</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">,</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">format_strings</span><span class="o">=</span><span class="p">{</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="n">k</span><span class="p">:</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v2</span><span class="p">])</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">v2</span><span class="p">)</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="p">},</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="n">has_bit_strings</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">BIT_STRINGS</span><span class="p">),</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="n">has_hex_strings</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">HEX_STRINGS</span><span class="p">),</span> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">,</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="n">var_single_tokens</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">VAR_SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">commands</span><span class="o">=</span><span class="p">{</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">},</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">command_prefix_tokens</span><span class="o">=</span><span class="p">{</span> -</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="p">},</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">heredoc_tag_is_identifier</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="p">)</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="n">token_types</span> <span class="o">=</span> <span class="n">RsTokenTypeSettings</span><span class="p">(</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="n">bit_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">],</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="n">break_</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">],</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="n">dcolon</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">],</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="n">heredoc_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">],</span> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="n">raw_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">],</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="n">hex_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">],</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">identifier</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">],</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="n">number</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">],</span> -</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="n">parameter</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">],</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="n">semicolon</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">],</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="n">string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">],</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">var</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">],</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="n">heredoc_string_alternative</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">klass</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">],</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="p">)</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span> <span class="o">=</span> <span class="n">RsTokenizer</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="n">token_types</span><span class="p">)</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> -</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="k">return</span> <span class="n">klass</span> -</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> +</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a><span class="k">class</span> <span class="nc">_Tokenizer</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="k">def</span> <span class="nf">_convert_quotes</span><span class="p">(</span><span class="n">arr</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="o">|</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="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span> +</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">arr</span> +</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="p">)</span> +</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="k">def</span> <span class="nf">_quotes_to_format</span><span class="p">(</span> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">arr</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="o">|</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><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">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="n">TokenType</span><span class="p">]]:</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">token_type</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">_convert_quotes</span><span class="p">(</span><span class="n">arr</span><span class="p">)</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="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span> <span class="o">=</span> <span class="n">_convert_quotes</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIERS</span> <span class="o">=</span> <span class="n">_convert_quotes</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIERS</span><span class="p">)</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="n">p</span> <span class="o">+</span> <span class="n">s</span><span class="p">:</span> <span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL_STRING</span><span class="p">)</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"N"</span><span class="p">)</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="p">},</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BIT_STRINGS</span><span class="p">),</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">BYTE_STRINGS</span><span class="p">),</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">HEX_STRINGS</span><span class="p">),</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">RAW_STRINGS</span><span class="p">),</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">HEREDOC_STRINGS</span><span class="p">),</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="o">**</span><span class="n">_quotes_to_format</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNICODE_STRING</span><span class="p">,</span> <span class="n">klass</span><span class="o">.</span><span class="n">UNICODE_STRINGS</span><span class="p">),</span> +</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="p">}</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> +</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">STRING_ESCAPES</span><span class="p">)</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_ESCAPES</span><span class="p">)</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="o">**</span><span class="nb">dict</span><span class="p">(</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">comment</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMENTS</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="p">),</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="s2">"{#"</span><span class="p">:</span> <span class="s2">"#}"</span><span class="p">,</span> <span class="c1"># Ensure Jinja comments are tokenized correctly in all dialects</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="p">}</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_KEYWORD_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">,</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">,</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="o">*</span><span class="n">klass</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">,</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="p">)</span> +</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="k">if</span> <span class="s2">" "</span> <span class="ow">in</span> <span class="n">key</span> <span class="ow">or</span> <span class="nb">any</span><span class="p">(</span><span class="n">single</span> <span class="ow">in</span> <span class="n">key</span> <span class="k">for</span> <span class="n">single</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">)</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="p">)</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">settings</span> <span class="o">=</span> <span class="n">RsTokenizerSettings</span><span class="p">(</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">white_space</span><span class="o">=</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">items</span><span class="p">()},</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">single_tokens</span><span class="o">=</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">items</span><span class="p">()},</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">keywords</span><span class="o">=</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">items</span><span class="p">()},</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="n">numeric_literals</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="p">,</span> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="n">identifiers</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">,</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">identifier_escapes</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span><span class="p">,</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="n">string_escapes</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span><span class="p">,</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">quotes</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">,</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="n">format_strings</span><span class="o">=</span><span class="p">{</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="n">k</span><span class="p">:</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v2</span><span class="p">])</span> +</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">v2</span><span class="p">)</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="p">},</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="n">has_bit_strings</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">BIT_STRINGS</span><span class="p">),</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="n">has_hex_strings</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">HEX_STRINGS</span><span class="p">),</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="n">comments</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">,</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">var_single_tokens</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">VAR_SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">commands</span><span class="o">=</span><span class="p">{</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">},</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="n">command_prefix_tokens</span><span class="o">=</span><span class="p">{</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="p">},</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="n">heredoc_tag_is_identifier</span><span class="o">=</span><span class="n">klass</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="p">)</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="n">token_types</span> <span class="o">=</span> <span class="n">RsTokenTypeSettings</span><span class="p">(</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="n">bit_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">],</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="n">break_</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">],</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="n">dcolon</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">],</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="n">heredoc_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">],</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="n">raw_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">],</span> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">hex_string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">],</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="n">identifier</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">],</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="n">number</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">],</span> +</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="n">parameter</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">],</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="n">semicolon</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">],</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">string</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">],</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="n">var</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">],</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="n">heredoc_string_alternative</span><span class="o">=</span><span class="n">_TOKEN_TYPE_TO_INDEX</span><span class="p">[</span><span class="n">klass</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">],</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="p">)</span> +</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span> <span class="o">=</span> <span class="n">RsTokenizer</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="n">token_types</span><span class="p">)</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="k">return</span> <span class="n">klass</span> </span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> -</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> -</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> -</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="s2">"="</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-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> -</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="c1"># Used for breaking a var like x'y' but nothing else the token type doesn't matter</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="p">}</span> -</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="n">BIT_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">BYTE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="n">HEX_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="n">RAW_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="n">HEREDOC_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="n">UNICODE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">IDENTIFIERS</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="o">|</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="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="n">VAR_SINGLE_TOKENS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> -</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="c1"># Whether the heredoc tags follow the same lexical rules as unquoted identifiers</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="c1"># Token that we'll generate as a fallback if the heredoc prefix doesn't correspond to a heredoc</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="c1"># Autofilled</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">_COMMENTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="n">_FORMAT_STRINGS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">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="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">_IDENTIFIERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="n">_QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="n">_KEYWORD_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="n">_RS_TOKENIZER</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">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="n">KEYWORDS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="s2">%</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">%</span><span class="se">}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{{{</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="se">}}}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="s2">"=="</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-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">,</span> -</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> -</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> -</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> -</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="s2">"&&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">,</span> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="s2">"??"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">,</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> -</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> -</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="s2">"ASOF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="s2">"CONNECT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">,</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> -</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> -</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="s2">"CURRENT_USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="s2">"DATABASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> -</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> -</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="s2">"DIV"</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-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> -</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="s2">"ENUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> -</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="s2">"EXCEPT"</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-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> -</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="s2">"GEOMETRY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> -</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> -</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="s2">"INET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="s2">"KEEP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="s2">"KILL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="s2">"LOAD"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="s2">"XOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="s2">"OVERLAPS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="s2">"PIVOT"</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-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="s2">"PRAGMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="s2">"RETURNING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">,</span> -</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> -</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> -</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> -</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="s2">"START WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">,</span> -</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="s2">"UUID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> -</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> -</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="s2">"BIT"</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-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="s2">"BOOL"</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-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="s2">"BOOLEAN"</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-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="s2">"BYTE"</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-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="s2">"MEDIUMINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> -</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="s2">"INT1"</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-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="s2">"TINYINT"</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-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="s2">"INT16"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="s2">"INT128"</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-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="s2">"HUGEINT"</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-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="s2">"INTEGER"</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-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="s2">"INT"</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-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="s2">"INT4"</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-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="s2">"INT32"</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-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="s2">"INT8"</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-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="s2">"UINT"</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-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="s2">"DEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="s2">"BIGDECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"BIGNUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="s2">"JSONB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="s2">"CHARACTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="s2">"VARCHAR"</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-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="s2">"VARCHAR2"</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-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="s2">"BPCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="s2">"STR"</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-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="s2">"STRING"</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-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="s2">"TEXT"</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-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="s2">"LONGTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="s2">"MEDIUMTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="s2">"TINYTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="s2">"CLOB"</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-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="s2">"LONGVARCHAR"</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-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="s2">"BLOB"</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-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="s2">"LONGBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="s2">"MEDIUMBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="s2">"TINYBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="s2">"BYTEA"</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-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="s2">"VARBINARY"</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-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="s2">"TIMETZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="s2">"INT4RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> -</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="s2">"INT4MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="s2">"INT8RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="s2">"INT8MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="s2">"NUMRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> -</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="s2">"NUMMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="s2">"TSRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="s2">"TSMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="s2">"TSTZRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> -</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="s2">"TSTZMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="s2">"DATERANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> -</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="s2">"DATEMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="s2">"STRUCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="s2">"SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="s2">"ANALYZE"</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-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="s2">"CALL"</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-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="s2">"EXPLAIN"</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-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="s2">"GRANT"</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-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="s2">"OPTIMIZE"</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-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="s2">"PREPARE"</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-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="s2">"VACUUM"</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-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="s2">"USER-DEFINED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="s2">"FOR VERSION"</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-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="s2">"FOR TIMESTAMP"</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-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="p">}</span> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="n">WHITE_SPACE</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="p">}</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="p">}</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">}</span> +</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> +</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> +</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="s2">"="</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-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> +</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> +</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> +</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> +</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="c1"># Used for breaking a var like x'y' but nothing else the token type doesn't matter</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="p">}</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">BIT_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="n">BYTE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="n">HEX_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="n">RAW_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="n">HEREDOC_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">UNICODE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">IDENTIFIERS</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="o">|</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="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="n">VAR_SINGLE_TOKENS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="c1"># Whether the heredoc tags follow the same lexical rules as unquoted identifiers</span> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="c1"># Token that we'll generate as a fallback if the heredoc prefix doesn't correspond to a heredoc</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="c1"># Autofilled</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="n">_COMMENTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">_FORMAT_STRINGS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">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="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="n">_IDENTIFIERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="n">_QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="n">_KEYWORD_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="n">_RS_TOKENIZER</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">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="n">KEYWORDS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="s2">%</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">%</span><span class="se">}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{{{</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="se">}}}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="s2">"=="</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-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> +</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">,</span> +</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> +</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> +</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> +</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> +</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> +</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="s2">"&&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">,</span> +</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="s2">"??"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">,</span> +</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> +</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> +</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="s2">"ASOF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="s2">"CONNECT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">,</span> +</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="s2">"CURRENT_USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> +</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="s2">"DATABASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> +</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="s2">"DIV"</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-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="s2">"ENUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="s2">"EXCEPT"</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-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="s2">"GEOMETRY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="s2">"INET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> +</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="s2">"KEEP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="s2">"KILL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="s2">"LOAD"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> +</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="s2">"XOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="s2">"OVERLAPS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="s2">"PIVOT"</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-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="s2">"PRAGMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> +</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="s2">"RETURNING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">,</span> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> +</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> +</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="s2">"START WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">,</span> +</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> +</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="s2">"UUID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> +</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="s2">"BIT"</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-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="s2">"BOOL"</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-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="s2">"BOOLEAN"</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-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="s2">"BYTE"</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-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="s2">"MEDIUMINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="s2">"INT1"</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-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="s2">"TINYINT"</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-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="s2">"INT16"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="s2">"INT128"</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-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="s2">"HUGEINT"</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-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="s2">"INTEGER"</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-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="s2">"INT"</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-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="s2">"INT4"</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-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="s2">"INT32"</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-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="s2">"INT8"</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-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="s2">"UINT"</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-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="s2">"DEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"BIGDECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="s2">"BIGNUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"LIST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIST</span><span class="p">,</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="s2">"JSONB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> +</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="s2">"CHARACTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="s2">"VARCHAR"</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-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="s2">"VARCHAR2"</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-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="s2">"BPCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> +</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="s2">"STR"</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-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="s2">"STRING"</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-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="s2">"TEXT"</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-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="s2">"LONGTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="s2">"MEDIUMTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="s2">"TINYTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="s2">"CLOB"</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-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="s2">"LONGVARCHAR"</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-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="s2">"BLOB"</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-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="s2">"LONGBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="s2">"MEDIUMBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="s2">"TINYBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="s2">"BYTEA"</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-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="s2">"VARBINARY"</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-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="s2">"TIMETZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="s2">"INT4RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="s2">"INT4MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="s2">"INT8RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> +</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="s2">"INT8MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="s2">"NUMRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="s2">"NUMMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="s2">"TSRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> +</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="s2">"TSMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="s2">"TSTZRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> +</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="s2">"TSTZMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="s2">"DATERANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="s2">"DATEMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="s2">"STRUCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> +</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="s2">"SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="s2">"ANALYZE"</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-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="s2">"CALL"</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-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="s2">"EXPLAIN"</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-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="s2">"GRANT"</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-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="s2">"OPTIMIZE"</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-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="s2">"PREPARE"</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-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="s2">"VACUUM"</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-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="s2">"USER-DEFINED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="s2">"FOR VERSION"</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-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="s2">"FOR TIMESTAMP"</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-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="p">}</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="n">WHITE_SPACE</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="p">}</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="p">}</span> </span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> -</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="c1"># Handle numeric literals like in hive (3L = BIGINT)</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">}</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="c1"># Handle numeric literals like in hive (3L = BIGINT)</span> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="s2">"size"</span><span class="p">,</span> -</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="s2">"tokens"</span><span class="p">,</span> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="s2">"dialect"</span><span class="p">,</span> -</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="s2">"_start"</span><span class="p">,</span> -</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="s2">"_current"</span><span class="p">,</span> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="s2">"_line"</span><span class="p">,</span> -</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="s2">"_col"</span><span class="p">,</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="s2">"_comments"</span><span class="p">,</span> -</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="s2">"_char"</span><span class="p">,</span> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="s2">"_end"</span><span class="p">,</span> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="s2">"_peek"</span><span class="p">,</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> -</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="s2">"_rs_dialect_settings"</span><span class="p">,</span> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="p">)</span> -</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> +</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="s2">"size"</span><span class="p">,</span> +</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="s2">"tokens"</span><span class="p">,</span> +</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="s2">"dialect"</span><span class="p">,</span> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="s2">"_start"</span><span class="p">,</span> +</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="s2">"_current"</span><span class="p">,</span> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="s2">"_line"</span><span class="p">,</span> +</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="s2">"_col"</span><span class="p">,</span> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="s2">"_comments"</span><span class="p">,</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="s2">"_char"</span><span class="p">,</span> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="s2">"_end"</span><span class="p">,</span> +</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="s2">"_peek"</span><span class="p">,</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> +</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="s2">"_rs_dialect_settings"</span><span class="p">,</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="p">)</span> +</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> </span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> -</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span> <span class="o">=</span> <span class="n">RsTokenizerDialectSettings</span><span class="p">(</span> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="n">unescaped_sequences</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="n">identifiers_can_start_with_digit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">,</span> -</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="p">)</span> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span> <span class="o">=</span> <span class="n">RsTokenizerDialectSettings</span><span class="p">(</span> +</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="n">unescaped_sequences</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="n">identifiers_can_start_with_digit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">,</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="p">)</span> </span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> -</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="p">[]</span> -</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> -</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> -</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_rs</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> -</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> -</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">max</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">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">end</span> <span class="o">=</span> <span class="nb">min</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">50</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">context</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error tokenizing '</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> +</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="p">[]</span> +</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> +</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> +</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_rs</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> +</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">max</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">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="n">end</span> <span class="o">=</span> <span class="nb">min</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">50</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="n">context</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error tokenizing '</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span> </span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</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><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="c1"># Skip spaces here rather than iteratively calling advance() for performance reasons</span> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="k">while</span> <span class="n">current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="n">char</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><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="o">==</span> <span class="s2">" "</span> <span class="ow">or</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">):</span> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="n">current</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="k">break</span> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">offset</span> <span class="o">=</span> <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="k">if</span> <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="k">else</span> <span class="mi">1</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> +</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</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><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> +</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="c1"># Skip spaces here rather than iteratively calling advance() for performance reasons</span> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="k">while</span> <span class="n">current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="n">char</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><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> +</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="o">==</span> <span class="s2">" "</span> <span class="ow">or</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">):</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="n">current</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="k">break</span> </span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="n">current</span> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> -</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isspace</span><span class="p">():</span> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> -</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">:</span> -</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> -</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="k">break</span> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">:</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="n">start</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-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> -</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="n">offset</span> <span class="o">=</span> <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="k">if</span> <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="k">else</span> <span class="mi">1</span> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="n">current</span> +</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> +</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isspace</span><span class="p">():</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> +</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">:</span> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="k">break</span> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> +</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">:</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> +</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> +</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="n">start</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-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> </span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">alnum</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="ow">is</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="c1"># Ensures we don't count an extra line if we get a \r\n line break sequence</span> -</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">):</span> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> -</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</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="bp">self</span><span class="o">.</span><span class="n">size</span> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <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">sql</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-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="k">if</span> <span class="n">alnum</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="c1"># Here we use local variables instead of attributes for better performance</span> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</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><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="k">while</span> <span class="n">_peek</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">_col</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">_current</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">_end</span> <span class="k">else</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><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="n">_col</span> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="n">_current</span> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="n">_end</span> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="n">_peek</span> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <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">sql</span><span class="p">[</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> -</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="nd">@property</span> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> -</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> -</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="n">Token</span><span class="p">(</span> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">token_type</span><span class="p">,</span> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">text</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> -</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> -</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="n">col</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">start</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span><span class="p">,</span> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">end</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 class="p">,</span> -</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="p">)</span> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="p">)</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="c1"># whatever follows the command's token as a string</span> -</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> -</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">!=</span> <span class="s2">";"</span> -</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span><span class="p">)</span> -</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="p">):</span> -</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> -</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> -</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</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="s2">";"</span><span class="p">)</span> -</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> -</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> -</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> -</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_KEYWORD_TRIE</span> -</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> -</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> -</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> -</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> -</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">PREFIX</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="k">break</span> -</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> -</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="n">end</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="n">size</span> -</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> -</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="n">char</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">end</span><span class="p">]</span> -</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> -</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> -</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> -</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> -</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> -</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> -</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> -</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> -</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="k">break</span> -</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> -</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="k">if</span> <span class="n">word</span><span class="p">:</span> -</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">return</span> -</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">alnum</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="ow">is</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="c1"># Ensures we don't count an extra line if we get a \r\n line break sequence</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">):</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</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="bp">self</span><span class="o">.</span><span class="n">size</span> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <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">sql</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-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="k">if</span> <span class="n">alnum</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="c1"># Here we use local variables instead of attributes for better performance</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="n">_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</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><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="k">while</span> <span class="n">_peek</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">_col</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="n">_current</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">_end</span> <span class="k">else</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><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="n">_col</span> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="n">_current</span> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="n">_end</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="n">_peek</span> +</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <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">sql</span><span class="p">[</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> +</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="nd">@property</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> +</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> +</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">Token</span><span class="p">(</span> +</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="n">token_type</span><span class="p">,</span> +</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="n">text</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">col</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> +</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">start</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span><span class="p">,</span> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="n">end</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 class="p">,</span> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="p">)</span> +</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="p">)</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> +</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> +</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="c1"># whatever follows the command's token as a string</span> +</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> +</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">!=</span> <span class="s2">";"</span> +</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span><span class="p">)</span> +</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="p">):</span> +</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> +</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> +</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</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="s2">";"</span><span class="p">)</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> +</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> +</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> +</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_KEYWORD_TRIE</span> +</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> +</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> +</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">PREFIX</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> +</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="k">break</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> +</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="n">end</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="n">size</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="n">char</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">end</span><span class="p">]</span> +</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> +</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> +</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> +</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> +</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> +</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> +</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> +</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> +</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="k">break</span> +</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> +</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">if</span> <span class="n">word</span><span class="p">:</span> +</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> </span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="k">return</span> -</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="k">if</span> <span class="n">prev_space</span> <span class="ow">or</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">char</span><span class="p">:</span> -</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="p">],</span> <span class="n">text</span><span class="o">=</span><span class="n">word</span><span class="p">)</span> -</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="k">return</span> -</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> -</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</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="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">],</span> <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="p">)</span> -</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="k">return</span> -</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> -</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> +</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="k">return</span> +</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="k">if</span> <span class="n">prev_space</span> <span class="ow">or</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">char</span><span class="p">:</span> +</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="p">],</span> <span class="n">text</span><span class="o">=</span><span class="n">word</span><span class="p">)</span> +</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> <span class="k">return</span> +</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> +</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</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="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">],</span> <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="p">)</span> +</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="k">return</span> </span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> -</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> -</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> -</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> -</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> -</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> -</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="c1"># Skip the comment's start delimiter</span> -</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_start_size</span><span class="p">)</span> -</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> -</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> -</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</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-1163"><a href="#L-1163"><span class="linenos">1163</span></a> -</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> -</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</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-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> -</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> -</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> -</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> -</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> -</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> -</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> +</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> +</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> +</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> +</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> +</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> +</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> +</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> +</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> <span class="c1"># Skip the comment's start delimiter</span> +</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_start_size</span><span class="p">)</span> +</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> +</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> +</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> +</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</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-1165"><a href="#L-1165"><span class="linenos">1165</span></a> +</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> +</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> +</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</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-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> +</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> +</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> +</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> +</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> +</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</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">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> </span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> -</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</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">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> -</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</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">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> -</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">BIT_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> -</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEX_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> -</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</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="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</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">isdigit</span><span class="p">():</span> -</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> -</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> -</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> -</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> -</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> -</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="n">literal</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> -</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> -</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="s2">""</span><span class="p">))</span> +</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> +</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</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="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> +</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="k">if</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> +</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">BIT_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> +</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEX_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> +</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> +</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</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">isdigit</span><span class="p">():</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><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> +</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> +</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> +</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> +</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> +</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="n">literal</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> +</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> </span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> -</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> -</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> -</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">:</span> -</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> -</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> -</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> -</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="c1"># If `value` can't be converted to a binary, fallback to tokenizing it as an identifier</span> -</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0b</span> -</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> -</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="c1"># If `value` can't be converted to a hex, fallback to tokenizing it as an identifier</span> -</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> -</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0x</span> -</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> -</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</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">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</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-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="k">break</span> -</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> -</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="s2">""</span><span class="p">))</span> +</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> +</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> +</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> +</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">:</span> +</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> +</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> +</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> +</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="c1"># If `value` can't be converted to a binary, fallback to tokenizing it as an identifier</span> +</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0b</span> +</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> +</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="c1"># If `value` can't be converted to a hex, fallback to tokenizing it as an identifier</span> +</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> +</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0x</span> +</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> +</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</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">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</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-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="k">break</span> </span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> -</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> -</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> -</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">:</span> -</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> -</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="k">elif</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">:</span> -</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">end</span><span class="p">,</span> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> -</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> -</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> -</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> -</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> -</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> -</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> -</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> -</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">()</span> -</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">end</span> -</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="p">):</span> -</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">!=</span> <span class="n">token_type</span><span class="o">.</span><span class="n">VAR</span><span class="p">:</span> -</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> -</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> -</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> -</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> +</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> +</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> +</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">:</span> +</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> +</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="k">elif</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">:</span> +</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="n">end</span><span class="p">,</span> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> +</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> +</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> +</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> +</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> +</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> +</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> +</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> +</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">()</span> +</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">end</span> +</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="p">):</span> +</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">!=</span> <span class="n">token_type</span><span class="o">.</span><span class="n">VAR</span><span class="p">:</span> +</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> +</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> </span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> -</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> -</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">end</span><span class="p">:</span> -</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span> -</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="n">end</span><span class="p">,</span> -</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="n">unescape_sequences</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="n">raise_unmatched</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">,</span> -</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="p">)</span> -</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> -</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="n">tag</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">:</span> -</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">tag</span><span class="p">))</span> -</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> -</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> -</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">end</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">tag</span><span class="si">}{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> -</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="p">))</span> -</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="n">unescape_sequences</span><span class="o">=</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">)</span> -</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> -</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="k">if</span> <span class="n">base</span><span class="p">:</span> -</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">base</span><span class="p">)</span> -</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> -</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span> -</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters 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">"</span> -</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="p">)</span> -</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> -</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> -</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">identifier_end</span><span class="p">,</span> <span class="n">escapes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span><span class="p">)</span> -</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> -</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_SINGLE_TOKENS</span> <span class="ow">or</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">SINGLE_TOKENS</span><span class="p">):</span> -</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</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-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="k">break</span> -</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> -</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> -</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> -</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="p">)</span> -</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> -</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span> -</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="n">escapes</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">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="n">unescape_sequences</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> -</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</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-1346"><a href="#L-1346"><span class="linenos">1346</span></a> -</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="n">unescape_sequences</span> -</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span> -</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> -</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ESCAPES</span> -</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> <span class="p">):</span> -</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="n">unescaped_sequence</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="o">.</span><span class="n">get</span><span class="p">(</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-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="k">if</span> <span class="n">unescaped_sequence</span><span class="p">:</span> -</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</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-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">unescaped_sequence</span> -</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="k">continue</span> -</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</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-1361"><a href="#L-1361"><span class="linenos">1361</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-1362"><a href="#L-1362"><span class="linenos">1362</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-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="p">):</span> -</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</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-1365"><a href="#L-1365"><span class="linenos">1365</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-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</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-1368"><a href="#L-1368"><span class="linenos">1368</span></a> -</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</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"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</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-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> -</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</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-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</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-1377"><a href="#L-1377"><span class="linenos">1377</span></a> <span class="k">break</span> -</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> -</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</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-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">raise_unmatched</span><span class="p">:</span> -</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> <span class="k">return</span> <span class="n">text</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> -</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> -</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> +</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> +</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">end</span><span class="p">:</span> +</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span> +</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="n">end</span><span class="p">,</span> +</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="n">unescape_sequences</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="n">raise_unmatched</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">,</span> +</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="p">)</span> +</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> +</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="n">tag</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">:</span> +</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">tag</span><span class="p">))</span> +</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> +</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> +</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="n">end</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">tag</span><span class="si">}{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> +</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="p">))</span> +</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="n">unescape_sequences</span><span class="o">=</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">)</span> +</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> +</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="k">if</span> <span class="n">base</span><span class="p">:</span> +</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">base</span><span class="p">)</span> +</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> +</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span> +</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters 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">"</span> +</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="p">)</span> +</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> +</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> +</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">identifier_end</span><span class="p">,</span> <span class="n">escapes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span><span class="p">)</span> +</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> +</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_SINGLE_TOKENS</span> <span class="ow">or</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">SINGLE_TOKENS</span><span class="p">):</span> +</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</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-1329"><a href="#L-1329"><span class="linenos">1329</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="k">break</span> +</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> +</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> +</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> +</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> +</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="p">)</span> +</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> +</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span> +</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="n">escapes</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">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="n">unescape_sequences</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> +</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</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-1348"><a href="#L-1348"><span class="linenos">1348</span></a> +</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="n">unescape_sequences</span> +</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span> +</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> +</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ESCAPES</span> +</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="p">):</span> +</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="n">unescaped_sequence</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="o">.</span><span class="n">get</span><span class="p">(</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-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="k">if</span> <span class="n">unescaped_sequence</span><span class="p">:</span> +</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</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-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">unescaped_sequence</span> +</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="k">continue</span> +</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</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-1363"><a href="#L-1363"><span class="linenos">1363</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-1364"><a href="#L-1364"><span class="linenos">1364</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-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="p">):</span> +</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</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-1367"><a href="#L-1367"><span class="linenos">1367</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-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</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-1370"><a href="#L-1370"><span class="linenos">1370</span></a> +</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</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"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</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-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> +</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</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-1377"><a href="#L-1377"><span class="linenos">1377</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</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-1379"><a href="#L-1379"><span class="linenos">1379</span></a> <span class="k">break</span> +</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> +</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</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-1382"><a href="#L-1382"><span class="linenos">1382</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">raise_unmatched</span><span class="p">:</span> +</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="k">return</span> <span class="n">text</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> </span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> -</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</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-1386"><a href="#L-1386"><span class="linenos">1386</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-1387"><a href="#L-1387"><span class="linenos">1387</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-1388"><a href="#L-1388"><span class="linenos">1388</span></a> -</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> +</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> +</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</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-1388"><a href="#L-1388"><span class="linenos">1388</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-1389"><a href="#L-1389"><span class="linenos">1389</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-1390"><a href="#L-1390"><span class="linenos">1390</span></a> -</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="k">def</span> <span class="nf">tokenize_rs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="k">raise</span> <span class="n">SqlglotError</span><span class="p">(</span><span class="s2">"Rust tokenizer is not available"</span><span class="p">)</span> -</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> -</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span><span class="p">)</span> -</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">tokens</span><span class="p">:</span> -</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">_ALL_TOKEN_TYPES</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">token_type_index</span><span class="p">]</span> -</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="k">return</span> <span class="n">tokens</span> -</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> +</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> +</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="k">def</span> <span class="nf">tokenize_rs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="k">raise</span> <span class="n">SqlglotError</span><span class="p">(</span><span class="s2">"Rust tokenizer is not available"</span><span class="p">)</span> +</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> +</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span><span class="p">)</span> +</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">tokens</span><span class="p">:</span> +</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">_ALL_TOKEN_TYPES</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">token_type_index</span><span class="p">]</span> +</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> <span class="k">return</span> <span class="n">tokens</span> +</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> </span></pre></div> @@ -2932,97 +2937,98 @@ </span><span id="TokenType-295"><a href="#TokenType-295"><span class="linenos">295</span></a> <span class="n">LIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="TokenType-296"><a href="#TokenType-296"><span class="linenos">296</span></a> <span class="n">LIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="TokenType-297"><a href="#TokenType-297"><span class="linenos">297</span></a> <span class="n">LIMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-298"><a href="#TokenType-298"><span class="linenos">298</span></a> <span class="n">LOAD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-299"><a href="#TokenType-299"><span class="linenos">299</span></a> <span class="n">LOCK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-300"><a href="#TokenType-300"><span class="linenos">300</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-301"><a href="#TokenType-301"><span class="linenos">301</span></a> <span class="n">MATCH_CONDITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-302"><a href="#TokenType-302"><span class="linenos">302</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-303"><a href="#TokenType-303"><span class="linenos">303</span></a> <span class="n">MEMBER_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-304"><a href="#TokenType-304"><span class="linenos">304</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-305"><a href="#TokenType-305"><span class="linenos">305</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-306"><a href="#TokenType-306"><span class="linenos">306</span></a> <span class="n">MODEL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-307"><a href="#TokenType-307"><span class="linenos">307</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-308"><a href="#TokenType-308"><span class="linenos">308</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-309"><a href="#TokenType-309"><span class="linenos">309</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-310"><a href="#TokenType-310"><span class="linenos">310</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-311"><a href="#TokenType-311"><span class="linenos">311</span></a> <span class="n">OBJECT_IDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-312"><a href="#TokenType-312"><span class="linenos">312</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-313"><a href="#TokenType-313"><span class="linenos">313</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-314"><a href="#TokenType-314"><span class="linenos">314</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-315"><a href="#TokenType-315"><span class="linenos">315</span></a> <span class="n">OPERATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-316"><a href="#TokenType-316"><span class="linenos">316</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-317"><a href="#TokenType-317"><span class="linenos">317</span></a> <span class="n">ORDER_SIBLINGS_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-318"><a href="#TokenType-318"><span class="linenos">318</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-319"><a href="#TokenType-319"><span class="linenos">319</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-320"><a href="#TokenType-320"><span class="linenos">320</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-321"><a href="#TokenType-321"><span class="linenos">321</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-322"><a href="#TokenType-322"><span class="linenos">322</span></a> <span class="n">OVERLAPS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-323"><a href="#TokenType-323"><span class="linenos">323</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-324"><a href="#TokenType-324"><span class="linenos">324</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-325"><a href="#TokenType-325"><span class="linenos">325</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-326"><a href="#TokenType-326"><span class="linenos">326</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-327"><a href="#TokenType-327"><span class="linenos">327</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-328"><a href="#TokenType-328"><span class="linenos">328</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-329"><a href="#TokenType-329"><span class="linenos">329</span></a> <span class="n">POSITIONAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-330"><a href="#TokenType-330"><span class="linenos">330</span></a> <span class="n">PRAGMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-331"><a href="#TokenType-331"><span class="linenos">331</span></a> <span class="n">PREWHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-332"><a href="#TokenType-332"><span class="linenos">332</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-333"><a href="#TokenType-333"><span class="linenos">333</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-334"><a href="#TokenType-334"><span class="linenos">334</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-335"><a href="#TokenType-335"><span class="linenos">335</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-336"><a href="#TokenType-336"><span class="linenos">336</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-337"><a href="#TokenType-337"><span class="linenos">337</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-338"><a href="#TokenType-338"><span class="linenos">338</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-339"><a href="#TokenType-339"><span class="linenos">339</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-340"><a href="#TokenType-340"><span class="linenos">340</span></a> <span class="n">REFRESH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-341"><a href="#TokenType-341"><span class="linenos">341</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-342"><a href="#TokenType-342"><span class="linenos">342</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-343"><a href="#TokenType-343"><span class="linenos">343</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-344"><a href="#TokenType-344"><span class="linenos">344</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-345"><a href="#TokenType-345"><span class="linenos">345</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-346"><a href="#TokenType-346"><span class="linenos">346</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-347"><a href="#TokenType-347"><span class="linenos">347</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-348"><a href="#TokenType-348"><span class="linenos">348</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-349"><a href="#TokenType-349"><span class="linenos">349</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-350"><a href="#TokenType-350"><span class="linenos">350</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-351"><a href="#TokenType-351"><span class="linenos">351</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-352"><a href="#TokenType-352"><span class="linenos">352</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-353"><a href="#TokenType-353"><span class="linenos">353</span></a> <span class="n">SEQUENCE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-354"><a href="#TokenType-354"><span class="linenos">354</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-355"><a href="#TokenType-355"><span class="linenos">355</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-356"><a href="#TokenType-356"><span class="linenos">356</span></a> <span class="n">SETTINGS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-357"><a href="#TokenType-357"><span class="linenos">357</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-358"><a href="#TokenType-358"><span class="linenos">358</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-359"><a href="#TokenType-359"><span class="linenos">359</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-360"><a href="#TokenType-360"><span class="linenos">360</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-361"><a href="#TokenType-361"><span class="linenos">361</span></a> <span class="n">START_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-362"><a href="#TokenType-362"><span class="linenos">362</span></a> <span class="n">STORAGE_INTEGRATION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-363"><a href="#TokenType-363"><span class="linenos">363</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-364"><a href="#TokenType-364"><span class="linenos">364</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-365"><a href="#TokenType-365"><span class="linenos">365</span></a> <span class="n">TAG</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-366"><a href="#TokenType-366"><span class="linenos">366</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-367"><a href="#TokenType-367"><span class="linenos">367</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-368"><a href="#TokenType-368"><span class="linenos">368</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-369"><a href="#TokenType-369"><span class="linenos">369</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-370"><a href="#TokenType-370"><span class="linenos">370</span></a> <span class="n">TRUNCATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-371"><a href="#TokenType-371"><span class="linenos">371</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-372"><a href="#TokenType-372"><span class="linenos">372</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-373"><a href="#TokenType-373"><span class="linenos">373</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-374"><a href="#TokenType-374"><span class="linenos">374</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-375"><a href="#TokenType-375"><span class="linenos">375</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-376"><a href="#TokenType-376"><span class="linenos">376</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-377"><a href="#TokenType-377"><span class="linenos">377</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-378"><a href="#TokenType-378"><span class="linenos">378</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-379"><a href="#TokenType-379"><span class="linenos">379</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-380"><a href="#TokenType-380"><span class="linenos">380</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-381"><a href="#TokenType-381"><span class="linenos">381</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-382"><a href="#TokenType-382"><span class="linenos">382</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-383"><a href="#TokenType-383"><span class="linenos">383</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-384"><a href="#TokenType-384"><span class="linenos">384</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-385"><a href="#TokenType-385"><span class="linenos">385</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-386"><a href="#TokenType-386"><span class="linenos">386</span></a> <span class="n">VERSION_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-387"><a href="#TokenType-387"><span class="linenos">387</span></a> <span class="n">TIMESTAMP_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-388"><a href="#TokenType-388"><span class="linenos">388</span></a> <span class="n">OPTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-298"><a href="#TokenType-298"><span class="linenos">298</span></a> <span class="n">LIST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-299"><a href="#TokenType-299"><span class="linenos">299</span></a> <span class="n">LOAD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-300"><a href="#TokenType-300"><span class="linenos">300</span></a> <span class="n">LOCK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-301"><a href="#TokenType-301"><span class="linenos">301</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-302"><a href="#TokenType-302"><span class="linenos">302</span></a> <span class="n">MATCH_CONDITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-303"><a href="#TokenType-303"><span class="linenos">303</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-304"><a href="#TokenType-304"><span class="linenos">304</span></a> <span class="n">MEMBER_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-305"><a href="#TokenType-305"><span class="linenos">305</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-306"><a href="#TokenType-306"><span class="linenos">306</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-307"><a href="#TokenType-307"><span class="linenos">307</span></a> <span class="n">MODEL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-308"><a href="#TokenType-308"><span class="linenos">308</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-309"><a href="#TokenType-309"><span class="linenos">309</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-310"><a href="#TokenType-310"><span class="linenos">310</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-311"><a href="#TokenType-311"><span class="linenos">311</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-312"><a href="#TokenType-312"><span class="linenos">312</span></a> <span class="n">OBJECT_IDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-313"><a href="#TokenType-313"><span class="linenos">313</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-314"><a href="#TokenType-314"><span class="linenos">314</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-315"><a href="#TokenType-315"><span class="linenos">315</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-316"><a href="#TokenType-316"><span class="linenos">316</span></a> <span class="n">OPERATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-317"><a href="#TokenType-317"><span class="linenos">317</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-318"><a href="#TokenType-318"><span class="linenos">318</span></a> <span class="n">ORDER_SIBLINGS_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-319"><a href="#TokenType-319"><span class="linenos">319</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-320"><a href="#TokenType-320"><span class="linenos">320</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-321"><a href="#TokenType-321"><span class="linenos">321</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-322"><a href="#TokenType-322"><span class="linenos">322</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-323"><a href="#TokenType-323"><span class="linenos">323</span></a> <span class="n">OVERLAPS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-324"><a href="#TokenType-324"><span class="linenos">324</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-325"><a href="#TokenType-325"><span class="linenos">325</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-326"><a href="#TokenType-326"><span class="linenos">326</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-327"><a href="#TokenType-327"><span class="linenos">327</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-328"><a href="#TokenType-328"><span class="linenos">328</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-329"><a href="#TokenType-329"><span class="linenos">329</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-330"><a href="#TokenType-330"><span class="linenos">330</span></a> <span class="n">POSITIONAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-331"><a href="#TokenType-331"><span class="linenos">331</span></a> <span class="n">PRAGMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-332"><a href="#TokenType-332"><span class="linenos">332</span></a> <span class="n">PREWHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-333"><a href="#TokenType-333"><span class="linenos">333</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-334"><a href="#TokenType-334"><span class="linenos">334</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-335"><a href="#TokenType-335"><span class="linenos">335</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-336"><a href="#TokenType-336"><span class="linenos">336</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-337"><a href="#TokenType-337"><span class="linenos">337</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-338"><a href="#TokenType-338"><span class="linenos">338</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-339"><a href="#TokenType-339"><span class="linenos">339</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-340"><a href="#TokenType-340"><span class="linenos">340</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-341"><a href="#TokenType-341"><span class="linenos">341</span></a> <span class="n">REFRESH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-342"><a href="#TokenType-342"><span class="linenos">342</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-343"><a href="#TokenType-343"><span class="linenos">343</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-344"><a href="#TokenType-344"><span class="linenos">344</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-345"><a href="#TokenType-345"><span class="linenos">345</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-346"><a href="#TokenType-346"><span class="linenos">346</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-347"><a href="#TokenType-347"><span class="linenos">347</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-348"><a href="#TokenType-348"><span class="linenos">348</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-349"><a href="#TokenType-349"><span class="linenos">349</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-350"><a href="#TokenType-350"><span class="linenos">350</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-351"><a href="#TokenType-351"><span class="linenos">351</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-352"><a href="#TokenType-352"><span class="linenos">352</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-353"><a href="#TokenType-353"><span class="linenos">353</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-354"><a href="#TokenType-354"><span class="linenos">354</span></a> <span class="n">SEQUENCE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-355"><a href="#TokenType-355"><span class="linenos">355</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-356"><a href="#TokenType-356"><span class="linenos">356</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-357"><a href="#TokenType-357"><span class="linenos">357</span></a> <span class="n">SETTINGS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-358"><a href="#TokenType-358"><span class="linenos">358</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-359"><a href="#TokenType-359"><span class="linenos">359</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-360"><a href="#TokenType-360"><span class="linenos">360</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-361"><a href="#TokenType-361"><span class="linenos">361</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-362"><a href="#TokenType-362"><span class="linenos">362</span></a> <span class="n">START_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-363"><a href="#TokenType-363"><span class="linenos">363</span></a> <span class="n">STORAGE_INTEGRATION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-364"><a href="#TokenType-364"><span class="linenos">364</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-365"><a href="#TokenType-365"><span class="linenos">365</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-366"><a href="#TokenType-366"><span class="linenos">366</span></a> <span class="n">TAG</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-367"><a href="#TokenType-367"><span class="linenos">367</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-368"><a href="#TokenType-368"><span class="linenos">368</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-369"><a href="#TokenType-369"><span class="linenos">369</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-370"><a href="#TokenType-370"><span class="linenos">370</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-371"><a href="#TokenType-371"><span class="linenos">371</span></a> <span class="n">TRUNCATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-372"><a href="#TokenType-372"><span class="linenos">372</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-373"><a href="#TokenType-373"><span class="linenos">373</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-374"><a href="#TokenType-374"><span class="linenos">374</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-375"><a href="#TokenType-375"><span class="linenos">375</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-376"><a href="#TokenType-376"><span class="linenos">376</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-377"><a href="#TokenType-377"><span class="linenos">377</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-378"><a href="#TokenType-378"><span class="linenos">378</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-379"><a href="#TokenType-379"><span class="linenos">379</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-380"><a href="#TokenType-380"><span class="linenos">380</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-381"><a href="#TokenType-381"><span class="linenos">381</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-382"><a href="#TokenType-382"><span class="linenos">382</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-383"><a href="#TokenType-383"><span class="linenos">383</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-384"><a href="#TokenType-384"><span class="linenos">384</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-385"><a href="#TokenType-385"><span class="linenos">385</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-386"><a href="#TokenType-386"><span class="linenos">386</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-387"><a href="#TokenType-387"><span class="linenos">387</span></a> <span class="n">VERSION_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-388"><a href="#TokenType-388"><span class="linenos">388</span></a> <span class="n">TIMESTAMP_SNAPSHOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-389"><a href="#TokenType-389"><span class="linenos">389</span></a> <span class="n">OPTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span></pre></div> @@ -6162,6 +6168,18 @@ </div> + <div id="TokenType.LIST" class="classattr"> + <div class="attr variable"> + <span class="name">LIST</span> = +<span class="default_value"><<a href="#TokenType.LIST">TokenType.LIST</a>: 'LIST'></span> + + + </div> + <a class="headerlink" href="#TokenType.LIST"></a> + + + + </div> <div id="TokenType.LOAD" class="classattr"> <div class="attr variable"> <span class="name">LOAD</span> = @@ -7276,61 +7294,61 @@ </div> <a class="headerlink" href="#Token"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token-395"><a href="#Token-395"><span class="linenos">395</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> -</span><span id="Token-396"><a href="#Token-396"><span class="linenos">396</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> -</span><span id="Token-397"><a href="#Token-397"><span class="linenos">397</span></a> -</span><span id="Token-398"><a href="#Token-398"><span class="linenos">398</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-399"><a href="#Token-399"><span class="linenos">399</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-400"><a href="#Token-400"><span class="linenos">400</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> -</span><span id="Token-401"><a href="#Token-401"><span class="linenos">401</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> -</span><span id="Token-402"><a href="#Token-402"><span class="linenos">402</span></a> -</span><span id="Token-403"><a href="#Token-403"><span class="linenos">403</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-404"><a href="#Token-404"><span class="linenos">404</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-405"><a href="#Token-405"><span class="linenos">405</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> -</span><span id="Token-406"><a href="#Token-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> -</span><span id="Token-407"><a href="#Token-407"><span class="linenos">407</span></a> -</span><span id="Token-408"><a href="#Token-408"><span class="linenos">408</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-409"><a href="#Token-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-410"><a href="#Token-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> -</span><span id="Token-411"><a href="#Token-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> -</span><span id="Token-412"><a href="#Token-412"><span class="linenos">412</span></a> -</span><span id="Token-413"><a href="#Token-413"><span class="linenos">413</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-414"><a href="#Token-414"><span class="linenos">414</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-415"><a href="#Token-415"><span class="linenos">415</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> -</span><span id="Token-416"><a href="#Token-416"><span class="linenos">416</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> -</span><span id="Token-417"><a href="#Token-417"><span class="linenos">417</span></a> -</span><span id="Token-418"><a href="#Token-418"><span class="linenos">418</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Token-419"><a href="#Token-419"><span class="linenos">419</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Token-420"><a href="#Token-420"><span class="linenos">420</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> -</span><span id="Token-421"><a href="#Token-421"><span class="linenos">421</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Token-422"><a href="#Token-422"><span class="linenos">422</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token-423"><a href="#Token-423"><span class="linenos">423</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token-424"><a href="#Token-424"><span class="linenos">424</span></a> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Token-425"><a href="#Token-425"><span class="linenos">425</span></a> <span class="n">end</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Token-426"><a href="#Token-426"><span class="linenos">426</span></a> <span class="n">comments</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 class="p">,</span> -</span><span id="Token-427"><a href="#Token-427"><span class="linenos">427</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Token-428"><a href="#Token-428"><span class="linenos">428</span></a><span class="w"> </span><span class="sd">"""Token initializer.</span> -</span><span id="Token-429"><a href="#Token-429"><span class="linenos">429</span></a> -</span><span id="Token-430"><a href="#Token-430"><span class="linenos">430</span></a><span class="sd"> Args:</span> -</span><span id="Token-431"><a href="#Token-431"><span class="linenos">431</span></a><span class="sd"> token_type: The TokenType Enum.</span> -</span><span id="Token-432"><a href="#Token-432"><span class="linenos">432</span></a><span class="sd"> text: The text of the token.</span> -</span><span id="Token-433"><a href="#Token-433"><span class="linenos">433</span></a><span class="sd"> line: The line that the token ends on.</span> -</span><span id="Token-434"><a href="#Token-434"><span class="linenos">434</span></a><span class="sd"> col: The column that the token ends on.</span> -</span><span id="Token-435"><a href="#Token-435"><span class="linenos">435</span></a><span class="sd"> start: The start index of the token.</span> -</span><span id="Token-436"><a href="#Token-436"><span class="linenos">436</span></a><span class="sd"> end: The ending index of the token.</span> -</span><span id="Token-437"><a href="#Token-437"><span class="linenos">437</span></a><span class="sd"> comments: The comments to attach to the token.</span> -</span><span id="Token-438"><a href="#Token-438"><span class="linenos">438</span></a><span class="sd"> """</span> -</span><span id="Token-439"><a href="#Token-439"><span class="linenos">439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> -</span><span id="Token-440"><a href="#Token-440"><span class="linenos">440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> -</span><span id="Token-441"><a href="#Token-441"><span class="linenos">441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> -</span><span id="Token-442"><a href="#Token-442"><span class="linenos">442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">col</span> -</span><span id="Token-443"><a href="#Token-443"><span class="linenos">443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span> -</span><span id="Token-444"><a href="#Token-444"><span class="linenos">444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span> -</span><span id="Token-445"><a href="#Token-445"><span class="linenos">445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">comments</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">comments</span> -</span><span id="Token-446"><a href="#Token-446"><span class="linenos">446</span></a> -</span><span id="Token-447"><a href="#Token-447"><span class="linenos">447</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Token-448"><a href="#Token-448"><span class="linenos">448</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> -</span><span id="Token-449"><a href="#Token-449"><span class="linenos">449</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token-396"><a href="#Token-396"><span class="linenos">396</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> +</span><span id="Token-397"><a href="#Token-397"><span class="linenos">397</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> +</span><span id="Token-398"><a href="#Token-398"><span class="linenos">398</span></a> +</span><span id="Token-399"><a href="#Token-399"><span class="linenos">399</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-400"><a href="#Token-400"><span class="linenos">400</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-401"><a href="#Token-401"><span class="linenos">401</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> +</span><span id="Token-402"><a href="#Token-402"><span class="linenos">402</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> +</span><span id="Token-403"><a href="#Token-403"><span class="linenos">403</span></a> +</span><span id="Token-404"><a href="#Token-404"><span class="linenos">404</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-405"><a href="#Token-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-406"><a href="#Token-406"><span class="linenos">406</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> +</span><span id="Token-407"><a href="#Token-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> +</span><span id="Token-408"><a href="#Token-408"><span class="linenos">408</span></a> +</span><span id="Token-409"><a href="#Token-409"><span class="linenos">409</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-410"><a href="#Token-410"><span class="linenos">410</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-411"><a href="#Token-411"><span class="linenos">411</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> +</span><span id="Token-412"><a href="#Token-412"><span class="linenos">412</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> +</span><span id="Token-413"><a href="#Token-413"><span class="linenos">413</span></a> +</span><span id="Token-414"><a href="#Token-414"><span class="linenos">414</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-415"><a href="#Token-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-416"><a href="#Token-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> +</span><span id="Token-417"><a href="#Token-417"><span class="linenos">417</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> +</span><span id="Token-418"><a href="#Token-418"><span class="linenos">418</span></a> +</span><span id="Token-419"><a href="#Token-419"><span class="linenos">419</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Token-420"><a href="#Token-420"><span class="linenos">420</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Token-421"><a href="#Token-421"><span class="linenos">421</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> +</span><span id="Token-422"><a href="#Token-422"><span class="linenos">422</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Token-423"><a href="#Token-423"><span class="linenos">423</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token-424"><a href="#Token-424"><span class="linenos">424</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token-425"><a href="#Token-425"><span class="linenos">425</span></a> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Token-426"><a href="#Token-426"><span class="linenos">426</span></a> <span class="n">end</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Token-427"><a href="#Token-427"><span class="linenos">427</span></a> <span class="n">comments</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 class="p">,</span> +</span><span id="Token-428"><a href="#Token-428"><span class="linenos">428</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Token-429"><a href="#Token-429"><span class="linenos">429</span></a><span class="w"> </span><span class="sd">"""Token initializer.</span> +</span><span id="Token-430"><a href="#Token-430"><span class="linenos">430</span></a> +</span><span id="Token-431"><a href="#Token-431"><span class="linenos">431</span></a><span class="sd"> Args:</span> +</span><span id="Token-432"><a href="#Token-432"><span class="linenos">432</span></a><span class="sd"> token_type: The TokenType Enum.</span> +</span><span id="Token-433"><a href="#Token-433"><span class="linenos">433</span></a><span class="sd"> text: The text of the token.</span> +</span><span id="Token-434"><a href="#Token-434"><span class="linenos">434</span></a><span class="sd"> line: The line that the token ends on.</span> +</span><span id="Token-435"><a href="#Token-435"><span class="linenos">435</span></a><span class="sd"> col: The column that the token ends on.</span> +</span><span id="Token-436"><a href="#Token-436"><span class="linenos">436</span></a><span class="sd"> start: The start index of the token.</span> +</span><span id="Token-437"><a href="#Token-437"><span class="linenos">437</span></a><span class="sd"> end: The ending index of the token.</span> +</span><span id="Token-438"><a href="#Token-438"><span class="linenos">438</span></a><span class="sd"> comments: The comments to attach to the token.</span> +</span><span id="Token-439"><a href="#Token-439"><span class="linenos">439</span></a><span class="sd"> """</span> +</span><span id="Token-440"><a href="#Token-440"><span class="linenos">440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> +</span><span id="Token-441"><a href="#Token-441"><span class="linenos">441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> +</span><span id="Token-442"><a href="#Token-442"><span class="linenos">442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> +</span><span id="Token-443"><a href="#Token-443"><span class="linenos">443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">col</span> +</span><span id="Token-444"><a href="#Token-444"><span class="linenos">444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span> +</span><span id="Token-445"><a href="#Token-445"><span class="linenos">445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span> +</span><span id="Token-446"><a href="#Token-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">comments</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">comments</span> +</span><span id="Token-447"><a href="#Token-447"><span class="linenos">447</span></a> +</span><span id="Token-448"><a href="#Token-448"><span class="linenos">448</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Token-449"><a href="#Token-449"><span class="linenos">449</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> +</span><span id="Token-450"><a href="#Token-450"><span class="linenos">450</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> </span></pre></div> @@ -7346,34 +7364,34 @@ </div> <a class="headerlink" href="#Token.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.__init__-418"><a href="#Token.__init__-418"><span class="linenos">418</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Token.__init__-419"><a href="#Token.__init__-419"><span class="linenos">419</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Token.__init__-420"><a href="#Token.__init__-420"><span class="linenos">420</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> -</span><span id="Token.__init__-421"><a href="#Token.__init__-421"><span class="linenos">421</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Token.__init__-422"><a href="#Token.__init__-422"><span class="linenos">422</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token.__init__-423"><a href="#Token.__init__-423"><span class="linenos">423</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token.__init__-424"><a href="#Token.__init__-424"><span class="linenos">424</span></a> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Token.__init__-425"><a href="#Token.__init__-425"><span class="linenos">425</span></a> <span class="n">end</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Token.__init__-426"><a href="#Token.__init__-426"><span class="linenos">426</span></a> <span class="n">comments</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 class="p">,</span> -</span><span id="Token.__init__-427"><a href="#Token.__init__-427"><span class="linenos">427</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Token.__init__-428"><a href="#Token.__init__-428"><span class="linenos">428</span></a><span class="w"> </span><span class="sd">"""Token initializer.</span> -</span><span id="Token.__init__-429"><a href="#Token.__init__-429"><span class="linenos">429</span></a> -</span><span id="Token.__init__-430"><a href="#Token.__init__-430"><span class="linenos">430</span></a><span class="sd"> Args:</span> -</span><span id="Token.__init__-431"><a href="#Token.__init__-431"><span class="linenos">431</span></a><span class="sd"> token_type: The TokenType Enum.</span> -</span><span id="Token.__init__-432"><a href="#Token.__init__-432"><span class="linenos">432</span></a><span class="sd"> text: The text of the token.</span> -</span><span id="Token.__init__-433"><a href="#Token.__init__-433"><span class="linenos">433</span></a><span class="sd"> line: The line that the token ends on.</span> -</span><span id="Token.__init__-434"><a href="#Token.__init__-434"><span class="linenos">434</span></a><span class="sd"> col: The column that the token ends on.</span> -</span><span id="Token.__init__-435"><a href="#Token.__init__-435"><span class="linenos">435</span></a><span class="sd"> start: The start index of the token.</span> -</span><span id="Token.__init__-436"><a href="#Token.__init__-436"><span class="linenos">436</span></a><span class="sd"> end: The ending index of the token.</span> -</span><span id="Token.__init__-437"><a href="#Token.__init__-437"><span class="linenos">437</span></a><span class="sd"> comments: The comments to attach to the token.</span> -</span><span id="Token.__init__-438"><a href="#Token.__init__-438"><span class="linenos">438</span></a><span class="sd"> """</span> -</span><span id="Token.__init__-439"><a href="#Token.__init__-439"><span class="linenos">439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> -</span><span id="Token.__init__-440"><a href="#Token.__init__-440"><span class="linenos">440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> -</span><span id="Token.__init__-441"><a href="#Token.__init__-441"><span class="linenos">441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> -</span><span id="Token.__init__-442"><a href="#Token.__init__-442"><span class="linenos">442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">col</span> -</span><span id="Token.__init__-443"><a href="#Token.__init__-443"><span class="linenos">443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span> -</span><span id="Token.__init__-444"><a href="#Token.__init__-444"><span class="linenos">444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span> -</span><span id="Token.__init__-445"><a href="#Token.__init__-445"><span class="linenos">445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">comments</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">comments</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.__init__-419"><a href="#Token.__init__-419"><span class="linenos">419</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Token.__init__-420"><a href="#Token.__init__-420"><span class="linenos">420</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Token.__init__-421"><a href="#Token.__init__-421"><span class="linenos">421</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> +</span><span id="Token.__init__-422"><a href="#Token.__init__-422"><span class="linenos">422</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Token.__init__-423"><a href="#Token.__init__-423"><span class="linenos">423</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token.__init__-424"><a href="#Token.__init__-424"><span class="linenos">424</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token.__init__-425"><a href="#Token.__init__-425"><span class="linenos">425</span></a> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Token.__init__-426"><a href="#Token.__init__-426"><span class="linenos">426</span></a> <span class="n">end</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Token.__init__-427"><a href="#Token.__init__-427"><span class="linenos">427</span></a> <span class="n">comments</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 class="p">,</span> +</span><span id="Token.__init__-428"><a href="#Token.__init__-428"><span class="linenos">428</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Token.__init__-429"><a href="#Token.__init__-429"><span class="linenos">429</span></a><span class="w"> </span><span class="sd">"""Token initializer.</span> +</span><span id="Token.__init__-430"><a href="#Token.__init__-430"><span class="linenos">430</span></a> +</span><span id="Token.__init__-431"><a href="#Token.__init__-431"><span class="linenos">431</span></a><span class="sd"> Args:</span> +</span><span id="Token.__init__-432"><a href="#Token.__init__-432"><span class="linenos">432</span></a><span class="sd"> token_type: The TokenType Enum.</span> +</span><span id="Token.__init__-433"><a href="#Token.__init__-433"><span class="linenos">433</span></a><span class="sd"> text: The text of the token.</span> +</span><span id="Token.__init__-434"><a href="#Token.__init__-434"><span class="linenos">434</span></a><span class="sd"> line: The line that the token ends on.</span> +</span><span id="Token.__init__-435"><a href="#Token.__init__-435"><span class="linenos">435</span></a><span class="sd"> col: The column that the token ends on.</span> +</span><span id="Token.__init__-436"><a href="#Token.__init__-436"><span class="linenos">436</span></a><span class="sd"> start: The start index of the token.</span> +</span><span id="Token.__init__-437"><a href="#Token.__init__-437"><span class="linenos">437</span></a><span class="sd"> end: The ending index of the token.</span> +</span><span id="Token.__init__-438"><a href="#Token.__init__-438"><span class="linenos">438</span></a><span class="sd"> comments: The comments to attach to the token.</span> +</span><span id="Token.__init__-439"><a href="#Token.__init__-439"><span class="linenos">439</span></a><span class="sd"> """</span> +</span><span id="Token.__init__-440"><a href="#Token.__init__-440"><span class="linenos">440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> +</span><span id="Token.__init__-441"><a href="#Token.__init__-441"><span class="linenos">441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> +</span><span id="Token.__init__-442"><a href="#Token.__init__-442"><span class="linenos">442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> +</span><span id="Token.__init__-443"><a href="#Token.__init__-443"><span class="linenos">443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">col</span> +</span><span id="Token.__init__-444"><a href="#Token.__init__-444"><span class="linenos">444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span> +</span><span id="Token.__init__-445"><a href="#Token.__init__-445"><span class="linenos">445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span> +</span><span id="Token.__init__-446"><a href="#Token.__init__-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">comments</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">comments</span> </span></pre></div> @@ -7406,10 +7424,10 @@ </div> <a class="headerlink" href="#Token.number"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.number-398"><a href="#Token.number-398"><span class="linenos">398</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.number-399"><a href="#Token.number-399"><span class="linenos">399</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.number-400"><a href="#Token.number-400"><span class="linenos">400</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> -</span><span id="Token.number-401"><a href="#Token.number-401"><span class="linenos">401</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.number-399"><a href="#Token.number-399"><span class="linenos">399</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.number-400"><a href="#Token.number-400"><span class="linenos">400</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.number-401"><a href="#Token.number-401"><span class="linenos">401</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> +</span><span id="Token.number-402"><a href="#Token.number-402"><span class="linenos">402</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> </span></pre></div> @@ -7430,10 +7448,10 @@ </div> <a class="headerlink" href="#Token.string"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.string-403"><a href="#Token.string-403"><span class="linenos">403</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.string-404"><a href="#Token.string-404"><span class="linenos">404</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.string-405"><a href="#Token.string-405"><span class="linenos">405</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> -</span><span id="Token.string-406"><a href="#Token.string-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.string-404"><a href="#Token.string-404"><span class="linenos">404</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.string-405"><a href="#Token.string-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.string-406"><a href="#Token.string-406"><span class="linenos">406</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> +</span><span id="Token.string-407"><a href="#Token.string-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> </span></pre></div> @@ -7454,10 +7472,10 @@ </div> <a class="headerlink" href="#Token.identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.identifier-408"><a href="#Token.identifier-408"><span class="linenos">408</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.identifier-409"><a href="#Token.identifier-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.identifier-410"><a href="#Token.identifier-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> -</span><span id="Token.identifier-411"><a href="#Token.identifier-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.identifier-409"><a href="#Token.identifier-409"><span class="linenos">409</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.identifier-410"><a href="#Token.identifier-410"><span class="linenos">410</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.identifier-411"><a href="#Token.identifier-411"><span class="linenos">411</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> +</span><span id="Token.identifier-412"><a href="#Token.identifier-412"><span class="linenos">412</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> </span></pre></div> @@ -7478,10 +7496,10 @@ </div> <a class="headerlink" href="#Token.var"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.var-413"><a href="#Token.var-413"><span class="linenos">413</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.var-414"><a href="#Token.var-414"><span class="linenos">414</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.var-415"><a href="#Token.var-415"><span class="linenos">415</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> -</span><span id="Token.var-416"><a href="#Token.var-416"><span class="linenos">416</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.var-414"><a href="#Token.var-414"><span class="linenos">414</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.var-415"><a href="#Token.var-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.var-416"><a href="#Token.var-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> +</span><span id="Token.var-417"><a href="#Token.var-417"><span class="linenos">417</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> </span></pre></div> @@ -7579,859 +7597,860 @@ </div> <a class="headerlink" href="#Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer-550"><a href="#Tokenizer-550"><span class="linenos"> 550</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> -</span><span id="Tokenizer-551"><a href="#Tokenizer-551"><span class="linenos"> 551</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-552"><a href="#Tokenizer-552"><span class="linenos"> 552</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> -</span><span id="Tokenizer-553"><a href="#Tokenizer-553"><span class="linenos"> 553</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> -</span><span id="Tokenizer-554"><a href="#Tokenizer-554"><span class="linenos"> 554</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> -</span><span id="Tokenizer-555"><a href="#Tokenizer-555"><span class="linenos"> 555</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> -</span><span id="Tokenizer-556"><a href="#Tokenizer-556"><span class="linenos"> 556</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> -</span><span id="Tokenizer-557"><a href="#Tokenizer-557"><span class="linenos"> 557</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> -</span><span id="Tokenizer-558"><a href="#Tokenizer-558"><span class="linenos"> 558</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> -</span><span id="Tokenizer-559"><a href="#Tokenizer-559"><span class="linenos"> 559</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> -</span><span id="Tokenizer-560"><a href="#Tokenizer-560"><span class="linenos"> 560</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> -</span><span id="Tokenizer-561"><a href="#Tokenizer-561"><span class="linenos"> 561</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> -</span><span id="Tokenizer-562"><a href="#Tokenizer-562"><span class="linenos"> 562</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> -</span><span id="Tokenizer-563"><a href="#Tokenizer-563"><span class="linenos"> 563</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> -</span><span id="Tokenizer-564"><a href="#Tokenizer-564"><span class="linenos"> 564</span></a> <span class="s2">"="</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="Tokenizer-565"><a href="#Tokenizer-565"><span class="linenos"> 565</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="Tokenizer-566"><a href="#Tokenizer-566"><span class="linenos"> 566</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="Tokenizer-567"><a href="#Tokenizer-567"><span class="linenos"> 567</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> -</span><span id="Tokenizer-568"><a href="#Tokenizer-568"><span class="linenos"> 568</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="Tokenizer-569"><a href="#Tokenizer-569"><span class="linenos"> 569</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> -</span><span id="Tokenizer-570"><a href="#Tokenizer-570"><span class="linenos"> 570</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> -</span><span id="Tokenizer-571"><a href="#Tokenizer-571"><span class="linenos"> 571</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> -</span><span id="Tokenizer-572"><a href="#Tokenizer-572"><span class="linenos"> 572</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> -</span><span id="Tokenizer-573"><a href="#Tokenizer-573"><span class="linenos"> 573</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> -</span><span id="Tokenizer-574"><a href="#Tokenizer-574"><span class="linenos"> 574</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> -</span><span id="Tokenizer-575"><a href="#Tokenizer-575"><span class="linenos"> 575</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> -</span><span id="Tokenizer-576"><a href="#Tokenizer-576"><span class="linenos"> 576</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> -</span><span id="Tokenizer-577"><a href="#Tokenizer-577"><span class="linenos"> 577</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> -</span><span id="Tokenizer-578"><a href="#Tokenizer-578"><span class="linenos"> 578</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> -</span><span id="Tokenizer-579"><a href="#Tokenizer-579"><span class="linenos"> 579</span></a> <span class="c1"># Used for breaking a var like x'y' but nothing else the token type doesn't matter</span> -</span><span id="Tokenizer-580"><a href="#Tokenizer-580"><span class="linenos"> 580</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="Tokenizer-581"><a href="#Tokenizer-581"><span class="linenos"> 581</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="Tokenizer-582"><a href="#Tokenizer-582"><span class="linenos"> 582</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="Tokenizer-583"><a href="#Tokenizer-583"><span class="linenos"> 583</span></a> <span class="p">}</span> -</span><span id="Tokenizer-584"><a href="#Tokenizer-584"><span class="linenos"> 584</span></a> -</span><span id="Tokenizer-585"><a href="#Tokenizer-585"><span class="linenos"> 585</span></a> <span class="n">BIT_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-586"><a href="#Tokenizer-586"><span class="linenos"> 586</span></a> <span class="n">BYTE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-587"><a href="#Tokenizer-587"><span class="linenos"> 587</span></a> <span class="n">HEX_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-588"><a href="#Tokenizer-588"><span class="linenos"> 588</span></a> <span class="n">RAW_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-589"><a href="#Tokenizer-589"><span class="linenos"> 589</span></a> <span class="n">HEREDOC_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-590"><a href="#Tokenizer-590"><span class="linenos"> 590</span></a> <span class="n">UNICODE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-591"><a href="#Tokenizer-591"><span class="linenos"> 591</span></a> <span class="n">IDENTIFIERS</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="o">|</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="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="Tokenizer-592"><a href="#Tokenizer-592"><span class="linenos"> 592</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="Tokenizer-593"><a href="#Tokenizer-593"><span class="linenos"> 593</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="Tokenizer-594"><a href="#Tokenizer-594"><span class="linenos"> 594</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="Tokenizer-595"><a href="#Tokenizer-595"><span class="linenos"> 595</span></a> <span class="n">VAR_SINGLE_TOKENS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Tokenizer-596"><a href="#Tokenizer-596"><span class="linenos"> 596</span></a> -</span><span id="Tokenizer-597"><a href="#Tokenizer-597"><span class="linenos"> 597</span></a> <span class="c1"># Whether the heredoc tags follow the same lexical rules as unquoted identifiers</span> -</span><span id="Tokenizer-598"><a href="#Tokenizer-598"><span class="linenos"> 598</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-599"><a href="#Tokenizer-599"><span class="linenos"> 599</span></a> -</span><span id="Tokenizer-600"><a href="#Tokenizer-600"><span class="linenos"> 600</span></a> <span class="c1"># Token that we'll generate as a fallback if the heredoc prefix doesn't correspond to a heredoc</span> -</span><span id="Tokenizer-601"><a href="#Tokenizer-601"><span class="linenos"> 601</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> -</span><span id="Tokenizer-602"><a href="#Tokenizer-602"><span class="linenos"> 602</span></a> -</span><span id="Tokenizer-603"><a href="#Tokenizer-603"><span class="linenos"> 603</span></a> <span class="c1"># Autofilled</span> -</span><span id="Tokenizer-604"><a href="#Tokenizer-604"><span class="linenos"> 604</span></a> <span class="n">_COMMENTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-605"><a href="#Tokenizer-605"><span class="linenos"> 605</span></a> <span class="n">_FORMAT_STRINGS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">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="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-606"><a href="#Tokenizer-606"><span class="linenos"> 606</span></a> <span class="n">_IDENTIFIERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-607"><a href="#Tokenizer-607"><span class="linenos"> 607</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Tokenizer-608"><a href="#Tokenizer-608"><span class="linenos"> 608</span></a> <span class="n">_QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-609"><a href="#Tokenizer-609"><span class="linenos"> 609</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Tokenizer-610"><a href="#Tokenizer-610"><span class="linenos"> 610</span></a> <span class="n">_KEYWORD_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-611"><a href="#Tokenizer-611"><span class="linenos"> 611</span></a> <span class="n">_RS_TOKENIZER</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">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-612"><a href="#Tokenizer-612"><span class="linenos"> 612</span></a> -</span><span id="Tokenizer-613"><a href="#Tokenizer-613"><span class="linenos"> 613</span></a> <span class="n">KEYWORDS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-614"><a href="#Tokenizer-614"><span class="linenos"> 614</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="s2">%</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="Tokenizer-615"><a href="#Tokenizer-615"><span class="linenos"> 615</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">%</span><span class="se">}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="Tokenizer-616"><a href="#Tokenizer-616"><span class="linenos"> 616</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{{{</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="Tokenizer-617"><a href="#Tokenizer-617"><span class="linenos"> 617</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="se">}}}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> -</span><span id="Tokenizer-618"><a href="#Tokenizer-618"><span class="linenos"> 618</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> -</span><span id="Tokenizer-619"><a href="#Tokenizer-619"><span class="linenos"> 619</span></a> <span class="s2">"=="</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="Tokenizer-620"><a href="#Tokenizer-620"><span class="linenos"> 620</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> -</span><span id="Tokenizer-621"><a href="#Tokenizer-621"><span class="linenos"> 621</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> -</span><span id="Tokenizer-622"><a href="#Tokenizer-622"><span class="linenos"> 622</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="Tokenizer-623"><a href="#Tokenizer-623"><span class="linenos"> 623</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="Tokenizer-624"><a href="#Tokenizer-624"><span class="linenos"> 624</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="Tokenizer-625"><a href="#Tokenizer-625"><span class="linenos"> 625</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="Tokenizer-626"><a href="#Tokenizer-626"><span class="linenos"> 626</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">,</span> -</span><span id="Tokenizer-627"><a href="#Tokenizer-627"><span class="linenos"> 627</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> -</span><span id="Tokenizer-628"><a href="#Tokenizer-628"><span class="linenos"> 628</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-629"><a href="#Tokenizer-629"><span class="linenos"> 629</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> -</span><span id="Tokenizer-630"><a href="#Tokenizer-630"><span class="linenos"> 630</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> -</span><span id="Tokenizer-631"><a href="#Tokenizer-631"><span class="linenos"> 631</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-632"><a href="#Tokenizer-632"><span class="linenos"> 632</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-633"><a href="#Tokenizer-633"><span class="linenos"> 633</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-634"><a href="#Tokenizer-634"><span class="linenos"> 634</span></a> <span class="s2">"&&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">,</span> -</span><span id="Tokenizer-635"><a href="#Tokenizer-635"><span class="linenos"> 635</span></a> <span class="s2">"??"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">,</span> -</span><span id="Tokenizer-636"><a href="#Tokenizer-636"><span class="linenos"> 636</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> -</span><span id="Tokenizer-637"><a href="#Tokenizer-637"><span class="linenos"> 637</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> -</span><span id="Tokenizer-638"><a href="#Tokenizer-638"><span class="linenos"> 638</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> -</span><span id="Tokenizer-639"><a href="#Tokenizer-639"><span class="linenos"> 639</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Tokenizer-640"><a href="#Tokenizer-640"><span class="linenos"> 640</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> -</span><span id="Tokenizer-641"><a href="#Tokenizer-641"><span class="linenos"> 641</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> -</span><span id="Tokenizer-642"><a href="#Tokenizer-642"><span class="linenos"> 642</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> -</span><span id="Tokenizer-643"><a href="#Tokenizer-643"><span class="linenos"> 643</span></a> <span class="s2">"ASOF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> -</span><span id="Tokenizer-644"><a href="#Tokenizer-644"><span class="linenos"> 644</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="Tokenizer-645"><a href="#Tokenizer-645"><span class="linenos"> 645</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="Tokenizer-646"><a href="#Tokenizer-646"><span class="linenos"> 646</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="Tokenizer-647"><a href="#Tokenizer-647"><span class="linenos"> 647</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> -</span><span id="Tokenizer-648"><a href="#Tokenizer-648"><span class="linenos"> 648</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="Tokenizer-649"><a href="#Tokenizer-649"><span class="linenos"> 649</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> -</span><span id="Tokenizer-650"><a href="#Tokenizer-650"><span class="linenos"> 650</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> -</span><span id="Tokenizer-651"><a href="#Tokenizer-651"><span class="linenos"> 651</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> -</span><span id="Tokenizer-652"><a href="#Tokenizer-652"><span class="linenos"> 652</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> -</span><span id="Tokenizer-653"><a href="#Tokenizer-653"><span class="linenos"> 653</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="Tokenizer-654"><a href="#Tokenizer-654"><span class="linenos"> 654</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="Tokenizer-655"><a href="#Tokenizer-655"><span class="linenos"> 655</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="Tokenizer-656"><a href="#Tokenizer-656"><span class="linenos"> 656</span></a> <span class="s2">"CONNECT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">,</span> -</span><span id="Tokenizer-657"><a href="#Tokenizer-657"><span class="linenos"> 657</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="Tokenizer-658"><a href="#Tokenizer-658"><span class="linenos"> 658</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> -</span><span id="Tokenizer-659"><a href="#Tokenizer-659"><span class="linenos"> 659</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> -</span><span id="Tokenizer-660"><a href="#Tokenizer-660"><span class="linenos"> 660</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="Tokenizer-661"><a href="#Tokenizer-661"><span class="linenos"> 661</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> -</span><span id="Tokenizer-662"><a href="#Tokenizer-662"><span class="linenos"> 662</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="Tokenizer-663"><a href="#Tokenizer-663"><span class="linenos"> 663</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="Tokenizer-664"><a href="#Tokenizer-664"><span class="linenos"> 664</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="Tokenizer-665"><a href="#Tokenizer-665"><span class="linenos"> 665</span></a> <span class="s2">"CURRENT_USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> -</span><span id="Tokenizer-666"><a href="#Tokenizer-666"><span class="linenos"> 666</span></a> <span class="s2">"DATABASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> -</span><span id="Tokenizer-667"><a href="#Tokenizer-667"><span class="linenos"> 667</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="Tokenizer-668"><a href="#Tokenizer-668"><span class="linenos"> 668</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="Tokenizer-669"><a href="#Tokenizer-669"><span class="linenos"> 669</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> -</span><span id="Tokenizer-670"><a href="#Tokenizer-670"><span class="linenos"> 670</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="Tokenizer-671"><a href="#Tokenizer-671"><span class="linenos"> 671</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> -</span><span id="Tokenizer-672"><a href="#Tokenizer-672"><span class="linenos"> 672</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> -</span><span id="Tokenizer-673"><a href="#Tokenizer-673"><span class="linenos"> 673</span></a> <span class="s2">"DIV"</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="Tokenizer-674"><a href="#Tokenizer-674"><span class="linenos"> 674</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> -</span><span id="Tokenizer-675"><a href="#Tokenizer-675"><span class="linenos"> 675</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> -</span><span id="Tokenizer-676"><a href="#Tokenizer-676"><span class="linenos"> 676</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="Tokenizer-677"><a href="#Tokenizer-677"><span class="linenos"> 677</span></a> <span class="s2">"ENUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> -</span><span id="Tokenizer-678"><a href="#Tokenizer-678"><span class="linenos"> 678</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="Tokenizer-679"><a href="#Tokenizer-679"><span class="linenos"> 679</span></a> <span class="s2">"EXCEPT"</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="Tokenizer-680"><a href="#Tokenizer-680"><span class="linenos"> 680</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="Tokenizer-681"><a href="#Tokenizer-681"><span class="linenos"> 681</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> -</span><span id="Tokenizer-682"><a href="#Tokenizer-682"><span class="linenos"> 682</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="Tokenizer-683"><a href="#Tokenizer-683"><span class="linenos"> 683</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="Tokenizer-684"><a href="#Tokenizer-684"><span class="linenos"> 684</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="Tokenizer-685"><a href="#Tokenizer-685"><span class="linenos"> 685</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="Tokenizer-686"><a href="#Tokenizer-686"><span class="linenos"> 686</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="Tokenizer-687"><a href="#Tokenizer-687"><span class="linenos"> 687</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="Tokenizer-688"><a href="#Tokenizer-688"><span class="linenos"> 688</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> -</span><span id="Tokenizer-689"><a href="#Tokenizer-689"><span class="linenos"> 689</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> -</span><span id="Tokenizer-690"><a href="#Tokenizer-690"><span class="linenos"> 690</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="Tokenizer-691"><a href="#Tokenizer-691"><span class="linenos"> 691</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> -</span><span id="Tokenizer-692"><a href="#Tokenizer-692"><span class="linenos"> 692</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="Tokenizer-693"><a href="#Tokenizer-693"><span class="linenos"> 693</span></a> <span class="s2">"GEOMETRY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> -</span><span id="Tokenizer-694"><a href="#Tokenizer-694"><span class="linenos"> 694</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> -</span><span id="Tokenizer-695"><a href="#Tokenizer-695"><span class="linenos"> 695</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> -</span><span id="Tokenizer-696"><a href="#Tokenizer-696"><span class="linenos"> 696</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> -</span><span id="Tokenizer-697"><a href="#Tokenizer-697"><span class="linenos"> 697</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> -</span><span id="Tokenizer-698"><a href="#Tokenizer-698"><span class="linenos"> 698</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="Tokenizer-699"><a href="#Tokenizer-699"><span class="linenos"> 699</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> -</span><span id="Tokenizer-700"><a href="#Tokenizer-700"><span class="linenos"> 700</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Tokenizer-701"><a href="#Tokenizer-701"><span class="linenos"> 701</span></a> <span class="s2">"INET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> -</span><span id="Tokenizer-702"><a href="#Tokenizer-702"><span class="linenos"> 702</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="Tokenizer-703"><a href="#Tokenizer-703"><span class="linenos"> 703</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> -</span><span id="Tokenizer-704"><a href="#Tokenizer-704"><span class="linenos"> 704</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="Tokenizer-705"><a href="#Tokenizer-705"><span class="linenos"> 705</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="Tokenizer-706"><a href="#Tokenizer-706"><span class="linenos"> 706</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> -</span><span id="Tokenizer-707"><a href="#Tokenizer-707"><span class="linenos"> 707</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> -</span><span id="Tokenizer-708"><a href="#Tokenizer-708"><span class="linenos"> 708</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="Tokenizer-709"><a href="#Tokenizer-709"><span class="linenos"> 709</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> -</span><span id="Tokenizer-710"><a href="#Tokenizer-710"><span class="linenos"> 710</span></a> <span class="s2">"KEEP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> -</span><span id="Tokenizer-711"><a href="#Tokenizer-711"><span class="linenos"> 711</span></a> <span class="s2">"KILL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> -</span><span id="Tokenizer-712"><a href="#Tokenizer-712"><span class="linenos"> 712</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> -</span><span id="Tokenizer-713"><a href="#Tokenizer-713"><span class="linenos"> 713</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Tokenizer-714"><a href="#Tokenizer-714"><span class="linenos"> 714</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="Tokenizer-715"><a href="#Tokenizer-715"><span class="linenos"> 715</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> -</span><span id="Tokenizer-716"><a href="#Tokenizer-716"><span class="linenos"> 716</span></a> <span class="s2">"LOAD"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> -</span><span id="Tokenizer-717"><a href="#Tokenizer-717"><span class="linenos"> 717</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> -</span><span id="Tokenizer-718"><a href="#Tokenizer-718"><span class="linenos"> 718</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="Tokenizer-719"><a href="#Tokenizer-719"><span class="linenos"> 719</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Tokenizer-720"><a href="#Tokenizer-720"><span class="linenos"> 720</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="Tokenizer-721"><a href="#Tokenizer-721"><span class="linenos"> 721</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="Tokenizer-722"><a href="#Tokenizer-722"><span class="linenos"> 722</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> -</span><span id="Tokenizer-723"><a href="#Tokenizer-723"><span class="linenos"> 723</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="Tokenizer-724"><a href="#Tokenizer-724"><span class="linenos"> 724</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="Tokenizer-725"><a href="#Tokenizer-725"><span class="linenos"> 725</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Tokenizer-726"><a href="#Tokenizer-726"><span class="linenos"> 726</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> -</span><span id="Tokenizer-727"><a href="#Tokenizer-727"><span class="linenos"> 727</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> -</span><span id="Tokenizer-728"><a href="#Tokenizer-728"><span class="linenos"> 728</span></a> <span class="s2">"XOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> -</span><span id="Tokenizer-729"><a href="#Tokenizer-729"><span class="linenos"> 729</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> -</span><span id="Tokenizer-730"><a href="#Tokenizer-730"><span class="linenos"> 730</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="Tokenizer-731"><a href="#Tokenizer-731"><span class="linenos"> 731</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="Tokenizer-732"><a href="#Tokenizer-732"><span class="linenos"> 732</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> -</span><span id="Tokenizer-733"><a href="#Tokenizer-733"><span class="linenos"> 733</span></a> <span class="s2">"OVERLAPS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> -</span><span id="Tokenizer-734"><a href="#Tokenizer-734"><span class="linenos"> 734</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> -</span><span id="Tokenizer-735"><a href="#Tokenizer-735"><span class="linenos"> 735</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> -</span><span id="Tokenizer-736"><a href="#Tokenizer-736"><span class="linenos"> 736</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="Tokenizer-737"><a href="#Tokenizer-737"><span class="linenos"> 737</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="Tokenizer-738"><a href="#Tokenizer-738"><span class="linenos"> 738</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="Tokenizer-739"><a href="#Tokenizer-739"><span class="linenos"> 739</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="Tokenizer-740"><a href="#Tokenizer-740"><span class="linenos"> 740</span></a> <span class="s2">"PIVOT"</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="Tokenizer-741"><a href="#Tokenizer-741"><span class="linenos"> 741</span></a> <span class="s2">"PRAGMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> -</span><span id="Tokenizer-742"><a href="#Tokenizer-742"><span class="linenos"> 742</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="Tokenizer-743"><a href="#Tokenizer-743"><span class="linenos"> 743</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="Tokenizer-744"><a href="#Tokenizer-744"><span class="linenos"> 744</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> -</span><span id="Tokenizer-745"><a href="#Tokenizer-745"><span class="linenos"> 745</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="Tokenizer-746"><a href="#Tokenizer-746"><span class="linenos"> 746</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> -</span><span id="Tokenizer-747"><a href="#Tokenizer-747"><span class="linenos"> 747</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Tokenizer-748"><a href="#Tokenizer-748"><span class="linenos"> 748</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Tokenizer-749"><a href="#Tokenizer-749"><span class="linenos"> 749</span></a> <span class="s2">"RETURNING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">,</span> -</span><span id="Tokenizer-750"><a href="#Tokenizer-750"><span class="linenos"> 750</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="Tokenizer-751"><a href="#Tokenizer-751"><span class="linenos"> 751</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Tokenizer-752"><a href="#Tokenizer-752"><span class="linenos"> 752</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Tokenizer-753"><a href="#Tokenizer-753"><span class="linenos"> 753</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> -</span><span id="Tokenizer-754"><a href="#Tokenizer-754"><span class="linenos"> 754</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> -</span><span id="Tokenizer-755"><a href="#Tokenizer-755"><span class="linenos"> 755</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="Tokenizer-756"><a href="#Tokenizer-756"><span class="linenos"> 756</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="Tokenizer-757"><a href="#Tokenizer-757"><span class="linenos"> 757</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="Tokenizer-758"><a href="#Tokenizer-758"><span class="linenos"> 758</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> -</span><span id="Tokenizer-759"><a href="#Tokenizer-759"><span class="linenos"> 759</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Tokenizer-760"><a href="#Tokenizer-760"><span class="linenos"> 760</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="Tokenizer-761"><a href="#Tokenizer-761"><span class="linenos"> 761</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> -</span><span id="Tokenizer-762"><a href="#Tokenizer-762"><span class="linenos"> 762</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="Tokenizer-763"><a href="#Tokenizer-763"><span class="linenos"> 763</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> -</span><span id="Tokenizer-764"><a href="#Tokenizer-764"><span class="linenos"> 764</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> -</span><span id="Tokenizer-765"><a href="#Tokenizer-765"><span class="linenos"> 765</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> -</span><span id="Tokenizer-766"><a href="#Tokenizer-766"><span class="linenos"> 766</span></a> <span class="s2">"START WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">,</span> -</span><span id="Tokenizer-767"><a href="#Tokenizer-767"><span class="linenos"> 767</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Tokenizer-768"><a href="#Tokenizer-768"><span class="linenos"> 768</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="Tokenizer-769"><a href="#Tokenizer-769"><span class="linenos"> 769</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Tokenizer-770"><a href="#Tokenizer-770"><span class="linenos"> 770</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Tokenizer-771"><a href="#Tokenizer-771"><span class="linenos"> 771</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> -</span><span id="Tokenizer-772"><a href="#Tokenizer-772"><span class="linenos"> 772</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="Tokenizer-773"><a href="#Tokenizer-773"><span class="linenos"> 773</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> -</span><span id="Tokenizer-774"><a href="#Tokenizer-774"><span class="linenos"> 774</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="Tokenizer-775"><a href="#Tokenizer-775"><span class="linenos"> 775</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> -</span><span id="Tokenizer-776"><a href="#Tokenizer-776"><span class="linenos"> 776</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="Tokenizer-777"><a href="#Tokenizer-777"><span class="linenos"> 777</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="Tokenizer-778"><a href="#Tokenizer-778"><span class="linenos"> 778</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> -</span><span id="Tokenizer-779"><a href="#Tokenizer-779"><span class="linenos"> 779</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> -</span><span id="Tokenizer-780"><a href="#Tokenizer-780"><span class="linenos"> 780</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> -</span><span id="Tokenizer-781"><a href="#Tokenizer-781"><span class="linenos"> 781</span></a> <span class="s2">"UUID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> -</span><span id="Tokenizer-782"><a href="#Tokenizer-782"><span class="linenos"> 782</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="Tokenizer-783"><a href="#Tokenizer-783"><span class="linenos"> 783</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="Tokenizer-784"><a href="#Tokenizer-784"><span class="linenos"> 784</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="Tokenizer-785"><a href="#Tokenizer-785"><span class="linenos"> 785</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> -</span><span id="Tokenizer-786"><a href="#Tokenizer-786"><span class="linenos"> 786</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> -</span><span id="Tokenizer-787"><a href="#Tokenizer-787"><span class="linenos"> 787</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Tokenizer-788"><a href="#Tokenizer-788"><span class="linenos"> 788</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> -</span><span id="Tokenizer-789"><a href="#Tokenizer-789"><span class="linenos"> 789</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="Tokenizer-790"><a href="#Tokenizer-790"><span class="linenos"> 790</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="Tokenizer-791"><a href="#Tokenizer-791"><span class="linenos"> 791</span></a> <span class="s2">"BIT"</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="Tokenizer-792"><a href="#Tokenizer-792"><span class="linenos"> 792</span></a> <span class="s2">"BOOL"</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="Tokenizer-793"><a href="#Tokenizer-793"><span class="linenos"> 793</span></a> <span class="s2">"BOOLEAN"</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="Tokenizer-794"><a href="#Tokenizer-794"><span class="linenos"> 794</span></a> <span class="s2">"BYTE"</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="Tokenizer-795"><a href="#Tokenizer-795"><span class="linenos"> 795</span></a> <span class="s2">"MEDIUMINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> -</span><span id="Tokenizer-796"><a href="#Tokenizer-796"><span class="linenos"> 796</span></a> <span class="s2">"INT1"</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="Tokenizer-797"><a href="#Tokenizer-797"><span class="linenos"> 797</span></a> <span class="s2">"TINYINT"</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="Tokenizer-798"><a href="#Tokenizer-798"><span class="linenos"> 798</span></a> <span class="s2">"INT16"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-799"><a href="#Tokenizer-799"><span class="linenos"> 799</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-800"><a href="#Tokenizer-800"><span class="linenos"> 800</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-801"><a href="#Tokenizer-801"><span class="linenos"> 801</span></a> <span class="s2">"INT128"</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="Tokenizer-802"><a href="#Tokenizer-802"><span class="linenos"> 802</span></a> <span class="s2">"HUGEINT"</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="Tokenizer-803"><a href="#Tokenizer-803"><span class="linenos"> 803</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-804"><a href="#Tokenizer-804"><span class="linenos"> 804</span></a> <span class="s2">"INTEGER"</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="Tokenizer-805"><a href="#Tokenizer-805"><span class="linenos"> 805</span></a> <span class="s2">"INT"</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="Tokenizer-806"><a href="#Tokenizer-806"><span class="linenos"> 806</span></a> <span class="s2">"INT4"</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="Tokenizer-807"><a href="#Tokenizer-807"><span class="linenos"> 807</span></a> <span class="s2">"INT32"</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="Tokenizer-808"><a href="#Tokenizer-808"><span class="linenos"> 808</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Tokenizer-809"><a href="#Tokenizer-809"><span class="linenos"> 809</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Tokenizer-810"><a href="#Tokenizer-810"><span class="linenos"> 810</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Tokenizer-811"><a href="#Tokenizer-811"><span class="linenos"> 811</span></a> <span class="s2">"INT8"</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="Tokenizer-812"><a href="#Tokenizer-812"><span class="linenos"> 812</span></a> <span class="s2">"UINT"</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="Tokenizer-813"><a href="#Tokenizer-813"><span class="linenos"> 813</span></a> <span class="s2">"DEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-814"><a href="#Tokenizer-814"><span class="linenos"> 814</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-815"><a href="#Tokenizer-815"><span class="linenos"> 815</span></a> <span class="s2">"BIGDECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-816"><a href="#Tokenizer-816"><span class="linenos"> 816</span></a> <span class="s2">"BIGNUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-817"><a href="#Tokenizer-817"><span class="linenos"> 817</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="Tokenizer-818"><a href="#Tokenizer-818"><span class="linenos"> 818</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> -</span><span id="Tokenizer-819"><a href="#Tokenizer-819"><span class="linenos"> 819</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-820"><a href="#Tokenizer-820"><span class="linenos"> 820</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-821"><a href="#Tokenizer-821"><span class="linenos"> 821</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-822"><a href="#Tokenizer-822"><span class="linenos"> 822</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Tokenizer-823"><a href="#Tokenizer-823"><span class="linenos"> 823</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Tokenizer-824"><a href="#Tokenizer-824"><span class="linenos"> 824</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Tokenizer-825"><a href="#Tokenizer-825"><span class="linenos"> 825</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Tokenizer-826"><a href="#Tokenizer-826"><span class="linenos"> 826</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Tokenizer-827"><a href="#Tokenizer-827"><span class="linenos"> 827</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Tokenizer-828"><a href="#Tokenizer-828"><span class="linenos"> 828</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> -</span><span id="Tokenizer-829"><a href="#Tokenizer-829"><span class="linenos"> 829</span></a> <span class="s2">"JSONB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> -</span><span id="Tokenizer-830"><a href="#Tokenizer-830"><span class="linenos"> 830</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="Tokenizer-831"><a href="#Tokenizer-831"><span class="linenos"> 831</span></a> <span class="s2">"CHARACTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="Tokenizer-832"><a href="#Tokenizer-832"><span class="linenos"> 832</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-833"><a href="#Tokenizer-833"><span class="linenos"> 833</span></a> <span class="s2">"VARCHAR"</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="Tokenizer-834"><a href="#Tokenizer-834"><span class="linenos"> 834</span></a> <span class="s2">"VARCHAR2"</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="Tokenizer-835"><a href="#Tokenizer-835"><span class="linenos"> 835</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-836"><a href="#Tokenizer-836"><span class="linenos"> 836</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-837"><a href="#Tokenizer-837"><span class="linenos"> 837</span></a> <span class="s2">"BPCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-838"><a href="#Tokenizer-838"><span class="linenos"> 838</span></a> <span class="s2">"STR"</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="Tokenizer-839"><a href="#Tokenizer-839"><span class="linenos"> 839</span></a> <span class="s2">"STRING"</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="Tokenizer-840"><a href="#Tokenizer-840"><span class="linenos"> 840</span></a> <span class="s2">"TEXT"</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="Tokenizer-841"><a href="#Tokenizer-841"><span class="linenos"> 841</span></a> <span class="s2">"LONGTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> -</span><span id="Tokenizer-842"><a href="#Tokenizer-842"><span class="linenos"> 842</span></a> <span class="s2">"MEDIUMTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> -</span><span id="Tokenizer-843"><a href="#Tokenizer-843"><span class="linenos"> 843</span></a> <span class="s2">"TINYTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> -</span><span id="Tokenizer-844"><a href="#Tokenizer-844"><span class="linenos"> 844</span></a> <span class="s2">"CLOB"</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="Tokenizer-845"><a href="#Tokenizer-845"><span class="linenos"> 845</span></a> <span class="s2">"LONGVARCHAR"</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="Tokenizer-846"><a href="#Tokenizer-846"><span class="linenos"> 846</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> -</span><span id="Tokenizer-847"><a href="#Tokenizer-847"><span class="linenos"> 847</span></a> <span class="s2">"BLOB"</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="Tokenizer-848"><a href="#Tokenizer-848"><span class="linenos"> 848</span></a> <span class="s2">"LONGBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> -</span><span id="Tokenizer-849"><a href="#Tokenizer-849"><span class="linenos"> 849</span></a> <span class="s2">"MEDIUMBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> -</span><span id="Tokenizer-850"><a href="#Tokenizer-850"><span class="linenos"> 850</span></a> <span class="s2">"TINYBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> -</span><span id="Tokenizer-851"><a href="#Tokenizer-851"><span class="linenos"> 851</span></a> <span class="s2">"BYTEA"</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="Tokenizer-852"><a href="#Tokenizer-852"><span class="linenos"> 852</span></a> <span class="s2">"VARBINARY"</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="Tokenizer-853"><a href="#Tokenizer-853"><span class="linenos"> 853</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="Tokenizer-854"><a href="#Tokenizer-854"><span class="linenos"> 854</span></a> <span class="s2">"TIMETZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> -</span><span id="Tokenizer-855"><a href="#Tokenizer-855"><span class="linenos"> 855</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Tokenizer-856"><a href="#Tokenizer-856"><span class="linenos"> 856</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Tokenizer-857"><a href="#Tokenizer-857"><span class="linenos"> 857</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Tokenizer-858"><a href="#Tokenizer-858"><span class="linenos"> 858</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Tokenizer-859"><a href="#Tokenizer-859"><span class="linenos"> 859</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="Tokenizer-860"><a href="#Tokenizer-860"><span class="linenos"> 860</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> -</span><span id="Tokenizer-861"><a href="#Tokenizer-861"><span class="linenos"> 861</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="Tokenizer-862"><a href="#Tokenizer-862"><span class="linenos"> 862</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="Tokenizer-863"><a href="#Tokenizer-863"><span class="linenos"> 863</span></a> <span class="s2">"INT4RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> -</span><span id="Tokenizer-864"><a href="#Tokenizer-864"><span class="linenos"> 864</span></a> <span class="s2">"INT4MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-865"><a href="#Tokenizer-865"><span class="linenos"> 865</span></a> <span class="s2">"INT8RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> -</span><span id="Tokenizer-866"><a href="#Tokenizer-866"><span class="linenos"> 866</span></a> <span class="s2">"INT8MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-867"><a href="#Tokenizer-867"><span class="linenos"> 867</span></a> <span class="s2">"NUMRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-868"><a href="#Tokenizer-868"><span class="linenos"> 868</span></a> <span class="s2">"NUMMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-869"><a href="#Tokenizer-869"><span class="linenos"> 869</span></a> <span class="s2">"TSRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-870"><a href="#Tokenizer-870"><span class="linenos"> 870</span></a> <span class="s2">"TSMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-871"><a href="#Tokenizer-871"><span class="linenos"> 871</span></a> <span class="s2">"TSTZRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-872"><a href="#Tokenizer-872"><span class="linenos"> 872</span></a> <span class="s2">"TSTZMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-873"><a href="#Tokenizer-873"><span class="linenos"> 873</span></a> <span class="s2">"DATERANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> -</span><span id="Tokenizer-874"><a href="#Tokenizer-874"><span class="linenos"> 874</span></a> <span class="s2">"DATEMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> -</span><span id="Tokenizer-875"><a href="#Tokenizer-875"><span class="linenos"> 875</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="Tokenizer-876"><a href="#Tokenizer-876"><span class="linenos"> 876</span></a> <span class="s2">"STRUCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> -</span><span id="Tokenizer-877"><a href="#Tokenizer-877"><span class="linenos"> 877</span></a> <span class="s2">"SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> -</span><span id="Tokenizer-878"><a href="#Tokenizer-878"><span class="linenos"> 878</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> -</span><span id="Tokenizer-879"><a href="#Tokenizer-879"><span class="linenos"> 879</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> -</span><span id="Tokenizer-880"><a href="#Tokenizer-880"><span class="linenos"> 880</span></a> <span class="s2">"ANALYZE"</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="Tokenizer-881"><a href="#Tokenizer-881"><span class="linenos"> 881</span></a> <span class="s2">"CALL"</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="Tokenizer-882"><a href="#Tokenizer-882"><span class="linenos"> 882</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> -</span><span id="Tokenizer-883"><a href="#Tokenizer-883"><span class="linenos"> 883</span></a> <span class="s2">"EXPLAIN"</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="Tokenizer-884"><a href="#Tokenizer-884"><span class="linenos"> 884</span></a> <span class="s2">"GRANT"</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="Tokenizer-885"><a href="#Tokenizer-885"><span class="linenos"> 885</span></a> <span class="s2">"OPTIMIZE"</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="Tokenizer-886"><a href="#Tokenizer-886"><span class="linenos"> 886</span></a> <span class="s2">"PREPARE"</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="Tokenizer-887"><a href="#Tokenizer-887"><span class="linenos"> 887</span></a> <span class="s2">"VACUUM"</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="Tokenizer-888"><a href="#Tokenizer-888"><span class="linenos"> 888</span></a> <span class="s2">"USER-DEFINED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> -</span><span id="Tokenizer-889"><a href="#Tokenizer-889"><span class="linenos"> 889</span></a> <span class="s2">"FOR VERSION"</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="Tokenizer-890"><a href="#Tokenizer-890"><span class="linenos"> 890</span></a> <span class="s2">"FOR TIMESTAMP"</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="Tokenizer-891"><a href="#Tokenizer-891"><span class="linenos"> 891</span></a> <span class="p">}</span> -</span><span id="Tokenizer-892"><a href="#Tokenizer-892"><span class="linenos"> 892</span></a> -</span><span id="Tokenizer-893"><a href="#Tokenizer-893"><span class="linenos"> 893</span></a> <span class="n">WHITE_SPACE</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-894"><a href="#Tokenizer-894"><span class="linenos"> 894</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="Tokenizer-895"><a href="#Tokenizer-895"><span class="linenos"> 895</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="Tokenizer-896"><a href="#Tokenizer-896"><span class="linenos"> 896</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="Tokenizer-897"><a href="#Tokenizer-897"><span class="linenos"> 897</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="Tokenizer-898"><a href="#Tokenizer-898"><span class="linenos"> 898</span></a> <span class="p">}</span> -</span><span id="Tokenizer-899"><a href="#Tokenizer-899"><span class="linenos"> 899</span></a> -</span><span id="Tokenizer-900"><a href="#Tokenizer-900"><span class="linenos"> 900</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-901"><a href="#Tokenizer-901"><span class="linenos"> 901</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-902"><a href="#Tokenizer-902"><span class="linenos"> 902</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="Tokenizer-903"><a href="#Tokenizer-903"><span class="linenos"> 903</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="Tokenizer-904"><a href="#Tokenizer-904"><span class="linenos"> 904</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="Tokenizer-905"><a href="#Tokenizer-905"><span class="linenos"> 905</span></a> <span class="p">}</span> -</span><span id="Tokenizer-906"><a href="#Tokenizer-906"><span class="linenos"> 906</span></a> -</span><span id="Tokenizer-907"><a href="#Tokenizer-907"><span class="linenos"> 907</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer-551"><a href="#Tokenizer-551"><span class="linenos"> 551</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> +</span><span id="Tokenizer-552"><a href="#Tokenizer-552"><span class="linenos"> 552</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-553"><a href="#Tokenizer-553"><span class="linenos"> 553</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> +</span><span id="Tokenizer-554"><a href="#Tokenizer-554"><span class="linenos"> 554</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> +</span><span id="Tokenizer-555"><a href="#Tokenizer-555"><span class="linenos"> 555</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> +</span><span id="Tokenizer-556"><a href="#Tokenizer-556"><span class="linenos"> 556</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> +</span><span id="Tokenizer-557"><a href="#Tokenizer-557"><span class="linenos"> 557</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> +</span><span id="Tokenizer-558"><a href="#Tokenizer-558"><span class="linenos"> 558</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> +</span><span id="Tokenizer-559"><a href="#Tokenizer-559"><span class="linenos"> 559</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> +</span><span id="Tokenizer-560"><a href="#Tokenizer-560"><span class="linenos"> 560</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> +</span><span id="Tokenizer-561"><a href="#Tokenizer-561"><span class="linenos"> 561</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> +</span><span id="Tokenizer-562"><a href="#Tokenizer-562"><span class="linenos"> 562</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> +</span><span id="Tokenizer-563"><a href="#Tokenizer-563"><span class="linenos"> 563</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> +</span><span id="Tokenizer-564"><a href="#Tokenizer-564"><span class="linenos"> 564</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> +</span><span id="Tokenizer-565"><a href="#Tokenizer-565"><span class="linenos"> 565</span></a> <span class="s2">"="</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="Tokenizer-566"><a href="#Tokenizer-566"><span class="linenos"> 566</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="Tokenizer-567"><a href="#Tokenizer-567"><span class="linenos"> 567</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="Tokenizer-568"><a href="#Tokenizer-568"><span class="linenos"> 568</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> +</span><span id="Tokenizer-569"><a href="#Tokenizer-569"><span class="linenos"> 569</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="Tokenizer-570"><a href="#Tokenizer-570"><span class="linenos"> 570</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> +</span><span id="Tokenizer-571"><a href="#Tokenizer-571"><span class="linenos"> 571</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> +</span><span id="Tokenizer-572"><a href="#Tokenizer-572"><span class="linenos"> 572</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> +</span><span id="Tokenizer-573"><a href="#Tokenizer-573"><span class="linenos"> 573</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> +</span><span id="Tokenizer-574"><a href="#Tokenizer-574"><span class="linenos"> 574</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> +</span><span id="Tokenizer-575"><a href="#Tokenizer-575"><span class="linenos"> 575</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> +</span><span id="Tokenizer-576"><a href="#Tokenizer-576"><span class="linenos"> 576</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> +</span><span id="Tokenizer-577"><a href="#Tokenizer-577"><span class="linenos"> 577</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> +</span><span id="Tokenizer-578"><a href="#Tokenizer-578"><span class="linenos"> 578</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="Tokenizer-579"><a href="#Tokenizer-579"><span class="linenos"> 579</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> +</span><span id="Tokenizer-580"><a href="#Tokenizer-580"><span class="linenos"> 580</span></a> <span class="c1"># Used for breaking a var like x'y' but nothing else the token type doesn't matter</span> +</span><span id="Tokenizer-581"><a href="#Tokenizer-581"><span class="linenos"> 581</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="Tokenizer-582"><a href="#Tokenizer-582"><span class="linenos"> 582</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="Tokenizer-583"><a href="#Tokenizer-583"><span class="linenos"> 583</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="Tokenizer-584"><a href="#Tokenizer-584"><span class="linenos"> 584</span></a> <span class="p">}</span> +</span><span id="Tokenizer-585"><a href="#Tokenizer-585"><span class="linenos"> 585</span></a> +</span><span id="Tokenizer-586"><a href="#Tokenizer-586"><span class="linenos"> 586</span></a> <span class="n">BIT_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-587"><a href="#Tokenizer-587"><span class="linenos"> 587</span></a> <span class="n">BYTE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-588"><a href="#Tokenizer-588"><span class="linenos"> 588</span></a> <span class="n">HEX_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-589"><a href="#Tokenizer-589"><span class="linenos"> 589</span></a> <span class="n">RAW_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-590"><a href="#Tokenizer-590"><span class="linenos"> 590</span></a> <span class="n">HEREDOC_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-591"><a href="#Tokenizer-591"><span class="linenos"> 591</span></a> <span class="n">UNICODE_STRINGS</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="o">|</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="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-592"><a href="#Tokenizer-592"><span class="linenos"> 592</span></a> <span class="n">IDENTIFIERS</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="o">|</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="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="Tokenizer-593"><a href="#Tokenizer-593"><span class="linenos"> 593</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="Tokenizer-594"><a href="#Tokenizer-594"><span class="linenos"> 594</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">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="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="Tokenizer-595"><a href="#Tokenizer-595"><span class="linenos"> 595</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="Tokenizer-596"><a href="#Tokenizer-596"><span class="linenos"> 596</span></a> <span class="n">VAR_SINGLE_TOKENS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Tokenizer-597"><a href="#Tokenizer-597"><span class="linenos"> 597</span></a> +</span><span id="Tokenizer-598"><a href="#Tokenizer-598"><span class="linenos"> 598</span></a> <span class="c1"># Whether the heredoc tags follow the same lexical rules as unquoted identifiers</span> +</span><span id="Tokenizer-599"><a href="#Tokenizer-599"><span class="linenos"> 599</span></a> <span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-600"><a href="#Tokenizer-600"><span class="linenos"> 600</span></a> +</span><span id="Tokenizer-601"><a href="#Tokenizer-601"><span class="linenos"> 601</span></a> <span class="c1"># Token that we'll generate as a fallback if the heredoc prefix doesn't correspond to a heredoc</span> +</span><span id="Tokenizer-602"><a href="#Tokenizer-602"><span class="linenos"> 602</span></a> <span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> +</span><span id="Tokenizer-603"><a href="#Tokenizer-603"><span class="linenos"> 603</span></a> +</span><span id="Tokenizer-604"><a href="#Tokenizer-604"><span class="linenos"> 604</span></a> <span class="c1"># Autofilled</span> +</span><span id="Tokenizer-605"><a href="#Tokenizer-605"><span class="linenos"> 605</span></a> <span class="n">_COMMENTS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Tokenizer-606"><a href="#Tokenizer-606"><span class="linenos"> 606</span></a> <span class="n">_FORMAT_STRINGS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">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="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Tokenizer-607"><a href="#Tokenizer-607"><span class="linenos"> 607</span></a> <span class="n">_IDENTIFIERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Tokenizer-608"><a href="#Tokenizer-608"><span class="linenos"> 608</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Tokenizer-609"><a href="#Tokenizer-609"><span class="linenos"> 609</span></a> <span class="n">_QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Tokenizer-610"><a href="#Tokenizer-610"><span class="linenos"> 610</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Tokenizer-611"><a href="#Tokenizer-611"><span class="linenos"> 611</span></a> <span class="n">_KEYWORD_TRIE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Tokenizer-612"><a href="#Tokenizer-612"><span class="linenos"> 612</span></a> <span class="n">_RS_TOKENIZER</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">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-613"><a href="#Tokenizer-613"><span class="linenos"> 613</span></a> +</span><span id="Tokenizer-614"><a href="#Tokenizer-614"><span class="linenos"> 614</span></a> <span class="n">KEYWORDS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-615"><a href="#Tokenizer-615"><span class="linenos"> 615</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="s2">%</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="Tokenizer-616"><a href="#Tokenizer-616"><span class="linenos"> 616</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">%</span><span class="se">}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="Tokenizer-617"><a href="#Tokenizer-617"><span class="linenos"> 617</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="se">{{{{</span><span class="si">{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="Tokenizer-618"><a href="#Tokenizer-618"><span class="linenos"> 618</span></a> <span class="o">**</span><span class="p">{</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="se">}}}}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)},</span> +</span><span id="Tokenizer-619"><a href="#Tokenizer-619"><span class="linenos"> 619</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> +</span><span id="Tokenizer-620"><a href="#Tokenizer-620"><span class="linenos"> 620</span></a> <span class="s2">"=="</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="Tokenizer-621"><a href="#Tokenizer-621"><span class="linenos"> 621</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> +</span><span id="Tokenizer-622"><a href="#Tokenizer-622"><span class="linenos"> 622</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> +</span><span id="Tokenizer-623"><a href="#Tokenizer-623"><span class="linenos"> 623</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="Tokenizer-624"><a href="#Tokenizer-624"><span class="linenos"> 624</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> +</span><span id="Tokenizer-625"><a href="#Tokenizer-625"><span class="linenos"> 625</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="Tokenizer-626"><a href="#Tokenizer-626"><span class="linenos"> 626</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="Tokenizer-627"><a href="#Tokenizer-627"><span class="linenos"> 627</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON_EQ</span><span class="p">,</span> +</span><span id="Tokenizer-628"><a href="#Tokenizer-628"><span class="linenos"> 628</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> +</span><span id="Tokenizer-629"><a href="#Tokenizer-629"><span class="linenos"> 629</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-630"><a href="#Tokenizer-630"><span class="linenos"> 630</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> +</span><span id="Tokenizer-631"><a href="#Tokenizer-631"><span class="linenos"> 631</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> +</span><span id="Tokenizer-632"><a href="#Tokenizer-632"><span class="linenos"> 632</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-633"><a href="#Tokenizer-633"><span class="linenos"> 633</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-634"><a href="#Tokenizer-634"><span class="linenos"> 634</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-635"><a href="#Tokenizer-635"><span class="linenos"> 635</span></a> <span class="s2">"&&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">,</span> +</span><span id="Tokenizer-636"><a href="#Tokenizer-636"><span class="linenos"> 636</span></a> <span class="s2">"??"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DQMARK</span><span class="p">,</span> +</span><span id="Tokenizer-637"><a href="#Tokenizer-637"><span class="linenos"> 637</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> +</span><span id="Tokenizer-638"><a href="#Tokenizer-638"><span class="linenos"> 638</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> +</span><span id="Tokenizer-639"><a href="#Tokenizer-639"><span class="linenos"> 639</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> +</span><span id="Tokenizer-640"><a href="#Tokenizer-640"><span class="linenos"> 640</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Tokenizer-641"><a href="#Tokenizer-641"><span class="linenos"> 641</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> +</span><span id="Tokenizer-642"><a href="#Tokenizer-642"><span class="linenos"> 642</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> +</span><span id="Tokenizer-643"><a href="#Tokenizer-643"><span class="linenos"> 643</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> +</span><span id="Tokenizer-644"><a href="#Tokenizer-644"><span class="linenos"> 644</span></a> <span class="s2">"ASOF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASOF</span><span class="p">,</span> +</span><span id="Tokenizer-645"><a href="#Tokenizer-645"><span class="linenos"> 645</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="Tokenizer-646"><a href="#Tokenizer-646"><span class="linenos"> 646</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="Tokenizer-647"><a href="#Tokenizer-647"><span class="linenos"> 647</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="Tokenizer-648"><a href="#Tokenizer-648"><span class="linenos"> 648</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> +</span><span id="Tokenizer-649"><a href="#Tokenizer-649"><span class="linenos"> 649</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="Tokenizer-650"><a href="#Tokenizer-650"><span class="linenos"> 650</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> +</span><span id="Tokenizer-651"><a href="#Tokenizer-651"><span class="linenos"> 651</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> +</span><span id="Tokenizer-652"><a href="#Tokenizer-652"><span class="linenos"> 652</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> +</span><span id="Tokenizer-653"><a href="#Tokenizer-653"><span class="linenos"> 653</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> +</span><span id="Tokenizer-654"><a href="#Tokenizer-654"><span class="linenos"> 654</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="Tokenizer-655"><a href="#Tokenizer-655"><span class="linenos"> 655</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="Tokenizer-656"><a href="#Tokenizer-656"><span class="linenos"> 656</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="Tokenizer-657"><a href="#Tokenizer-657"><span class="linenos"> 657</span></a> <span class="s2">"CONNECT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONNECT_BY</span><span class="p">,</span> +</span><span id="Tokenizer-658"><a href="#Tokenizer-658"><span class="linenos"> 658</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="Tokenizer-659"><a href="#Tokenizer-659"><span class="linenos"> 659</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COPY</span><span class="p">,</span> +</span><span id="Tokenizer-660"><a href="#Tokenizer-660"><span class="linenos"> 660</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> +</span><span id="Tokenizer-661"><a href="#Tokenizer-661"><span class="linenos"> 661</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="Tokenizer-662"><a href="#Tokenizer-662"><span class="linenos"> 662</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> +</span><span id="Tokenizer-663"><a href="#Tokenizer-663"><span class="linenos"> 663</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="Tokenizer-664"><a href="#Tokenizer-664"><span class="linenos"> 664</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="Tokenizer-665"><a href="#Tokenizer-665"><span class="linenos"> 665</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="Tokenizer-666"><a href="#Tokenizer-666"><span class="linenos"> 666</span></a> <span class="s2">"CURRENT_USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_USER</span><span class="p">,</span> +</span><span id="Tokenizer-667"><a href="#Tokenizer-667"><span class="linenos"> 667</span></a> <span class="s2">"DATABASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATABASE</span><span class="p">,</span> +</span><span id="Tokenizer-668"><a href="#Tokenizer-668"><span class="linenos"> 668</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="Tokenizer-669"><a href="#Tokenizer-669"><span class="linenos"> 669</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="Tokenizer-670"><a href="#Tokenizer-670"><span class="linenos"> 670</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> +</span><span id="Tokenizer-671"><a href="#Tokenizer-671"><span class="linenos"> 671</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="Tokenizer-672"><a href="#Tokenizer-672"><span class="linenos"> 672</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> +</span><span id="Tokenizer-673"><a href="#Tokenizer-673"><span class="linenos"> 673</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> +</span><span id="Tokenizer-674"><a href="#Tokenizer-674"><span class="linenos"> 674</span></a> <span class="s2">"DIV"</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="Tokenizer-675"><a href="#Tokenizer-675"><span class="linenos"> 675</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> +</span><span id="Tokenizer-676"><a href="#Tokenizer-676"><span class="linenos"> 676</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> +</span><span id="Tokenizer-677"><a href="#Tokenizer-677"><span class="linenos"> 677</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="Tokenizer-678"><a href="#Tokenizer-678"><span class="linenos"> 678</span></a> <span class="s2">"ENUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ENUM</span><span class="p">,</span> +</span><span id="Tokenizer-679"><a href="#Tokenizer-679"><span class="linenos"> 679</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="Tokenizer-680"><a href="#Tokenizer-680"><span class="linenos"> 680</span></a> <span class="s2">"EXCEPT"</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="Tokenizer-681"><a href="#Tokenizer-681"><span class="linenos"> 681</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="Tokenizer-682"><a href="#Tokenizer-682"><span class="linenos"> 682</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> +</span><span id="Tokenizer-683"><a href="#Tokenizer-683"><span class="linenos"> 683</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="Tokenizer-684"><a href="#Tokenizer-684"><span class="linenos"> 684</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="Tokenizer-685"><a href="#Tokenizer-685"><span class="linenos"> 685</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="Tokenizer-686"><a href="#Tokenizer-686"><span class="linenos"> 686</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="Tokenizer-687"><a href="#Tokenizer-687"><span class="linenos"> 687</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Tokenizer-688"><a href="#Tokenizer-688"><span class="linenos"> 688</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="Tokenizer-689"><a href="#Tokenizer-689"><span class="linenos"> 689</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> +</span><span id="Tokenizer-690"><a href="#Tokenizer-690"><span class="linenos"> 690</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> +</span><span id="Tokenizer-691"><a href="#Tokenizer-691"><span class="linenos"> 691</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="Tokenizer-692"><a href="#Tokenizer-692"><span class="linenos"> 692</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> +</span><span id="Tokenizer-693"><a href="#Tokenizer-693"><span class="linenos"> 693</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="Tokenizer-694"><a href="#Tokenizer-694"><span class="linenos"> 694</span></a> <span class="s2">"GEOMETRY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOMETRY</span><span class="p">,</span> +</span><span id="Tokenizer-695"><a href="#Tokenizer-695"><span class="linenos"> 695</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> +</span><span id="Tokenizer-696"><a href="#Tokenizer-696"><span class="linenos"> 696</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> +</span><span id="Tokenizer-697"><a href="#Tokenizer-697"><span class="linenos"> 697</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> +</span><span id="Tokenizer-698"><a href="#Tokenizer-698"><span class="linenos"> 698</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> +</span><span id="Tokenizer-699"><a href="#Tokenizer-699"><span class="linenos"> 699</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="Tokenizer-700"><a href="#Tokenizer-700"><span class="linenos"> 700</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> +</span><span id="Tokenizer-701"><a href="#Tokenizer-701"><span class="linenos"> 701</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Tokenizer-702"><a href="#Tokenizer-702"><span class="linenos"> 702</span></a> <span class="s2">"INET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="Tokenizer-703"><a href="#Tokenizer-703"><span class="linenos"> 703</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="Tokenizer-704"><a href="#Tokenizer-704"><span class="linenos"> 704</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> +</span><span id="Tokenizer-705"><a href="#Tokenizer-705"><span class="linenos"> 705</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="Tokenizer-706"><a href="#Tokenizer-706"><span class="linenos"> 706</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="Tokenizer-707"><a href="#Tokenizer-707"><span class="linenos"> 707</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> +</span><span id="Tokenizer-708"><a href="#Tokenizer-708"><span class="linenos"> 708</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> +</span><span id="Tokenizer-709"><a href="#Tokenizer-709"><span class="linenos"> 709</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="Tokenizer-710"><a href="#Tokenizer-710"><span class="linenos"> 710</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> +</span><span id="Tokenizer-711"><a href="#Tokenizer-711"><span class="linenos"> 711</span></a> <span class="s2">"KEEP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KEEP</span><span class="p">,</span> +</span><span id="Tokenizer-712"><a href="#Tokenizer-712"><span class="linenos"> 712</span></a> <span class="s2">"KILL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">KILL</span><span class="p">,</span> +</span><span id="Tokenizer-713"><a href="#Tokenizer-713"><span class="linenos"> 713</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> +</span><span id="Tokenizer-714"><a href="#Tokenizer-714"><span class="linenos"> 714</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Tokenizer-715"><a href="#Tokenizer-715"><span class="linenos"> 715</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="Tokenizer-716"><a href="#Tokenizer-716"><span class="linenos"> 716</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> +</span><span id="Tokenizer-717"><a href="#Tokenizer-717"><span class="linenos"> 717</span></a> <span class="s2">"LOAD"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD</span><span class="p">,</span> +</span><span id="Tokenizer-718"><a href="#Tokenizer-718"><span class="linenos"> 718</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCK</span><span class="p">,</span> +</span><span id="Tokenizer-719"><a href="#Tokenizer-719"><span class="linenos"> 719</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="Tokenizer-720"><a href="#Tokenizer-720"><span class="linenos"> 720</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Tokenizer-721"><a href="#Tokenizer-721"><span class="linenos"> 721</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="Tokenizer-722"><a href="#Tokenizer-722"><span class="linenos"> 722</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="Tokenizer-723"><a href="#Tokenizer-723"><span class="linenos"> 723</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> +</span><span id="Tokenizer-724"><a href="#Tokenizer-724"><span class="linenos"> 724</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="Tokenizer-725"><a href="#Tokenizer-725"><span class="linenos"> 725</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="Tokenizer-726"><a href="#Tokenizer-726"><span class="linenos"> 726</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Tokenizer-727"><a href="#Tokenizer-727"><span class="linenos"> 727</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> +</span><span id="Tokenizer-728"><a href="#Tokenizer-728"><span class="linenos"> 728</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> +</span><span id="Tokenizer-729"><a href="#Tokenizer-729"><span class="linenos"> 729</span></a> <span class="s2">"XOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">XOR</span><span class="p">,</span> +</span><span id="Tokenizer-730"><a href="#Tokenizer-730"><span class="linenos"> 730</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> +</span><span id="Tokenizer-731"><a href="#Tokenizer-731"><span class="linenos"> 731</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="Tokenizer-732"><a href="#Tokenizer-732"><span class="linenos"> 732</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="Tokenizer-733"><a href="#Tokenizer-733"><span class="linenos"> 733</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> +</span><span id="Tokenizer-734"><a href="#Tokenizer-734"><span class="linenos"> 734</span></a> <span class="s2">"OVERLAPS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERLAPS</span><span class="p">,</span> +</span><span id="Tokenizer-735"><a href="#Tokenizer-735"><span class="linenos"> 735</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> +</span><span id="Tokenizer-736"><a href="#Tokenizer-736"><span class="linenos"> 736</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> +</span><span id="Tokenizer-737"><a href="#Tokenizer-737"><span class="linenos"> 737</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="Tokenizer-738"><a href="#Tokenizer-738"><span class="linenos"> 738</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="Tokenizer-739"><a href="#Tokenizer-739"><span class="linenos"> 739</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="Tokenizer-740"><a href="#Tokenizer-740"><span class="linenos"> 740</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="Tokenizer-741"><a href="#Tokenizer-741"><span class="linenos"> 741</span></a> <span class="s2">"PIVOT"</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="Tokenizer-742"><a href="#Tokenizer-742"><span class="linenos"> 742</span></a> <span class="s2">"PRAGMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRAGMA</span><span class="p">,</span> +</span><span id="Tokenizer-743"><a href="#Tokenizer-743"><span class="linenos"> 743</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="Tokenizer-744"><a href="#Tokenizer-744"><span class="linenos"> 744</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="Tokenizer-745"><a href="#Tokenizer-745"><span class="linenos"> 745</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> +</span><span id="Tokenizer-746"><a href="#Tokenizer-746"><span class="linenos"> 746</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="Tokenizer-747"><a href="#Tokenizer-747"><span class="linenos"> 747</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> +</span><span id="Tokenizer-748"><a href="#Tokenizer-748"><span class="linenos"> 748</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Tokenizer-749"><a href="#Tokenizer-749"><span class="linenos"> 749</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Tokenizer-750"><a href="#Tokenizer-750"><span class="linenos"> 750</span></a> <span class="s2">"RETURNING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RETURNING</span><span class="p">,</span> +</span><span id="Tokenizer-751"><a href="#Tokenizer-751"><span class="linenos"> 751</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="Tokenizer-752"><a href="#Tokenizer-752"><span class="linenos"> 752</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Tokenizer-753"><a href="#Tokenizer-753"><span class="linenos"> 753</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Tokenizer-754"><a href="#Tokenizer-754"><span class="linenos"> 754</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> +</span><span id="Tokenizer-755"><a href="#Tokenizer-755"><span class="linenos"> 755</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> +</span><span id="Tokenizer-756"><a href="#Tokenizer-756"><span class="linenos"> 756</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="Tokenizer-757"><a href="#Tokenizer-757"><span class="linenos"> 757</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="Tokenizer-758"><a href="#Tokenizer-758"><span class="linenos"> 758</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="Tokenizer-759"><a href="#Tokenizer-759"><span class="linenos"> 759</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> +</span><span id="Tokenizer-760"><a href="#Tokenizer-760"><span class="linenos"> 760</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Tokenizer-761"><a href="#Tokenizer-761"><span class="linenos"> 761</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="Tokenizer-762"><a href="#Tokenizer-762"><span class="linenos"> 762</span></a> <span class="s2">"SETTINGS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SETTINGS</span><span class="p">,</span> +</span><span id="Tokenizer-763"><a href="#Tokenizer-763"><span class="linenos"> 763</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="Tokenizer-764"><a href="#Tokenizer-764"><span class="linenos"> 764</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> +</span><span id="Tokenizer-765"><a href="#Tokenizer-765"><span class="linenos"> 765</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> +</span><span id="Tokenizer-766"><a href="#Tokenizer-766"><span class="linenos"> 766</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> +</span><span id="Tokenizer-767"><a href="#Tokenizer-767"><span class="linenos"> 767</span></a> <span class="s2">"START WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">START_WITH</span><span class="p">,</span> +</span><span id="Tokenizer-768"><a href="#Tokenizer-768"><span class="linenos"> 768</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Tokenizer-769"><a href="#Tokenizer-769"><span class="linenos"> 769</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> +</span><span id="Tokenizer-770"><a href="#Tokenizer-770"><span class="linenos"> 770</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Tokenizer-771"><a href="#Tokenizer-771"><span class="linenos"> 771</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Tokenizer-772"><a href="#Tokenizer-772"><span class="linenos"> 772</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> +</span><span id="Tokenizer-773"><a href="#Tokenizer-773"><span class="linenos"> 773</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="Tokenizer-774"><a href="#Tokenizer-774"><span class="linenos"> 774</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUNCATE</span><span class="p">,</span> +</span><span id="Tokenizer-775"><a href="#Tokenizer-775"><span class="linenos"> 775</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="Tokenizer-776"><a href="#Tokenizer-776"><span class="linenos"> 776</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">,</span> +</span><span id="Tokenizer-777"><a href="#Tokenizer-777"><span class="linenos"> 777</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="Tokenizer-778"><a href="#Tokenizer-778"><span class="linenos"> 778</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="Tokenizer-779"><a href="#Tokenizer-779"><span class="linenos"> 779</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> +</span><span id="Tokenizer-780"><a href="#Tokenizer-780"><span class="linenos"> 780</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> +</span><span id="Tokenizer-781"><a href="#Tokenizer-781"><span class="linenos"> 781</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> +</span><span id="Tokenizer-782"><a href="#Tokenizer-782"><span class="linenos"> 782</span></a> <span class="s2">"UUID"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UUID</span><span class="p">,</span> +</span><span id="Tokenizer-783"><a href="#Tokenizer-783"><span class="linenos"> 783</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="Tokenizer-784"><a href="#Tokenizer-784"><span class="linenos"> 784</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="Tokenizer-785"><a href="#Tokenizer-785"><span class="linenos"> 785</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="Tokenizer-786"><a href="#Tokenizer-786"><span class="linenos"> 786</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> +</span><span id="Tokenizer-787"><a href="#Tokenizer-787"><span class="linenos"> 787</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> +</span><span id="Tokenizer-788"><a href="#Tokenizer-788"><span class="linenos"> 788</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Tokenizer-789"><a href="#Tokenizer-789"><span class="linenos"> 789</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> +</span><span id="Tokenizer-790"><a href="#Tokenizer-790"><span class="linenos"> 790</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="Tokenizer-791"><a href="#Tokenizer-791"><span class="linenos"> 791</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> +</span><span id="Tokenizer-792"><a href="#Tokenizer-792"><span class="linenos"> 792</span></a> <span class="s2">"BIT"</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="Tokenizer-793"><a href="#Tokenizer-793"><span class="linenos"> 793</span></a> <span class="s2">"BOOL"</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="Tokenizer-794"><a href="#Tokenizer-794"><span class="linenos"> 794</span></a> <span class="s2">"BOOLEAN"</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="Tokenizer-795"><a href="#Tokenizer-795"><span class="linenos"> 795</span></a> <span class="s2">"BYTE"</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="Tokenizer-796"><a href="#Tokenizer-796"><span class="linenos"> 796</span></a> <span class="s2">"MEDIUMINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMINT</span><span class="p">,</span> +</span><span id="Tokenizer-797"><a href="#Tokenizer-797"><span class="linenos"> 797</span></a> <span class="s2">"INT1"</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="Tokenizer-798"><a href="#Tokenizer-798"><span class="linenos"> 798</span></a> <span class="s2">"TINYINT"</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="Tokenizer-799"><a href="#Tokenizer-799"><span class="linenos"> 799</span></a> <span class="s2">"INT16"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-800"><a href="#Tokenizer-800"><span class="linenos"> 800</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-801"><a href="#Tokenizer-801"><span class="linenos"> 801</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-802"><a href="#Tokenizer-802"><span class="linenos"> 802</span></a> <span class="s2">"INT128"</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="Tokenizer-803"><a href="#Tokenizer-803"><span class="linenos"> 803</span></a> <span class="s2">"HUGEINT"</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="Tokenizer-804"><a href="#Tokenizer-804"><span class="linenos"> 804</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-805"><a href="#Tokenizer-805"><span class="linenos"> 805</span></a> <span class="s2">"INTEGER"</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="Tokenizer-806"><a href="#Tokenizer-806"><span class="linenos"> 806</span></a> <span class="s2">"INT"</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="Tokenizer-807"><a href="#Tokenizer-807"><span class="linenos"> 807</span></a> <span class="s2">"INT4"</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="Tokenizer-808"><a href="#Tokenizer-808"><span class="linenos"> 808</span></a> <span class="s2">"INT32"</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="Tokenizer-809"><a href="#Tokenizer-809"><span class="linenos"> 809</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Tokenizer-810"><a href="#Tokenizer-810"><span class="linenos"> 810</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Tokenizer-811"><a href="#Tokenizer-811"><span class="linenos"> 811</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Tokenizer-812"><a href="#Tokenizer-812"><span class="linenos"> 812</span></a> <span class="s2">"INT8"</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="Tokenizer-813"><a href="#Tokenizer-813"><span class="linenos"> 813</span></a> <span class="s2">"UINT"</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="Tokenizer-814"><a href="#Tokenizer-814"><span class="linenos"> 814</span></a> <span class="s2">"DEC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-815"><a href="#Tokenizer-815"><span class="linenos"> 815</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-816"><a href="#Tokenizer-816"><span class="linenos"> 816</span></a> <span class="s2">"BIGDECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-817"><a href="#Tokenizer-817"><span class="linenos"> 817</span></a> <span class="s2">"BIGNUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGDECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-818"><a href="#Tokenizer-818"><span class="linenos"> 818</span></a> <span class="s2">"LIST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIST</span><span class="p">,</span> +</span><span id="Tokenizer-819"><a href="#Tokenizer-819"><span class="linenos"> 819</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="Tokenizer-820"><a href="#Tokenizer-820"><span class="linenos"> 820</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> +</span><span id="Tokenizer-821"><a href="#Tokenizer-821"><span class="linenos"> 821</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-822"><a href="#Tokenizer-822"><span class="linenos"> 822</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-823"><a href="#Tokenizer-823"><span class="linenos"> 823</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-824"><a href="#Tokenizer-824"><span class="linenos"> 824</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Tokenizer-825"><a href="#Tokenizer-825"><span class="linenos"> 825</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Tokenizer-826"><a href="#Tokenizer-826"><span class="linenos"> 826</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Tokenizer-827"><a href="#Tokenizer-827"><span class="linenos"> 827</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Tokenizer-828"><a href="#Tokenizer-828"><span class="linenos"> 828</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Tokenizer-829"><a href="#Tokenizer-829"><span class="linenos"> 829</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Tokenizer-830"><a href="#Tokenizer-830"><span class="linenos"> 830</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> +</span><span id="Tokenizer-831"><a href="#Tokenizer-831"><span class="linenos"> 831</span></a> <span class="s2">"JSONB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span> +</span><span id="Tokenizer-832"><a href="#Tokenizer-832"><span class="linenos"> 832</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="Tokenizer-833"><a href="#Tokenizer-833"><span class="linenos"> 833</span></a> <span class="s2">"CHARACTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="Tokenizer-834"><a href="#Tokenizer-834"><span class="linenos"> 834</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-835"><a href="#Tokenizer-835"><span class="linenos"> 835</span></a> <span class="s2">"VARCHAR"</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="Tokenizer-836"><a href="#Tokenizer-836"><span class="linenos"> 836</span></a> <span class="s2">"VARCHAR2"</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="Tokenizer-837"><a href="#Tokenizer-837"><span class="linenos"> 837</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-838"><a href="#Tokenizer-838"><span class="linenos"> 838</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-839"><a href="#Tokenizer-839"><span class="linenos"> 839</span></a> <span class="s2">"BPCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BPCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-840"><a href="#Tokenizer-840"><span class="linenos"> 840</span></a> <span class="s2">"STR"</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="Tokenizer-841"><a href="#Tokenizer-841"><span class="linenos"> 841</span></a> <span class="s2">"STRING"</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="Tokenizer-842"><a href="#Tokenizer-842"><span class="linenos"> 842</span></a> <span class="s2">"TEXT"</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="Tokenizer-843"><a href="#Tokenizer-843"><span class="linenos"> 843</span></a> <span class="s2">"LONGTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">,</span> +</span><span id="Tokenizer-844"><a href="#Tokenizer-844"><span class="linenos"> 844</span></a> <span class="s2">"MEDIUMTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">,</span> +</span><span id="Tokenizer-845"><a href="#Tokenizer-845"><span class="linenos"> 845</span></a> <span class="s2">"TINYTEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYTEXT</span><span class="p">,</span> +</span><span id="Tokenizer-846"><a href="#Tokenizer-846"><span class="linenos"> 846</span></a> <span class="s2">"CLOB"</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="Tokenizer-847"><a href="#Tokenizer-847"><span class="linenos"> 847</span></a> <span class="s2">"LONGVARCHAR"</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="Tokenizer-848"><a href="#Tokenizer-848"><span class="linenos"> 848</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> +</span><span id="Tokenizer-849"><a href="#Tokenizer-849"><span class="linenos"> 849</span></a> <span class="s2">"BLOB"</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="Tokenizer-850"><a href="#Tokenizer-850"><span class="linenos"> 850</span></a> <span class="s2">"LONGBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">,</span> +</span><span id="Tokenizer-851"><a href="#Tokenizer-851"><span class="linenos"> 851</span></a> <span class="s2">"MEDIUMBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">,</span> +</span><span id="Tokenizer-852"><a href="#Tokenizer-852"><span class="linenos"> 852</span></a> <span class="s2">"TINYBLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYBLOB</span><span class="p">,</span> +</span><span id="Tokenizer-853"><a href="#Tokenizer-853"><span class="linenos"> 853</span></a> <span class="s2">"BYTEA"</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="Tokenizer-854"><a href="#Tokenizer-854"><span class="linenos"> 854</span></a> <span class="s2">"VARBINARY"</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="Tokenizer-855"><a href="#Tokenizer-855"><span class="linenos"> 855</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="Tokenizer-856"><a href="#Tokenizer-856"><span class="linenos"> 856</span></a> <span class="s2">"TIMETZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMETZ</span><span class="p">,</span> +</span><span id="Tokenizer-857"><a href="#Tokenizer-857"><span class="linenos"> 857</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Tokenizer-858"><a href="#Tokenizer-858"><span class="linenos"> 858</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Tokenizer-859"><a href="#Tokenizer-859"><span class="linenos"> 859</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Tokenizer-860"><a href="#Tokenizer-860"><span class="linenos"> 860</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Tokenizer-861"><a href="#Tokenizer-861"><span class="linenos"> 861</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="Tokenizer-862"><a href="#Tokenizer-862"><span class="linenos"> 862</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPNTZ</span><span class="p">,</span> +</span><span id="Tokenizer-863"><a href="#Tokenizer-863"><span class="linenos"> 863</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="Tokenizer-864"><a href="#Tokenizer-864"><span class="linenos"> 864</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="Tokenizer-865"><a href="#Tokenizer-865"><span class="linenos"> 865</span></a> <span class="s2">"INT4RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4RANGE</span><span class="p">,</span> +</span><span id="Tokenizer-866"><a href="#Tokenizer-866"><span class="linenos"> 866</span></a> <span class="s2">"INT4MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT4MULTIRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-867"><a href="#Tokenizer-867"><span class="linenos"> 867</span></a> <span class="s2">"INT8RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8RANGE</span><span class="p">,</span> +</span><span id="Tokenizer-868"><a href="#Tokenizer-868"><span class="linenos"> 868</span></a> <span class="s2">"INT8MULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT8MULTIRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-869"><a href="#Tokenizer-869"><span class="linenos"> 869</span></a> <span class="s2">"NUMRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-870"><a href="#Tokenizer-870"><span class="linenos"> 870</span></a> <span class="s2">"NUMMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMMULTIRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-871"><a href="#Tokenizer-871"><span class="linenos"> 871</span></a> <span class="s2">"TSRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-872"><a href="#Tokenizer-872"><span class="linenos"> 872</span></a> <span class="s2">"TSMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSMULTIRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-873"><a href="#Tokenizer-873"><span class="linenos"> 873</span></a> <span class="s2">"TSTZRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-874"><a href="#Tokenizer-874"><span class="linenos"> 874</span></a> <span class="s2">"TSTZMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TSTZMULTIRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-875"><a href="#Tokenizer-875"><span class="linenos"> 875</span></a> <span class="s2">"DATERANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATERANGE</span><span class="p">,</span> +</span><span id="Tokenizer-876"><a href="#Tokenizer-876"><span class="linenos"> 876</span></a> <span class="s2">"DATEMULTIRANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATEMULTIRANGE</span><span class="p">,</span> +</span><span id="Tokenizer-877"><a href="#Tokenizer-877"><span class="linenos"> 877</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="Tokenizer-878"><a href="#Tokenizer-878"><span class="linenos"> 878</span></a> <span class="s2">"STRUCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">,</span> +</span><span id="Tokenizer-879"><a href="#Tokenizer-879"><span class="linenos"> 879</span></a> <span class="s2">"SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEQUENCE</span><span class="p">,</span> +</span><span id="Tokenizer-880"><a href="#Tokenizer-880"><span class="linenos"> 880</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> +</span><span id="Tokenizer-881"><a href="#Tokenizer-881"><span class="linenos"> 881</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> +</span><span id="Tokenizer-882"><a href="#Tokenizer-882"><span class="linenos"> 882</span></a> <span class="s2">"ANALYZE"</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="Tokenizer-883"><a href="#Tokenizer-883"><span class="linenos"> 883</span></a> <span class="s2">"CALL"</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="Tokenizer-884"><a href="#Tokenizer-884"><span class="linenos"> 884</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span><span class="p">,</span> +</span><span id="Tokenizer-885"><a href="#Tokenizer-885"><span class="linenos"> 885</span></a> <span class="s2">"EXPLAIN"</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="Tokenizer-886"><a href="#Tokenizer-886"><span class="linenos"> 886</span></a> <span class="s2">"GRANT"</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="Tokenizer-887"><a href="#Tokenizer-887"><span class="linenos"> 887</span></a> <span class="s2">"OPTIMIZE"</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="Tokenizer-888"><a href="#Tokenizer-888"><span class="linenos"> 888</span></a> <span class="s2">"PREPARE"</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="Tokenizer-889"><a href="#Tokenizer-889"><span class="linenos"> 889</span></a> <span class="s2">"VACUUM"</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="Tokenizer-890"><a href="#Tokenizer-890"><span class="linenos"> 890</span></a> <span class="s2">"USER-DEFINED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USERDEFINED</span><span class="p">,</span> +</span><span id="Tokenizer-891"><a href="#Tokenizer-891"><span class="linenos"> 891</span></a> <span class="s2">"FOR VERSION"</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="Tokenizer-892"><a href="#Tokenizer-892"><span class="linenos"> 892</span></a> <span class="s2">"FOR TIMESTAMP"</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="Tokenizer-893"><a href="#Tokenizer-893"><span class="linenos"> 893</span></a> <span class="p">}</span> +</span><span id="Tokenizer-894"><a href="#Tokenizer-894"><span class="linenos"> 894</span></a> +</span><span id="Tokenizer-895"><a href="#Tokenizer-895"><span class="linenos"> 895</span></a> <span class="n">WHITE_SPACE</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-896"><a href="#Tokenizer-896"><span class="linenos"> 896</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="Tokenizer-897"><a href="#Tokenizer-897"><span class="linenos"> 897</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="Tokenizer-898"><a href="#Tokenizer-898"><span class="linenos"> 898</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="Tokenizer-899"><a href="#Tokenizer-899"><span class="linenos"> 899</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="Tokenizer-900"><a href="#Tokenizer-900"><span class="linenos"> 900</span></a> <span class="p">}</span> +</span><span id="Tokenizer-901"><a href="#Tokenizer-901"><span class="linenos"> 901</span></a> +</span><span id="Tokenizer-902"><a href="#Tokenizer-902"><span class="linenos"> 902</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-903"><a href="#Tokenizer-903"><span class="linenos"> 903</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-904"><a href="#Tokenizer-904"><span class="linenos"> 904</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="Tokenizer-905"><a href="#Tokenizer-905"><span class="linenos"> 905</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="Tokenizer-906"><a href="#Tokenizer-906"><span class="linenos"> 906</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="Tokenizer-907"><a href="#Tokenizer-907"><span class="linenos"> 907</span></a> <span class="p">}</span> </span><span id="Tokenizer-908"><a href="#Tokenizer-908"><span class="linenos"> 908</span></a> -</span><span id="Tokenizer-909"><a href="#Tokenizer-909"><span class="linenos"> 909</span></a> <span class="c1"># Handle numeric literals like in hive (3L = BIGINT)</span> -</span><span id="Tokenizer-910"><a href="#Tokenizer-910"><span class="linenos"> 910</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-911"><a href="#Tokenizer-911"><span class="linenos"> 911</span></a> -</span><span id="Tokenizer-912"><a href="#Tokenizer-912"><span class="linenos"> 912</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="Tokenizer-909"><a href="#Tokenizer-909"><span class="linenos"> 909</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">}</span> +</span><span id="Tokenizer-910"><a href="#Tokenizer-910"><span class="linenos"> 910</span></a> +</span><span id="Tokenizer-911"><a href="#Tokenizer-911"><span class="linenos"> 911</span></a> <span class="c1"># Handle numeric literals like in hive (3L = BIGINT)</span> +</span><span id="Tokenizer-912"><a href="#Tokenizer-912"><span class="linenos"> 912</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="Tokenizer-913"><a href="#Tokenizer-913"><span class="linenos"> 913</span></a> -</span><span id="Tokenizer-914"><a href="#Tokenizer-914"><span class="linenos"> 914</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Tokenizer-915"><a href="#Tokenizer-915"><span class="linenos"> 915</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="Tokenizer-916"><a href="#Tokenizer-916"><span class="linenos"> 916</span></a> <span class="s2">"size"</span><span class="p">,</span> -</span><span id="Tokenizer-917"><a href="#Tokenizer-917"><span class="linenos"> 917</span></a> <span class="s2">"tokens"</span><span class="p">,</span> -</span><span id="Tokenizer-918"><a href="#Tokenizer-918"><span class="linenos"> 918</span></a> <span class="s2">"dialect"</span><span class="p">,</span> -</span><span id="Tokenizer-919"><a href="#Tokenizer-919"><span class="linenos"> 919</span></a> <span class="s2">"_start"</span><span class="p">,</span> -</span><span id="Tokenizer-920"><a href="#Tokenizer-920"><span class="linenos"> 920</span></a> <span class="s2">"_current"</span><span class="p">,</span> -</span><span id="Tokenizer-921"><a href="#Tokenizer-921"><span class="linenos"> 921</span></a> <span class="s2">"_line"</span><span class="p">,</span> -</span><span id="Tokenizer-922"><a href="#Tokenizer-922"><span class="linenos"> 922</span></a> <span class="s2">"_col"</span><span class="p">,</span> -</span><span id="Tokenizer-923"><a href="#Tokenizer-923"><span class="linenos"> 923</span></a> <span class="s2">"_comments"</span><span class="p">,</span> -</span><span id="Tokenizer-924"><a href="#Tokenizer-924"><span class="linenos"> 924</span></a> <span class="s2">"_char"</span><span class="p">,</span> -</span><span id="Tokenizer-925"><a href="#Tokenizer-925"><span class="linenos"> 925</span></a> <span class="s2">"_end"</span><span class="p">,</span> -</span><span id="Tokenizer-926"><a href="#Tokenizer-926"><span class="linenos"> 926</span></a> <span class="s2">"_peek"</span><span class="p">,</span> -</span><span id="Tokenizer-927"><a href="#Tokenizer-927"><span class="linenos"> 927</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> -</span><span id="Tokenizer-928"><a href="#Tokenizer-928"><span class="linenos"> 928</span></a> <span class="s2">"_rs_dialect_settings"</span><span class="p">,</span> -</span><span id="Tokenizer-929"><a href="#Tokenizer-929"><span class="linenos"> 929</span></a> <span class="p">)</span> -</span><span id="Tokenizer-930"><a href="#Tokenizer-930"><span class="linenos"> 930</span></a> -</span><span id="Tokenizer-931"><a href="#Tokenizer-931"><span class="linenos"> 931</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-932"><a href="#Tokenizer-932"><span class="linenos"> 932</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="Tokenizer-933"><a href="#Tokenizer-933"><span class="linenos"> 933</span></a> -</span><span id="Tokenizer-934"><a href="#Tokenizer-934"><span class="linenos"> 934</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Tokenizer-914"><a href="#Tokenizer-914"><span class="linenos"> 914</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="Tokenizer-915"><a href="#Tokenizer-915"><span class="linenos"> 915</span></a> +</span><span id="Tokenizer-916"><a href="#Tokenizer-916"><span class="linenos"> 916</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Tokenizer-917"><a href="#Tokenizer-917"><span class="linenos"> 917</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="Tokenizer-918"><a href="#Tokenizer-918"><span class="linenos"> 918</span></a> <span class="s2">"size"</span><span class="p">,</span> +</span><span id="Tokenizer-919"><a href="#Tokenizer-919"><span class="linenos"> 919</span></a> <span class="s2">"tokens"</span><span class="p">,</span> +</span><span id="Tokenizer-920"><a href="#Tokenizer-920"><span class="linenos"> 920</span></a> <span class="s2">"dialect"</span><span class="p">,</span> +</span><span id="Tokenizer-921"><a href="#Tokenizer-921"><span class="linenos"> 921</span></a> <span class="s2">"_start"</span><span class="p">,</span> +</span><span id="Tokenizer-922"><a href="#Tokenizer-922"><span class="linenos"> 922</span></a> <span class="s2">"_current"</span><span class="p">,</span> +</span><span id="Tokenizer-923"><a href="#Tokenizer-923"><span class="linenos"> 923</span></a> <span class="s2">"_line"</span><span class="p">,</span> +</span><span id="Tokenizer-924"><a href="#Tokenizer-924"><span class="linenos"> 924</span></a> <span class="s2">"_col"</span><span class="p">,</span> +</span><span id="Tokenizer-925"><a href="#Tokenizer-925"><span class="linenos"> 925</span></a> <span class="s2">"_comments"</span><span class="p">,</span> +</span><span id="Tokenizer-926"><a href="#Tokenizer-926"><span class="linenos"> 926</span></a> <span class="s2">"_char"</span><span class="p">,</span> +</span><span id="Tokenizer-927"><a href="#Tokenizer-927"><span class="linenos"> 927</span></a> <span class="s2">"_end"</span><span class="p">,</span> +</span><span id="Tokenizer-928"><a href="#Tokenizer-928"><span class="linenos"> 928</span></a> <span class="s2">"_peek"</span><span class="p">,</span> +</span><span id="Tokenizer-929"><a href="#Tokenizer-929"><span class="linenos"> 929</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> +</span><span id="Tokenizer-930"><a href="#Tokenizer-930"><span class="linenos"> 930</span></a> <span class="s2">"_rs_dialect_settings"</span><span class="p">,</span> +</span><span id="Tokenizer-931"><a href="#Tokenizer-931"><span class="linenos"> 931</span></a> <span class="p">)</span> +</span><span id="Tokenizer-932"><a href="#Tokenizer-932"><span class="linenos"> 932</span></a> +</span><span id="Tokenizer-933"><a href="#Tokenizer-933"><span class="linenos"> 933</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-934"><a href="#Tokenizer-934"><span class="linenos"> 934</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> </span><span id="Tokenizer-935"><a href="#Tokenizer-935"><span class="linenos"> 935</span></a> -</span><span id="Tokenizer-936"><a href="#Tokenizer-936"><span class="linenos"> 936</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="Tokenizer-937"><a href="#Tokenizer-937"><span class="linenos"> 937</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span> <span class="o">=</span> <span class="n">RsTokenizerDialectSettings</span><span class="p">(</span> -</span><span id="Tokenizer-938"><a href="#Tokenizer-938"><span class="linenos"> 938</span></a> <span class="n">unescaped_sequences</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> -</span><span id="Tokenizer-939"><a href="#Tokenizer-939"><span class="linenos"> 939</span></a> <span class="n">identifiers_can_start_with_digit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">,</span> -</span><span id="Tokenizer-940"><a href="#Tokenizer-940"><span class="linenos"> 940</span></a> <span class="p">)</span> -</span><span id="Tokenizer-941"><a href="#Tokenizer-941"><span class="linenos"> 941</span></a> -</span><span id="Tokenizer-942"><a href="#Tokenizer-942"><span class="linenos"> 942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer-936"><a href="#Tokenizer-936"><span class="linenos"> 936</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Tokenizer-937"><a href="#Tokenizer-937"><span class="linenos"> 937</span></a> +</span><span id="Tokenizer-938"><a href="#Tokenizer-938"><span class="linenos"> 938</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="Tokenizer-939"><a href="#Tokenizer-939"><span class="linenos"> 939</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span> <span class="o">=</span> <span class="n">RsTokenizerDialectSettings</span><span class="p">(</span> +</span><span id="Tokenizer-940"><a href="#Tokenizer-940"><span class="linenos"> 940</span></a> <span class="n">unescaped_sequences</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> +</span><span id="Tokenizer-941"><a href="#Tokenizer-941"><span class="linenos"> 941</span></a> <span class="n">identifiers_can_start_with_digit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">,</span> +</span><span id="Tokenizer-942"><a href="#Tokenizer-942"><span class="linenos"> 942</span></a> <span class="p">)</span> </span><span id="Tokenizer-943"><a href="#Tokenizer-943"><span class="linenos"> 943</span></a> -</span><span id="Tokenizer-944"><a href="#Tokenizer-944"><span class="linenos"> 944</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-945"><a href="#Tokenizer-945"><span class="linenos"> 945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-946"><a href="#Tokenizer-946"><span class="linenos"> 946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-947"><a href="#Tokenizer-947"><span class="linenos"> 947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-948"><a href="#Tokenizer-948"><span class="linenos"> 948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-949"><a href="#Tokenizer-949"><span class="linenos"> 949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-950"><a href="#Tokenizer-950"><span class="linenos"> 950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer-951"><a href="#Tokenizer-951"><span class="linenos"> 951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-952"><a href="#Tokenizer-952"><span class="linenos"> 952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="p">[]</span> -</span><span id="Tokenizer-953"><a href="#Tokenizer-953"><span class="linenos"> 953</span></a> -</span><span id="Tokenizer-954"><a href="#Tokenizer-954"><span class="linenos"> 954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-955"><a href="#Tokenizer-955"><span class="linenos"> 955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-956"><a href="#Tokenizer-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-957"><a href="#Tokenizer-957"><span class="linenos"> 957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="Tokenizer-958"><a href="#Tokenizer-958"><span class="linenos"> 958</span></a> -</span><span id="Tokenizer-959"><a href="#Tokenizer-959"><span class="linenos"> 959</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Tokenizer-960"><a href="#Tokenizer-960"><span class="linenos"> 960</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> -</span><span id="Tokenizer-961"><a href="#Tokenizer-961"><span class="linenos"> 961</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="Tokenizer-962"><a href="#Tokenizer-962"><span class="linenos"> 962</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_rs</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Tokenizer-963"><a href="#Tokenizer-963"><span class="linenos"> 963</span></a> -</span><span id="Tokenizer-964"><a href="#Tokenizer-964"><span class="linenos"> 964</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Tokenizer-965"><a href="#Tokenizer-965"><span class="linenos"> 965</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> -</span><span id="Tokenizer-966"><a href="#Tokenizer-966"><span class="linenos"> 966</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Tokenizer-967"><a href="#Tokenizer-967"><span class="linenos"> 967</span></a> -</span><span id="Tokenizer-968"><a href="#Tokenizer-968"><span class="linenos"> 968</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-969"><a href="#Tokenizer-969"><span class="linenos"> 969</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> -</span><span id="Tokenizer-970"><a href="#Tokenizer-970"><span class="linenos"> 970</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Tokenizer-971"><a href="#Tokenizer-971"><span class="linenos"> 971</span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">max</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">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Tokenizer-972"><a href="#Tokenizer-972"><span class="linenos"> 972</span></a> <span class="n">end</span> <span class="o">=</span> <span class="nb">min</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">50</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer-973"><a href="#Tokenizer-973"><span class="linenos"> 973</span></a> <span class="n">context</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Tokenizer-974"><a href="#Tokenizer-974"><span class="linenos"> 974</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error tokenizing '</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span> -</span><span id="Tokenizer-975"><a href="#Tokenizer-975"><span class="linenos"> 975</span></a> -</span><span id="Tokenizer-976"><a href="#Tokenizer-976"><span class="linenos"> 976</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> +</span><span id="Tokenizer-944"><a href="#Tokenizer-944"><span class="linenos"> 944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer-945"><a href="#Tokenizer-945"><span class="linenos"> 945</span></a> +</span><span id="Tokenizer-946"><a href="#Tokenizer-946"><span class="linenos"> 946</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-947"><a href="#Tokenizer-947"><span class="linenos"> 947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-948"><a href="#Tokenizer-948"><span class="linenos"> 948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-949"><a href="#Tokenizer-949"><span class="linenos"> 949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-950"><a href="#Tokenizer-950"><span class="linenos"> 950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-951"><a href="#Tokenizer-951"><span class="linenos"> 951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-952"><a href="#Tokenizer-952"><span class="linenos"> 952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer-953"><a href="#Tokenizer-953"><span class="linenos"> 953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-954"><a href="#Tokenizer-954"><span class="linenos"> 954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="p">[]</span> +</span><span id="Tokenizer-955"><a href="#Tokenizer-955"><span class="linenos"> 955</span></a> +</span><span id="Tokenizer-956"><a href="#Tokenizer-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-957"><a href="#Tokenizer-957"><span class="linenos"> 957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-958"><a href="#Tokenizer-958"><span class="linenos"> 958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-959"><a href="#Tokenizer-959"><span class="linenos"> 959</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="Tokenizer-960"><a href="#Tokenizer-960"><span class="linenos"> 960</span></a> +</span><span id="Tokenizer-961"><a href="#Tokenizer-961"><span class="linenos"> 961</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Tokenizer-962"><a href="#Tokenizer-962"><span class="linenos"> 962</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> +</span><span id="Tokenizer-963"><a href="#Tokenizer-963"><span class="linenos"> 963</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="Tokenizer-964"><a href="#Tokenizer-964"><span class="linenos"> 964</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_rs</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Tokenizer-965"><a href="#Tokenizer-965"><span class="linenos"> 965</span></a> +</span><span id="Tokenizer-966"><a href="#Tokenizer-966"><span class="linenos"> 966</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer-967"><a href="#Tokenizer-967"><span class="linenos"> 967</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> +</span><span id="Tokenizer-968"><a href="#Tokenizer-968"><span class="linenos"> 968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Tokenizer-969"><a href="#Tokenizer-969"><span class="linenos"> 969</span></a> +</span><span id="Tokenizer-970"><a href="#Tokenizer-970"><span class="linenos"> 970</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-971"><a href="#Tokenizer-971"><span class="linenos"> 971</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> +</span><span id="Tokenizer-972"><a href="#Tokenizer-972"><span class="linenos"> 972</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Tokenizer-973"><a href="#Tokenizer-973"><span class="linenos"> 973</span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">max</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">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Tokenizer-974"><a href="#Tokenizer-974"><span class="linenos"> 974</span></a> <span class="n">end</span> <span class="o">=</span> <span class="nb">min</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">50</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer-975"><a href="#Tokenizer-975"><span class="linenos"> 975</span></a> <span class="n">context</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Tokenizer-976"><a href="#Tokenizer-976"><span class="linenos"> 976</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error tokenizing '</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span> </span><span id="Tokenizer-977"><a href="#Tokenizer-977"><span class="linenos"> 977</span></a> -</span><span id="Tokenizer-978"><a href="#Tokenizer-978"><span class="linenos"> 978</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-979"><a href="#Tokenizer-979"><span class="linenos"> 979</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="Tokenizer-980"><a href="#Tokenizer-980"><span class="linenos"> 980</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><span id="Tokenizer-981"><a href="#Tokenizer-981"><span class="linenos"> 981</span></a> -</span><span id="Tokenizer-982"><a href="#Tokenizer-982"><span class="linenos"> 982</span></a> <span class="c1"># Skip spaces here rather than iteratively calling advance() for performance reasons</span> -</span><span id="Tokenizer-983"><a href="#Tokenizer-983"><span class="linenos"> 983</span></a> <span class="k">while</span> <span class="n">current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="Tokenizer-984"><a href="#Tokenizer-984"><span class="linenos"> 984</span></a> <span class="n">char</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><span id="Tokenizer-985"><a href="#Tokenizer-985"><span class="linenos"> 985</span></a> -</span><span id="Tokenizer-986"><a href="#Tokenizer-986"><span class="linenos"> 986</span></a> <span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="o">==</span> <span class="s2">" "</span> <span class="ow">or</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">):</span> -</span><span id="Tokenizer-987"><a href="#Tokenizer-987"><span class="linenos"> 987</span></a> <span class="n">current</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-988"><a href="#Tokenizer-988"><span class="linenos"> 988</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-989"><a href="#Tokenizer-989"><span class="linenos"> 989</span></a> <span class="k">break</span> -</span><span id="Tokenizer-990"><a href="#Tokenizer-990"><span class="linenos"> 990</span></a> -</span><span id="Tokenizer-991"><a href="#Tokenizer-991"><span class="linenos"> 991</span></a> <span class="n">offset</span> <span class="o">=</span> <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="k">if</span> <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="k">else</span> <span class="mi">1</span> +</span><span id="Tokenizer-978"><a href="#Tokenizer-978"><span class="linenos"> 978</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> +</span><span id="Tokenizer-979"><a href="#Tokenizer-979"><span class="linenos"> 979</span></a> +</span><span id="Tokenizer-980"><a href="#Tokenizer-980"><span class="linenos"> 980</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</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">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-981"><a href="#Tokenizer-981"><span class="linenos"> 981</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="Tokenizer-982"><a href="#Tokenizer-982"><span class="linenos"> 982</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><span id="Tokenizer-983"><a href="#Tokenizer-983"><span class="linenos"> 983</span></a> +</span><span id="Tokenizer-984"><a href="#Tokenizer-984"><span class="linenos"> 984</span></a> <span class="c1"># Skip spaces here rather than iteratively calling advance() for performance reasons</span> +</span><span id="Tokenizer-985"><a href="#Tokenizer-985"><span class="linenos"> 985</span></a> <span class="k">while</span> <span class="n">current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="Tokenizer-986"><a href="#Tokenizer-986"><span class="linenos"> 986</span></a> <span class="n">char</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><span id="Tokenizer-987"><a href="#Tokenizer-987"><span class="linenos"> 987</span></a> +</span><span id="Tokenizer-988"><a href="#Tokenizer-988"><span class="linenos"> 988</span></a> <span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="o">==</span> <span class="s2">" "</span> <span class="ow">or</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">):</span> +</span><span id="Tokenizer-989"><a href="#Tokenizer-989"><span class="linenos"> 989</span></a> <span class="n">current</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-990"><a href="#Tokenizer-990"><span class="linenos"> 990</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-991"><a href="#Tokenizer-991"><span class="linenos"> 991</span></a> <span class="k">break</span> </span><span id="Tokenizer-992"><a href="#Tokenizer-992"><span class="linenos"> 992</span></a> -</span><span id="Tokenizer-993"><a href="#Tokenizer-993"><span class="linenos"> 993</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="n">current</span> -</span><span id="Tokenizer-994"><a href="#Tokenizer-994"><span class="linenos"> 994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span> -</span><span id="Tokenizer-995"><a href="#Tokenizer-995"><span class="linenos"> 995</span></a> -</span><span id="Tokenizer-996"><a href="#Tokenizer-996"><span class="linenos"> 996</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isspace</span><span class="p">():</span> -</span><span id="Tokenizer-997"><a href="#Tokenizer-997"><span class="linenos"> 997</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> -</span><span id="Tokenizer-998"><a href="#Tokenizer-998"><span class="linenos"> 998</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> -</span><span id="Tokenizer-999"><a href="#Tokenizer-999"><span class="linenos"> 999</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">:</span> -</span><span id="Tokenizer-1000"><a href="#Tokenizer-1000"><span class="linenos">1000</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> -</span><span id="Tokenizer-1001"><a href="#Tokenizer-1001"><span class="linenos">1001</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1002"><a href="#Tokenizer-1002"><span class="linenos">1002</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> -</span><span id="Tokenizer-1003"><a href="#Tokenizer-1003"><span class="linenos">1003</span></a> -</span><span id="Tokenizer-1004"><a href="#Tokenizer-1004"><span class="linenos">1004</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> -</span><span id="Tokenizer-1005"><a href="#Tokenizer-1005"><span class="linenos">1005</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1006"><a href="#Tokenizer-1006"><span class="linenos">1006</span></a> -</span><span id="Tokenizer-1007"><a href="#Tokenizer-1007"><span class="linenos">1007</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">:</span> -</span><span id="Tokenizer-1008"><a href="#Tokenizer-1008"><span class="linenos">1008</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="Tokenizer-1009"><a href="#Tokenizer-1009"><span class="linenos">1009</span></a> -</span><span id="Tokenizer-1010"><a href="#Tokenizer-1010"><span class="linenos">1010</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-1011"><a href="#Tokenizer-1011"><span class="linenos">1011</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Tokenizer-1012"><a href="#Tokenizer-1012"><span class="linenos">1012</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> -</span><span id="Tokenizer-1013"><a href="#Tokenizer-1013"><span class="linenos">1013</span></a> -</span><span id="Tokenizer-1014"><a href="#Tokenizer-1014"><span class="linenos">1014</span></a> <span class="n">start</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-1015"><a href="#Tokenizer-1015"><span class="linenos">1015</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> -</span><span id="Tokenizer-1016"><a href="#Tokenizer-1016"><span class="linenos">1016</span></a> -</span><span id="Tokenizer-1017"><a href="#Tokenizer-1017"><span class="linenos">1017</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Tokenizer-993"><a href="#Tokenizer-993"><span class="linenos"> 993</span></a> <span class="n">offset</span> <span class="o">=</span> <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="k">if</span> <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="k">else</span> <span class="mi">1</span> +</span><span id="Tokenizer-994"><a href="#Tokenizer-994"><span class="linenos"> 994</span></a> +</span><span id="Tokenizer-995"><a href="#Tokenizer-995"><span class="linenos"> 995</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="n">current</span> +</span><span id="Tokenizer-996"><a href="#Tokenizer-996"><span class="linenos"> 996</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span> +</span><span id="Tokenizer-997"><a href="#Tokenizer-997"><span class="linenos"> 997</span></a> +</span><span id="Tokenizer-998"><a href="#Tokenizer-998"><span class="linenos"> 998</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isspace</span><span class="p">():</span> +</span><span id="Tokenizer-999"><a href="#Tokenizer-999"><span class="linenos"> 999</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> +</span><span id="Tokenizer-1000"><a href="#Tokenizer-1000"><span class="linenos">1000</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> +</span><span id="Tokenizer-1001"><a href="#Tokenizer-1001"><span class="linenos">1001</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">:</span> +</span><span id="Tokenizer-1002"><a href="#Tokenizer-1002"><span class="linenos">1002</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> +</span><span id="Tokenizer-1003"><a href="#Tokenizer-1003"><span class="linenos">1003</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1004"><a href="#Tokenizer-1004"><span class="linenos">1004</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> +</span><span id="Tokenizer-1005"><a href="#Tokenizer-1005"><span class="linenos">1005</span></a> +</span><span id="Tokenizer-1006"><a href="#Tokenizer-1006"><span class="linenos">1006</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> +</span><span id="Tokenizer-1007"><a href="#Tokenizer-1007"><span class="linenos">1007</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1008"><a href="#Tokenizer-1008"><span class="linenos">1008</span></a> +</span><span id="Tokenizer-1009"><a href="#Tokenizer-1009"><span class="linenos">1009</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">:</span> +</span><span id="Tokenizer-1010"><a href="#Tokenizer-1010"><span class="linenos">1010</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="Tokenizer-1011"><a href="#Tokenizer-1011"><span class="linenos">1011</span></a> +</span><span id="Tokenizer-1012"><a href="#Tokenizer-1012"><span class="linenos">1012</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-1013"><a href="#Tokenizer-1013"><span class="linenos">1013</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Tokenizer-1014"><a href="#Tokenizer-1014"><span class="linenos">1014</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> +</span><span id="Tokenizer-1015"><a href="#Tokenizer-1015"><span class="linenos">1015</span></a> +</span><span id="Tokenizer-1016"><a href="#Tokenizer-1016"><span class="linenos">1016</span></a> <span class="n">start</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-1017"><a href="#Tokenizer-1017"><span class="linenos">1017</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> </span><span id="Tokenizer-1018"><a href="#Tokenizer-1018"><span class="linenos">1018</span></a> -</span><span id="Tokenizer-1019"><a href="#Tokenizer-1019"><span class="linenos">1019</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">alnum</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1020"><a href="#Tokenizer-1020"><span class="linenos">1020</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="ow">is</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="Tokenizer-1021"><a href="#Tokenizer-1021"><span class="linenos">1021</span></a> <span class="c1"># Ensures we don't count an extra line if we get a \r\n line break sequence</span> -</span><span id="Tokenizer-1022"><a href="#Tokenizer-1022"><span class="linenos">1022</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">):</span> -</span><span id="Tokenizer-1023"><a href="#Tokenizer-1023"><span class="linenos">1023</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1024"><a href="#Tokenizer-1024"><span class="linenos">1024</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1025"><a href="#Tokenizer-1025"><span class="linenos">1025</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1026"><a href="#Tokenizer-1026"><span class="linenos">1026</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="Tokenizer-1027"><a href="#Tokenizer-1027"><span class="linenos">1027</span></a> -</span><span id="Tokenizer-1028"><a href="#Tokenizer-1028"><span class="linenos">1028</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="Tokenizer-1029"><a href="#Tokenizer-1029"><span class="linenos">1029</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</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="bp">self</span><span class="o">.</span><span class="n">size</span> -</span><span id="Tokenizer-1030"><a href="#Tokenizer-1030"><span class="linenos">1030</span></a> <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">sql</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-1031"><a href="#Tokenizer-1031"><span class="linenos">1031</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> -</span><span id="Tokenizer-1032"><a href="#Tokenizer-1032"><span class="linenos">1032</span></a> -</span><span id="Tokenizer-1033"><a href="#Tokenizer-1033"><span class="linenos">1033</span></a> <span class="k">if</span> <span class="n">alnum</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> -</span><span id="Tokenizer-1034"><a href="#Tokenizer-1034"><span class="linenos">1034</span></a> <span class="c1"># Here we use local variables instead of attributes for better performance</span> -</span><span id="Tokenizer-1035"><a href="#Tokenizer-1035"><span class="linenos">1035</span></a> <span class="n">_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> -</span><span id="Tokenizer-1036"><a href="#Tokenizer-1036"><span class="linenos">1036</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><span id="Tokenizer-1037"><a href="#Tokenizer-1037"><span class="linenos">1037</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> -</span><span id="Tokenizer-1038"><a href="#Tokenizer-1038"><span class="linenos">1038</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> -</span><span id="Tokenizer-1039"><a href="#Tokenizer-1039"><span class="linenos">1039</span></a> -</span><span id="Tokenizer-1040"><a href="#Tokenizer-1040"><span class="linenos">1040</span></a> <span class="k">while</span> <span class="n">_peek</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> -</span><span id="Tokenizer-1041"><a href="#Tokenizer-1041"><span class="linenos">1041</span></a> <span class="n">_col</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1042"><a href="#Tokenizer-1042"><span class="linenos">1042</span></a> <span class="n">_current</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1043"><a href="#Tokenizer-1043"><span class="linenos">1043</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> -</span><span id="Tokenizer-1044"><a href="#Tokenizer-1044"><span class="linenos">1044</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">_end</span> <span class="k">else</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><span id="Tokenizer-1045"><a href="#Tokenizer-1045"><span class="linenos">1045</span></a> -</span><span id="Tokenizer-1046"><a href="#Tokenizer-1046"><span class="linenos">1046</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="n">_col</span> -</span><span id="Tokenizer-1047"><a href="#Tokenizer-1047"><span class="linenos">1047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="n">_current</span> -</span><span id="Tokenizer-1048"><a href="#Tokenizer-1048"><span class="linenos">1048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="n">_end</span> -</span><span id="Tokenizer-1049"><a href="#Tokenizer-1049"><span class="linenos">1049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="n">_peek</span> -</span><span id="Tokenizer-1050"><a href="#Tokenizer-1050"><span class="linenos">1050</span></a> <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">sql</span><span class="p">[</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="Tokenizer-1051"><a href="#Tokenizer-1051"><span class="linenos">1051</span></a> -</span><span id="Tokenizer-1052"><a href="#Tokenizer-1052"><span class="linenos">1052</span></a> <span class="nd">@property</span> -</span><span id="Tokenizer-1053"><a href="#Tokenizer-1053"><span class="linenos">1053</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-1054"><a href="#Tokenizer-1054"><span class="linenos">1054</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> -</span><span id="Tokenizer-1055"><a href="#Tokenizer-1055"><span class="linenos">1055</span></a> -</span><span id="Tokenizer-1056"><a href="#Tokenizer-1056"><span class="linenos">1056</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1057"><a href="#Tokenizer-1057"><span class="linenos">1057</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="Tokenizer-1058"><a href="#Tokenizer-1058"><span class="linenos">1058</span></a> -</span><span id="Tokenizer-1059"><a href="#Tokenizer-1059"><span class="linenos">1059</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> -</span><span id="Tokenizer-1060"><a href="#Tokenizer-1060"><span class="linenos">1060</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="Tokenizer-1061"><a href="#Tokenizer-1061"><span class="linenos">1061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-1062"><a href="#Tokenizer-1062"><span class="linenos">1062</span></a> -</span><span id="Tokenizer-1063"><a href="#Tokenizer-1063"><span class="linenos">1063</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Tokenizer-1064"><a href="#Tokenizer-1064"><span class="linenos">1064</span></a> <span class="n">Token</span><span class="p">(</span> -</span><span id="Tokenizer-1065"><a href="#Tokenizer-1065"><span class="linenos">1065</span></a> <span class="n">token_type</span><span class="p">,</span> -</span><span id="Tokenizer-1066"><a href="#Tokenizer-1066"><span class="linenos">1066</span></a> <span class="n">text</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> -</span><span id="Tokenizer-1067"><a href="#Tokenizer-1067"><span class="linenos">1067</span></a> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> -</span><span id="Tokenizer-1068"><a href="#Tokenizer-1068"><span class="linenos">1068</span></a> <span class="n">col</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> -</span><span id="Tokenizer-1069"><a href="#Tokenizer-1069"><span class="linenos">1069</span></a> <span class="n">start</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span><span class="p">,</span> -</span><span id="Tokenizer-1070"><a href="#Tokenizer-1070"><span class="linenos">1070</span></a> <span class="n">end</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 class="p">,</span> -</span><span id="Tokenizer-1071"><a href="#Tokenizer-1071"><span class="linenos">1071</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> -</span><span id="Tokenizer-1072"><a href="#Tokenizer-1072"><span class="linenos">1072</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1073"><a href="#Tokenizer-1073"><span class="linenos">1073</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1074"><a href="#Tokenizer-1074"><span class="linenos">1074</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-1075"><a href="#Tokenizer-1075"><span class="linenos">1075</span></a> -</span><span id="Tokenizer-1076"><a href="#Tokenizer-1076"><span class="linenos">1076</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> -</span><span id="Tokenizer-1077"><a href="#Tokenizer-1077"><span class="linenos">1077</span></a> <span class="c1"># whatever follows the command's token as a string</span> -</span><span id="Tokenizer-1078"><a href="#Tokenizer-1078"><span class="linenos">1078</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Tokenizer-1079"><a href="#Tokenizer-1079"><span class="linenos">1079</span></a> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> -</span><span id="Tokenizer-1080"><a href="#Tokenizer-1080"><span class="linenos">1080</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">!=</span> <span class="s2">";"</span> -</span><span id="Tokenizer-1081"><a href="#Tokenizer-1081"><span class="linenos">1081</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span><span class="p">)</span> -</span><span id="Tokenizer-1082"><a href="#Tokenizer-1082"><span class="linenos">1082</span></a> <span class="p">):</span> -</span><span id="Tokenizer-1083"><a href="#Tokenizer-1083"><span class="linenos">1083</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> -</span><span id="Tokenizer-1084"><a href="#Tokenizer-1084"><span class="linenos">1084</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> -</span><span id="Tokenizer-1085"><a href="#Tokenizer-1085"><span class="linenos">1085</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</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="s2">";"</span><span class="p">)</span> -</span><span id="Tokenizer-1086"><a href="#Tokenizer-1086"><span class="linenos">1086</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> -</span><span id="Tokenizer-1087"><a href="#Tokenizer-1087"><span class="linenos">1087</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Tokenizer-1088"><a href="#Tokenizer-1088"><span class="linenos">1088</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> -</span><span id="Tokenizer-1089"><a href="#Tokenizer-1089"><span class="linenos">1089</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-1090"><a href="#Tokenizer-1090"><span class="linenos">1090</span></a> -</span><span id="Tokenizer-1091"><a href="#Tokenizer-1091"><span class="linenos">1091</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1092"><a href="#Tokenizer-1092"><span class="linenos">1092</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-1093"><a href="#Tokenizer-1093"><span class="linenos">1093</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-1094"><a href="#Tokenizer-1094"><span class="linenos">1094</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="Tokenizer-1095"><a href="#Tokenizer-1095"><span class="linenos">1095</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="Tokenizer-1096"><a href="#Tokenizer-1096"><span class="linenos">1096</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-1097"><a href="#Tokenizer-1097"><span class="linenos">1097</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-1098"><a href="#Tokenizer-1098"><span class="linenos">1098</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_KEYWORD_TRIE</span> -</span><span id="Tokenizer-1099"><a href="#Tokenizer-1099"><span class="linenos">1099</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> -</span><span id="Tokenizer-1100"><a href="#Tokenizer-1100"><span class="linenos">1100</span></a> -</span><span id="Tokenizer-1101"><a href="#Tokenizer-1101"><span class="linenos">1101</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> -</span><span id="Tokenizer-1102"><a href="#Tokenizer-1102"><span class="linenos">1102</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> -</span><span id="Tokenizer-1103"><a href="#Tokenizer-1103"><span class="linenos">1103</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">PREFIX</span> -</span><span id="Tokenizer-1104"><a href="#Tokenizer-1104"><span class="linenos">1104</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1105"><a href="#Tokenizer-1105"><span class="linenos">1105</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Tokenizer-1106"><a href="#Tokenizer-1106"><span class="linenos">1106</span></a> -</span><span id="Tokenizer-1107"><a href="#Tokenizer-1107"><span class="linenos">1107</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> -</span><span id="Tokenizer-1108"><a href="#Tokenizer-1108"><span class="linenos">1108</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1109"><a href="#Tokenizer-1109"><span class="linenos">1109</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> -</span><span id="Tokenizer-1110"><a href="#Tokenizer-1110"><span class="linenos">1110</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="Tokenizer-1111"><a href="#Tokenizer-1111"><span class="linenos">1111</span></a> -</span><span id="Tokenizer-1112"><a href="#Tokenizer-1112"><span class="linenos">1112</span></a> <span class="n">end</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="n">size</span> -</span><span id="Tokenizer-1113"><a href="#Tokenizer-1113"><span class="linenos">1113</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1114"><a href="#Tokenizer-1114"><span class="linenos">1114</span></a> -</span><span id="Tokenizer-1115"><a href="#Tokenizer-1115"><span class="linenos">1115</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="Tokenizer-1116"><a href="#Tokenizer-1116"><span class="linenos">1116</span></a> <span class="n">char</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">end</span><span class="p">]</span> -</span><span id="Tokenizer-1117"><a href="#Tokenizer-1117"><span class="linenos">1117</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> -</span><span id="Tokenizer-1118"><a href="#Tokenizer-1118"><span class="linenos">1118</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> -</span><span id="Tokenizer-1119"><a href="#Tokenizer-1119"><span class="linenos">1119</span></a> -</span><span id="Tokenizer-1120"><a href="#Tokenizer-1120"><span class="linenos">1120</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> -</span><span id="Tokenizer-1121"><a href="#Tokenizer-1121"><span class="linenos">1121</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> -</span><span id="Tokenizer-1122"><a href="#Tokenizer-1122"><span class="linenos">1122</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> -</span><span id="Tokenizer-1123"><a href="#Tokenizer-1123"><span class="linenos">1123</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> -</span><span id="Tokenizer-1124"><a href="#Tokenizer-1124"><span class="linenos">1124</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> -</span><span id="Tokenizer-1125"><a href="#Tokenizer-1125"><span class="linenos">1125</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-1126"><a href="#Tokenizer-1126"><span class="linenos">1126</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1127"><a href="#Tokenizer-1127"><span class="linenos">1127</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Tokenizer-1128"><a href="#Tokenizer-1128"><span class="linenos">1128</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1129"><a href="#Tokenizer-1129"><span class="linenos">1129</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-1130"><a href="#Tokenizer-1130"><span class="linenos">1130</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1131"><a href="#Tokenizer-1131"><span class="linenos">1131</span></a> -</span><span id="Tokenizer-1132"><a href="#Tokenizer-1132"><span class="linenos">1132</span></a> <span class="k">if</span> <span class="n">word</span><span class="p">:</span> -</span><span id="Tokenizer-1133"><a href="#Tokenizer-1133"><span class="linenos">1133</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="Tokenizer-1134"><a href="#Tokenizer-1134"><span class="linenos">1134</span></a> <span class="k">return</span> -</span><span id="Tokenizer-1135"><a href="#Tokenizer-1135"><span class="linenos">1135</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="Tokenizer-1019"><a href="#Tokenizer-1019"><span class="linenos">1019</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Tokenizer-1020"><a href="#Tokenizer-1020"><span class="linenos">1020</span></a> +</span><span id="Tokenizer-1021"><a href="#Tokenizer-1021"><span class="linenos">1021</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">alnum</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1022"><a href="#Tokenizer-1022"><span class="linenos">1022</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="ow">is</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> +</span><span id="Tokenizer-1023"><a href="#Tokenizer-1023"><span class="linenos">1023</span></a> <span class="c1"># Ensures we don't count an extra line if we get a \r\n line break sequence</span> +</span><span id="Tokenizer-1024"><a href="#Tokenizer-1024"><span class="linenos">1024</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">):</span> +</span><span id="Tokenizer-1025"><a href="#Tokenizer-1025"><span class="linenos">1025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1026"><a href="#Tokenizer-1026"><span class="linenos">1026</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1027"><a href="#Tokenizer-1027"><span class="linenos">1027</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1028"><a href="#Tokenizer-1028"><span class="linenos">1028</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="Tokenizer-1029"><a href="#Tokenizer-1029"><span class="linenos">1029</span></a> +</span><span id="Tokenizer-1030"><a href="#Tokenizer-1030"><span class="linenos">1030</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="Tokenizer-1031"><a href="#Tokenizer-1031"><span class="linenos">1031</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</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="bp">self</span><span class="o">.</span><span class="n">size</span> +</span><span id="Tokenizer-1032"><a href="#Tokenizer-1032"><span class="linenos">1032</span></a> <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">sql</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-1033"><a href="#Tokenizer-1033"><span class="linenos">1033</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> +</span><span id="Tokenizer-1034"><a href="#Tokenizer-1034"><span class="linenos">1034</span></a> +</span><span id="Tokenizer-1035"><a href="#Tokenizer-1035"><span class="linenos">1035</span></a> <span class="k">if</span> <span class="n">alnum</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> +</span><span id="Tokenizer-1036"><a href="#Tokenizer-1036"><span class="linenos">1036</span></a> <span class="c1"># Here we use local variables instead of attributes for better performance</span> +</span><span id="Tokenizer-1037"><a href="#Tokenizer-1037"><span class="linenos">1037</span></a> <span class="n">_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> +</span><span id="Tokenizer-1038"><a href="#Tokenizer-1038"><span class="linenos">1038</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><span id="Tokenizer-1039"><a href="#Tokenizer-1039"><span class="linenos">1039</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> +</span><span id="Tokenizer-1040"><a href="#Tokenizer-1040"><span class="linenos">1040</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> +</span><span id="Tokenizer-1041"><a href="#Tokenizer-1041"><span class="linenos">1041</span></a> +</span><span id="Tokenizer-1042"><a href="#Tokenizer-1042"><span class="linenos">1042</span></a> <span class="k">while</span> <span class="n">_peek</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span> +</span><span id="Tokenizer-1043"><a href="#Tokenizer-1043"><span class="linenos">1043</span></a> <span class="n">_col</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1044"><a href="#Tokenizer-1044"><span class="linenos">1044</span></a> <span class="n">_current</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1045"><a href="#Tokenizer-1045"><span class="linenos">1045</span></a> <span class="n">_end</span> <span class="o">=</span> <span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> +</span><span id="Tokenizer-1046"><a href="#Tokenizer-1046"><span class="linenos">1046</span></a> <span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">_end</span> <span class="k">else</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><span id="Tokenizer-1047"><a href="#Tokenizer-1047"><span class="linenos">1047</span></a> +</span><span id="Tokenizer-1048"><a href="#Tokenizer-1048"><span class="linenos">1048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="n">_col</span> +</span><span id="Tokenizer-1049"><a href="#Tokenizer-1049"><span class="linenos">1049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="n">_current</span> +</span><span id="Tokenizer-1050"><a href="#Tokenizer-1050"><span class="linenos">1050</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="n">_end</span> +</span><span id="Tokenizer-1051"><a href="#Tokenizer-1051"><span class="linenos">1051</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="n">_peek</span> +</span><span id="Tokenizer-1052"><a href="#Tokenizer-1052"><span class="linenos">1052</span></a> <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">sql</span><span class="p">[</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="Tokenizer-1053"><a href="#Tokenizer-1053"><span class="linenos">1053</span></a> +</span><span id="Tokenizer-1054"><a href="#Tokenizer-1054"><span class="linenos">1054</span></a> <span class="nd">@property</span> +</span><span id="Tokenizer-1055"><a href="#Tokenizer-1055"><span class="linenos">1055</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-1056"><a href="#Tokenizer-1056"><span class="linenos">1056</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> +</span><span id="Tokenizer-1057"><a href="#Tokenizer-1057"><span class="linenos">1057</span></a> +</span><span id="Tokenizer-1058"><a href="#Tokenizer-1058"><span class="linenos">1058</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1059"><a href="#Tokenizer-1059"><span class="linenos">1059</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="Tokenizer-1060"><a href="#Tokenizer-1060"><span class="linenos">1060</span></a> +</span><span id="Tokenizer-1061"><a href="#Tokenizer-1061"><span class="linenos">1061</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> +</span><span id="Tokenizer-1062"><a href="#Tokenizer-1062"><span class="linenos">1062</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="Tokenizer-1063"><a href="#Tokenizer-1063"><span class="linenos">1063</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-1064"><a href="#Tokenizer-1064"><span class="linenos">1064</span></a> +</span><span id="Tokenizer-1065"><a href="#Tokenizer-1065"><span class="linenos">1065</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Tokenizer-1066"><a href="#Tokenizer-1066"><span class="linenos">1066</span></a> <span class="n">Token</span><span class="p">(</span> +</span><span id="Tokenizer-1067"><a href="#Tokenizer-1067"><span class="linenos">1067</span></a> <span class="n">token_type</span><span class="p">,</span> +</span><span id="Tokenizer-1068"><a href="#Tokenizer-1068"><span class="linenos">1068</span></a> <span class="n">text</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> +</span><span id="Tokenizer-1069"><a href="#Tokenizer-1069"><span class="linenos">1069</span></a> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> +</span><span id="Tokenizer-1070"><a href="#Tokenizer-1070"><span class="linenos">1070</span></a> <span class="n">col</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> +</span><span id="Tokenizer-1071"><a href="#Tokenizer-1071"><span class="linenos">1071</span></a> <span class="n">start</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span><span class="p">,</span> +</span><span id="Tokenizer-1072"><a href="#Tokenizer-1072"><span class="linenos">1072</span></a> <span class="n">end</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 class="p">,</span> +</span><span id="Tokenizer-1073"><a href="#Tokenizer-1073"><span class="linenos">1073</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> +</span><span id="Tokenizer-1074"><a href="#Tokenizer-1074"><span class="linenos">1074</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1075"><a href="#Tokenizer-1075"><span class="linenos">1075</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1076"><a href="#Tokenizer-1076"><span class="linenos">1076</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-1077"><a href="#Tokenizer-1077"><span class="linenos">1077</span></a> +</span><span id="Tokenizer-1078"><a href="#Tokenizer-1078"><span class="linenos">1078</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> +</span><span id="Tokenizer-1079"><a href="#Tokenizer-1079"><span class="linenos">1079</span></a> <span class="c1"># whatever follows the command's token as a string</span> +</span><span id="Tokenizer-1080"><a href="#Tokenizer-1080"><span class="linenos">1080</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Tokenizer-1081"><a href="#Tokenizer-1081"><span class="linenos">1081</span></a> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> +</span><span id="Tokenizer-1082"><a href="#Tokenizer-1082"><span class="linenos">1082</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">!=</span> <span class="s2">";"</span> +</span><span id="Tokenizer-1083"><a href="#Tokenizer-1083"><span class="linenos">1083</span></a> <span class="ow">and</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span><span class="p">)</span> +</span><span id="Tokenizer-1084"><a href="#Tokenizer-1084"><span class="linenos">1084</span></a> <span class="p">):</span> +</span><span id="Tokenizer-1085"><a href="#Tokenizer-1085"><span class="linenos">1085</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> +</span><span id="Tokenizer-1086"><a href="#Tokenizer-1086"><span class="linenos">1086</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> +</span><span id="Tokenizer-1087"><a href="#Tokenizer-1087"><span class="linenos">1087</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</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="s2">";"</span><span class="p">)</span> +</span><span id="Tokenizer-1088"><a href="#Tokenizer-1088"><span class="linenos">1088</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> +</span><span id="Tokenizer-1089"><a href="#Tokenizer-1089"><span class="linenos">1089</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Tokenizer-1090"><a href="#Tokenizer-1090"><span class="linenos">1090</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> +</span><span id="Tokenizer-1091"><a href="#Tokenizer-1091"><span class="linenos">1091</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-1092"><a href="#Tokenizer-1092"><span class="linenos">1092</span></a> +</span><span id="Tokenizer-1093"><a href="#Tokenizer-1093"><span class="linenos">1093</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1094"><a href="#Tokenizer-1094"><span class="linenos">1094</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-1095"><a href="#Tokenizer-1095"><span class="linenos">1095</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-1096"><a href="#Tokenizer-1096"><span class="linenos">1096</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-1097"><a href="#Tokenizer-1097"><span class="linenos">1097</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="Tokenizer-1098"><a href="#Tokenizer-1098"><span class="linenos">1098</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-1099"><a href="#Tokenizer-1099"><span class="linenos">1099</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-1100"><a href="#Tokenizer-1100"><span class="linenos">1100</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_KEYWORD_TRIE</span> +</span><span id="Tokenizer-1101"><a href="#Tokenizer-1101"><span class="linenos">1101</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> +</span><span id="Tokenizer-1102"><a href="#Tokenizer-1102"><span class="linenos">1102</span></a> +</span><span id="Tokenizer-1103"><a href="#Tokenizer-1103"><span class="linenos">1103</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> +</span><span id="Tokenizer-1104"><a href="#Tokenizer-1104"><span class="linenos">1104</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> +</span><span id="Tokenizer-1105"><a href="#Tokenizer-1105"><span class="linenos">1105</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">PREFIX</span> +</span><span id="Tokenizer-1106"><a href="#Tokenizer-1106"><span class="linenos">1106</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1107"><a href="#Tokenizer-1107"><span class="linenos">1107</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Tokenizer-1108"><a href="#Tokenizer-1108"><span class="linenos">1108</span></a> +</span><span id="Tokenizer-1109"><a href="#Tokenizer-1109"><span class="linenos">1109</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">FAILED</span><span class="p">:</span> +</span><span id="Tokenizer-1110"><a href="#Tokenizer-1110"><span class="linenos">1110</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1111"><a href="#Tokenizer-1111"><span class="linenos">1111</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">TrieResult</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> +</span><span id="Tokenizer-1112"><a href="#Tokenizer-1112"><span class="linenos">1112</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="Tokenizer-1113"><a href="#Tokenizer-1113"><span class="linenos">1113</span></a> +</span><span id="Tokenizer-1114"><a href="#Tokenizer-1114"><span class="linenos">1114</span></a> <span class="n">end</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="n">size</span> +</span><span id="Tokenizer-1115"><a href="#Tokenizer-1115"><span class="linenos">1115</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1116"><a href="#Tokenizer-1116"><span class="linenos">1116</span></a> +</span><span id="Tokenizer-1117"><a href="#Tokenizer-1117"><span class="linenos">1117</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="Tokenizer-1118"><a href="#Tokenizer-1118"><span class="linenos">1118</span></a> <span class="n">char</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">end</span><span class="p">]</span> +</span><span id="Tokenizer-1119"><a href="#Tokenizer-1119"><span class="linenos">1119</span></a> <span class="n">single_token</span> <span class="o">=</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span> +</span><span id="Tokenizer-1120"><a href="#Tokenizer-1120"><span class="linenos">1120</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span> +</span><span id="Tokenizer-1121"><a href="#Tokenizer-1121"><span class="linenos">1121</span></a> +</span><span id="Tokenizer-1122"><a href="#Tokenizer-1122"><span class="linenos">1122</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> +</span><span id="Tokenizer-1123"><a href="#Tokenizer-1123"><span class="linenos">1123</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> +</span><span id="Tokenizer-1124"><a href="#Tokenizer-1124"><span class="linenos">1124</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> +</span><span id="Tokenizer-1125"><a href="#Tokenizer-1125"><span class="linenos">1125</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> +</span><span id="Tokenizer-1126"><a href="#Tokenizer-1126"><span class="linenos">1126</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> +</span><span id="Tokenizer-1127"><a href="#Tokenizer-1127"><span class="linenos">1127</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-1128"><a href="#Tokenizer-1128"><span class="linenos">1128</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1129"><a href="#Tokenizer-1129"><span class="linenos">1129</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Tokenizer-1130"><a href="#Tokenizer-1130"><span class="linenos">1130</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1131"><a href="#Tokenizer-1131"><span class="linenos">1131</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-1132"><a href="#Tokenizer-1132"><span class="linenos">1132</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1133"><a href="#Tokenizer-1133"><span class="linenos">1133</span></a> +</span><span id="Tokenizer-1134"><a href="#Tokenizer-1134"><span class="linenos">1134</span></a> <span class="k">if</span> <span class="n">word</span><span class="p">:</span> +</span><span id="Tokenizer-1135"><a href="#Tokenizer-1135"><span class="linenos">1135</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> </span><span id="Tokenizer-1136"><a href="#Tokenizer-1136"><span class="linenos">1136</span></a> <span class="k">return</span> -</span><span id="Tokenizer-1137"><a href="#Tokenizer-1137"><span class="linenos">1137</span></a> <span class="k">if</span> <span class="n">prev_space</span> <span class="ow">or</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">char</span><span class="p">:</span> -</span><span id="Tokenizer-1138"><a href="#Tokenizer-1138"><span class="linenos">1138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer-1139"><a href="#Tokenizer-1139"><span class="linenos">1139</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Tokenizer-1140"><a href="#Tokenizer-1140"><span class="linenos">1140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="p">],</span> <span class="n">text</span><span class="o">=</span><span class="n">word</span><span class="p">)</span> -</span><span id="Tokenizer-1141"><a href="#Tokenizer-1141"><span class="linenos">1141</span></a> <span class="k">return</span> -</span><span id="Tokenizer-1142"><a href="#Tokenizer-1142"><span class="linenos">1142</span></a> -</span><span id="Tokenizer-1143"><a href="#Tokenizer-1143"><span class="linenos">1143</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="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="Tokenizer-1144"><a href="#Tokenizer-1144"><span class="linenos">1144</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">],</span> <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="p">)</span> -</span><span id="Tokenizer-1145"><a href="#Tokenizer-1145"><span class="linenos">1145</span></a> <span class="k">return</span> -</span><span id="Tokenizer-1146"><a href="#Tokenizer-1146"><span class="linenos">1146</span></a> -</span><span id="Tokenizer-1147"><a href="#Tokenizer-1147"><span class="linenos">1147</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> +</span><span id="Tokenizer-1137"><a href="#Tokenizer-1137"><span class="linenos">1137</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="Tokenizer-1138"><a href="#Tokenizer-1138"><span class="linenos">1138</span></a> <span class="k">return</span> +</span><span id="Tokenizer-1139"><a href="#Tokenizer-1139"><span class="linenos">1139</span></a> <span class="k">if</span> <span class="n">prev_space</span> <span class="ow">or</span> <span class="n">single_token</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">char</span><span class="p">:</span> +</span><span id="Tokenizer-1140"><a href="#Tokenizer-1140"><span class="linenos">1140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer-1141"><a href="#Tokenizer-1141"><span class="linenos">1141</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Tokenizer-1142"><a href="#Tokenizer-1142"><span class="linenos">1142</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="p">],</span> <span class="n">text</span><span class="o">=</span><span class="n">word</span><span class="p">)</span> +</span><span id="Tokenizer-1143"><a href="#Tokenizer-1143"><span class="linenos">1143</span></a> <span class="k">return</span> +</span><span id="Tokenizer-1144"><a href="#Tokenizer-1144"><span class="linenos">1144</span></a> +</span><span id="Tokenizer-1145"><a href="#Tokenizer-1145"><span class="linenos">1145</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="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="Tokenizer-1146"><a href="#Tokenizer-1146"><span class="linenos">1146</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">],</span> <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="p">)</span> +</span><span id="Tokenizer-1147"><a href="#Tokenizer-1147"><span class="linenos">1147</span></a> <span class="k">return</span> </span><span id="Tokenizer-1148"><a href="#Tokenizer-1148"><span class="linenos">1148</span></a> -</span><span id="Tokenizer-1149"><a href="#Tokenizer-1149"><span class="linenos">1149</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Tokenizer-1150"><a href="#Tokenizer-1150"><span class="linenos">1150</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> -</span><span id="Tokenizer-1151"><a href="#Tokenizer-1151"><span class="linenos">1151</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Tokenizer-1152"><a href="#Tokenizer-1152"><span class="linenos">1152</span></a> -</span><span id="Tokenizer-1153"><a href="#Tokenizer-1153"><span class="linenos">1153</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="Tokenizer-1154"><a href="#Tokenizer-1154"><span class="linenos">1154</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> -</span><span id="Tokenizer-1155"><a href="#Tokenizer-1155"><span class="linenos">1155</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> -</span><span id="Tokenizer-1156"><a href="#Tokenizer-1156"><span class="linenos">1156</span></a> -</span><span id="Tokenizer-1157"><a href="#Tokenizer-1157"><span class="linenos">1157</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="Tokenizer-1158"><a href="#Tokenizer-1158"><span class="linenos">1158</span></a> <span class="c1"># Skip the comment's start delimiter</span> -</span><span id="Tokenizer-1159"><a href="#Tokenizer-1159"><span class="linenos">1159</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_start_size</span><span class="p">)</span> -</span><span id="Tokenizer-1160"><a href="#Tokenizer-1160"><span class="linenos">1160</span></a> -</span><span id="Tokenizer-1161"><a href="#Tokenizer-1161"><span class="linenos">1161</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> -</span><span id="Tokenizer-1162"><a href="#Tokenizer-1162"><span class="linenos">1162</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="Tokenizer-1163"><a href="#Tokenizer-1163"><span class="linenos">1163</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-1164"><a href="#Tokenizer-1164"><span class="linenos">1164</span></a> -</span><span id="Tokenizer-1165"><a href="#Tokenizer-1165"><span class="linenos">1165</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> -</span><span id="Tokenizer-1166"><a href="#Tokenizer-1166"><span class="linenos">1166</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer-1167"><a href="#Tokenizer-1167"><span class="linenos">1167</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1168"><a href="#Tokenizer-1168"><span class="linenos">1168</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="Tokenizer-1169"><a href="#Tokenizer-1169"><span class="linenos">1169</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-1170"><a href="#Tokenizer-1170"><span class="linenos">1170</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> -</span><span id="Tokenizer-1171"><a href="#Tokenizer-1171"><span class="linenos">1171</span></a> -</span><span id="Tokenizer-1172"><a href="#Tokenizer-1172"><span class="linenos">1172</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> -</span><span id="Tokenizer-1173"><a href="#Tokenizer-1173"><span class="linenos">1173</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> -</span><span id="Tokenizer-1174"><a href="#Tokenizer-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> -</span><span id="Tokenizer-1175"><a href="#Tokenizer-1175"><span class="linenos">1175</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="Tokenizer-1176"><a href="#Tokenizer-1176"><span class="linenos">1176</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-1177"><a href="#Tokenizer-1177"><span class="linenos">1177</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="Tokenizer-1178"><a href="#Tokenizer-1178"><span class="linenos">1178</span></a> -</span><span id="Tokenizer-1179"><a href="#Tokenizer-1179"><span class="linenos">1179</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1149"><a href="#Tokenizer-1149"><span class="linenos">1149</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> +</span><span id="Tokenizer-1150"><a href="#Tokenizer-1150"><span class="linenos">1150</span></a> +</span><span id="Tokenizer-1151"><a href="#Tokenizer-1151"><span class="linenos">1151</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Tokenizer-1152"><a href="#Tokenizer-1152"><span class="linenos">1152</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> +</span><span id="Tokenizer-1153"><a href="#Tokenizer-1153"><span class="linenos">1153</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Tokenizer-1154"><a href="#Tokenizer-1154"><span class="linenos">1154</span></a> +</span><span id="Tokenizer-1155"><a href="#Tokenizer-1155"><span class="linenos">1155</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="Tokenizer-1156"><a href="#Tokenizer-1156"><span class="linenos">1156</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> +</span><span id="Tokenizer-1157"><a href="#Tokenizer-1157"><span class="linenos">1157</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> +</span><span id="Tokenizer-1158"><a href="#Tokenizer-1158"><span class="linenos">1158</span></a> +</span><span id="Tokenizer-1159"><a href="#Tokenizer-1159"><span class="linenos">1159</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> +</span><span id="Tokenizer-1160"><a href="#Tokenizer-1160"><span class="linenos">1160</span></a> <span class="c1"># Skip the comment's start delimiter</span> +</span><span id="Tokenizer-1161"><a href="#Tokenizer-1161"><span class="linenos">1161</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_start_size</span><span class="p">)</span> +</span><span id="Tokenizer-1162"><a href="#Tokenizer-1162"><span class="linenos">1162</span></a> +</span><span id="Tokenizer-1163"><a href="#Tokenizer-1163"><span class="linenos">1163</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> +</span><span id="Tokenizer-1164"><a href="#Tokenizer-1164"><span class="linenos">1164</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> +</span><span id="Tokenizer-1165"><a href="#Tokenizer-1165"><span class="linenos">1165</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-1166"><a href="#Tokenizer-1166"><span class="linenos">1166</span></a> +</span><span id="Tokenizer-1167"><a href="#Tokenizer-1167"><span class="linenos">1167</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> +</span><span id="Tokenizer-1168"><a href="#Tokenizer-1168"><span class="linenos">1168</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer-1169"><a href="#Tokenizer-1169"><span class="linenos">1169</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1170"><a href="#Tokenizer-1170"><span class="linenos">1170</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> +</span><span id="Tokenizer-1171"><a href="#Tokenizer-1171"><span class="linenos">1171</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-1172"><a href="#Tokenizer-1172"><span class="linenos">1172</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> +</span><span id="Tokenizer-1173"><a href="#Tokenizer-1173"><span class="linenos">1173</span></a> +</span><span id="Tokenizer-1174"><a href="#Tokenizer-1174"><span class="linenos">1174</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> +</span><span id="Tokenizer-1175"><a href="#Tokenizer-1175"><span class="linenos">1175</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> +</span><span id="Tokenizer-1176"><a href="#Tokenizer-1176"><span class="linenos">1176</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> +</span><span id="Tokenizer-1177"><a href="#Tokenizer-1177"><span class="linenos">1177</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="Tokenizer-1178"><a href="#Tokenizer-1178"><span class="linenos">1178</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</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">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> </span><span id="Tokenizer-1180"><a href="#Tokenizer-1180"><span class="linenos">1180</span></a> -</span><span id="Tokenizer-1181"><a href="#Tokenizer-1181"><span class="linenos">1181</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</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">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> -</span><span id="Tokenizer-1183"><a href="#Tokenizer-1183"><span class="linenos">1183</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</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">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> -</span><span id="Tokenizer-1185"><a href="#Tokenizer-1185"><span class="linenos">1185</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">BIT_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="Tokenizer-1186"><a href="#Tokenizer-1186"><span class="linenos">1186</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> -</span><span id="Tokenizer-1187"><a href="#Tokenizer-1187"><span class="linenos">1187</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEX_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="Tokenizer-1188"><a href="#Tokenizer-1188"><span class="linenos">1188</span></a> -</span><span id="Tokenizer-1189"><a href="#Tokenizer-1189"><span class="linenos">1189</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-1190"><a href="#Tokenizer-1190"><span class="linenos">1190</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</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="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1193"><a href="#Tokenizer-1193"><span class="linenos">1193</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">isdigit</span><span class="p">():</span> -</span><span id="Tokenizer-1194"><a href="#Tokenizer-1194"><span class="linenos">1194</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1195"><a href="#Tokenizer-1195"><span class="linenos">1195</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> -</span><span id="Tokenizer-1196"><a href="#Tokenizer-1196"><span class="linenos">1196</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> -</span><span id="Tokenizer-1197"><a href="#Tokenizer-1197"><span class="linenos">1197</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="Tokenizer-1198"><a href="#Tokenizer-1198"><span class="linenos">1198</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Tokenizer-1199"><a href="#Tokenizer-1199"><span class="linenos">1199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1200"><a href="#Tokenizer-1200"><span class="linenos">1200</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Tokenizer-1201"><a href="#Tokenizer-1201"><span class="linenos">1201</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1202"><a href="#Tokenizer-1202"><span class="linenos">1202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1203"><a href="#Tokenizer-1203"><span class="linenos">1203</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> -</span><span id="Tokenizer-1204"><a href="#Tokenizer-1204"><span class="linenos">1204</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-1205"><a href="#Tokenizer-1205"><span class="linenos">1205</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1206"><a href="#Tokenizer-1206"><span class="linenos">1206</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> -</span><span id="Tokenizer-1207"><a href="#Tokenizer-1207"><span class="linenos">1207</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="Tokenizer-1208"><a href="#Tokenizer-1208"><span class="linenos">1208</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-1209"><a href="#Tokenizer-1209"><span class="linenos">1209</span></a> -</span><span id="Tokenizer-1210"><a href="#Tokenizer-1210"><span class="linenos">1210</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="Tokenizer-1211"><a href="#Tokenizer-1211"><span class="linenos">1211</span></a> <span class="n">literal</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> -</span><span id="Tokenizer-1212"><a href="#Tokenizer-1212"><span class="linenos">1212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1213"><a href="#Tokenizer-1213"><span class="linenos">1213</span></a> -</span><span id="Tokenizer-1214"><a href="#Tokenizer-1214"><span class="linenos">1214</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="s2">""</span><span class="p">))</span> +</span><span id="Tokenizer-1181"><a href="#Tokenizer-1181"><span class="linenos">1181</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1182"><a href="#Tokenizer-1182"><span class="linenos">1182</span></a> +</span><span id="Tokenizer-1183"><a href="#Tokenizer-1183"><span class="linenos">1183</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</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="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> +</span><span id="Tokenizer-1185"><a href="#Tokenizer-1185"><span class="linenos">1185</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Tokenizer-1186"><a href="#Tokenizer-1186"><span class="linenos">1186</span></a> <span class="k">if</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> +</span><span id="Tokenizer-1187"><a href="#Tokenizer-1187"><span class="linenos">1187</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">BIT_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="Tokenizer-1188"><a href="#Tokenizer-1188"><span class="linenos">1188</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> +</span><span id="Tokenizer-1189"><a href="#Tokenizer-1189"><span class="linenos">1189</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEX_STRINGS</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="Tokenizer-1190"><a href="#Tokenizer-1190"><span class="linenos">1190</span></a> +</span><span id="Tokenizer-1191"><a href="#Tokenizer-1191"><span class="linenos">1191</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-1192"><a href="#Tokenizer-1192"><span class="linenos">1192</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-1193"><a href="#Tokenizer-1193"><span class="linenos">1193</span></a> +</span><span id="Tokenizer-1194"><a href="#Tokenizer-1194"><span class="linenos">1194</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1195"><a href="#Tokenizer-1195"><span class="linenos">1195</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">isdigit</span><span class="p">():</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><span id="Tokenizer-1197"><a href="#Tokenizer-1197"><span class="linenos">1197</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> +</span><span id="Tokenizer-1198"><a href="#Tokenizer-1198"><span class="linenos">1198</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> +</span><span id="Tokenizer-1199"><a href="#Tokenizer-1199"><span class="linenos">1199</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="Tokenizer-1200"><a href="#Tokenizer-1200"><span class="linenos">1200</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Tokenizer-1201"><a href="#Tokenizer-1201"><span class="linenos">1201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1202"><a href="#Tokenizer-1202"><span class="linenos">1202</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Tokenizer-1203"><a href="#Tokenizer-1203"><span class="linenos">1203</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1204"><a href="#Tokenizer-1204"><span class="linenos">1204</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1205"><a href="#Tokenizer-1205"><span class="linenos">1205</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> +</span><span id="Tokenizer-1206"><a href="#Tokenizer-1206"><span class="linenos">1206</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-1207"><a href="#Tokenizer-1207"><span class="linenos">1207</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1208"><a href="#Tokenizer-1208"><span class="linenos">1208</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> +</span><span id="Tokenizer-1209"><a href="#Tokenizer-1209"><span class="linenos">1209</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-1210"><a href="#Tokenizer-1210"><span class="linenos">1210</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-1211"><a href="#Tokenizer-1211"><span class="linenos">1211</span></a> +</span><span id="Tokenizer-1212"><a href="#Tokenizer-1212"><span class="linenos">1212</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="Tokenizer-1213"><a href="#Tokenizer-1213"><span class="linenos">1213</span></a> <span class="n">literal</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> +</span><span id="Tokenizer-1214"><a href="#Tokenizer-1214"><span class="linenos">1214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> </span><span id="Tokenizer-1215"><a href="#Tokenizer-1215"><span class="linenos">1215</span></a> -</span><span id="Tokenizer-1216"><a href="#Tokenizer-1216"><span class="linenos">1216</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="Tokenizer-1217"><a href="#Tokenizer-1217"><span class="linenos">1217</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="Tokenizer-1218"><a href="#Tokenizer-1218"><span class="linenos">1218</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> -</span><span id="Tokenizer-1219"><a href="#Tokenizer-1219"><span class="linenos">1219</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> -</span><span id="Tokenizer-1220"><a href="#Tokenizer-1220"><span class="linenos">1220</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">:</span> -</span><span id="Tokenizer-1221"><a href="#Tokenizer-1221"><span class="linenos">1221</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="Tokenizer-1222"><a href="#Tokenizer-1222"><span class="linenos">1222</span></a> -</span><span id="Tokenizer-1223"><a href="#Tokenizer-1223"><span class="linenos">1223</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> -</span><span id="Tokenizer-1224"><a href="#Tokenizer-1224"><span class="linenos">1224</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="Tokenizer-1225"><a href="#Tokenizer-1225"><span class="linenos">1225</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1226"><a href="#Tokenizer-1226"><span class="linenos">1226</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="Tokenizer-1227"><a href="#Tokenizer-1227"><span class="linenos">1227</span></a> -</span><span id="Tokenizer-1228"><a href="#Tokenizer-1228"><span class="linenos">1228</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1229"><a href="#Tokenizer-1229"><span class="linenos">1229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1230"><a href="#Tokenizer-1230"><span class="linenos">1230</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="Tokenizer-1231"><a href="#Tokenizer-1231"><span class="linenos">1231</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-1232"><a href="#Tokenizer-1232"><span class="linenos">1232</span></a> <span class="c1"># If `value` can't be converted to a binary, fallback to tokenizing it as an identifier</span> -</span><span id="Tokenizer-1233"><a href="#Tokenizer-1233"><span class="linenos">1233</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> -</span><span id="Tokenizer-1234"><a href="#Tokenizer-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0b</span> -</span><span id="Tokenizer-1235"><a href="#Tokenizer-1235"><span class="linenos">1235</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Tokenizer-1236"><a href="#Tokenizer-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="Tokenizer-1237"><a href="#Tokenizer-1237"><span class="linenos">1237</span></a> -</span><span id="Tokenizer-1238"><a href="#Tokenizer-1238"><span class="linenos">1238</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1239"><a href="#Tokenizer-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1240"><a href="#Tokenizer-1240"><span class="linenos">1240</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="Tokenizer-1241"><a href="#Tokenizer-1241"><span class="linenos">1241</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-1242"><a href="#Tokenizer-1242"><span class="linenos">1242</span></a> <span class="c1"># If `value` can't be converted to a hex, fallback to tokenizing it as an identifier</span> -</span><span id="Tokenizer-1243"><a href="#Tokenizer-1243"><span class="linenos">1243</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> -</span><span id="Tokenizer-1244"><a href="#Tokenizer-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0x</span> -</span><span id="Tokenizer-1245"><a href="#Tokenizer-1245"><span class="linenos">1245</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Tokenizer-1246"><a href="#Tokenizer-1246"><span class="linenos">1246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="Tokenizer-1247"><a href="#Tokenizer-1247"><span class="linenos">1247</span></a> -</span><span id="Tokenizer-1248"><a href="#Tokenizer-1248"><span class="linenos">1248</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-1249"><a href="#Tokenizer-1249"><span class="linenos">1249</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1250"><a href="#Tokenizer-1250"><span class="linenos">1250</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Tokenizer-1251"><a href="#Tokenizer-1251"><span class="linenos">1251</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</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">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="Tokenizer-1252"><a href="#Tokenizer-1252"><span class="linenos">1252</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-1253"><a href="#Tokenizer-1253"><span class="linenos">1253</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1254"><a href="#Tokenizer-1254"><span class="linenos">1254</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1255"><a href="#Tokenizer-1255"><span class="linenos">1255</span></a> -</span><span id="Tokenizer-1256"><a href="#Tokenizer-1256"><span class="linenos">1256</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-1216"><a href="#Tokenizer-1216"><span class="linenos">1216</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="s2">""</span><span class="p">))</span> +</span><span id="Tokenizer-1217"><a href="#Tokenizer-1217"><span class="linenos">1217</span></a> +</span><span id="Tokenizer-1218"><a href="#Tokenizer-1218"><span class="linenos">1218</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="Tokenizer-1219"><a href="#Tokenizer-1219"><span class="linenos">1219</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="Tokenizer-1220"><a href="#Tokenizer-1220"><span class="linenos">1220</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> +</span><span id="Tokenizer-1221"><a href="#Tokenizer-1221"><span class="linenos">1221</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> +</span><span id="Tokenizer-1222"><a href="#Tokenizer-1222"><span class="linenos">1222</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">:</span> +</span><span id="Tokenizer-1223"><a href="#Tokenizer-1223"><span class="linenos">1223</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="Tokenizer-1224"><a href="#Tokenizer-1224"><span class="linenos">1224</span></a> +</span><span id="Tokenizer-1225"><a href="#Tokenizer-1225"><span class="linenos">1225</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> +</span><span id="Tokenizer-1226"><a href="#Tokenizer-1226"><span class="linenos">1226</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="Tokenizer-1227"><a href="#Tokenizer-1227"><span class="linenos">1227</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1228"><a href="#Tokenizer-1228"><span class="linenos">1228</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="Tokenizer-1229"><a href="#Tokenizer-1229"><span class="linenos">1229</span></a> +</span><span id="Tokenizer-1230"><a href="#Tokenizer-1230"><span class="linenos">1230</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1231"><a href="#Tokenizer-1231"><span class="linenos">1231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1232"><a href="#Tokenizer-1232"><span class="linenos">1232</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="Tokenizer-1233"><a href="#Tokenizer-1233"><span class="linenos">1233</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-1234"><a href="#Tokenizer-1234"><span class="linenos">1234</span></a> <span class="c1"># If `value` can't be converted to a binary, fallback to tokenizing it as an identifier</span> +</span><span id="Tokenizer-1235"><a href="#Tokenizer-1235"><span class="linenos">1235</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +</span><span id="Tokenizer-1236"><a href="#Tokenizer-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0b</span> +</span><span id="Tokenizer-1237"><a href="#Tokenizer-1237"><span class="linenos">1237</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Tokenizer-1238"><a href="#Tokenizer-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="Tokenizer-1239"><a href="#Tokenizer-1239"><span class="linenos">1239</span></a> +</span><span id="Tokenizer-1240"><a href="#Tokenizer-1240"><span class="linenos">1240</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1241"><a href="#Tokenizer-1241"><span class="linenos">1241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1242"><a href="#Tokenizer-1242"><span class="linenos">1242</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="Tokenizer-1243"><a href="#Tokenizer-1243"><span class="linenos">1243</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-1244"><a href="#Tokenizer-1244"><span class="linenos">1244</span></a> <span class="c1"># If `value` can't be converted to a hex, fallback to tokenizing it as an identifier</span> +</span><span id="Tokenizer-1245"><a href="#Tokenizer-1245"><span class="linenos">1245</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> +</span><span id="Tokenizer-1246"><a href="#Tokenizer-1246"><span class="linenos">1246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="n">value</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> <span class="c1"># Drop the 0x</span> +</span><span id="Tokenizer-1247"><a href="#Tokenizer-1247"><span class="linenos">1247</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Tokenizer-1248"><a href="#Tokenizer-1248"><span class="linenos">1248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="Tokenizer-1249"><a href="#Tokenizer-1249"><span class="linenos">1249</span></a> +</span><span id="Tokenizer-1250"><a href="#Tokenizer-1250"><span class="linenos">1250</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-1251"><a href="#Tokenizer-1251"><span class="linenos">1251</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1252"><a href="#Tokenizer-1252"><span class="linenos">1252</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Tokenizer-1253"><a href="#Tokenizer-1253"><span class="linenos">1253</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</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">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="Tokenizer-1254"><a href="#Tokenizer-1254"><span class="linenos">1254</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-1255"><a href="#Tokenizer-1255"><span class="linenos">1255</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1256"><a href="#Tokenizer-1256"><span class="linenos">1256</span></a> <span class="k">break</span> </span><span id="Tokenizer-1257"><a href="#Tokenizer-1257"><span class="linenos">1257</span></a> -</span><span id="Tokenizer-1258"><a href="#Tokenizer-1258"><span class="linenos">1258</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Tokenizer-1259"><a href="#Tokenizer-1259"><span class="linenos">1259</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-1260"><a href="#Tokenizer-1260"><span class="linenos">1260</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> -</span><span id="Tokenizer-1261"><a href="#Tokenizer-1261"><span class="linenos">1261</span></a> -</span><span id="Tokenizer-1262"><a href="#Tokenizer-1262"><span class="linenos">1262</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">:</span> -</span><span id="Tokenizer-1263"><a href="#Tokenizer-1263"><span class="linenos">1263</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> -</span><span id="Tokenizer-1264"><a href="#Tokenizer-1264"><span class="linenos">1264</span></a> <span class="k">elif</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">:</span> -</span><span id="Tokenizer-1265"><a href="#Tokenizer-1265"><span class="linenos">1265</span></a> <span class="n">end</span><span class="p">,</span> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> -</span><span id="Tokenizer-1266"><a href="#Tokenizer-1266"><span class="linenos">1266</span></a> -</span><span id="Tokenizer-1267"><a href="#Tokenizer-1267"><span class="linenos">1267</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> -</span><span id="Tokenizer-1268"><a href="#Tokenizer-1268"><span class="linenos">1268</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> -</span><span id="Tokenizer-1269"><a href="#Tokenizer-1269"><span class="linenos">1269</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> -</span><span id="Tokenizer-1270"><a href="#Tokenizer-1270"><span class="linenos">1270</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> -</span><span id="Tokenizer-1271"><a href="#Tokenizer-1271"><span class="linenos">1271</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> -</span><span id="Tokenizer-1272"><a href="#Tokenizer-1272"><span class="linenos">1272</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Tokenizer-1273"><a href="#Tokenizer-1273"><span class="linenos">1273</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> -</span><span id="Tokenizer-1274"><a href="#Tokenizer-1274"><span class="linenos">1274</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">()</span> -</span><span id="Tokenizer-1275"><a href="#Tokenizer-1275"><span class="linenos">1275</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">end</span> -</span><span id="Tokenizer-1276"><a href="#Tokenizer-1276"><span class="linenos">1276</span></a> <span class="p">):</span> -</span><span id="Tokenizer-1277"><a href="#Tokenizer-1277"><span class="linenos">1277</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">!=</span> <span class="n">token_type</span><span class="o">.</span><span class="n">VAR</span><span class="p">:</span> -</span><span id="Tokenizer-1278"><a href="#Tokenizer-1278"><span class="linenos">1278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> -</span><span id="Tokenizer-1279"><a href="#Tokenizer-1279"><span class="linenos">1279</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1280"><a href="#Tokenizer-1280"><span class="linenos">1280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> -</span><span id="Tokenizer-1281"><a href="#Tokenizer-1281"><span class="linenos">1281</span></a> -</span><span id="Tokenizer-1282"><a href="#Tokenizer-1282"><span class="linenos">1282</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1258"><a href="#Tokenizer-1258"><span class="linenos">1258</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-1259"><a href="#Tokenizer-1259"><span class="linenos">1259</span></a> +</span><span id="Tokenizer-1260"><a href="#Tokenizer-1260"><span class="linenos">1260</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Tokenizer-1261"><a href="#Tokenizer-1261"><span class="linenos">1261</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-1262"><a href="#Tokenizer-1262"><span class="linenos">1262</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> +</span><span id="Tokenizer-1263"><a href="#Tokenizer-1263"><span class="linenos">1263</span></a> +</span><span id="Tokenizer-1264"><a href="#Tokenizer-1264"><span class="linenos">1264</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">:</span> +</span><span id="Tokenizer-1265"><a href="#Tokenizer-1265"><span class="linenos">1265</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> +</span><span id="Tokenizer-1266"><a href="#Tokenizer-1266"><span class="linenos">1266</span></a> <span class="k">elif</span> <span class="n">start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">:</span> +</span><span id="Tokenizer-1267"><a href="#Tokenizer-1267"><span class="linenos">1267</span></a> <span class="n">end</span><span class="p">,</span> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FORMAT_STRINGS</span><span class="p">[</span><span class="n">start</span><span class="p">]</span> +</span><span id="Tokenizer-1268"><a href="#Tokenizer-1268"><span class="linenos">1268</span></a> +</span><span id="Tokenizer-1269"><a href="#Tokenizer-1269"><span class="linenos">1269</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> +</span><span id="Tokenizer-1270"><a href="#Tokenizer-1270"><span class="linenos">1270</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> +</span><span id="Tokenizer-1271"><a href="#Tokenizer-1271"><span class="linenos">1271</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> +</span><span id="Tokenizer-1272"><a href="#Tokenizer-1272"><span class="linenos">1272</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> +</span><span id="Tokenizer-1273"><a href="#Tokenizer-1273"><span class="linenos">1273</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEREDOC_STRING</span><span class="p">:</span> +</span><span id="Tokenizer-1274"><a href="#Tokenizer-1274"><span class="linenos">1274</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Tokenizer-1275"><a href="#Tokenizer-1275"><span class="linenos">1275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span> +</span><span id="Tokenizer-1276"><a href="#Tokenizer-1276"><span class="linenos">1276</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">()</span> +</span><span id="Tokenizer-1277"><a href="#Tokenizer-1277"><span class="linenos">1277</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">end</span> +</span><span id="Tokenizer-1278"><a href="#Tokenizer-1278"><span class="linenos">1278</span></a> <span class="p">):</span> +</span><span id="Tokenizer-1279"><a href="#Tokenizer-1279"><span class="linenos">1279</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span> <span class="o">!=</span> <span class="n">token_type</span><span class="o">.</span><span class="n">VAR</span><span class="p">:</span> +</span><span id="Tokenizer-1280"><a href="#Tokenizer-1280"><span class="linenos">1280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> +</span><span id="Tokenizer-1281"><a href="#Tokenizer-1281"><span class="linenos">1281</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1282"><a href="#Tokenizer-1282"><span class="linenos">1282</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> </span><span id="Tokenizer-1283"><a href="#Tokenizer-1283"><span class="linenos">1283</span></a> -</span><span id="Tokenizer-1284"><a href="#Tokenizer-1284"><span class="linenos">1284</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1284"><a href="#Tokenizer-1284"><span class="linenos">1284</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Tokenizer-1285"><a href="#Tokenizer-1285"><span class="linenos">1285</span></a> -</span><span id="Tokenizer-1286"><a href="#Tokenizer-1286"><span class="linenos">1286</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">end</span><span class="p">:</span> -</span><span id="Tokenizer-1287"><a href="#Tokenizer-1287"><span class="linenos">1287</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-1288"><a href="#Tokenizer-1288"><span class="linenos">1288</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1289"><a href="#Tokenizer-1289"><span class="linenos">1289</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span> -</span><span id="Tokenizer-1290"><a href="#Tokenizer-1290"><span class="linenos">1290</span></a> <span class="n">end</span><span class="p">,</span> -</span><span id="Tokenizer-1291"><a href="#Tokenizer-1291"><span class="linenos">1291</span></a> <span class="n">unescape_sequences</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Tokenizer-1292"><a href="#Tokenizer-1292"><span class="linenos">1292</span></a> <span class="n">raise_unmatched</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">,</span> -</span><span id="Tokenizer-1293"><a href="#Tokenizer-1293"><span class="linenos">1293</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1294"><a href="#Tokenizer-1294"><span class="linenos">1294</span></a> -</span><span id="Tokenizer-1295"><a href="#Tokenizer-1295"><span class="linenos">1295</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="n">tag</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">:</span> -</span><span id="Tokenizer-1296"><a href="#Tokenizer-1296"><span class="linenos">1296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">tag</span><span class="p">))</span> -</span><span id="Tokenizer-1297"><a href="#Tokenizer-1297"><span class="linenos">1297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> -</span><span id="Tokenizer-1298"><a href="#Tokenizer-1298"><span class="linenos">1298</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Tokenizer-1299"><a href="#Tokenizer-1299"><span class="linenos">1299</span></a> -</span><span id="Tokenizer-1300"><a href="#Tokenizer-1300"><span class="linenos">1300</span></a> <span class="n">end</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">tag</span><span class="si">}{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Tokenizer-1301"><a href="#Tokenizer-1301"><span class="linenos">1301</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1302"><a href="#Tokenizer-1302"><span class="linenos">1302</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Tokenizer-1303"><a href="#Tokenizer-1303"><span class="linenos">1303</span></a> -</span><span id="Tokenizer-1304"><a href="#Tokenizer-1304"><span class="linenos">1304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="p">))</span> -</span><span id="Tokenizer-1305"><a href="#Tokenizer-1305"><span class="linenos">1305</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="n">unescape_sequences</span><span class="o">=</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">)</span> -</span><span id="Tokenizer-1306"><a href="#Tokenizer-1306"><span class="linenos">1306</span></a> -</span><span id="Tokenizer-1307"><a href="#Tokenizer-1307"><span class="linenos">1307</span></a> <span class="k">if</span> <span class="n">base</span><span class="p">:</span> -</span><span id="Tokenizer-1308"><a href="#Tokenizer-1308"><span class="linenos">1308</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-1309"><a href="#Tokenizer-1309"><span class="linenos">1309</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">base</span><span class="p">)</span> -</span><span id="Tokenizer-1310"><a href="#Tokenizer-1310"><span class="linenos">1310</span></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> -</span><span id="Tokenizer-1311"><a href="#Tokenizer-1311"><span class="linenos">1311</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span> -</span><span id="Tokenizer-1312"><a href="#Tokenizer-1312"><span class="linenos">1312</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters 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">"</span> -</span><span id="Tokenizer-1313"><a href="#Tokenizer-1313"><span class="linenos">1313</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1314"><a href="#Tokenizer-1314"><span class="linenos">1314</span></a> -</span><span id="Tokenizer-1315"><a href="#Tokenizer-1315"><span class="linenos">1315</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-1316"><a href="#Tokenizer-1316"><span class="linenos">1316</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Tokenizer-1317"><a href="#Tokenizer-1317"><span class="linenos">1317</span></a> -</span><span id="Tokenizer-1318"><a href="#Tokenizer-1318"><span class="linenos">1318</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1319"><a href="#Tokenizer-1319"><span class="linenos">1319</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1320"><a href="#Tokenizer-1320"><span class="linenos">1320</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">identifier_end</span><span class="p">,</span> <span class="n">escapes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span><span class="p">)</span> -</span><span id="Tokenizer-1321"><a href="#Tokenizer-1321"><span class="linenos">1321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-1322"><a href="#Tokenizer-1322"><span class="linenos">1322</span></a> -</span><span id="Tokenizer-1323"><a href="#Tokenizer-1323"><span class="linenos">1323</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1324"><a href="#Tokenizer-1324"><span class="linenos">1324</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1325"><a href="#Tokenizer-1325"><span class="linenos">1325</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Tokenizer-1326"><a href="#Tokenizer-1326"><span class="linenos">1326</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_SINGLE_TOKENS</span> <span class="ow">or</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">SINGLE_TOKENS</span><span class="p">):</span> -</span><span id="Tokenizer-1327"><a href="#Tokenizer-1327"><span class="linenos">1327</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-1328"><a href="#Tokenizer-1328"><span class="linenos">1328</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1329"><a href="#Tokenizer-1329"><span class="linenos">1329</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1330"><a href="#Tokenizer-1330"><span class="linenos">1330</span></a> -</span><span id="Tokenizer-1331"><a href="#Tokenizer-1331"><span class="linenos">1331</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> -</span><span id="Tokenizer-1332"><a href="#Tokenizer-1332"><span class="linenos">1332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> -</span><span id="Tokenizer-1333"><a href="#Tokenizer-1333"><span class="linenos">1333</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="Tokenizer-1334"><a href="#Tokenizer-1334"><span class="linenos">1334</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="Tokenizer-1335"><a href="#Tokenizer-1335"><span class="linenos">1335</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1336"><a href="#Tokenizer-1336"><span class="linenos">1336</span></a> -</span><span id="Tokenizer-1337"><a href="#Tokenizer-1337"><span class="linenos">1337</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span> -</span><span id="Tokenizer-1338"><a href="#Tokenizer-1338"><span class="linenos">1338</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Tokenizer-1339"><a href="#Tokenizer-1339"><span class="linenos">1339</span></a> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Tokenizer-1340"><a href="#Tokenizer-1340"><span class="linenos">1340</span></a> <span class="n">escapes</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">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Tokenizer-1341"><a href="#Tokenizer-1341"><span class="linenos">1341</span></a> <span class="n">unescape_sequences</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Tokenizer-1342"><a href="#Tokenizer-1342"><span class="linenos">1342</span></a> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Tokenizer-1343"><a href="#Tokenizer-1343"><span class="linenos">1343</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-1344"><a href="#Tokenizer-1344"><span class="linenos">1344</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-1345"><a href="#Tokenizer-1345"><span class="linenos">1345</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> -</span><span id="Tokenizer-1346"><a href="#Tokenizer-1346"><span class="linenos">1346</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-1347"><a href="#Tokenizer-1347"><span class="linenos">1347</span></a> -</span><span id="Tokenizer-1348"><a href="#Tokenizer-1348"><span class="linenos">1348</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1349"><a href="#Tokenizer-1349"><span class="linenos">1349</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Tokenizer-1350"><a href="#Tokenizer-1350"><span class="linenos">1350</span></a> <span class="n">unescape_sequences</span> -</span><span id="Tokenizer-1351"><a href="#Tokenizer-1351"><span class="linenos">1351</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span> -</span><span id="Tokenizer-1352"><a href="#Tokenizer-1352"><span class="linenos">1352</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> -</span><span id="Tokenizer-1353"><a href="#Tokenizer-1353"><span class="linenos">1353</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ESCAPES</span> -</span><span id="Tokenizer-1354"><a href="#Tokenizer-1354"><span class="linenos">1354</span></a> <span class="p">):</span> -</span><span id="Tokenizer-1355"><a href="#Tokenizer-1355"><span class="linenos">1355</span></a> <span class="n">unescaped_sequence</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="o">.</span><span class="n">get</span><span class="p">(</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-1356"><a href="#Tokenizer-1356"><span class="linenos">1356</span></a> <span class="k">if</span> <span class="n">unescaped_sequence</span><span class="p">:</span> -</span><span id="Tokenizer-1357"><a href="#Tokenizer-1357"><span class="linenos">1357</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-1358"><a href="#Tokenizer-1358"><span class="linenos">1358</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">unescaped_sequence</span> -</span><span id="Tokenizer-1359"><a href="#Tokenizer-1359"><span class="linenos">1359</span></a> <span class="k">continue</span> -</span><span id="Tokenizer-1360"><a href="#Tokenizer-1360"><span class="linenos">1360</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Tokenizer-1361"><a href="#Tokenizer-1361"><span class="linenos">1361</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-1362"><a href="#Tokenizer-1362"><span class="linenos">1362</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-1363"><a href="#Tokenizer-1363"><span class="linenos">1363</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-1364"><a href="#Tokenizer-1364"><span class="linenos">1364</span></a> <span class="p">):</span> -</span><span id="Tokenizer-1365"><a href="#Tokenizer-1365"><span class="linenos">1365</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-1366"><a href="#Tokenizer-1366"><span class="linenos">1366</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-1367"><a href="#Tokenizer-1367"><span class="linenos">1367</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1368"><a href="#Tokenizer-1368"><span class="linenos">1368</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-1369"><a href="#Tokenizer-1369"><span class="linenos">1369</span></a> -</span><span id="Tokenizer-1370"><a href="#Tokenizer-1370"><span class="linenos">1370</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"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="Tokenizer-1371"><a href="#Tokenizer-1371"><span class="linenos">1371</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-1372"><a href="#Tokenizer-1372"><span class="linenos">1372</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1373"><a href="#Tokenizer-1373"><span class="linenos">1373</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> -</span><span id="Tokenizer-1374"><a href="#Tokenizer-1374"><span class="linenos">1374</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1375"><a href="#Tokenizer-1375"><span class="linenos">1375</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-1376"><a href="#Tokenizer-1376"><span class="linenos">1376</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Tokenizer-1377"><a href="#Tokenizer-1377"><span class="linenos">1377</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-1378"><a href="#Tokenizer-1378"><span class="linenos">1378</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1379"><a href="#Tokenizer-1379"><span class="linenos">1379</span></a> -</span><span id="Tokenizer-1380"><a href="#Tokenizer-1380"><span class="linenos">1380</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-1381"><a href="#Tokenizer-1381"><span class="linenos">1381</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">raise_unmatched</span><span class="p">:</span> -</span><span id="Tokenizer-1382"><a href="#Tokenizer-1382"><span class="linenos">1382</span></a> <span class="k">return</span> <span class="n">text</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> -</span><span id="Tokenizer-1383"><a href="#Tokenizer-1383"><span class="linenos">1383</span></a> -</span><span id="Tokenizer-1384"><a href="#Tokenizer-1384"><span class="linenos">1384</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> +</span><span id="Tokenizer-1286"><a href="#Tokenizer-1286"><span class="linenos">1286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1287"><a href="#Tokenizer-1287"><span class="linenos">1287</span></a> +</span><span id="Tokenizer-1288"><a href="#Tokenizer-1288"><span class="linenos">1288</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">end</span><span class="p">:</span> +</span><span id="Tokenizer-1289"><a href="#Tokenizer-1289"><span class="linenos">1289</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-1290"><a href="#Tokenizer-1290"><span class="linenos">1290</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1291"><a href="#Tokenizer-1291"><span class="linenos">1291</span></a> <span class="n">tag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span> +</span><span id="Tokenizer-1292"><a href="#Tokenizer-1292"><span class="linenos">1292</span></a> <span class="n">end</span><span class="p">,</span> +</span><span id="Tokenizer-1293"><a href="#Tokenizer-1293"><span class="linenos">1293</span></a> <span class="n">unescape_sequences</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Tokenizer-1294"><a href="#Tokenizer-1294"><span class="linenos">1294</span></a> <span class="n">raise_unmatched</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">,</span> +</span><span id="Tokenizer-1295"><a href="#Tokenizer-1295"><span class="linenos">1295</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1296"><a href="#Tokenizer-1296"><span class="linenos">1296</span></a> +</span><span id="Tokenizer-1297"><a href="#Tokenizer-1297"><span class="linenos">1297</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="n">tag</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_TAG_IS_IDENTIFIER</span><span class="p">:</span> +</span><span id="Tokenizer-1298"><a href="#Tokenizer-1298"><span class="linenos">1298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">tag</span><span class="p">))</span> +</span><span id="Tokenizer-1299"><a href="#Tokenizer-1299"><span class="linenos">1299</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HEREDOC_STRING_ALTERNATIVE</span><span class="p">)</span> +</span><span id="Tokenizer-1300"><a href="#Tokenizer-1300"><span class="linenos">1300</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1301"><a href="#Tokenizer-1301"><span class="linenos">1301</span></a> +</span><span id="Tokenizer-1302"><a href="#Tokenizer-1302"><span class="linenos">1302</span></a> <span class="n">end</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">tag</span><span class="si">}{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Tokenizer-1303"><a href="#Tokenizer-1303"><span class="linenos">1303</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1304"><a href="#Tokenizer-1304"><span class="linenos">1304</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Tokenizer-1305"><a href="#Tokenizer-1305"><span class="linenos">1305</span></a> +</span><span id="Tokenizer-1306"><a href="#Tokenizer-1306"><span class="linenos">1306</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">start</span><span class="p">))</span> +</span><span id="Tokenizer-1307"><a href="#Tokenizer-1307"><span class="linenos">1307</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="n">unescape_sequences</span><span class="o">=</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RAW_STRING</span><span class="p">)</span> +</span><span id="Tokenizer-1308"><a href="#Tokenizer-1308"><span class="linenos">1308</span></a> +</span><span id="Tokenizer-1309"><a href="#Tokenizer-1309"><span class="linenos">1309</span></a> <span class="k">if</span> <span class="n">base</span><span class="p">:</span> +</span><span id="Tokenizer-1310"><a href="#Tokenizer-1310"><span class="linenos">1310</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-1311"><a href="#Tokenizer-1311"><span class="linenos">1311</span></a> <span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">base</span><span class="p">)</span> +</span><span id="Tokenizer-1312"><a href="#Tokenizer-1312"><span class="linenos">1312</span></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> +</span><span id="Tokenizer-1313"><a href="#Tokenizer-1313"><span class="linenos">1313</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span> +</span><span id="Tokenizer-1314"><a href="#Tokenizer-1314"><span class="linenos">1314</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters 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">"</span> +</span><span id="Tokenizer-1315"><a href="#Tokenizer-1315"><span class="linenos">1315</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1316"><a href="#Tokenizer-1316"><span class="linenos">1316</span></a> +</span><span id="Tokenizer-1317"><a href="#Tokenizer-1317"><span class="linenos">1317</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-1318"><a href="#Tokenizer-1318"><span class="linenos">1318</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1319"><a href="#Tokenizer-1319"><span class="linenos">1319</span></a> +</span><span id="Tokenizer-1320"><a href="#Tokenizer-1320"><span class="linenos">1320</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1321"><a href="#Tokenizer-1321"><span class="linenos">1321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1322"><a href="#Tokenizer-1322"><span class="linenos">1322</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">identifier_end</span><span class="p">,</span> <span class="n">escapes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span><span class="p">)</span> +</span><span id="Tokenizer-1323"><a href="#Tokenizer-1323"><span class="linenos">1323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-1324"><a href="#Tokenizer-1324"><span class="linenos">1324</span></a> +</span><span id="Tokenizer-1325"><a href="#Tokenizer-1325"><span class="linenos">1325</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1326"><a href="#Tokenizer-1326"><span class="linenos">1326</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1327"><a href="#Tokenizer-1327"><span class="linenos">1327</span></a> <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="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Tokenizer-1328"><a href="#Tokenizer-1328"><span class="linenos">1328</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="p">(</span><span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">VAR_SINGLE_TOKENS</span> <span class="ow">or</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">SINGLE_TOKENS</span><span class="p">):</span> +</span><span id="Tokenizer-1329"><a href="#Tokenizer-1329"><span class="linenos">1329</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-1330"><a href="#Tokenizer-1330"><span class="linenos">1330</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1331"><a href="#Tokenizer-1331"><span class="linenos">1331</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1332"><a href="#Tokenizer-1332"><span class="linenos">1332</span></a> +</span><span id="Tokenizer-1333"><a href="#Tokenizer-1333"><span class="linenos">1333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> +</span><span id="Tokenizer-1334"><a href="#Tokenizer-1334"><span class="linenos">1334</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> +</span><span id="Tokenizer-1335"><a href="#Tokenizer-1335"><span class="linenos">1335</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</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">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> +</span><span id="Tokenizer-1336"><a href="#Tokenizer-1336"><span class="linenos">1336</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="Tokenizer-1337"><a href="#Tokenizer-1337"><span class="linenos">1337</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1338"><a href="#Tokenizer-1338"><span class="linenos">1338</span></a> +</span><span id="Tokenizer-1339"><a href="#Tokenizer-1339"><span class="linenos">1339</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span> +</span><span id="Tokenizer-1340"><a href="#Tokenizer-1340"><span class="linenos">1340</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Tokenizer-1341"><a href="#Tokenizer-1341"><span class="linenos">1341</span></a> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Tokenizer-1342"><a href="#Tokenizer-1342"><span class="linenos">1342</span></a> <span class="n">escapes</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">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Tokenizer-1343"><a href="#Tokenizer-1343"><span class="linenos">1343</span></a> <span class="n">unescape_sequences</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Tokenizer-1344"><a href="#Tokenizer-1344"><span class="linenos">1344</span></a> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Tokenizer-1345"><a href="#Tokenizer-1345"><span class="linenos">1345</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-1346"><a href="#Tokenizer-1346"><span class="linenos">1346</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-1347"><a href="#Tokenizer-1347"><span class="linenos">1347</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> +</span><span id="Tokenizer-1348"><a href="#Tokenizer-1348"><span class="linenos">1348</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-1349"><a href="#Tokenizer-1349"><span class="linenos">1349</span></a> +</span><span id="Tokenizer-1350"><a href="#Tokenizer-1350"><span class="linenos">1350</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1351"><a href="#Tokenizer-1351"><span class="linenos">1351</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Tokenizer-1352"><a href="#Tokenizer-1352"><span class="linenos">1352</span></a> <span class="n">unescape_sequences</span> +</span><span id="Tokenizer-1353"><a href="#Tokenizer-1353"><span class="linenos">1353</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span> +</span><span id="Tokenizer-1354"><a href="#Tokenizer-1354"><span class="linenos">1354</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> +</span><span id="Tokenizer-1355"><a href="#Tokenizer-1355"><span class="linenos">1355</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">STRING_ESCAPES</span> +</span><span id="Tokenizer-1356"><a href="#Tokenizer-1356"><span class="linenos">1356</span></a> <span class="p">):</span> +</span><span id="Tokenizer-1357"><a href="#Tokenizer-1357"><span class="linenos">1357</span></a> <span class="n">unescaped_sequence</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="o">.</span><span class="n">get</span><span class="p">(</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-1358"><a href="#Tokenizer-1358"><span class="linenos">1358</span></a> <span class="k">if</span> <span class="n">unescaped_sequence</span><span class="p">:</span> +</span><span id="Tokenizer-1359"><a href="#Tokenizer-1359"><span class="linenos">1359</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-1360"><a href="#Tokenizer-1360"><span class="linenos">1360</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">unescaped_sequence</span> +</span><span id="Tokenizer-1361"><a href="#Tokenizer-1361"><span class="linenos">1361</span></a> <span class="k">continue</span> +</span><span id="Tokenizer-1362"><a href="#Tokenizer-1362"><span class="linenos">1362</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Tokenizer-1363"><a href="#Tokenizer-1363"><span class="linenos">1363</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-1364"><a href="#Tokenizer-1364"><span class="linenos">1364</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-1365"><a href="#Tokenizer-1365"><span class="linenos">1365</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-1366"><a href="#Tokenizer-1366"><span class="linenos">1366</span></a> <span class="p">):</span> +</span><span id="Tokenizer-1367"><a href="#Tokenizer-1367"><span class="linenos">1367</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-1368"><a href="#Tokenizer-1368"><span class="linenos">1368</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-1369"><a href="#Tokenizer-1369"><span class="linenos">1369</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1370"><a href="#Tokenizer-1370"><span class="linenos">1370</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-1371"><a href="#Tokenizer-1371"><span class="linenos">1371</span></a> +</span><span id="Tokenizer-1372"><a href="#Tokenizer-1372"><span class="linenos">1372</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"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="Tokenizer-1373"><a href="#Tokenizer-1373"><span class="linenos">1373</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-1374"><a href="#Tokenizer-1374"><span class="linenos">1374</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1375"><a href="#Tokenizer-1375"><span class="linenos">1375</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> +</span><span id="Tokenizer-1376"><a href="#Tokenizer-1376"><span class="linenos">1376</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1377"><a href="#Tokenizer-1377"><span class="linenos">1377</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-1378"><a href="#Tokenizer-1378"><span class="linenos">1378</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Tokenizer-1379"><a href="#Tokenizer-1379"><span class="linenos">1379</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-1380"><a href="#Tokenizer-1380"><span class="linenos">1380</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1381"><a href="#Tokenizer-1381"><span class="linenos">1381</span></a> +</span><span id="Tokenizer-1382"><a href="#Tokenizer-1382"><span class="linenos">1382</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-1383"><a href="#Tokenizer-1383"><span class="linenos">1383</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">raise_unmatched</span><span class="p">:</span> +</span><span id="Tokenizer-1384"><a href="#Tokenizer-1384"><span class="linenos">1384</span></a> <span class="k">return</span> <span class="n">text</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> </span><span id="Tokenizer-1385"><a href="#Tokenizer-1385"><span class="linenos">1385</span></a> -</span><span id="Tokenizer-1386"><a href="#Tokenizer-1386"><span class="linenos">1386</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-1387"><a href="#Tokenizer-1387"><span class="linenos">1387</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-1388"><a href="#Tokenizer-1388"><span class="linenos">1388</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-1389"><a href="#Tokenizer-1389"><span class="linenos">1389</span></a> -</span><span id="Tokenizer-1390"><a href="#Tokenizer-1390"><span class="linenos">1390</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="Tokenizer-1386"><a href="#Tokenizer-1386"><span class="linenos">1386</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"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">"</span><span class="p">)</span> +</span><span id="Tokenizer-1387"><a href="#Tokenizer-1387"><span class="linenos">1387</span></a> +</span><span id="Tokenizer-1388"><a href="#Tokenizer-1388"><span class="linenos">1388</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-1389"><a href="#Tokenizer-1389"><span class="linenos">1389</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-1390"><a href="#Tokenizer-1390"><span class="linenos">1390</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-1391"><a href="#Tokenizer-1391"><span class="linenos">1391</span></a> -</span><span id="Tokenizer-1392"><a href="#Tokenizer-1392"><span class="linenos">1392</span></a> <span class="k">def</span> <span class="nf">tokenize_rs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Tokenizer-1393"><a href="#Tokenizer-1393"><span class="linenos">1393</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="Tokenizer-1394"><a href="#Tokenizer-1394"><span class="linenos">1394</span></a> <span class="k">raise</span> <span class="n">SqlglotError</span><span class="p">(</span><span class="s2">"Rust tokenizer is not available"</span><span class="p">)</span> -</span><span id="Tokenizer-1395"><a href="#Tokenizer-1395"><span class="linenos">1395</span></a> -</span><span id="Tokenizer-1396"><a href="#Tokenizer-1396"><span class="linenos">1396</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-1397"><a href="#Tokenizer-1397"><span class="linenos">1397</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span><span class="p">)</span> -</span><span id="Tokenizer-1398"><a href="#Tokenizer-1398"><span class="linenos">1398</span></a> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">tokens</span><span class="p">:</span> -</span><span id="Tokenizer-1399"><a href="#Tokenizer-1399"><span class="linenos">1399</span></a> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">_ALL_TOKEN_TYPES</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">token_type_index</span><span class="p">]</span> -</span><span id="Tokenizer-1400"><a href="#Tokenizer-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="n">tokens</span> -</span><span id="Tokenizer-1401"><a href="#Tokenizer-1401"><span class="linenos">1401</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Tokenizer-1402"><a href="#Tokenizer-1402"><span class="linenos">1402</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> +</span><span id="Tokenizer-1392"><a href="#Tokenizer-1392"><span class="linenos">1392</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="Tokenizer-1393"><a href="#Tokenizer-1393"><span class="linenos">1393</span></a> +</span><span id="Tokenizer-1394"><a href="#Tokenizer-1394"><span class="linenos">1394</span></a> <span class="k">def</span> <span class="nf">tokenize_rs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Tokenizer-1395"><a href="#Tokenizer-1395"><span class="linenos">1395</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="Tokenizer-1396"><a href="#Tokenizer-1396"><span class="linenos">1396</span></a> <span class="k">raise</span> <span class="n">SqlglotError</span><span class="p">(</span><span class="s2">"Rust tokenizer is not available"</span><span class="p">)</span> +</span><span id="Tokenizer-1397"><a href="#Tokenizer-1397"><span class="linenos">1397</span></a> +</span><span id="Tokenizer-1398"><a href="#Tokenizer-1398"><span class="linenos">1398</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-1399"><a href="#Tokenizer-1399"><span class="linenos">1399</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span><span class="p">)</span> +</span><span id="Tokenizer-1400"><a href="#Tokenizer-1400"><span class="linenos">1400</span></a> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">tokens</span><span class="p">:</span> +</span><span id="Tokenizer-1401"><a href="#Tokenizer-1401"><span class="linenos">1401</span></a> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">_ALL_TOKEN_TYPES</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">token_type_index</span><span class="p">]</span> +</span><span id="Tokenizer-1402"><a href="#Tokenizer-1402"><span class="linenos">1402</span></a> <span class="k">return</span> <span class="n">tokens</span> +</span><span id="Tokenizer-1403"><a href="#Tokenizer-1403"><span class="linenos">1403</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Tokenizer-1404"><a href="#Tokenizer-1404"><span class="linenos">1404</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> </span></pre></div> @@ -8447,18 +8466,18 @@ </div> <a class="headerlink" href="#Tokenizer.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.__init__-931"><a href="#Tokenizer.__init__-931"><span class="linenos">931</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer.__init__-932"><a href="#Tokenizer.__init__-932"><span class="linenos">932</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="Tokenizer.__init__-933"><a href="#Tokenizer.__init__-933"><span class="linenos">933</span></a> -</span><span id="Tokenizer.__init__-934"><a href="#Tokenizer.__init__-934"><span class="linenos">934</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.__init__-933"><a href="#Tokenizer.__init__-933"><span class="linenos">933</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer.__init__-934"><a href="#Tokenizer.__init__-934"><span class="linenos">934</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> </span><span id="Tokenizer.__init__-935"><a href="#Tokenizer.__init__-935"><span class="linenos">935</span></a> -</span><span id="Tokenizer.__init__-936"><a href="#Tokenizer.__init__-936"><span class="linenos">936</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="Tokenizer.__init__-937"><a href="#Tokenizer.__init__-937"><span class="linenos">937</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span> <span class="o">=</span> <span class="n">RsTokenizerDialectSettings</span><span class="p">(</span> -</span><span id="Tokenizer.__init__-938"><a href="#Tokenizer.__init__-938"><span class="linenos">938</span></a> <span class="n">unescaped_sequences</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> -</span><span id="Tokenizer.__init__-939"><a href="#Tokenizer.__init__-939"><span class="linenos">939</span></a> <span class="n">identifiers_can_start_with_digit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">,</span> -</span><span id="Tokenizer.__init__-940"><a href="#Tokenizer.__init__-940"><span class="linenos">940</span></a> <span class="p">)</span> -</span><span id="Tokenizer.__init__-941"><a href="#Tokenizer.__init__-941"><span class="linenos">941</span></a> -</span><span id="Tokenizer.__init__-942"><a href="#Tokenizer.__init__-942"><span class="linenos">942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer.__init__-936"><a href="#Tokenizer.__init__-936"><span class="linenos">936</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="Tokenizer.__init__-937"><a href="#Tokenizer.__init__-937"><span class="linenos">937</span></a> +</span><span id="Tokenizer.__init__-938"><a href="#Tokenizer.__init__-938"><span class="linenos">938</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="Tokenizer.__init__-939"><a href="#Tokenizer.__init__-939"><span class="linenos">939</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span> <span class="o">=</span> <span class="n">RsTokenizerDialectSettings</span><span class="p">(</span> +</span><span id="Tokenizer.__init__-940"><a href="#Tokenizer.__init__-940"><span class="linenos">940</span></a> <span class="n">unescaped_sequences</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">UNESCAPED_SEQUENCES</span><span class="p">,</span> +</span><span id="Tokenizer.__init__-941"><a href="#Tokenizer.__init__-941"><span class="linenos">941</span></a> <span class="n">identifiers_can_start_with_digit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span><span class="p">,</span> +</span><span id="Tokenizer.__init__-942"><a href="#Tokenizer.__init__-942"><span class="linenos">942</span></a> <span class="p">)</span> +</span><span id="Tokenizer.__init__-943"><a href="#Tokenizer.__init__-943"><span class="linenos">943</span></a> +</span><span id="Tokenizer.__init__-944"><a href="#Tokenizer.__init__-944"><span class="linenos">944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> </span></pre></div> @@ -8638,7 +8657,7 @@ <div class="attr variable"> <span class="name">KEYWORDS</span><span class="annotation">: Dict[str, <a href="#TokenType">TokenType</a>]</span> = <input id="Tokenizer.KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '{%+': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '{%-': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '%}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '+%}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '-%}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '{{+': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '{{-': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '+}}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '-}}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '/*+': <<a href="#TokenType.HINT">TokenType.HINT</a>: 'HINT'>, '==': <<a href="#TokenType.EQ">TokenType.EQ</a>: 'EQ'>, '::': <<a href="#TokenType.DCOLON">TokenType.DCOLON</a>: 'DCOLON'>, '||': <<a href="#TokenType.DPIPE">TokenType.DPIPE</a>: 'DPIPE'>, '>=': <<a href="#TokenType.GTE">TokenType.GTE</a>: 'GTE'>, '<=': <<a href="#TokenType.LTE">TokenType.LTE</a>: 'LTE'>, '<>': <<a href="#TokenType.NEQ">TokenType.NEQ</a>: 'NEQ'>, '!=': <<a href="#TokenType.NEQ">TokenType.NEQ</a>: 'NEQ'>, ':=': <<a href="#TokenType.COLON_EQ">TokenType.COLON_EQ</a>: 'COLON_EQ'>, '<=>': <<a href="#TokenType.NULLSAFE_EQ">TokenType.NULLSAFE_EQ</a>: 'NULLSAFE_EQ'>, '->': <<a href="#TokenType.ARROW">TokenType.ARROW</a>: 'ARROW'>, '->>': <<a href="#TokenType.DARROW">TokenType.DARROW</a>: 'DARROW'>, '=>': <<a href="#TokenType.FARROW">TokenType.FARROW</a>: 'FARROW'>, '#>': <<a href="#TokenType.HASH_ARROW">TokenType.HASH_ARROW</a>: 'HASH_ARROW'>, '#>>': <<a href="#TokenType.DHASH_ARROW">TokenType.DHASH_ARROW</a>: 'DHASH_ARROW'>, '<->': <<a href="#TokenType.LR_ARROW">TokenType.LR_ARROW</a>: 'LR_ARROW'>, '&&': <<a href="#TokenType.DAMP">TokenType.DAMP</a>: 'DAMP'>, '??': <<a href="#TokenType.DQMARK">TokenType.DQMARK</a>: 'DQMARK'>, 'ALL': <<a href="#TokenType.ALL">TokenType.ALL</a>: 'ALL'>, 'ALWAYS': <<a href="#TokenType.ALWAYS">TokenType.ALWAYS</a>: 'ALWAYS'>, 'AND': <<a href="#TokenType.AND">TokenType.AND</a>: 'AND'>, 'ANTI': <<a href="#TokenType.ANTI">TokenType.ANTI</a>: 'ANTI'>, 'ANY': <<a href="#TokenType.ANY">TokenType.ANY</a>: 'ANY'>, 'ASC': <<a href="#TokenType.ASC">TokenType.ASC</a>: 'ASC'>, 'AS': <<a href="#TokenType.ALIAS">TokenType.ALIAS</a>: 'ALIAS'>, 'ASOF': <<a href="#TokenType.ASOF">TokenType.ASOF</a>: 'ASOF'>, 'AUTOINCREMENT': <<a href="#TokenType.AUTO_INCREMENT">TokenType.AUTO_INCREMENT</a>: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <<a href="#TokenType.AUTO_INCREMENT">TokenType.AUTO_INCREMENT</a>: 'AUTO_INCREMENT'>, 'BEGIN': <<a href="#TokenType.BEGIN">TokenType.BEGIN</a>: 'BEGIN'>, 'BETWEEN': <<a href="#TokenType.BETWEEN">TokenType.BETWEEN</a>: 'BETWEEN'>, 'CACHE': <<a href="#TokenType.CACHE">TokenType.CACHE</a>: 'CACHE'>, 'UNCACHE': <<a href="#TokenType.UNCACHE">TokenType.UNCACHE</a>: 'UNCACHE'>, 'CASE': <<a href="#TokenType.CASE">TokenType.CASE</a>: 'CASE'>, 'CHARACTER SET': <<a href="#TokenType.CHARACTER_SET">TokenType.CHARACTER_SET</a>: 'CHARACTER_SET'>, 'CLUSTER BY': <<a href="#TokenType.CLUSTER_BY">TokenType.CLUSTER_BY</a>: 'CLUSTER_BY'>, 'COLLATE': <<a href="#TokenType.COLLATE">TokenType.COLLATE</a>: 'COLLATE'>, 'COLUMN': <<a href="#TokenType.COLUMN">TokenType.COLUMN</a>: 'COLUMN'>, 'COMMIT': <<a href="#TokenType.COMMIT">TokenType.COMMIT</a>: 'COMMIT'>, 'CONNECT BY': <<a href="#TokenType.CONNECT_BY">TokenType.CONNECT_BY</a>: 'CONNECT_BY'>, 'CONSTRAINT': <<a href="#TokenType.CONSTRAINT">TokenType.CONSTRAINT</a>: 'CONSTRAINT'>, 'COPY': <<a href="#TokenType.COPY">TokenType.COPY</a>: 'COPY'>, 'CREATE': <<a href="#TokenType.CREATE">TokenType.CREATE</a>: 'CREATE'>, 'CROSS': <<a href="#TokenType.CROSS">TokenType.CROSS</a>: 'CROSS'>, 'CUBE': <<a href="#TokenType.CUBE">TokenType.CUBE</a>: 'CUBE'>, 'CURRENT_DATE': <<a href="#TokenType.CURRENT_DATE">TokenType.CURRENT_DATE</a>: 'CURRENT_DATE'>, 'CURRENT_TIME': <<a href="#TokenType.CURRENT_TIME">TokenType.CURRENT_TIME</a>: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <<a href="#TokenType.CURRENT_TIMESTAMP">TokenType.CURRENT_TIMESTAMP</a>: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <<a href="#TokenType.CURRENT_USER">TokenType.CURRENT_USER</a>: 'CURRENT_USER'>, 'DATABASE': <<a href="#TokenType.DATABASE">TokenType.DATABASE</a>: 'DATABASE'>, 'DEFAULT': <<a href="#TokenType.DEFAULT">TokenType.DEFAULT</a>: 'DEFAULT'>, 'DELETE': <<a href="#TokenType.DELETE">TokenType.DELETE</a>: 'DELETE'>, 'DESC': <<a href="#TokenType.DESC">TokenType.DESC</a>: 'DESC'>, 'DESCRIBE': <<a href="#TokenType.DESCRIBE">TokenType.DESCRIBE</a>: 'DESCRIBE'>, 'DISTINCT': <<a href="#TokenType.DISTINCT">TokenType.DISTINCT</a>: 'DISTINCT'>, 'DISTRIBUTE BY': <<a href="#TokenType.DISTRIBUTE_BY">TokenType.DISTRIBUTE_BY</a>: 'DISTRIBUTE_BY'>, 'DIV': <<a href="#TokenType.DIV">TokenType.DIV</a>: 'DIV'>, 'DROP': <<a href="#TokenType.DROP">TokenType.DROP</a>: 'DROP'>, 'ELSE': <<a href="#TokenType.ELSE">TokenType.ELSE</a>: 'ELSE'>, 'END': <<a href="#TokenType.END">TokenType.END</a>: 'END'>, 'ENUM': <<a href="#TokenType.ENUM">TokenType.ENUM</a>: 'ENUM'>, 'ESCAPE': <<a href="#TokenType.ESCAPE">TokenType.ESCAPE</a>: 'ESCAPE'>, 'EXCEPT': <<a href="#TokenType.EXCEPT">TokenType.EXCEPT</a>: 'EXCEPT'>, 'EXECUTE': <<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'>, 'EXISTS': <<a href="#TokenType.EXISTS">TokenType.EXISTS</a>: 'EXISTS'>, 'FALSE': <<a href="#TokenType.FALSE">TokenType.FALSE</a>: 'FALSE'>, 'FETCH': <<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'>, 'FILTER': <<a href="#TokenType.FILTER">TokenType.FILTER</a>: 'FILTER'>, 'FIRST': <<a href="#TokenType.FIRST">TokenType.FIRST</a>: 'FIRST'>, 'FULL': <<a href="#TokenType.FULL">TokenType.FULL</a>: 'FULL'>, 'FUNCTION': <<a href="#TokenType.FUNCTION">TokenType.FUNCTION</a>: 'FUNCTION'>, 'FOR': <<a href="#TokenType.FOR">TokenType.FOR</a>: 'FOR'>, 'FOREIGN KEY': <<a href="#TokenType.FOREIGN_KEY">TokenType.FOREIGN_KEY</a>: 'FOREIGN_KEY'>, 'FORMAT': <<a href="#TokenType.FORMAT">TokenType.FORMAT</a>: 'FORMAT'>, 'FROM': <<a href="#TokenType.FROM">TokenType.FROM</a>: 'FROM'>, 'GEOGRAPHY': <<a href="#TokenType.GEOGRAPHY">TokenType.GEOGRAPHY</a>: 'GEOGRAPHY'>, 'GEOMETRY': <<a href="#TokenType.GEOMETRY">TokenType.GEOMETRY</a>: 'GEOMETRY'>, 'GLOB': <<a href="#TokenType.GLOB">TokenType.GLOB</a>: 'GLOB'>, 'GROUP BY': <<a href="#TokenType.GROUP_BY">TokenType.GROUP_BY</a>: 'GROUP_BY'>, 'GROUPING SETS': <<a href="#TokenType.GROUPING_SETS">TokenType.GROUPING_SETS</a>: 'GROUPING_SETS'>, 'HAVING': <<a href="#TokenType.HAVING">TokenType.HAVING</a>: 'HAVING'>, 'ILIKE': <<a href="#TokenType.ILIKE">TokenType.ILIKE</a>: 'ILIKE'>, 'IN': <<a href="#TokenType.IN">TokenType.IN</a>: 'IN'>, 'INDEX': <<a href="#TokenType.INDEX">TokenType.INDEX</a>: 'INDEX'>, 'INET': <<a href="#TokenType.INET">TokenType.INET</a>: 'INET'>, 'INNER': <<a href="#TokenType.INNER">TokenType.INNER</a>: 'INNER'>, 'INSERT': <<a href="#TokenType.INSERT">TokenType.INSERT</a>: 'INSERT'>, 'INTERVAL': <<a href="#TokenType.INTERVAL">TokenType.INTERVAL</a>: 'INTERVAL'>, 'INTERSECT': <<a href="#TokenType.INTERSECT">TokenType.INTERSECT</a>: 'INTERSECT'>, 'INTO': <<a href="#TokenType.INTO">TokenType.INTO</a>: 'INTO'>, 'IS': <<a href="#TokenType.IS">TokenType.IS</a>: 'IS'>, 'ISNULL': <<a href="#TokenType.ISNULL">TokenType.ISNULL</a>: 'ISNULL'>, 'JOIN': <<a href="#TokenType.JOIN">TokenType.JOIN</a>: 'JOIN'>, 'KEEP': <<a href="#TokenType.KEEP">TokenType.KEEP</a>: 'KEEP'>, 'KILL': <<a href="#TokenType.KILL">TokenType.KILL</a>: 'KILL'>, 'LATERAL': <<a href="#TokenType.LATERAL">TokenType.LATERAL</a>: 'LATERAL'>, 'LEFT': <<a href="#TokenType.LEFT">TokenType.LEFT</a>: 'LEFT'>, 'LIKE': <<a href="#TokenType.LIKE">TokenType.LIKE</a>: 'LIKE'>, 'LIMIT': <<a href="#TokenType.LIMIT">TokenType.LIMIT</a>: 'LIMIT'>, 'LOAD': <<a href="#TokenType.LOAD">TokenType.LOAD</a>: 'LOAD'>, 'LOCK': <<a href="#TokenType.LOCK">TokenType.LOCK</a>: 'LOCK'>, 'MERGE': <<a href="#TokenType.MERGE">TokenType.MERGE</a>: 'MERGE'>, 'NATURAL': <<a href="#TokenType.NATURAL">TokenType.NATURAL</a>: 'NATURAL'>, 'NEXT': <<a href="#TokenType.NEXT">TokenType.NEXT</a>: 'NEXT'>, 'NOT': <<a href="#TokenType.NOT">TokenType.NOT</a>: 'NOT'>, 'NOTNULL': <<a href="#TokenType.NOTNULL">TokenType.NOTNULL</a>: 'NOTNULL'>, 'NULL': <<a href="#TokenType.NULL">TokenType.NULL</a>: 'NULL'>, 'OBJECT': <<a href="#TokenType.OBJECT">TokenType.OBJECT</a>: 'OBJECT'>, 'OFFSET': <<a href="#TokenType.OFFSET">TokenType.OFFSET</a>: 'OFFSET'>, 'ON': <<a href="#TokenType.ON">TokenType.ON</a>: 'ON'>, 'OR': <<a href="#TokenType.OR">TokenType.OR</a>: 'OR'>, 'XOR': <<a href="#TokenType.XOR">TokenType.XOR</a>: 'XOR'>, 'ORDER BY': <<a href="#TokenType.ORDER_BY">TokenType.ORDER_BY</a>: 'ORDER_BY'>, 'ORDINALITY': <<a href="#TokenType.ORDINALITY">TokenType.ORDINALITY</a>: 'ORDINALITY'>, 'OUTER': <<a href="#TokenType.OUTER">TokenType.OUTER</a>: 'OUTER'>, 'OVER': <<a href="#TokenType.OVER">TokenType.OVER</a>: 'OVER'>, 'OVERLAPS': <<a href="#TokenType.OVERLAPS">TokenType.OVERLAPS</a>: 'OVERLAPS'>, 'OVERWRITE': <<a href="#TokenType.OVERWRITE">TokenType.OVERWRITE</a>: 'OVERWRITE'>, 'PARTITION': <<a href="#TokenType.PARTITION">TokenType.PARTITION</a>: 'PARTITION'>, 'PARTITION BY': <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'>, 'PARTITIONED BY': <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'>, 'PARTITIONED_BY': <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'>, 'PERCENT': <<a href="#TokenType.PERCENT">TokenType.PERCENT</a>: 'PERCENT'>, 'PIVOT': <<a href="#TokenType.PIVOT">TokenType.PIVOT</a>: 'PIVOT'>, 'PRAGMA': <<a href="#TokenType.PRAGMA">TokenType.PRAGMA</a>: 'PRAGMA'>, 'PRIMARY KEY': <<a href="#TokenType.PRIMARY_KEY">TokenType.PRIMARY_KEY</a>: 'PRIMARY_KEY'>, 'PROCEDURE': <<a href="#TokenType.PROCEDURE">TokenType.PROCEDURE</a>: 'PROCEDURE'>, 'QUALIFY': <<a href="#TokenType.QUALIFY">TokenType.QUALIFY</a>: 'QUALIFY'>, 'RANGE': <<a href="#TokenType.RANGE">TokenType.RANGE</a>: 'RANGE'>, 'RECURSIVE': <<a href="#TokenType.RECURSIVE">TokenType.RECURSIVE</a>: 'RECURSIVE'>, 'REGEXP': <<a href="#TokenType.RLIKE">TokenType.RLIKE</a>: 'RLIKE'>, 'REPLACE': <<a href="#TokenType.REPLACE">TokenType.REPLACE</a>: 'REPLACE'>, 'RETURNING': <<a href="#TokenType.RETURNING">TokenType.RETURNING</a>: 'RETURNING'>, 'REFERENCES': <<a href="#TokenType.REFERENCES">TokenType.REFERENCES</a>: 'REFERENCES'>, 'RIGHT': <<a href="#TokenType.RIGHT">TokenType.RIGHT</a>: 'RIGHT'>, 'RLIKE': <<a href="#TokenType.RLIKE">TokenType.RLIKE</a>: 'RLIKE'>, 'ROLLBACK': <<a href="#TokenType.ROLLBACK">TokenType.ROLLBACK</a>: 'ROLLBACK'>, 'ROLLUP': <<a href="#TokenType.ROLLUP">TokenType.ROLLUP</a>: 'ROLLUP'>, 'ROW': <<a href="#TokenType.ROW">TokenType.ROW</a>: 'ROW'>, 'ROWS': <<a href="#TokenType.ROWS">TokenType.ROWS</a>: 'ROWS'>, 'SCHEMA': <<a href="#TokenType.SCHEMA">TokenType.SCHEMA</a>: 'SCHEMA'>, 'SELECT': <<a href="#TokenType.SELECT">TokenType.SELECT</a>: 'SELECT'>, 'SEMI': <<a href="#TokenType.SEMI">TokenType.SEMI</a>: 'SEMI'>, 'SET': <<a href="#TokenType.SET">TokenType.SET</a>: 'SET'>, 'SETTINGS': <<a href="#TokenType.SETTINGS">TokenType.SETTINGS</a>: 'SETTINGS'>, 'SHOW': <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'>, 'SIMILAR TO': <<a href="#TokenType.SIMILAR_TO">TokenType.SIMILAR_TO</a>: 'SIMILAR_TO'>, 'SOME': <<a href="#TokenType.SOME">TokenType.SOME</a>: 'SOME'>, 'SORT BY': <<a href="#TokenType.SORT_BY">TokenType.SORT_BY</a>: 'SORT_BY'>, 'START WITH': <<a href="#TokenType.START_WITH">TokenType.START_WITH</a>: 'START_WITH'>, 'TABLE': <<a href="#TokenType.TABLE">TokenType.TABLE</a>: 'TABLE'>, 'TABLESAMPLE': <<a href="#TokenType.TABLE_SAMPLE">TokenType.TABLE_SAMPLE</a>: 'TABLE_SAMPLE'>, 'TEMP': <<a href="#TokenType.TEMPORARY">TokenType.TEMPORARY</a>: 'TEMPORARY'>, 'TEMPORARY': <<a href="#TokenType.TEMPORARY">TokenType.TEMPORARY</a>: 'TEMPORARY'>, 'THEN': <<a href="#TokenType.THEN">TokenType.THEN</a>: 'THEN'>, 'TRUE': <<a href="#TokenType.TRUE">TokenType.TRUE</a>: 'TRUE'>, 'TRUNCATE': <<a href="#TokenType.TRUNCATE">TokenType.TRUNCATE</a>: 'TRUNCATE'>, 'UNION': <<a href="#TokenType.UNION">TokenType.UNION</a>: 'UNION'>, 'UNKNOWN': <<a href="#TokenType.UNKNOWN">TokenType.UNKNOWN</a>: 'UNKNOWN'>, 'UNNEST': <<a href="#TokenType.UNNEST">TokenType.UNNEST</a>: 'UNNEST'>, 'UNPIVOT': <<a href="#TokenType.UNPIVOT">TokenType.UNPIVOT</a>: 'UNPIVOT'>, 'UPDATE': <<a href="#TokenType.UPDATE">TokenType.UPDATE</a>: 'UPDATE'>, 'USE': <<a href="#TokenType.USE">TokenType.USE</a>: 'USE'>, 'USING': <<a href="#TokenType.USING">TokenType.USING</a>: 'USING'>, 'UUID': <<a href="#TokenType.UUID">TokenType.UUID</a>: 'UUID'>, 'VALUES': <<a href="#TokenType.VALUES">TokenType.VALUES</a>: 'VALUES'>, 'VIEW': <<a href="#TokenType.VIEW">TokenType.VIEW</a>: 'VIEW'>, 'VOLATILE': <<a href="#TokenType.VOLATILE">TokenType.VOLATILE</a>: 'VOLATILE'>, 'WHEN': <<a href="#TokenType.WHEN">TokenType.WHEN</a>: 'WHEN'>, 'WHERE': <<a href="#TokenType.WHERE">TokenType.WHERE</a>: 'WHERE'>, 'WINDOW': <<a href="#TokenType.WINDOW">TokenType.WINDOW</a>: 'WINDOW'>, 'WITH': <<a href="#TokenType.WITH">TokenType.WITH</a>: 'WITH'>, 'APPLY': <<a href="#TokenType.APPLY">TokenType.APPLY</a>: 'APPLY'>, 'ARRAY': <<a href="#TokenType.ARRAY">TokenType.ARRAY</a>: 'ARRAY'>, 'BIT': <<a href="#TokenType.BIT">TokenType.BIT</a>: 'BIT'>, 'BOOL': <<a href="#TokenType.BOOLEAN">TokenType.BOOLEAN</a>: 'BOOLEAN'>, 'BOOLEAN': <<a href="#TokenType.BOOLEAN">TokenType.BOOLEAN</a>: 'BOOLEAN'>, 'BYTE': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'MEDIUMINT': <<a href="#TokenType.MEDIUMINT">TokenType.MEDIUMINT</a>: 'MEDIUMINT'>, 'INT1': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'TINYINT': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'INT16': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'SHORT': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'SMALLINT': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'INT128': <<a href="#TokenType.INT128">TokenType.INT128</a>: 'INT128'>, 'HUGEINT': <<a href="#TokenType.INT128">TokenType.INT128</a>: 'INT128'>, 'INT2': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'INTEGER': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT4': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT32': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT64': <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'>, 'LONG': <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'>, 'BIGINT': <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'>, 'INT8': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'UINT': <<a href="#TokenType.UINT">TokenType.UINT</a>: 'UINT'>, 'DEC': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'DECIMAL': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'BIGDECIMAL': <<a href="#TokenType.BIGDECIMAL">TokenType.BIGDECIMAL</a>: 'BIGDECIMAL'>, 'BIGNUMERIC': <<a href="#TokenType.BIGDECIMAL">TokenType.BIGDECIMAL</a>: 'BIGDECIMAL'>, 'MAP': <<a href="#TokenType.MAP">TokenType.MAP</a>: 'MAP'>, 'NULLABLE': <<a href="#TokenType.NULLABLE">TokenType.NULLABLE</a>: 'NULLABLE'>, 'NUMBER': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'NUMERIC': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'FIXED': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'REAL': <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'>, 'FLOAT': <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'>, 'FLOAT4': <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'>, 'FLOAT8': <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'>, 'DOUBLE': <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'>, 'DOUBLE PRECISION': <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'>, 'JSON': <<a href="#TokenType.JSON">TokenType.JSON</a>: 'JSON'>, 'JSONB': <<a href="#TokenType.JSONB">TokenType.JSONB</a>: 'JSONB'>, 'CHAR': <<a href="#TokenType.CHAR">TokenType.CHAR</a>: 'CHAR'>, 'CHARACTER': <<a href="#TokenType.CHAR">TokenType.CHAR</a>: 'CHAR'>, 'NCHAR': <<a href="#TokenType.NCHAR">TokenType.NCHAR</a>: 'NCHAR'>, 'VARCHAR': <<a href="#TokenType.VARCHAR">TokenType.VARCHAR</a>: 'VARCHAR'>, 'VARCHAR2': <<a href="#TokenType.VARCHAR">TokenType.VARCHAR</a>: 'VARCHAR'>, 'NVARCHAR': <<a href="#TokenType.NVARCHAR">TokenType.NVARCHAR</a>: 'NVARCHAR'>, 'NVARCHAR2': <<a href="#TokenType.NVARCHAR">TokenType.NVARCHAR</a>: 'NVARCHAR'>, 'BPCHAR': <<a href="#TokenType.BPCHAR">TokenType.BPCHAR</a>: 'BPCHAR'>, 'STR': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'STRING': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'TEXT': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'LONGTEXT': <<a href="#TokenType.LONGTEXT">TokenType.LONGTEXT</a>: 'LONGTEXT'>, 'MEDIUMTEXT': <<a href="#TokenType.MEDIUMTEXT">TokenType.MEDIUMTEXT</a>: 'MEDIUMTEXT'>, 'TINYTEXT': <<a href="#TokenType.TINYTEXT">TokenType.TINYTEXT</a>: 'TINYTEXT'>, 'CLOB': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'LONGVARCHAR': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'BINARY': <<a href="#TokenType.BINARY">TokenType.BINARY</a>: 'BINARY'>, 'BLOB': <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'>, 'LONGBLOB': <<a href="#TokenType.LONGBLOB">TokenType.LONGBLOB</a>: 'LONGBLOB'>, 'MEDIUMBLOB': <<a href="#TokenType.MEDIUMBLOB">TokenType.MEDIUMBLOB</a>: 'MEDIUMBLOB'>, 'TINYBLOB': <<a href="#TokenType.TINYBLOB">TokenType.TINYBLOB</a>: 'TINYBLOB'>, 'BYTEA': <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'>, 'VARBINARY': <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'>, 'TIME': <<a href="#TokenType.TIME">TokenType.TIME</a>: 'TIME'>, 'TIMETZ': <<a href="#TokenType.TIMETZ">TokenType.TIMETZ</a>: 'TIMETZ'>, 'TIMESTAMP': <<a href="#TokenType.TIMESTAMP">TokenType.TIMESTAMP</a>: 'TIMESTAMP'>, 'TIMESTAMPTZ': <<a href="#TokenType.TIMESTAMPTZ">TokenType.TIMESTAMPTZ</a>: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <<a href="#TokenType.TIMESTAMPLTZ">TokenType.TIMESTAMPLTZ</a>: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <<a href="#TokenType.TIMESTAMPLTZ">TokenType.TIMESTAMPLTZ</a>: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <<a href="#TokenType.TIMESTAMPNTZ">TokenType.TIMESTAMPNTZ</a>: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <<a href="#TokenType.TIMESTAMPNTZ">TokenType.TIMESTAMPNTZ</a>: 'TIMESTAMPNTZ'>, 'DATE': <<a href="#TokenType.DATE">TokenType.DATE</a>: 'DATE'>, 'DATETIME': <<a href="#TokenType.DATETIME">TokenType.DATETIME</a>: 'DATETIME'>, 'INT4RANGE': <<a href="#TokenType.INT4RANGE">TokenType.INT4RANGE</a>: 'INT4RANGE'>, 'INT4MULTIRANGE': <<a href="#TokenType.INT4MULTIRANGE">TokenType.INT4MULTIRANGE</a>: 'INT4MULTIRANGE'>, 'INT8RANGE': <<a href="#TokenType.INT8RANGE">TokenType.INT8RANGE</a>: 'INT8RANGE'>, 'INT8MULTIRANGE': <<a href="#TokenType.INT8MULTIRANGE">TokenType.INT8MULTIRANGE</a>: 'INT8MULTIRANGE'>, 'NUMRANGE': <<a href="#TokenType.NUMRANGE">TokenType.NUMRANGE</a>: 'NUMRANGE'>, 'NUMMULTIRANGE': <<a href="#TokenType.NUMMULTIRANGE">TokenType.NUMMULTIRANGE</a>: 'NUMMULTIRANGE'>, 'TSRANGE': <<a href="#TokenType.TSRANGE">TokenType.TSRANGE</a>: 'TSRANGE'>, 'TSMULTIRANGE': <<a href="#TokenType.TSMULTIRANGE">TokenType.TSMULTIRANGE</a>: 'TSMULTIRANGE'>, 'TSTZRANGE': <<a href="#TokenType.TSTZRANGE">TokenType.TSTZRANGE</a>: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <<a href="#TokenType.TSTZMULTIRANGE">TokenType.TSTZMULTIRANGE</a>: 'TSTZMULTIRANGE'>, 'DATERANGE': <<a href="#TokenType.DATERANGE">TokenType.DATERANGE</a>: 'DATERANGE'>, 'DATEMULTIRANGE': <<a href="#TokenType.DATEMULTIRANGE">TokenType.DATEMULTIRANGE</a>: 'DATEMULTIRANGE'>, 'UNIQUE': <<a href="#TokenType.UNIQUE">TokenType.UNIQUE</a>: 'UNIQUE'>, 'STRUCT': <<a href="#TokenType.STRUCT">TokenType.STRUCT</a>: 'STRUCT'>, 'SEQUENCE': <<a href="#TokenType.SEQUENCE">TokenType.SEQUENCE</a>: 'SEQUENCE'>, 'VARIANT': <<a href="#TokenType.VARIANT">TokenType.VARIANT</a>: 'VARIANT'>, 'ALTER': <<a href="#TokenType.ALTER">TokenType.ALTER</a>: 'ALTER'>, 'ANALYZE': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'CALL': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'COMMENT': <<a href="#TokenType.COMMENT">TokenType.COMMENT</a>: 'COMMENT'>, 'EXPLAIN': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'GRANT': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'OPTIMIZE': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'PREPARE': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'VACUUM': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'USER-DEFINED': <<a href="#TokenType.USERDEFINED">TokenType.USERDEFINED</a>: 'USERDEFINED'>, 'FOR VERSION': <<a href="#TokenType.VERSION_SNAPSHOT">TokenType.VERSION_SNAPSHOT</a>: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <<a href="#TokenType.TIMESTAMP_SNAPSHOT">TokenType.TIMESTAMP_SNAPSHOT</a>: 'TIMESTAMP_SNAPSHOT'>}</span> + <label class="view-value-button pdoc-button" for="Tokenizer.KEYWORDS-view-value"></label><span class="default_value">{'{%': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '{%+': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '{%-': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '%}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '+%}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '-%}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '{{+': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '{{-': <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'>, '+}}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '-}}': <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'>, '/*+': <<a href="#TokenType.HINT">TokenType.HINT</a>: 'HINT'>, '==': <<a href="#TokenType.EQ">TokenType.EQ</a>: 'EQ'>, '::': <<a href="#TokenType.DCOLON">TokenType.DCOLON</a>: 'DCOLON'>, '||': <<a href="#TokenType.DPIPE">TokenType.DPIPE</a>: 'DPIPE'>, '>=': <<a href="#TokenType.GTE">TokenType.GTE</a>: 'GTE'>, '<=': <<a href="#TokenType.LTE">TokenType.LTE</a>: 'LTE'>, '<>': <<a href="#TokenType.NEQ">TokenType.NEQ</a>: 'NEQ'>, '!=': <<a href="#TokenType.NEQ">TokenType.NEQ</a>: 'NEQ'>, ':=': <<a href="#TokenType.COLON_EQ">TokenType.COLON_EQ</a>: 'COLON_EQ'>, '<=>': <<a href="#TokenType.NULLSAFE_EQ">TokenType.NULLSAFE_EQ</a>: 'NULLSAFE_EQ'>, '->': <<a href="#TokenType.ARROW">TokenType.ARROW</a>: 'ARROW'>, '->>': <<a href="#TokenType.DARROW">TokenType.DARROW</a>: 'DARROW'>, '=>': <<a href="#TokenType.FARROW">TokenType.FARROW</a>: 'FARROW'>, '#>': <<a href="#TokenType.HASH_ARROW">TokenType.HASH_ARROW</a>: 'HASH_ARROW'>, '#>>': <<a href="#TokenType.DHASH_ARROW">TokenType.DHASH_ARROW</a>: 'DHASH_ARROW'>, '<->': <<a href="#TokenType.LR_ARROW">TokenType.LR_ARROW</a>: 'LR_ARROW'>, '&&': <<a href="#TokenType.DAMP">TokenType.DAMP</a>: 'DAMP'>, '??': <<a href="#TokenType.DQMARK">TokenType.DQMARK</a>: 'DQMARK'>, 'ALL': <<a href="#TokenType.ALL">TokenType.ALL</a>: 'ALL'>, 'ALWAYS': <<a href="#TokenType.ALWAYS">TokenType.ALWAYS</a>: 'ALWAYS'>, 'AND': <<a href="#TokenType.AND">TokenType.AND</a>: 'AND'>, 'ANTI': <<a href="#TokenType.ANTI">TokenType.ANTI</a>: 'ANTI'>, 'ANY': <<a href="#TokenType.ANY">TokenType.ANY</a>: 'ANY'>, 'ASC': <<a href="#TokenType.ASC">TokenType.ASC</a>: 'ASC'>, 'AS': <<a href="#TokenType.ALIAS">TokenType.ALIAS</a>: 'ALIAS'>, 'ASOF': <<a href="#TokenType.ASOF">TokenType.ASOF</a>: 'ASOF'>, 'AUTOINCREMENT': <<a href="#TokenType.AUTO_INCREMENT">TokenType.AUTO_INCREMENT</a>: 'AUTO_INCREMENT'>, 'AUTO_INCREMENT': <<a href="#TokenType.AUTO_INCREMENT">TokenType.AUTO_INCREMENT</a>: 'AUTO_INCREMENT'>, 'BEGIN': <<a href="#TokenType.BEGIN">TokenType.BEGIN</a>: 'BEGIN'>, 'BETWEEN': <<a href="#TokenType.BETWEEN">TokenType.BETWEEN</a>: 'BETWEEN'>, 'CACHE': <<a href="#TokenType.CACHE">TokenType.CACHE</a>: 'CACHE'>, 'UNCACHE': <<a href="#TokenType.UNCACHE">TokenType.UNCACHE</a>: 'UNCACHE'>, 'CASE': <<a href="#TokenType.CASE">TokenType.CASE</a>: 'CASE'>, 'CHARACTER SET': <<a href="#TokenType.CHARACTER_SET">TokenType.CHARACTER_SET</a>: 'CHARACTER_SET'>, 'CLUSTER BY': <<a href="#TokenType.CLUSTER_BY">TokenType.CLUSTER_BY</a>: 'CLUSTER_BY'>, 'COLLATE': <<a href="#TokenType.COLLATE">TokenType.COLLATE</a>: 'COLLATE'>, 'COLUMN': <<a href="#TokenType.COLUMN">TokenType.COLUMN</a>: 'COLUMN'>, 'COMMIT': <<a href="#TokenType.COMMIT">TokenType.COMMIT</a>: 'COMMIT'>, 'CONNECT BY': <<a href="#TokenType.CONNECT_BY">TokenType.CONNECT_BY</a>: 'CONNECT_BY'>, 'CONSTRAINT': <<a href="#TokenType.CONSTRAINT">TokenType.CONSTRAINT</a>: 'CONSTRAINT'>, 'COPY': <<a href="#TokenType.COPY">TokenType.COPY</a>: 'COPY'>, 'CREATE': <<a href="#TokenType.CREATE">TokenType.CREATE</a>: 'CREATE'>, 'CROSS': <<a href="#TokenType.CROSS">TokenType.CROSS</a>: 'CROSS'>, 'CUBE': <<a href="#TokenType.CUBE">TokenType.CUBE</a>: 'CUBE'>, 'CURRENT_DATE': <<a href="#TokenType.CURRENT_DATE">TokenType.CURRENT_DATE</a>: 'CURRENT_DATE'>, 'CURRENT_TIME': <<a href="#TokenType.CURRENT_TIME">TokenType.CURRENT_TIME</a>: 'CURRENT_TIME'>, 'CURRENT_TIMESTAMP': <<a href="#TokenType.CURRENT_TIMESTAMP">TokenType.CURRENT_TIMESTAMP</a>: 'CURRENT_TIMESTAMP'>, 'CURRENT_USER': <<a href="#TokenType.CURRENT_USER">TokenType.CURRENT_USER</a>: 'CURRENT_USER'>, 'DATABASE': <<a href="#TokenType.DATABASE">TokenType.DATABASE</a>: 'DATABASE'>, 'DEFAULT': <<a href="#TokenType.DEFAULT">TokenType.DEFAULT</a>: 'DEFAULT'>, 'DELETE': <<a href="#TokenType.DELETE">TokenType.DELETE</a>: 'DELETE'>, 'DESC': <<a href="#TokenType.DESC">TokenType.DESC</a>: 'DESC'>, 'DESCRIBE': <<a href="#TokenType.DESCRIBE">TokenType.DESCRIBE</a>: 'DESCRIBE'>, 'DISTINCT': <<a href="#TokenType.DISTINCT">TokenType.DISTINCT</a>: 'DISTINCT'>, 'DISTRIBUTE BY': <<a href="#TokenType.DISTRIBUTE_BY">TokenType.DISTRIBUTE_BY</a>: 'DISTRIBUTE_BY'>, 'DIV': <<a href="#TokenType.DIV">TokenType.DIV</a>: 'DIV'>, 'DROP': <<a href="#TokenType.DROP">TokenType.DROP</a>: 'DROP'>, 'ELSE': <<a href="#TokenType.ELSE">TokenType.ELSE</a>: 'ELSE'>, 'END': <<a href="#TokenType.END">TokenType.END</a>: 'END'>, 'ENUM': <<a href="#TokenType.ENUM">TokenType.ENUM</a>: 'ENUM'>, 'ESCAPE': <<a href="#TokenType.ESCAPE">TokenType.ESCAPE</a>: 'ESCAPE'>, 'EXCEPT': <<a href="#TokenType.EXCEPT">TokenType.EXCEPT</a>: 'EXCEPT'>, 'EXECUTE': <<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'>, 'EXISTS': <<a href="#TokenType.EXISTS">TokenType.EXISTS</a>: 'EXISTS'>, 'FALSE': <<a href="#TokenType.FALSE">TokenType.FALSE</a>: 'FALSE'>, 'FETCH': <<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'>, 'FILTER': <<a href="#TokenType.FILTER">TokenType.FILTER</a>: 'FILTER'>, 'FIRST': <<a href="#TokenType.FIRST">TokenType.FIRST</a>: 'FIRST'>, 'FULL': <<a href="#TokenType.FULL">TokenType.FULL</a>: 'FULL'>, 'FUNCTION': <<a href="#TokenType.FUNCTION">TokenType.FUNCTION</a>: 'FUNCTION'>, 'FOR': <<a href="#TokenType.FOR">TokenType.FOR</a>: 'FOR'>, 'FOREIGN KEY': <<a href="#TokenType.FOREIGN_KEY">TokenType.FOREIGN_KEY</a>: 'FOREIGN_KEY'>, 'FORMAT': <<a href="#TokenType.FORMAT">TokenType.FORMAT</a>: 'FORMAT'>, 'FROM': <<a href="#TokenType.FROM">TokenType.FROM</a>: 'FROM'>, 'GEOGRAPHY': <<a href="#TokenType.GEOGRAPHY">TokenType.GEOGRAPHY</a>: 'GEOGRAPHY'>, 'GEOMETRY': <<a href="#TokenType.GEOMETRY">TokenType.GEOMETRY</a>: 'GEOMETRY'>, 'GLOB': <<a href="#TokenType.GLOB">TokenType.GLOB</a>: 'GLOB'>, 'GROUP BY': <<a href="#TokenType.GROUP_BY">TokenType.GROUP_BY</a>: 'GROUP_BY'>, 'GROUPING SETS': <<a href="#TokenType.GROUPING_SETS">TokenType.GROUPING_SETS</a>: 'GROUPING_SETS'>, 'HAVING': <<a href="#TokenType.HAVING">TokenType.HAVING</a>: 'HAVING'>, 'ILIKE': <<a href="#TokenType.ILIKE">TokenType.ILIKE</a>: 'ILIKE'>, 'IN': <<a href="#TokenType.IN">TokenType.IN</a>: 'IN'>, 'INDEX': <<a href="#TokenType.INDEX">TokenType.INDEX</a>: 'INDEX'>, 'INET': <<a href="#TokenType.INET">TokenType.INET</a>: 'INET'>, 'INNER': <<a href="#TokenType.INNER">TokenType.INNER</a>: 'INNER'>, 'INSERT': <<a href="#TokenType.INSERT">TokenType.INSERT</a>: 'INSERT'>, 'INTERVAL': <<a href="#TokenType.INTERVAL">TokenType.INTERVAL</a>: 'INTERVAL'>, 'INTERSECT': <<a href="#TokenType.INTERSECT">TokenType.INTERSECT</a>: 'INTERSECT'>, 'INTO': <<a href="#TokenType.INTO">TokenType.INTO</a>: 'INTO'>, 'IS': <<a href="#TokenType.IS">TokenType.IS</a>: 'IS'>, 'ISNULL': <<a href="#TokenType.ISNULL">TokenType.ISNULL</a>: 'ISNULL'>, 'JOIN': <<a href="#TokenType.JOIN">TokenType.JOIN</a>: 'JOIN'>, 'KEEP': <<a href="#TokenType.KEEP">TokenType.KEEP</a>: 'KEEP'>, 'KILL': <<a href="#TokenType.KILL">TokenType.KILL</a>: 'KILL'>, 'LATERAL': <<a href="#TokenType.LATERAL">TokenType.LATERAL</a>: 'LATERAL'>, 'LEFT': <<a href="#TokenType.LEFT">TokenType.LEFT</a>: 'LEFT'>, 'LIKE': <<a href="#TokenType.LIKE">TokenType.LIKE</a>: 'LIKE'>, 'LIMIT': <<a href="#TokenType.LIMIT">TokenType.LIMIT</a>: 'LIMIT'>, 'LOAD': <<a href="#TokenType.LOAD">TokenType.LOAD</a>: 'LOAD'>, 'LOCK': <<a href="#TokenType.LOCK">TokenType.LOCK</a>: 'LOCK'>, 'MERGE': <<a href="#TokenType.MERGE">TokenType.MERGE</a>: 'MERGE'>, 'NATURAL': <<a href="#TokenType.NATURAL">TokenType.NATURAL</a>: 'NATURAL'>, 'NEXT': <<a href="#TokenType.NEXT">TokenType.NEXT</a>: 'NEXT'>, 'NOT': <<a href="#TokenType.NOT">TokenType.NOT</a>: 'NOT'>, 'NOTNULL': <<a href="#TokenType.NOTNULL">TokenType.NOTNULL</a>: 'NOTNULL'>, 'NULL': <<a href="#TokenType.NULL">TokenType.NULL</a>: 'NULL'>, 'OBJECT': <<a href="#TokenType.OBJECT">TokenType.OBJECT</a>: 'OBJECT'>, 'OFFSET': <<a href="#TokenType.OFFSET">TokenType.OFFSET</a>: 'OFFSET'>, 'ON': <<a href="#TokenType.ON">TokenType.ON</a>: 'ON'>, 'OR': <<a href="#TokenType.OR">TokenType.OR</a>: 'OR'>, 'XOR': <<a href="#TokenType.XOR">TokenType.XOR</a>: 'XOR'>, 'ORDER BY': <<a href="#TokenType.ORDER_BY">TokenType.ORDER_BY</a>: 'ORDER_BY'>, 'ORDINALITY': <<a href="#TokenType.ORDINALITY">TokenType.ORDINALITY</a>: 'ORDINALITY'>, 'OUTER': <<a href="#TokenType.OUTER">TokenType.OUTER</a>: 'OUTER'>, 'OVER': <<a href="#TokenType.OVER">TokenType.OVER</a>: 'OVER'>, 'OVERLAPS': <<a href="#TokenType.OVERLAPS">TokenType.OVERLAPS</a>: 'OVERLAPS'>, 'OVERWRITE': <<a href="#TokenType.OVERWRITE">TokenType.OVERWRITE</a>: 'OVERWRITE'>, 'PARTITION': <<a href="#TokenType.PARTITION">TokenType.PARTITION</a>: 'PARTITION'>, 'PARTITION BY': <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'>, 'PARTITIONED BY': <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'>, 'PARTITIONED_BY': <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'>, 'PERCENT': <<a href="#TokenType.PERCENT">TokenType.PERCENT</a>: 'PERCENT'>, 'PIVOT': <<a href="#TokenType.PIVOT">TokenType.PIVOT</a>: 'PIVOT'>, 'PRAGMA': <<a href="#TokenType.PRAGMA">TokenType.PRAGMA</a>: 'PRAGMA'>, 'PRIMARY KEY': <<a href="#TokenType.PRIMARY_KEY">TokenType.PRIMARY_KEY</a>: 'PRIMARY_KEY'>, 'PROCEDURE': <<a href="#TokenType.PROCEDURE">TokenType.PROCEDURE</a>: 'PROCEDURE'>, 'QUALIFY': <<a href="#TokenType.QUALIFY">TokenType.QUALIFY</a>: 'QUALIFY'>, 'RANGE': <<a href="#TokenType.RANGE">TokenType.RANGE</a>: 'RANGE'>, 'RECURSIVE': <<a href="#TokenType.RECURSIVE">TokenType.RECURSIVE</a>: 'RECURSIVE'>, 'REGEXP': <<a href="#TokenType.RLIKE">TokenType.RLIKE</a>: 'RLIKE'>, 'REPLACE': <<a href="#TokenType.REPLACE">TokenType.REPLACE</a>: 'REPLACE'>, 'RETURNING': <<a href="#TokenType.RETURNING">TokenType.RETURNING</a>: 'RETURNING'>, 'REFERENCES': <<a href="#TokenType.REFERENCES">TokenType.REFERENCES</a>: 'REFERENCES'>, 'RIGHT': <<a href="#TokenType.RIGHT">TokenType.RIGHT</a>: 'RIGHT'>, 'RLIKE': <<a href="#TokenType.RLIKE">TokenType.RLIKE</a>: 'RLIKE'>, 'ROLLBACK': <<a href="#TokenType.ROLLBACK">TokenType.ROLLBACK</a>: 'ROLLBACK'>, 'ROLLUP': <<a href="#TokenType.ROLLUP">TokenType.ROLLUP</a>: 'ROLLUP'>, 'ROW': <<a href="#TokenType.ROW">TokenType.ROW</a>: 'ROW'>, 'ROWS': <<a href="#TokenType.ROWS">TokenType.ROWS</a>: 'ROWS'>, 'SCHEMA': <<a href="#TokenType.SCHEMA">TokenType.SCHEMA</a>: 'SCHEMA'>, 'SELECT': <<a href="#TokenType.SELECT">TokenType.SELECT</a>: 'SELECT'>, 'SEMI': <<a href="#TokenType.SEMI">TokenType.SEMI</a>: 'SEMI'>, 'SET': <<a href="#TokenType.SET">TokenType.SET</a>: 'SET'>, 'SETTINGS': <<a href="#TokenType.SETTINGS">TokenType.SETTINGS</a>: 'SETTINGS'>, 'SHOW': <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'>, 'SIMILAR TO': <<a href="#TokenType.SIMILAR_TO">TokenType.SIMILAR_TO</a>: 'SIMILAR_TO'>, 'SOME': <<a href="#TokenType.SOME">TokenType.SOME</a>: 'SOME'>, 'SORT BY': <<a href="#TokenType.SORT_BY">TokenType.SORT_BY</a>: 'SORT_BY'>, 'START WITH': <<a href="#TokenType.START_WITH">TokenType.START_WITH</a>: 'START_WITH'>, 'TABLE': <<a href="#TokenType.TABLE">TokenType.TABLE</a>: 'TABLE'>, 'TABLESAMPLE': <<a href="#TokenType.TABLE_SAMPLE">TokenType.TABLE_SAMPLE</a>: 'TABLE_SAMPLE'>, 'TEMP': <<a href="#TokenType.TEMPORARY">TokenType.TEMPORARY</a>: 'TEMPORARY'>, 'TEMPORARY': <<a href="#TokenType.TEMPORARY">TokenType.TEMPORARY</a>: 'TEMPORARY'>, 'THEN': <<a href="#TokenType.THEN">TokenType.THEN</a>: 'THEN'>, 'TRUE': <<a href="#TokenType.TRUE">TokenType.TRUE</a>: 'TRUE'>, 'TRUNCATE': <<a href="#TokenType.TRUNCATE">TokenType.TRUNCATE</a>: 'TRUNCATE'>, 'UNION': <<a href="#TokenType.UNION">TokenType.UNION</a>: 'UNION'>, 'UNKNOWN': <<a href="#TokenType.UNKNOWN">TokenType.UNKNOWN</a>: 'UNKNOWN'>, 'UNNEST': <<a href="#TokenType.UNNEST">TokenType.UNNEST</a>: 'UNNEST'>, 'UNPIVOT': <<a href="#TokenType.UNPIVOT">TokenType.UNPIVOT</a>: 'UNPIVOT'>, 'UPDATE': <<a href="#TokenType.UPDATE">TokenType.UPDATE</a>: 'UPDATE'>, 'USE': <<a href="#TokenType.USE">TokenType.USE</a>: 'USE'>, 'USING': <<a href="#TokenType.USING">TokenType.USING</a>: 'USING'>, 'UUID': <<a href="#TokenType.UUID">TokenType.UUID</a>: 'UUID'>, 'VALUES': <<a href="#TokenType.VALUES">TokenType.VALUES</a>: 'VALUES'>, 'VIEW': <<a href="#TokenType.VIEW">TokenType.VIEW</a>: 'VIEW'>, 'VOLATILE': <<a href="#TokenType.VOLATILE">TokenType.VOLATILE</a>: 'VOLATILE'>, 'WHEN': <<a href="#TokenType.WHEN">TokenType.WHEN</a>: 'WHEN'>, 'WHERE': <<a href="#TokenType.WHERE">TokenType.WHERE</a>: 'WHERE'>, 'WINDOW': <<a href="#TokenType.WINDOW">TokenType.WINDOW</a>: 'WINDOW'>, 'WITH': <<a href="#TokenType.WITH">TokenType.WITH</a>: 'WITH'>, 'APPLY': <<a href="#TokenType.APPLY">TokenType.APPLY</a>: 'APPLY'>, 'ARRAY': <<a href="#TokenType.ARRAY">TokenType.ARRAY</a>: 'ARRAY'>, 'BIT': <<a href="#TokenType.BIT">TokenType.BIT</a>: 'BIT'>, 'BOOL': <<a href="#TokenType.BOOLEAN">TokenType.BOOLEAN</a>: 'BOOLEAN'>, 'BOOLEAN': <<a href="#TokenType.BOOLEAN">TokenType.BOOLEAN</a>: 'BOOLEAN'>, 'BYTE': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'MEDIUMINT': <<a href="#TokenType.MEDIUMINT">TokenType.MEDIUMINT</a>: 'MEDIUMINT'>, 'INT1': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'TINYINT': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'INT16': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'SHORT': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'SMALLINT': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'INT128': <<a href="#TokenType.INT128">TokenType.INT128</a>: 'INT128'>, 'HUGEINT': <<a href="#TokenType.INT128">TokenType.INT128</a>: 'INT128'>, 'INT2': <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'>, 'INTEGER': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT4': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT32': <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'>, 'INT64': <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'>, 'LONG': <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'>, 'BIGINT': <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'>, 'INT8': <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'>, 'UINT': <<a href="#TokenType.UINT">TokenType.UINT</a>: 'UINT'>, 'DEC': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'DECIMAL': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'BIGDECIMAL': <<a href="#TokenType.BIGDECIMAL">TokenType.BIGDECIMAL</a>: 'BIGDECIMAL'>, 'BIGNUMERIC': <<a href="#TokenType.BIGDECIMAL">TokenType.BIGDECIMAL</a>: 'BIGDECIMAL'>, 'LIST': <<a href="#TokenType.LIST">TokenType.LIST</a>: 'LIST'>, 'MAP': <<a href="#TokenType.MAP">TokenType.MAP</a>: 'MAP'>, 'NULLABLE': <<a href="#TokenType.NULLABLE">TokenType.NULLABLE</a>: 'NULLABLE'>, 'NUMBER': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'NUMERIC': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'FIXED': <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'>, 'REAL': <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'>, 'FLOAT': <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'>, 'FLOAT4': <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'>, 'FLOAT8': <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'>, 'DOUBLE': <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'>, 'DOUBLE PRECISION': <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'>, 'JSON': <<a href="#TokenType.JSON">TokenType.JSON</a>: 'JSON'>, 'JSONB': <<a href="#TokenType.JSONB">TokenType.JSONB</a>: 'JSONB'>, 'CHAR': <<a href="#TokenType.CHAR">TokenType.CHAR</a>: 'CHAR'>, 'CHARACTER': <<a href="#TokenType.CHAR">TokenType.CHAR</a>: 'CHAR'>, 'NCHAR': <<a href="#TokenType.NCHAR">TokenType.NCHAR</a>: 'NCHAR'>, 'VARCHAR': <<a href="#TokenType.VARCHAR">TokenType.VARCHAR</a>: 'VARCHAR'>, 'VARCHAR2': <<a href="#TokenType.VARCHAR">TokenType.VARCHAR</a>: 'VARCHAR'>, 'NVARCHAR': <<a href="#TokenType.NVARCHAR">TokenType.NVARCHAR</a>: 'NVARCHAR'>, 'NVARCHAR2': <<a href="#TokenType.NVARCHAR">TokenType.NVARCHAR</a>: 'NVARCHAR'>, 'BPCHAR': <<a href="#TokenType.BPCHAR">TokenType.BPCHAR</a>: 'BPCHAR'>, 'STR': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'STRING': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'TEXT': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'LONGTEXT': <<a href="#TokenType.LONGTEXT">TokenType.LONGTEXT</a>: 'LONGTEXT'>, 'MEDIUMTEXT': <<a href="#TokenType.MEDIUMTEXT">TokenType.MEDIUMTEXT</a>: 'MEDIUMTEXT'>, 'TINYTEXT': <<a href="#TokenType.TINYTEXT">TokenType.TINYTEXT</a>: 'TINYTEXT'>, 'CLOB': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'LONGVARCHAR': <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'>, 'BINARY': <<a href="#TokenType.BINARY">TokenType.BINARY</a>: 'BINARY'>, 'BLOB': <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'>, 'LONGBLOB': <<a href="#TokenType.LONGBLOB">TokenType.LONGBLOB</a>: 'LONGBLOB'>, 'MEDIUMBLOB': <<a href="#TokenType.MEDIUMBLOB">TokenType.MEDIUMBLOB</a>: 'MEDIUMBLOB'>, 'TINYBLOB': <<a href="#TokenType.TINYBLOB">TokenType.TINYBLOB</a>: 'TINYBLOB'>, 'BYTEA': <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'>, 'VARBINARY': <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'>, 'TIME': <<a href="#TokenType.TIME">TokenType.TIME</a>: 'TIME'>, 'TIMETZ': <<a href="#TokenType.TIMETZ">TokenType.TIMETZ</a>: 'TIMETZ'>, 'TIMESTAMP': <<a href="#TokenType.TIMESTAMP">TokenType.TIMESTAMP</a>: 'TIMESTAMP'>, 'TIMESTAMPTZ': <<a href="#TokenType.TIMESTAMPTZ">TokenType.TIMESTAMPTZ</a>: 'TIMESTAMPTZ'>, 'TIMESTAMPLTZ': <<a href="#TokenType.TIMESTAMPLTZ">TokenType.TIMESTAMPLTZ</a>: 'TIMESTAMPLTZ'>, 'TIMESTAMP_LTZ': <<a href="#TokenType.TIMESTAMPLTZ">TokenType.TIMESTAMPLTZ</a>: 'TIMESTAMPLTZ'>, 'TIMESTAMPNTZ': <<a href="#TokenType.TIMESTAMPNTZ">TokenType.TIMESTAMPNTZ</a>: 'TIMESTAMPNTZ'>, 'TIMESTAMP_NTZ': <<a href="#TokenType.TIMESTAMPNTZ">TokenType.TIMESTAMPNTZ</a>: 'TIMESTAMPNTZ'>, 'DATE': <<a href="#TokenType.DATE">TokenType.DATE</a>: 'DATE'>, 'DATETIME': <<a href="#TokenType.DATETIME">TokenType.DATETIME</a>: 'DATETIME'>, 'INT4RANGE': <<a href="#TokenType.INT4RANGE">TokenType.INT4RANGE</a>: 'INT4RANGE'>, 'INT4MULTIRANGE': <<a href="#TokenType.INT4MULTIRANGE">TokenType.INT4MULTIRANGE</a>: 'INT4MULTIRANGE'>, 'INT8RANGE': <<a href="#TokenType.INT8RANGE">TokenType.INT8RANGE</a>: 'INT8RANGE'>, 'INT8MULTIRANGE': <<a href="#TokenType.INT8MULTIRANGE">TokenType.INT8MULTIRANGE</a>: 'INT8MULTIRANGE'>, 'NUMRANGE': <<a href="#TokenType.NUMRANGE">TokenType.NUMRANGE</a>: 'NUMRANGE'>, 'NUMMULTIRANGE': <<a href="#TokenType.NUMMULTIRANGE">TokenType.NUMMULTIRANGE</a>: 'NUMMULTIRANGE'>, 'TSRANGE': <<a href="#TokenType.TSRANGE">TokenType.TSRANGE</a>: 'TSRANGE'>, 'TSMULTIRANGE': <<a href="#TokenType.TSMULTIRANGE">TokenType.TSMULTIRANGE</a>: 'TSMULTIRANGE'>, 'TSTZRANGE': <<a href="#TokenType.TSTZRANGE">TokenType.TSTZRANGE</a>: 'TSTZRANGE'>, 'TSTZMULTIRANGE': <<a href="#TokenType.TSTZMULTIRANGE">TokenType.TSTZMULTIRANGE</a>: 'TSTZMULTIRANGE'>, 'DATERANGE': <<a href="#TokenType.DATERANGE">TokenType.DATERANGE</a>: 'DATERANGE'>, 'DATEMULTIRANGE': <<a href="#TokenType.DATEMULTIRANGE">TokenType.DATEMULTIRANGE</a>: 'DATEMULTIRANGE'>, 'UNIQUE': <<a href="#TokenType.UNIQUE">TokenType.UNIQUE</a>: 'UNIQUE'>, 'STRUCT': <<a href="#TokenType.STRUCT">TokenType.STRUCT</a>: 'STRUCT'>, 'SEQUENCE': <<a href="#TokenType.SEQUENCE">TokenType.SEQUENCE</a>: 'SEQUENCE'>, 'VARIANT': <<a href="#TokenType.VARIANT">TokenType.VARIANT</a>: 'VARIANT'>, 'ALTER': <<a href="#TokenType.ALTER">TokenType.ALTER</a>: 'ALTER'>, 'ANALYZE': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'CALL': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'COMMENT': <<a href="#TokenType.COMMENT">TokenType.COMMENT</a>: 'COMMENT'>, 'EXPLAIN': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'GRANT': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'OPTIMIZE': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'PREPARE': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'VACUUM': <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, 'USER-DEFINED': <<a href="#TokenType.USERDEFINED">TokenType.USERDEFINED</a>: 'USERDEFINED'>, 'FOR VERSION': <<a href="#TokenType.VERSION_SNAPSHOT">TokenType.VERSION_SNAPSHOT</a>: 'VERSION_SNAPSHOT'>, 'FOR TIMESTAMP': <<a href="#TokenType.TIMESTAMP_SNAPSHOT">TokenType.TIMESTAMP_SNAPSHOT</a>: 'TIMESTAMP_SNAPSHOT'>}</span> </div> @@ -8664,7 +8683,7 @@ <div class="attr variable"> <span class="name">COMMANDS</span> = <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">{<<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'>, <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, <<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'>, <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'>}</span> + <label class="view-value-button pdoc-button" for="Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'>, <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, <<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'>, <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'>}</span> </div> @@ -8731,20 +8750,20 @@ </div> <a class="headerlink" href="#Tokenizer.reset"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.reset-944"><a href="#Tokenizer.reset-944"><span class="linenos">944</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer.reset-945"><a href="#Tokenizer.reset-945"><span class="linenos">945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer.reset-946"><a href="#Tokenizer.reset-946"><span class="linenos">946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-947"><a href="#Tokenizer.reset-947"><span class="linenos">947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer.reset-948"><a href="#Tokenizer.reset-948"><span class="linenos">948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-949"><a href="#Tokenizer.reset-949"><span class="linenos">949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-950"><a href="#Tokenizer.reset-950"><span class="linenos">950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer.reset-951"><a href="#Tokenizer.reset-951"><span class="linenos">951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-952"><a href="#Tokenizer.reset-952"><span class="linenos">952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="p">[]</span> -</span><span id="Tokenizer.reset-953"><a href="#Tokenizer.reset-953"><span class="linenos">953</span></a> -</span><span id="Tokenizer.reset-954"><a href="#Tokenizer.reset-954"><span class="linenos">954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer.reset-955"><a href="#Tokenizer.reset-955"><span class="linenos">955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer.reset-956"><a href="#Tokenizer.reset-956"><span class="linenos">956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer.reset-957"><a href="#Tokenizer.reset-957"><span class="linenos">957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.reset-946"><a href="#Tokenizer.reset-946"><span class="linenos">946</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer.reset-947"><a href="#Tokenizer.reset-947"><span class="linenos">947</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer.reset-948"><a href="#Tokenizer.reset-948"><span class="linenos">948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-949"><a href="#Tokenizer.reset-949"><span class="linenos">949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer.reset-950"><a href="#Tokenizer.reset-950"><span class="linenos">950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-951"><a href="#Tokenizer.reset-951"><span class="linenos">951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-952"><a href="#Tokenizer.reset-952"><span class="linenos">952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer.reset-953"><a href="#Tokenizer.reset-953"><span class="linenos">953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-954"><a href="#Tokenizer.reset-954"><span class="linenos">954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="p">[]</span> +</span><span id="Tokenizer.reset-955"><a href="#Tokenizer.reset-955"><span class="linenos">955</span></a> +</span><span id="Tokenizer.reset-956"><a href="#Tokenizer.reset-956"><span class="linenos">956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer.reset-957"><a href="#Tokenizer.reset-957"><span class="linenos">957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer.reset-958"><a href="#Tokenizer.reset-958"><span class="linenos">958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer.reset-959"><a href="#Tokenizer.reset-959"><span class="linenos">959</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> </span></pre></div> @@ -8762,24 +8781,24 @@ </div> <a class="headerlink" href="#Tokenizer.tokenize"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.tokenize-959"><a href="#Tokenizer.tokenize-959"><span class="linenos">959</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Tokenizer.tokenize-960"><a href="#Tokenizer.tokenize-960"><span class="linenos">960</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> -</span><span id="Tokenizer.tokenize-961"><a href="#Tokenizer.tokenize-961"><span class="linenos">961</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize-962"><a href="#Tokenizer.tokenize-962"><span class="linenos">962</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_rs</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize-963"><a href="#Tokenizer.tokenize-963"><span class="linenos">963</span></a> -</span><span id="Tokenizer.tokenize-964"><a href="#Tokenizer.tokenize-964"><span class="linenos">964</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Tokenizer.tokenize-965"><a href="#Tokenizer.tokenize-965"><span class="linenos">965</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> -</span><span id="Tokenizer.tokenize-966"><a href="#Tokenizer.tokenize-966"><span class="linenos">966</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize-967"><a href="#Tokenizer.tokenize-967"><span class="linenos">967</span></a> -</span><span id="Tokenizer.tokenize-968"><a href="#Tokenizer.tokenize-968"><span class="linenos">968</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize-969"><a href="#Tokenizer.tokenize-969"><span class="linenos">969</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> -</span><span id="Tokenizer.tokenize-970"><a href="#Tokenizer.tokenize-970"><span class="linenos">970</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize-971"><a href="#Tokenizer.tokenize-971"><span class="linenos">971</span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">max</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">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize-972"><a href="#Tokenizer.tokenize-972"><span class="linenos">972</span></a> <span class="n">end</span> <span class="o">=</span> <span class="nb">min</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">50</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize-973"><a href="#Tokenizer.tokenize-973"><span class="linenos">973</span></a> <span class="n">context</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Tokenizer.tokenize-974"><a href="#Tokenizer.tokenize-974"><span class="linenos">974</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error tokenizing '</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span> -</span><span id="Tokenizer.tokenize-975"><a href="#Tokenizer.tokenize-975"><span class="linenos">975</span></a> -</span><span id="Tokenizer.tokenize-976"><a href="#Tokenizer.tokenize-976"><span class="linenos">976</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.tokenize-961"><a href="#Tokenizer.tokenize-961"><span class="linenos">961</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Tokenizer.tokenize-962"><a href="#Tokenizer.tokenize-962"><span class="linenos">962</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> +</span><span id="Tokenizer.tokenize-963"><a href="#Tokenizer.tokenize-963"><span class="linenos">963</span></a> <span class="k">if</span> <span class="n">USE_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize-964"><a href="#Tokenizer.tokenize-964"><span class="linenos">964</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_rs</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize-965"><a href="#Tokenizer.tokenize-965"><span class="linenos">965</span></a> +</span><span id="Tokenizer.tokenize-966"><a href="#Tokenizer.tokenize-966"><span class="linenos">966</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer.tokenize-967"><a href="#Tokenizer.tokenize-967"><span class="linenos">967</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> +</span><span id="Tokenizer.tokenize-968"><a href="#Tokenizer.tokenize-968"><span class="linenos">968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize-969"><a href="#Tokenizer.tokenize-969"><span class="linenos">969</span></a> +</span><span id="Tokenizer.tokenize-970"><a href="#Tokenizer.tokenize-970"><span class="linenos">970</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize-971"><a href="#Tokenizer.tokenize-971"><span class="linenos">971</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> +</span><span id="Tokenizer.tokenize-972"><a href="#Tokenizer.tokenize-972"><span class="linenos">972</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize-973"><a href="#Tokenizer.tokenize-973"><span class="linenos">973</span></a> <span class="n">start</span> <span class="o">=</span> <span class="nb">max</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">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize-974"><a href="#Tokenizer.tokenize-974"><span class="linenos">974</span></a> <span class="n">end</span> <span class="o">=</span> <span class="nb">min</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">50</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize-975"><a href="#Tokenizer.tokenize-975"><span class="linenos">975</span></a> <span class="n">context</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Tokenizer.tokenize-976"><a href="#Tokenizer.tokenize-976"><span class="linenos">976</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error tokenizing '</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span> +</span><span id="Tokenizer.tokenize-977"><a href="#Tokenizer.tokenize-977"><span class="linenos">977</span></a> +</span><span id="Tokenizer.tokenize-978"><a href="#Tokenizer.tokenize-978"><span class="linenos">978</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> </span></pre></div> @@ -8799,17 +8818,17 @@ </div> <a class="headerlink" href="#Tokenizer.tokenize_rs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.tokenize_rs-1392"><a href="#Tokenizer.tokenize_rs-1392"><span class="linenos">1392</span></a> <span class="k">def</span> <span class="nf">tokenize_rs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Tokenizer.tokenize_rs-1393"><a href="#Tokenizer.tokenize_rs-1393"><span class="linenos">1393</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize_rs-1394"><a href="#Tokenizer.tokenize_rs-1394"><span class="linenos">1394</span></a> <span class="k">raise</span> <span class="n">SqlglotError</span><span class="p">(</span><span class="s2">"Rust tokenizer is not available"</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize_rs-1395"><a href="#Tokenizer.tokenize_rs-1395"><span class="linenos">1395</span></a> -</span><span id="Tokenizer.tokenize_rs-1396"><a href="#Tokenizer.tokenize_rs-1396"><span class="linenos">1396</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize_rs-1397"><a href="#Tokenizer.tokenize_rs-1397"><span class="linenos">1397</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize_rs-1398"><a href="#Tokenizer.tokenize_rs-1398"><span class="linenos">1398</span></a> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">tokens</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize_rs-1399"><a href="#Tokenizer.tokenize_rs-1399"><span class="linenos">1399</span></a> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">_ALL_TOKEN_TYPES</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">token_type_index</span><span class="p">]</span> -</span><span id="Tokenizer.tokenize_rs-1400"><a href="#Tokenizer.tokenize_rs-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="n">tokens</span> -</span><span id="Tokenizer.tokenize_rs-1401"><a href="#Tokenizer.tokenize_rs-1401"><span class="linenos">1401</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Tokenizer.tokenize_rs-1402"><a href="#Tokenizer.tokenize_rs-1402"><span class="linenos">1402</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.tokenize_rs-1394"><a href="#Tokenizer.tokenize_rs-1394"><span class="linenos">1394</span></a> <span class="k">def</span> <span class="nf">tokenize_rs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Tokenizer.tokenize_rs-1395"><a href="#Tokenizer.tokenize_rs-1395"><span class="linenos">1395</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize_rs-1396"><a href="#Tokenizer.tokenize_rs-1396"><span class="linenos">1396</span></a> <span class="k">raise</span> <span class="n">SqlglotError</span><span class="p">(</span><span class="s2">"Rust tokenizer is not available"</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize_rs-1397"><a href="#Tokenizer.tokenize_rs-1397"><span class="linenos">1397</span></a> +</span><span id="Tokenizer.tokenize_rs-1398"><a href="#Tokenizer.tokenize_rs-1398"><span class="linenos">1398</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize_rs-1399"><a href="#Tokenizer.tokenize_rs-1399"><span class="linenos">1399</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RS_TOKENIZER</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_rs_dialect_settings</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize_rs-1400"><a href="#Tokenizer.tokenize_rs-1400"><span class="linenos">1400</span></a> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">tokens</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize_rs-1401"><a href="#Tokenizer.tokenize_rs-1401"><span class="linenos">1401</span></a> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">_ALL_TOKEN_TYPES</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">token_type_index</span><span class="p">]</span> +</span><span id="Tokenizer.tokenize_rs-1402"><a href="#Tokenizer.tokenize_rs-1402"><span class="linenos">1402</span></a> <span class="k">return</span> <span class="n">tokens</span> +</span><span id="Tokenizer.tokenize_rs-1403"><a href="#Tokenizer.tokenize_rs-1403"><span class="linenos">1403</span></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Tokenizer.tokenize_rs-1404"><a href="#Tokenizer.tokenize_rs-1404"><span class="linenos">1404</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> </span></pre></div> |